Openssl FIPS 140-2 User Guide December 12, 2007 Openssl FIPS Object Module FIPS 140-2 User Guide
Total Page:16
File Type:pdf, Size:1020Kb
OpenSSL FIPS Object Module Version 1.1.1 By the Open Source Software Institute http://www.oss-institute.org/ OpenSSL FIPS 140-2 User Guide December 12, 2007 OpenSSL FIPS Object Module FIPS 140-2 User Guide Copyright Notice Copyright © 2005, 2006, 2007 the OpenSSL Team. This document may be freely reproduced in whole or part without permission and without restriction. Sponsored by: The Defense Medical Logistics Program The Hewlett-Packard Company Secure Computing Page 2 of 61 FIPS 140-2 User Guide - September 27, 2007 OpenSSL FIPS Object Module FIPS 140-2 User Guide Acknowledgments The principal author of this document is: Steve Marquess [email protected] -- Consultant 301-619-3933 JMLFDC [email protected] 623 Porter Street Ft. Detrick, MD 21702 -- OpenSSL Validation Lead 601-427-0152 Open Source Software Institute [email protected] Administrative Office http://oss-institute.org/ P.O. Box 547 Oxford, MS 38655 working under contract to the Defense Medical Logistics Standard Support (DMLSS) program, under contract to the Open Source Software Institute, and on a volunteer basis. Andy Polyakov and Steve Henson also provided invaluable assistance. The OpenSSL FIPS 140-2 validation effort was sponsored by the DMLSS program, part of the TRICARE Management Activity, Office of the Assistant Secretary of Defense for Health Affairs, and was directly or indirectly co-sponsored by the Hewlett-Packard Company. For further information contact: Debra Bonner 707-575-9771 Director of Operations [email protected] DMLSS Program Management Office http://www.tricare.osd.mil/dmlss/ 5109 Leesburg Pike, Suite 908 Falls Church, VA 22041 Gary Gross 408-447-6966 office Security Evaluations Program Manager 650-380-1327 cell Hewlett-Packard [email protected] 1501 Page Mill Road http://hp.com/ Palo Alto, CA 94304 Special thanks to IBM Corporation and Secure Computing Corporation for their interest and encouragement: K. S. (Doc) Shankar 512-838-8918 Linux Security Lead [email protected] IBM Linux Technology Center 11501 Burnet Road Austin, TX 78758 http://www-124.ibm.com/developerworks/oss/linux/ Charles B. Monroe 651-628-2799 Senior Systems Engineer [email protected] Secure Computing Corporation http://www.securecomputing.com/ 2675 Long Lake Road Roseville, MN 55113 and to Jeff Cohen for his assistance in securing initial funding, and Bruce Perens for helpful introductions in the early exploratory phase. The Open Source Software Institute (OSSI) serves as the "vendor" for this validation. Project management coordination for this effort was provided by the OSSI: Page 3 of 61 FIPS 140-2 User Guide - September 27, 2007 OpenSSL FIPS Object Module FIPS 140-2 User Guide John Weathersby 601-427-0152 office Executive Director 601-818-7161 cell Open Source Software Institute 601-427-0156 fax Administrative Office [email protected] P.O. Box 547 http://oss-institute.org/ Oxford, MS 38655 OpenSSL software development work was performed by: Stephen Henson 4 Monaco Place, [email protected] Westlands, Newcastle-under-Lyme http://www.drh-consultancy.co.uk/ Staffordshire. ST5 2QT. England, United Kingdom Ben Laurie +44 (20) 8735 0686 office 17 Perryn Road +44 (20) 8735 0689 fax London [email protected] W3 7LR UK Andy Polyakov Chalmers University of Technology [email protected] SE-412 96 Gothenburg Sweden This OpenSSL development was done in coordination with the other members of the OpenSSL Team at www.openssl.org, most notably: Richard Levitte [email protected] FIPS 140-2 validation testing was performed by The DOMUS IT Security Laboratory. For information on validation or revalidations of software contact: Christian Brych 613-249-1052 office FIPS 140 Program Manager 613-447-1241 cell DOMUS IT Security Laboratory 613-721-1399 fax 2220 Walkley Road [email protected] Ottawa, Ontario http://www.domusitsl.com K1G 5L2 Special thanks to Tim Hudson of RSA Security Inc. for his input during the long tedious validation process. Page 4 of 61 FIPS 140-2 User Guide - September 27, 2007 OpenSSL FIPS Object Module FIPS 140-2 User Guide Revision History This document will be revised over time as new information becomes available; check http://www.openssl.org/docs/fips/ or http://www.oss-institute.org/FIPS_733/ for the latest version. Suggestions for additions, corrections, or improvement are welcome. Date Description 2007-12-12 Correct typographical errors reported by Conrad Gerhart Welling 2007-09-27 Section 5: renamed second 5.5 as 5.6 2007-04-12 Section 5.2, added OPENSSL_config() discussion. 2007-04-02 Section 4.3.3, further discussion of depends.exe per Andy Polyakov. 2007-03-31 Section 4.3.3, mention depends.exe, correct several formatting typos (reported by Conrad Gerhart Welling). 2007-03-25 Added section F.3 per private communication from Andy Polyakov. 2007-03-12 Clarified footnote in section 2.5, fixed typo in Appendix C (reported by Conrad Gerhart Welling). 2007-02-24 Added “Recommendations” section 5.5 (based on postings to openssh-unix-dev by Dr. Stan Kladko); changed “recent snapshot” references to 0.9.7m. 2007-02-11 Removed document version number, will designate by date only. More detail on Windows build, URL for testvectors. 2007-02-10 Many minor updates based on reviewer feedback. Erroneous ./fips-1.1/ references changed to ./fips-1.0/. 2007-02-08 First release for openssl-fips-1.1.1.tar.gz. To-Do Items for Future Revisions [_] Errata for Security Policy [_] More discussion of granular control of algorithm disabling (SSL_CTX_set_options, etc.) Page 5 of 61 FIPS 140-2 User Guide - September 27, 2007 OpenSSL FIPS Object Module FIPS 140-2 User Guide Table of Contents 1. INTRODUCTION..............................................................................................................................8 2. BACKGROUND.................................................................................................................................9 2.1 TERMINOLOGY................................................................................................................................9 2.2 THE FIPS MODULE AND INTEGRITY TEST........................................................................................10 2.3 THE FIPS INTEGRITY TEST...........................................................................................................11 2.3.1 Requirement for Exclusive Integrity Test..........................................................................11 2.3.2 Requirement for Fixed Object Code Order.......................................................................12 2.4 THE FILE INTEGRITY CHAIN...........................................................................................................12 2.4.1 Source File (Build Time) Integrity....................................................................................12 2.4.2 Object Module (Link Time) Integrity.................................................................................13 2.4.3 Application Executable Object (Run Time) Integrity.........................................................13 2.5 RELATIONSHIP TO THE OPENSSL API.............................................................................................13 2.6 FIPS MODE OF OPERATION...........................................................................................................15 3. COMPATIBLE PLATFORMS......................................................................................................17 3.1 BUILD ENVIRONMENT REQUIREMENTS..............................................................................................17 3.2 KNOWN SUPPORTED PLATFORMS.....................................................................................................18 4. GENERATING THE FIPS OBJECT MODULE.........................................................................20 4.1 DELIVERY OF SOURCE CODE..........................................................................................................20 4.1.1 Creation of a FIPS Object Module from Other Source Code............................................20 4.1.2 Verifying Integrity of Distribution.....................................................................................20 4.1.3 Verifying Integrity of the Full Distribution for the FIPS Object Module...........................23 4.2 BUILDING AND INSTALLING THE FIPS OBJECT MODULE WITH OPENSSL (UNIX/LINUX).........................23 4.2.1 Building the FIPS Object Module from Source.................................................................23 4.2.2 Installing and Protecting the FIPS Object Module...........................................................24 4.2.3 Building a FIPS Capable OpenSSL...................................................................................25 4.3 BUILDING AND INSTALLING THE FIPS OBJECT MODULE WITH OPENSSL (WINDOWS)............................25 4.3.1 Building the FIPS Object Module from Source.................................................................26 4.3.2 Installing and Protecting the FIPS Object Module...........................................................27 4.3.3 Building a FIPS Capable OpenSSL...................................................................................28 5. CREATING APPLICATIONS WHICH REFERENCE THE FIPS OBJECT MODULE.....30 5.1 EXCLUSIVE USE OF THE FIPS OBJECT MODULE FOR CRYPTOGRAPHY...................................................30 5.2 FIPS MODE INITIALIZATION..........................................................................................................30