X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=README.FIPS;h=d9f2abba5008a4ba7a9de11a97c3182c74b61e5c;hp=6c5250cf44f882581a5bdac09ab22d390596aa0e;hb=05272d4c516fb1167581d35b31a7f815eafa9c57;hpb=8742ae6e19e4d899d77ef0ca961775764e5bfe62 diff --git a/README.FIPS b/README.FIPS index 6c5250cf44..d9f2abba50 100644 --- a/README.FIPS +++ b/README.FIPS @@ -1,5 +1,12 @@ Preliminary status and build information for FIPS module v2.0 +NB: if you are cross compiling you now need to use the latest "incore" script +this can be found at util/incore in the tarballs. + +If you have any object files from a previous build do: + +make clean + To build the module do: ./config fipscanisterbuild @@ -28,36 +35,91 @@ Run test vectors: 4. It should say "passed all tests" at the end. Report full details of any failures. -Run: +Examine the external symbols in fips/fipscanister.o they should all begin +with FIPS or fips. One way to check with GNU nm is: -make clean + nm -g --defined-only fips/fipscanister.o | grep -v -i fips + +If you get *any* output at all from this test (i.e. symbols not starting with +fips or FIPS) please report it. + +Restricted tarball tests. -to remove any object modules from previous compile. +The validated module will have its own tarball containing sufficient code to +build fipscanister.o and the associated algorithm tests. You can create a +similar tarball yourself for testing purposes using the commands below. -Run symbol hiding test: +Standard restricted tarball: -./config fipscanisteronly -DOPENSSL_FIPSSYMS +make -f Makefile.fips dist + +Prime field field only ECC tarball: + +make NOEC2M=1 -f Makefile.fips dist + +Once you've created the tarball extract into a fresh directory and do: + +./config make -This time only the fips utilities should be built. +You can then run the algorithm tests as above. This build automatically uses +fipscanisterbuild and no-ec2m as appropriate. -Examine the external symbols in fips/fipscanister.o they should all begin -with FIPS or fips. One way to check with GNU nm is: +FIPS capable OpenSSL test: WARNING PRELIMINARY INSTRUCTIONS, SUBJECT TO CHANGE. + +At least initially the test module and FIPS capable OpenSSL may change and +by out of sync. You are advised to check for any changes and pull the latest +source from CVS if you have problems. See anon CVS and rsync instructions at: + +http://www.openssl.org/source/repos.html + +Make or download a restricted tarball from ftp://ftp.openssl.org/snapshot/ + +If required set the environment variable FIPSDIR to an appropriate location +to install the test module. If cross compiling set other environment +variables too. + +In this restricted tarball on a Linux or U*ix like system run: + +./config +make +make install + +On Windows from a VC++ environment do: + +ms\do_fips + +This will build and install the test module and some associated files. + +Now download the latest version of the OpenSSL 1.0.1 branch from either a +snapshot or preferably CVS. For Linux do: + +./config fips [other args] +make + +For Windows: + +perl Configure VC-WIN32 fips [other args] +ms\do_nasm +nmake -f ms\ntdll.mak + +(or ms\nt.mak for a static build). + +Where [other args] can be any other arguments you use for an OpenSSL build +such as "shared" or "zlib". + +This will build the fips capable OpenSSL and link it to the test module. You +can now try linking and testing applications against the FIPS capable OpenSSL. -nm -g --defined-only fips/fipscanister.o | grep -v -i fips +Please report any problems to either the openssl-dev mailing list or directly +to me steve@openssl.org . Check the mailing lists regularly to avoid duplicate +reports. Known issues: Algorithm tests are pre-2011. The fipslagtest.pl script wont auto run new algorithm tests such as DSA2. -Usage of ECDH/DH needs review and whether any KDFs need to be implemented. -Selftests need updating with larger key sizes in some cases and redundant -tests pruned. -SP800-90 DRBG needs more work: check for compliance, continuous PRNG test -when entropy gathering, periodic health tests. -Some algorithms need to check security strength of PRNG: keygen etc. -No CCM. -No XTS. -The "FIPS capable OpenSSL" is not yet complete: meaning that the rest of -OpenSSL doesn't always use the correct FIPS module APIs and block others -in FIPS mode. +Code needs extensively reviewing to ensure it builds correctly on +supported platforms and is compliant with FIPS 140-2. +The "FIPS capable OpenSSL" is still largely untested, it builds and runs +some simple tests OK on some systems but needs far more "real world" testing.