Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

doc: crypto docs updated to use good defaults for createDiffieHellman #5505

Closed
wants to merge 3 commits into from

Commits on Mar 1, 2016

  1. crypto docs updated to use good defaults

    [Diffie-Hellman](https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange#Cryptographic_explanation) keys are composed of a `generator` a `prime` a `secret_key` and the `public_key` resulting from the math operation:
    
    ```
    (generator ^ secret_key) mod prime = public_key
    ```
    
    Diffie-Hellman keypairs will compute a matching shared secret if and only if the generator and prime match for both recipients.  The generator is usually **2** and the prime is what is called a [Safe Prime](https://en.wikipedia.org/wiki/Safe_prime).
    
    Usually this matching is accomplished by using [standard published groups](http://tools.ietf.org/html/rfc3526).  We expose access those groups with the `crypto.getDiffieHellman` function.
    
    `createDiffieHellman` is trickier to use.  The original example had the user creating 11 bit keys, and creating random groups of generators and primes.  11 bit keys are very very small, can be cracked by a single person on a single sheet of paper.  A byproduct of using such small keys were that it was a high likelihood that two calls of `createDiffieHellman(11)` would result in using the same 11 bit safe prime.  
    
    The original example code would fail when the safe primes generated at 11 bit lengths did not match for alice and bob.
    
    If you want to use your own generated safe `prime` then the proper use of `createDiffieHellman` is to pass the `prime` and `generator` to the recipient's constructor, so that when they compute the shared secret their `prime` and `generator` match, which is fundamental to the algorithm.
    billautomata committed Mar 1, 2016
    Configuration menu
    Copy the full SHA
    2193e70 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    f3a94e3 View commit details
    Browse the repository at this point in the history
  3. removed newline

    billautomata committed Mar 1, 2016
    Configuration menu
    Copy the full SHA
    0fb7df7 View commit details
    Browse the repository at this point in the history