Cryptography Stack Exchange is a question and answer site for software developers, mathematicians and others interested in cryptography. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Since there is not much info anywhere on the Internet related to this:

  1. Does anyone know if OpenSSL's default CSPRNG is Dual_EC_DRBG or not?
    Their wiki is not very clear…
  2. Related to the first question, does anyone have any experience with OpenSSL on Mac changing the default CSPRNG?
share|improve this question
Just an observation: question 2 "might" be a bit off topic, as it's unclear what kind of answer you expect to "…does anyone have any experience with OpenSSL on Mac changing the default CSPRNG?" I mean, I could simply answer "yes"… but that wouldn't really help you or anyone else in any way, would it? ;) Therefore, I think it would be great if you could "tune" question 2 so it becomes more obvious what you're actually trying to ask there. – e-sushi Sep 24 '13 at 13:22

Well, I think OpenSSL has documented this pretty well:

If an alternative RAND_METHOD implementation is being used (either set directly or as provided by an ENGINE module), then it is entirely responsible for the generation and management of a cryptographically secure PRNG stream. The mechanisms described below relate solely to the software PRNG implementation built in to OpenSSL and used by default.

These functions implement a cryptographically secure pseudo-random number generator (PRNG). It is used by other library functions for example to generate random keys, and applications can use it when they need randomness.


The RAND_SSLeay() method implements a PRNG based on a cryptographic hash function.


hash function; currently SHA-1

So that is certainly not Dual_EC_DRBG. You can switch RNG method by using RAND_set_rand_method but setting a different ENGINE should be preferred for newer applications.

Note that it would not hurt to check this in the source of the openssl implementation you are using. I don't believe it has changed yet, but openssl documentation is not known for its, eh, "up to dateness".

share|improve this answer
Anything missing from my answer? – Maarten Bodewes Oct 8 '13 at 12:25

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.