The FIPS 140-2 Derived Test Requirements has a statement:

AS07.09: (Levels 1, 2, 3, and 4) The seed and seed key shall not have the same value.

What is the difference between a seed and a "seed key"?


"seed" and "seed key" are NIST terminology talking about the X9.31 PRNG. In particular, it has a state that consists of:

  • A 3DES or AES key (the "seed key")

  • A 64 or 128 bit current state (the "seed")

The requirement is to check to make sure that two don't happen to be the same (and give an error indication if they are).

If you're wondering "except for the AES-128 case, don't they have different lengths (and hence always distinct)", well, this requirement got interpreted (at least, for 3DES, when I went through the FIPS process) as "compare the seed to each of the individual DES subkeys, and fail if any of them match"; I presume something similar is done in the case of AES.

And, yes, this requirement is really stupid; it's #1 on my list of "why ignorant bureaucrats should not design cryptographic requirements".

Also, you're probably better off implementing one of the 800-90 RNGs; those are faster, better designed (now that the Dual-EC RNG was removed), and don't fall under this requirement.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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