Improve performance of Diffie-Hellman key exchange #272
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Resolve the following issues:
Improve performance of Diffie-Hellman key exchange by generating a cryptographically strong random number instead of a probable prime. RFC 4419 does not require or suggest
x
(private key) be prime.Background
net-ssh
, built on top ofopenssl
, implements thediffie-hellman-group-exchange-sha256
key exchange and supports prime modulus in the range 1024 - 8192.BigInteger
class is highly variable and really slows down for primes with bit lengths > 2048.jruby-openssl
algorithm generates aBigInteger
probable prime forx
with the same bit length. Usually the server hangs up before the prime is available.Benchmarks
☝️ Box plots (log scale) showing how long it takes to generate a probable prime of various bit lengths using the following constructor:
Hoping to get this in the next release of JRuby.
@kares @headius