<div dir="ltr">I have been reading FIPS 186-3 (<a href="http://csrc.nist.gov/publications/fips/fips186-3/fips_186-3.pdf">http://csrc.nist.gov/publications/fips/fips186-3/fips_186-3.pdf</a>) and 186-4 (<a href="http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf">http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf</a>), particularly Appendix A describing the procedure for generating elliptic curves and Appendix D specifying NIST's recommended curves.<div>
<br></div><div>The approach appears to be an attempt at a "nothing up my sleeve" construction. Appendix A says how to start with a seed value and use SHA-1 as a psuedo-random generator to produce candidate curves until a suitable one is found. Appendix D includes the seed value for each curve so that anyone can verify they were generated according to the pseudo-random process described in Appendix A.</div>
<div><br></div><div>Unless NSA can invert SHA-1, the argument goes, they cannot control the final curves.</div><div><br></div><div>However...</div><div><br></div><div>To my knowledge, most "nothing up my sleeve" constructions use clearly non-random seed values. For example, MD5 uses the sines of consecutive integers. SHA-1 uses sqrt(2), sqrt(3), and similar.</div>
<div><br></div><div>Using random seeds just makes it look like you wanted to try a few -- or possibly a great many -- until the result had some undisclosed property you wanted.</div><div><br></div><div>Question: Who chose the seeds for the NIST curves, and how do they claim those seeds were chosen, exactly?</div>
<div><br></div><div> - Nemo</div></div>