Recommendation for Key Derivation Through Extraction-Then-Expansion
Total Page:16
File Type:pdf, Size:1020Kb
NIST Special Publication 800-56C Recommendation for Key Derivation through Extraction-then-Expansion Lily Chen Computer Security Division Information Technology Laboratory C O M P U T E R S E C U R I T Y November 2011 U.S. Department of Commerce John E. Bryson, Secretary National Institute of Standards and Technology Patrick D. Gallagher, Under Secretary for Standards and Technology and Director SP 800-56C, Recommendation for Key Derivation through Extraction-then-Expansion Abstract This Recommendation specifies techniques for the derivation of keying material from a shared secret established during a key establishment scheme defined in NIST Special Publications 800-56A or 800-56B through an extraction-then-expansion procedure. KEY WORDS: key derivation, extraction, expansion 2 SP 800-56C, Recommendation for Key Derivation through Extraction-then-Expansion Acknowledgements The author, Lily Chen of the National Institute of Standards and Technology (NIST), would like to acknowledge the authors, Yevgeniy Dodis, Rosario Gennros, Johan Håstad, Hugo Krawczyk, and Tal Rabin, of Crypto 2004 paper titled “Randomness extraction and key derivation using CBC, cascade and HMAC modes [12]” for formalizing the idea of extraction-then-expansion key derivation. Especially, the author would like to acknowledge Hugo Krawczyk for introducing the instantiation of extraction-then- expansion with HMAC as presented in [10] and [11]. The author like to thank her colleagues, Elaine Barker, Quynh Dang, Sharon Keller, John Kelsey, Allen Roginsky, Meltem Sonmez Turan, and Tim Polk of NIST, Miles Smid of Orion Security Solutions, and Rich Davis of the National Security Agency, for helpful discussions and valuable comments. The author gratefully appreciates the thoughtful and instructive comments received during the public comment periods, which helped to improve the quality of this publication. 3 SP 800-56C, Recommendation for Key Derivation through Extraction-then-Expansion Authority This document has been developed by the National Institute of Standards and Technology (NIST) in furtherance of its statutory responsibilities under the Federal Information Security Management Act (FISMA) of 2002, Public Law 107-347. NIST is responsible for developing standards and guidelines, including minimum requirements, for providing adequate information security for all agency operations and assets, but such standards and guidelines shall not apply to national security systems. This guideline is consistent with the requirements of the Office of Management and Budget (OMB) Circular A-130, Section 8b(3), Securing Agency Information Systems, as analyzed in A-130, Appendix IV: Analysis of Key Sections. Supplemental information is provided in A-130, Appendix III. This Recommendation has been prepared for use by federal agencies. It may be used by nongovernmental organizations on a voluntary basis and is not subject to copyright. (Attribution would be appreciated by NIST.) Nothing in this Recommendation should be taken to contradict standards and guidelines made mandatory and binding on federal agencies by the Secretary of Commerce under statutory authority, nor should these guidelines be interpreted as altering or superseding the existing authorities of the Secretary of Commerce, Director of the OMB, or any other federal official. Conformance testing for implementations of this Recommendation will be conducted within the framework of the Cryptographic Algorithm Validation Program (CAVP) and the Cryptographic Module Validation Program (CMVP). The requirements of this Recommendation are indicated by the word “shall”. Some of these requirements may be out-of-scope for CAVP and CMVP validation testing, and thus are the responsibility of entities using, implementing, installing, or configuring applications that incorporate this Recommendation. 4 SP 800-56C, Recommendation for Key Derivation through Extraction-then-Expansion Table of Contents 1. Introduction ....................................................................................... 6 2. Scope and Purpose............................................................................. 6 3. Definitions, Symbols and Abbreviations........................................... 6 3.1 Definitions................................................................................................ 6 3.2 Symbols and Abbreviations ..................................................................... 8 4. Outline of Extraction-then-Expansion Key Derivation..................... 9 5. Randomness Extraction..................................................................... 9 6. Key Expansion................................................................................. 13 7. Summary and Discussion ................................................................ 14 Appendix A: References .............................................................................. 16 Appendix B: Conformance to “Non-testable” Requirements ...................... 17 Figures Figure 1: Extraction-then-Expansion Procedure.................................................................9 5 SP 800-56C, Recommendation for Key Derivation through Extraction-then-Expansion 1. Introduction During an execution of some of the public-key-based key establishment schemes specified in NIST Special Publications 800-56A [1] and 800-56B [2], a key derivation method is used to obtain secret cryptographic keying material. This Recommendation specifies an alternative key derivation method to be used in a key establishment scheme specified in 800-56A and 800-56B. 2. Scope and Purpose This Recommendation specifies a two-step key derivation procedure, as one of the approved key derivation methods, that employs an extraction-then-expansion technique for deriving keying material from a shared secret generated during a key establishment scheme specified in [1] or [2]. Several application-specific key derivation functions that use approved variants of this extraction-then-expansion procedure are described in NIST Special Publication 800-135 [5]. The key derivation procedure specified in this Recommendation consists of two steps: 1) randomness extraction (to obtain a single key derivation key) and 2) key expansion (to derive keying material with a desired length from the key derivation key). Since NIST Special Publication 800-108 [4] specifies several families of key derivation functions that are approved for deriving additional keying material from a given cryptographic key derivation key, those functions are employed in the second (key expansion) step of the procedure. 3. Definitions, Symbols and Abbreviations 3.1 Definitions Approved FIPS approved or NIST Recommended. An algorithm or technique that is either 1) specified in a FIPS or NIST Recommendation, or 2) adopted in a FIPS or NIST Recommendation or 3) specified in a list of NIST-approved security functions. Hash function A function that maps a bit string of arbitrary length to a fixed-length bit string. Approved hash functions are designed to satisfy the following properties: 1. (One-way) It is computationally infeasible to find any input that maps to any pre-specified output, and 2. (Collision resistant) It is computationally infeasible to find any two distinct inputs that map to the same output. Approved hash functions are specified in FIPS 180 [9]. 6 SP 800-56C, Recommendation for Key Derivation through Extraction-then-Expansion Key derivation A process that derives keying material from a key or a shared secret. Key derivation A key that is used as input to the key expansion step to derive other key keys. In this Recommendation, the key derivation key is obtained by performing randomness extraction on a shared secret. Key A procedure that results in generating shared keying material among establishment different parties. Key expansion The second step in the key derivation procedure specified in this Recommendation to derive keying material with the desired length. Keying material A binary string, such that any non-overlapping segments of the string with the required lengths can be used as symmetric cryptographic keys and secret parameters, such as initialization vectors. Message A family of cryptographic algorithms that is parameterized by a authentication symmetric key. Each of the algorithms can act on input data (called code (MAC) a message) of an arbitrary length to produce an output value of a specified length (called the MAC of the input data). A MAC algorithm can be used to provide data origin authentication and data integrity protection. In this Recommendation, a MAC algorithm is also called a MAC function. Nonce A time-varying value that has at most a negligible chance of repeating – for example, a random value that is generated anew for each use, a timestamp, a sequence number, or some combination of these. Pseudorandom A function that can be used to generate output from a secret random function seed and a data variable, such that the output is computationally indistinguishable from truly random output. In this Recommendation, an approved message authentication code (MAC) is used as a pseudorandom function in the key expansion step, where a key derivation key is used as the secret random seed. Randomness The first step in the key derivation procedure specified in this extraction Recommendation, which produces a key derivation key from a shared secret. Salt A byte string that is used as an input in the randomness extraction step specified in Section 5. Shared secret A value generated during a public-key-based