X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=README.FIPS;h=c41bab99307bfc71bc69ea876e6640b68b099667;hp=5c5fa295ceccbe6bc81a8d74dc3a41505107157d;hb=dcca7b13e9066443237dd3001ae52fd103151c98;hpb=161cc82df13b2f491706b77004ba834f35d0cd8c diff --git a/README.FIPS b/README.FIPS index 5c5fa295ce..c41bab9930 100644 --- a/README.FIPS +++ b/README.FIPS @@ -1,12 +1,23 @@ 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 +./config fipscanisteronly make Build should complete without errors. +Build test utilities: + +make build_tests + Run test suite: test/fips_test_suite @@ -16,7 +27,7 @@ again should complete without errors. Run test vectors: 1. Download an appropriate set of testvectors from www.openssl.org/docs/fips - those for 2007 are OK. + only the fips-2.0 testvector files are usable for complete tests. 2. Extract the files to a suitable directory. @@ -28,30 +39,92 @@ Run test vectors: 4. It should say "passed all tests" at the end. Report full details of any failures. -Run symbol hiding test: +If you wish to use the older 1.2.x testvectors (for example those from 2007) +you need the command line switch --disable-v2 to fipsalgtest.pl + +Examine the external symbols in fips/fipscanister.o they should all begin +with FIPS or fips. One way to check with GNU nm is: + + 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. -./config fipscanisteronly -DOPENSSL_FIPSSYMS +Restricted tarball tests. + +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. + +Standard restricted tarball: + +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.