Network Working Group                                          D. McGrew
Internet-Draft                                                   B. Weis
Intended status: Standards Track                           Cisco Systems
Expires: August 30, 2010                               February 26, 2010


                Key Derivation Functions and their Uses
                    draft-irtf-cfrg-kdf-uses-00.txt

Abstract

   This note surveys the existing designs for Key Derivation Functions
   (KDFs), the purposes for which they are used, and their security and
   usability goals.  Importantly, some important protocols use KDFs for
   multiple purposes.  We offer conclusions to guide future standards
   work and research on KDFs.

Status of this Memo

   This Internet-Draft is submitted to IETF in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on August 30, 2010.

Copyright Notice

   Copyright (c) 2010 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of



McGrew & Weis            Expires August 30, 2010                [Page 1]


Internet-Draft             KDFs and their Uses             February 2010


   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the BSD License.


Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
     1.1.  Conventions Used In This Document  . . . . . . . . . . . .  3
   2.  Purposes of Key Derivation Functions . . . . . . . . . . . . .  3
     2.1.  Inputs . . . . . . . . . . . . . . . . . . . . . . . . . .  4
     2.2.  Design Goals for KDFs  . . . . . . . . . . . . . . . . . .  5
   3.  Protocol Independent KDFs  . . . . . . . . . . . . . . . . . .  5
     3.1.  HKDF . . . . . . . . . . . . . . . . . . . . . . . . . . .  5
     3.2.  NIST SP 800-108  . . . . . . . . . . . . . . . . . . . . .  5
     3.3.  NIST SP 800-90 . . . . . . . . . . . . . . . . . . . . . .  6
     3.4.  PKCS #5  . . . . . . . . . . . . . . . . . . . . . . . . .  6
   4.  Protocol Specific KDFs . . . . . . . . . . . . . . . . . . . .  6
     4.1.  NIST SP 800-56A  . . . . . . . . . . . . . . . . . . . . .  6
     4.2.  ANSI X9.42 . . . . . . . . . . . . . . . . . . . . . . . .  7
     4.3.  ANSI X9.63 . . . . . . . . . . . . . . . . . . . . . . . .  7
     4.4.  IEEE 1363-2000 . . . . . . . . . . . . . . . . . . . . . .  7
     4.5.  IEEE 1363a-2004  . . . . . . . . . . . . . . . . . . . . .  7
     4.6.  ISO-18033-2  . . . . . . . . . . . . . . . . . . . . . . .  8
     4.7.  TLS Version 1.2  . . . . . . . . . . . . . . . . . . . . .  8
     4.8.  TLS Version 1.1  . . . . . . . . . . . . . . . . . . . . .  9
     4.9.  IKEv1  . . . . . . . . . . . . . . . . . . . . . . . . . .  9
     4.10. IKEv2: HMAC  . . . . . . . . . . . . . . . . . . . . . . . 10
     4.11. IKEv2: CMAC  . . . . . . . . . . . . . . . . . . . . . . . 10
     4.12. SSH  . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
     4.13. SRTP . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
     4.14. S/MIME DH  . . . . . . . . . . . . . . . . . . . . . . . . 12
     4.15. CMS  . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
     4.16. S/MIME . . . . . . . . . . . . . . . . . . . . . . . . . . 12
     4.17. Kerberos . . . . . . . . . . . . . . . . . . . . . . . . . 12
     4.18. OpenPGP  . . . . . . . . . . . . . . . . . . . . . . . . . 12
   5.  Conclusions  . . . . . . . . . . . . . . . . . . . . . . . . . 13
     5.1.  Future Work  . . . . . . . . . . . . . . . . . . . . . . . 13
   6.  Security Considerations  . . . . . . . . . . . . . . . . . . . 14
   7.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 14
   8.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 15
     8.1.  Normative References . . . . . . . . . . . . . . . . . . . 15
     8.2.  Informative References . . . . . . . . . . . . . . . . . . 15
   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 17




McGrew & Weis            Expires August 30, 2010                [Page 2]


Internet-Draft             KDFs and their Uses             February 2010


1.  Introduction

   This section provides background and terminology.

   There are many different KDF designs being utilized in the Internet
   community and beyond.  Most of these designs appear in the
   specification of a protocol or application, and their use is intended
   only for that particular protocol or application.  These protocol-
   specific KDFs are cataloged in Section 4.  There are also some KDFs
   that are intended for use in multiple applications or protocols; we
   catalog these protocol-independent KDFs in Section 3.  There are
   different purposes for which KDFs are used, each with its own
   distinct security goals.  We summarize these purposes in Section 2.
   We take a broad view of what functions can be regarded as KDFs.

   Some KDFs use a two-stage process.  The first stage is called
   "extraction" and it takes a variable-length input that is random or
   pseudorandom, but which may not be uniformly distributed.  The second
   stage is called "expansion", and it takes the fixed-length output of
   the extraction stage and generates a variable-length pseudorandom
   output.

   An extraction stage can be based on a computational assumption (such
   as the inability of a computationally limited attacker to find
   preimages of a certain function, for instance).  This case is called
   a computational extractor.  Alternatively, an extraction stage can
   rely on demonstrable statistical properties of some function (as done
   with universal hashing, for example).  This case is called a
   statistical extractor.

   KDF terminology is non-uniform; they are sometimes called pseudo-
   random functions (PRFs).

   This note is motivated in part by interesting recent work on general-
   purpose KDFs [I-D.krawczyk-hkdf].

1.1.  Conventions Used In This Document

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].


2.  Purposes of Key Derivation Functions

   The purposes for which KDFs are used can be categorized as follows.
   KDFs are used to:




McGrew & Weis            Expires August 30, 2010                [Page 3]


Internet-Draft             KDFs and their Uses             February 2010


   1.  Generate one or more keys from a (uniformly random or
       pseudorandom) seed value.  In this case, no extraction stage is
       needed.  This use requires that the key provided as input is
       *uniformly* random or pseudorandom; it is not sufficient that the
       seed is unpredictable.

   2.  Generate one or more keys from a Diffie-Hellman shared secret.
       An extraction stage is needed, because the DH shared secret is
       not uniformly distributed.

   3.  Generate key material from a non-uniform random source.  In this
       case, an extraction stage is needed.

   4.  Generate a key from a passphrase.  An extraction stage is needed.

   In use case #2, computational extraction seems to be needed, because
   statistical extraction would be inefficient.  In use case #3, either
   statistical or computational extraction could be used.

   KDFs designed for use case #4 usually have additional properties.
   Some functions dedicated to this purpose are designed to be
   computationally intensive in order to increase the cost of exhaustive
   password searching.

   It is easy to design a KDF suitable for use #1, because the use case
   matches that of a pseudorandom function.  It is much trickier to
   design a function suitable for #2 or #3.  There has been a good deal
   of theoretical work in this area, and it is now possible to cite some
   provable security results, though many of those methods are not
   currently used in practice (and some methods may be too inefficient
   to warrant use in practice).  It is open to question how much effort
   should be exerted designing a function for use #4, considering that
   any system that derives secret keys from passwords will be vulnerable
   to dictionary attacks.

2.1.  Inputs

   The following inputs appear in some different KDF designs:

      An unpredictable seed value.

      The length of derived keying material.

      A "salt" value that is different across different runs of the
      protocol, but which may be public information.

      An identifier indicating the use for which the derived keys are
      intended.



McGrew & Weis            Expires August 30, 2010                [Page 4]


Internet-Draft             KDFs and their Uses             February 2010


      An identifier indicating an entity associated with the seed value
      and derived key.

   Not all KDF designs have all of these inputs.

2.2.  Design Goals for KDFs

   The essential goal for a KDF is security; if used properly it must
   meet its security goals.  Ideally, it should also be robust against
   accidental misuse.

   It is desirable that a KDF design be simple.  Complexity should be
   avoided in the specification, implementation, and the interface to
   the KDF.

   It is desirable that a KDF be reusable, that is, that a KDF design
   can be used across multiple applications.

   A protocol or application that uses a KDF should be able to easily
   replace the KDF that it uses; i.e. it should have KDF agility.  IKE
   and TLS have this property to some extent.

   It should be easy to validate a KDF implementation as being correct.
   To this end, a KDF design should define test cases that can be used
   in known-answer tests.


3.  Protocol Independent KDFs

   The following KDF definitions have been specified, and are used by
   one or more of the networking standards documented later in this
   memo.

3.1.  HKDF

   The HMAC-based Extract-and-Expand Key Derivation Function (HKDF)
   [I-D.krawczyk-hkdf] specifies a KDF with an optional extraction phase
   followed by an expansion phase.  The combination of the extraction
   and expansion steps of HKDF is intended for use cases #2 or #3 (or
   even #4) whereas the expansion phase by itself is suitable for use
   case #1.

3.2.  NIST SP 800-108

   The NIST Recommendation for Key Derivation Using Pseudorandom
   Functions KDFs [SP800-108] defines three KDFs (using counter mode,
   feedback mode, and a double-pipeline iteration mode) all of which
   assume an input of a uniform pseudorandom value, and which require



McGrew & Weis            Expires August 30, 2010                [Page 5]


Internet-Draft             KDFs and their Uses             February 2010


   identifiers for the key usage and optionally accept identifiers for
   the entities associated with the keys.  They were developed
   specifically for use case #1.  These functions use a cryptographic
   hash function or a block cipher as an underlying primitive.

3.3.  NIST SP 800-90

   The NIST Recommendation for Random Number Generation Using
   Deterministic Random Bit Generators (Revised) [SP800-90] defines KDFs
   intended for use case #3.  Of the inputs that we consider, these
   functions accept only a seed value.  They have additional properties,
   such as backtracking resistance.

3.4.  PKCS #5

   The first KDF described by PKCS #5: Password-Based Cryptography
   Specification Version 2.0 [RFC2898] is PBKDF.  It is a hash function
   in OFB mode.  The second KDF described is PBKDF2, which is an HMAC
   iterated KDF, with all of the iterates XORed together.  These
   functions have the property that they can be computationally
   expensive, in order to thwart dictionary attacks against keys derived
   from user-generated passwords.

   These KDFs were designed for use case #4, but is seen in other use
   cases as well.

   Notes:

   o  Neither KDF defined in PKCS #5 matches either the NIST KDF
      definitions or HKDF.  However, it should be noted that none of
      these KDF definitions were intended to be used for a use case #4.


4.  Protocol Specific KDFs

   Many Internet and other network protocols have described one or more
   particular KDFs as part of their specification.  This section
   summarizes how the KDF was designed, and in which of the use cases
   described in Section 2 each KDF is deployed.  Particular attention is
   paid as to whether the KDF meets the requirements of the
   specifications in the previous section ([SP800-108],
   [I-D.krawczyk-hkdf], Section 3.4) or Section 5 of [SP800-56A].

4.1.  NIST SP 800-56A

   The NIST Recommendation for Pair-Wise Key Establishment Schemes Using
   Discrete Logarithm Cryptography [SP800-108] describes two counter
   mode KDFs.  They are similar, but differ in that one is intended for



McGrew & Weis            Expires August 30, 2010                [Page 6]


Internet-Draft             KDFs and their Uses             February 2010


   use with ASN.1 encodings.  These KDFs take a Diffie-Hellman shared
   secret as a seed input, and are intended for use case #2.  They
   require as input identifiers for the key usage and identifiers for
   the entities associated with the key establishment protocol.

4.2.  ANSI X9.42

   The ANSI Public Key Cryptography for the Financial Services Industry:
   Agreement of Symmetric Keys Using Discrete Logarithm Cryptography
   [X9.42] defines a hash function KDF.  It is intended for use cases #1
   and #2.

4.3.  ANSI X9.63

   The ANSI Public Key Cryptography for the Financial Services Industry
   Key Agreement and Key Transport Using Elliptic Curve Cryptography
   [X9.63] defines a hash function in counter mode.  It is intended for
   use cases #1 and #2.

4.4.  IEEE 1363-2000

   The IEEE Standard Specifications for Public-Key Cryptography
   [IEEE1363] defines KDF1, a key derivation function used with public
   key key agreement schemes.  It describes a keyed hash of the DH
   result and a string.  This is use case #2.

   Notes:

   o  KDF1 nearly matches SP 800-56A, but it does not include a counter
      input.  The standard also does not clearly define how the key
      derivation parameters associated with the session are determined.

   o  The KDF1 specification says that it was derived from ANSI X9.42.

   o  KDF1 does not match HKDF.  It does not include an Extract
      function, but nearly matches the Expand function (again, the
      absent counter input) as long as the output only requires one
      iteration of the HKDF HMAC-Hash function.

4.5.  IEEE 1363a-2004

   Am amendment to IEEE 1363 [IEEE1363a] adds a new KDF2 to the IEEE
   1363 standard.  It describes a KDF that is a hash function in counter
   mode.  This is use case #2.

   Notes:





McGrew & Weis            Expires August 30, 2010                [Page 7]


Internet-Draft             KDFs and their Uses             February 2010


   o  KDF2 matches SP 800-56A (other than the ordinal position of the
      counter differs).  However, the standard does not clearly define
      how the key derivation parameters associated with the session are
      determined.

   o  The KDF2 specification says that it was derived from ANSI X9.42-
      2001 and ANSI X9.63.

   o  KDF2 does not match HKDF.  It does not include an Extract
      function, and the Expand function is a counter mode KDF, not a
      feedback mode KDF.

4.6.  ISO-18033-2

   The KDFs defined in Encryption algorithms -- Part 2: Asymmetric
   ciphers [ISO-18033-2] are a more general version of those those in SP
   800-56A; the latter specification mandates inputs that are not
   present in the ISO-18033-2 specification.  The ISO-18033-2 KDFs are
   intended to be used with a DH result as input, which make them
   suitable for use case #2.

4.7.  TLS Version 1.2

   P_SHA256 is defined in Section 5 of The Transport Layer Security
   (TLS) Protocol, Version 1.2 [RFC5246].  This KDF uses HMAC in output
   feedback mode.  Two KDF computations are specified: deriving the
   "master_secret" from the "pre_master_secret", followed by derivation
   of session keys (the "key_block") from the "master_secret".  The KDF
   is applied as both use cases #1 and #2, as follows:

   o  Use case #1 occurs when the pre_master_secret is distributed by
      the client (Section 8.1.1 of RFC 5246).

   o  Use case #2 occurs when the pre_master_secret is derived from
      Diffie-Hellman (Section 8.1.2 of RFC 5246).

   o  Use case #1 occurs when the key_block is computed from the
      master_secret (Section 6.3 of RFC 5246).

   Notes:

   o  When P_SHA256 is used for a use case #1, it nearly matches the
      "KDF in Feedback Mode" specified in SP 800-108.  It is missing
      only the L ("length of the derived keying material") input.

   o  The feedback construction of P_SHA256 does not conform to either
      Concatenation Key Derivation Function defined in SP 800-56A. Also,
      PSHA256 uses an HMAC construction whereas SP 800-56A describes a



McGrew & Weis            Expires August 30, 2010                [Page 8]


Internet-Draft             KDFs and their Uses             February 2010


      keyed hash function.

   o  When P_SHA256 is used for a use case #1, it nearly matches the
      HKDF-Expand function, but is missing the counter input).

   o  For use case #2, P-SHA256 does not conform to HKDF.  It specifies
      an HMAC of the seed rather than a HKDF-Extract function, and omits
      the counter input to HKDF-Expand.

4.8.  TLS Version 1.1

   This KDF is the result of P_MD5 XOR P_SHA1 (Section 5 of The
   Transport Layer Security (TLS) Protocol Version 1.1 [RFC4346].

   This KDF is an HMAC in an OFB mode variant.  An HMAC PRF is called
   twice for each derivation: once with MD5 as the hash function and
   once with SHA1 as the hash function.  The results of the two PRF
   calls are XORed together and become the output of the KDF.  The KDF
   is applied as both use cases #1 and #2, as described for TLS 1.2:

   Notes:

   o  The P_MD5 XOR P_SHA1 does not match either SP 800-108 or SP 800-
      56A. The use of MD5 is strongly discouraged, in general, though
      this use of MD5 is believed to provide adequate security.

   o  The P_MD5 XOR P_SHA1 does not match HKDF.

4.9.  IKEv1

   The Internet Key Exchange (IKE) [RFC2409] defines a KDF, which it
   calls a PRF.  The "HMAC version of the negotiated hash algorithm" is
   used as the default KDF (Section 4 of RFC 2409).  Hash algorithms
   currently defined int the IANA IPsec Registry include SHA-1, SHA-256,
   SHA-384, and SHA-512.  The KDF used to protect IKEv1 messages ("phase
   1 prf") is composed of two serialized PRF operations, where the data
   given to the PRF depends on the type of authentication used in the
   IKEv1 exchange.  The KDF is applied as use case #1 or #2 depending on
   the type of authentication.

   IKEv1 also generates keying material for IPsec using a PRF, where the
   keying material used with the PRF is the result of the phase 1 PRF.

   Notes:

   o  None of the KDFs match either SP 800-108 or SP 800-56A.





McGrew & Weis            Expires August 30, 2010                [Page 9]


Internet-Draft             KDFs and their Uses             February 2010


   o  None of the KDFs match HKDF.

4.10.  IKEv2: HMAC

   The Internet Key Exchange (IKEv2) Protocol[RFC4306] defines a KDF,
   which it calls PRF+ (Section 2.13 of RFC 4306).  PRF+ uses a
   negotiated hash algorithm.  In this section we consider negotiated
   HMAC algorithms, which used creates a KDF that is an HMAC in an OFB
   mode.  It is first used to extract the SKEYSEED from a shared Diffie-
   Hellman result (use case #1).  The KDF is then used to create a set
   of shared keys using SKEYSEED (use case #2).

   Notes:

   o  PRF+ strictly conforms to HKDF: deriving SKEYSEED matches the
      HKDF-Extract step, and derivation of the shared keys matches the
      HKDF-Expand step.

   o  Deriving SKEYSEED does not conform to SP 800-56A: it specifies the
      use of an HMAC (where nonces are used as the "key" input) rather
      than a hash.  Also, the it is missing data inputs of a counter and
      "other information".

   o  Deriving the set of shared keys from SKEYSEED very nearly conforms
      to SP 800-108 but the inputs are different: a counter is included
      but concatenated after S, S is not necesarily a null terminated
      string, and the ("length of the derived keying material") input is
      missing.

4.11.  IKEv2: CMAC

   A CMAC hash function has been defined for IKEv2: The Advanced
   Encryption Standard- Cipher-based Message Authentication Code-Pseudo-
   Random Function-128 (AES-CMAC-PRF-128) [RFC4615].  This KDF can be
   used as an alternative to the HMAC methods described in the previous
   IKEv2 section; it is used identically.

   This KDF uses AES with a fixed key, and offers no theoretical
   justification for this practice.  This makes it vulnerable to a
   related-key attack, making it unsuitable for general-purpose use.

   Note:

   o  Deriving SKEYSEED does not conform to SP 800-56A (as described in
      the previous section).

   o  Deriving the set of shared keys from SKEYSEED very nearly conforms
      to SP 800-108 but the inputs are different (as described in the



McGrew & Weis            Expires August 30, 2010               [Page 10]


Internet-Draft             KDFs and their Uses             February 2010


      previous section).

   o  HKDF only supports the use of HMAC-based key derivation functions,
      so AES-CMAC-PRF-128 does not conform to HKDF.

4.12.  SSH

   The Secure Shell (SSH) Transport Layer Protocol [RFC4253] KDF is
   defined in Section 7.2 of RFC 4253.  The input keying material to the
   KDF is a Diffie-Hellman result, which is use case #2.

   Notes:

   o  The SSH KDF does not conform to SP 800-56A. A hash function is
      used to expand the DH result and it uses a counter beginning at
      0x65, which are necessary components to conform.  However, the
      ordinal positions of the counter inputs does not match SP 800-56A.
      Also, the other inputs (H and session_id) do not match either SP
      800-56A definition, although it can be noted that the session_id
      argument was generated from identifiers unique to the two
      communicating parties.

4.13.  SRTP

   The Secure Real-time Transport Protocol [RFC3711] defined AES-CM-PRF,
   which construction is defined in Section 4.3.  This KDF uses AES in
   counter (CTR) mode to produce keying material.

   A counter mode PRF requires a uniformly random key, so without any
   further processing must fall into use case #1.  Most key management
   standards (e.g., RFC 4568) for SRTP do result in a uniformly random
   secret key.

   An emerging key management method for SRTP [I-D.ietf-avt-dtls-srtp]
   uses the TLS KDF to provide a shared secret to SRTP.  In the cases
   where the TLS shared secret is a secret key, use case #1 applies.
   However, in the case of a Diffie-Hellman result being the source of
   the TLS pre-master-secret, this would be considered a use case #2
   (even though the master_secret used as source to the SRTP KDF is a
   uniformly random key).

   Notes:

   o  The AES-CM-PRF KDF is based on a counter mode cipher, which does
      not conform to SP 800-56A or SP 800-108, or HKDF.






McGrew & Weis            Expires August 30, 2010               [Page 11]


Internet-Draft             KDFs and their Uses             February 2010


4.14.  S/MIME DH

   The S/MIME Diffie-Hellman Key Agreement Method (RFC 2631) contains a
   KDF in Section 2.1.2.  Two inputs are given to the SHA-1 hash
   function: The DH result, and a set of "other information" specific to
   the communicating parties encoded as ASN.1.  This is strictly a use
   case #2.

   Notes:

   o  The KDF matches SP 800-56A Approved Alternative 2, with the
      exception that the counter is included included in the "OtherInfo"
      input rather than as an explicit argument to the hash function.

   o  The KDF does not match the specification of HKDF.

4.15.  CMS

   The Cryptographic Message Syntax (CMS) Algorithms [RFC3770] describes
   the use of PBKDF2.  See Section 3.4.

4.16.  S/MIME

   The Secure/Multipurpose Internet Mail Extensions (S/MIME) Version 3.2
   Message Specification (RFC 5751) specifies the KDF in CMS [RFC5754].
   See Section 3.4.

4.17.  Kerberos

   A Pseudo-Random Function (PRF) for the Kerberos V Generic Security
   Service Application Program Interface (GSS-API) Mechanism [RFC4402]
   defines a KDF described as "PRF+".  It is a pseudorandom function in
   counter mode, where the pseudorandom function is defined as part of a
   cryptographic profile.  RFC 3962 [RFC3962] defines an AES profile
   that defines its pseudorandom function as PBKDF2 with a HMAC SHA-1
   hash.  See Section 3.4.

4.18.  OpenPGP

   String-to-Key (S2K) Function in "OpenPGP Message Format" [RFC4880].
   Hash function in counter mode.  The preferred implementation takes a
   salt and passphrase as inputs, and is iterated.  In this mode a
   configured hash function (e.g., SHA256).

   Notes:






McGrew & Weis            Expires August 30, 2010               [Page 12]


Internet-Draft             KDFs and their Uses             February 2010


   o  The KDF does not match either the NIST KDF definitions or HKDF.


5.  Conclusions

   There are many KDF designs, and there is discouragingly little
   compatibility between them.  Even where KDFs are similar, they most
   often have incompatibilities that would prevent interoperability.  On
   the positive side, it appears that there are many ways to design
   adequately secure KDFs.

   The most prevalent Internet key management protocols, IKE and TLS,
   use their KDFs for both use cases #1 and #2.  This fact shows the
   value of a multi-purpose KDF, such as HKDF.  Ideally, any KDF
   designed for multi-purpose Internet use should be suitable for both
   IKE and TLS.  (Interestingly, both IKE and TLS use HMAC as an
   extractor, but IKE uses nonces as the HMAC key and the DH shared
   secret as the "message" input, while TLS does the reverse.)

   One potential demerit of a multi-purpose design is complexity.  The
   benefit of using one KDF for two or three purposes could be negated
   if the KDF was two or three times as complex as each of the single-
   purpose KDFs that it is intended to replace.

   In order to promote KDF reusability and agility, it may be worthwhile
   to devise a standard interface between a KDF and a protocol.  Since
   the complexity of a KDF increases as the number of its inputs
   increases, any such standard should avoid the temptation to
   proliferate inputs.  (Consider, for instance, the need to validate an
   implementation across the range of admissible inputs.)

   There are a great many KDFs designed for use in Diffie-Hellman
   protocols (use case #2), all of which use hash functions, some in the
   HMAC construction.

   Any KDF suitable for use case #3 is likely to be suitable for use
   case #2.  It could be valuable if the existing protocol-independent
   KDFs that target use case #3 [SP800-90] are found to be suitable for
   use case #2.

5.1.  Future Work

   The importance of KDF security warrants more attention; it would be
   useful to reference and summarize theoretical analyses of

   There are no standards that make use of statistical extractors,
   though there have been a number of theoretical results in the area.
   One promising approach is the use of statistical extractors for



McGrew & Weis            Expires August 30, 2010               [Page 13]


Internet-Draft             KDFs and their Uses             February 2010


   Diffie-Hellman protocols, in which the extractor is tailored to the
   specific mathematical group in which the DH protocol is operating.
   For instance, an elliptic curve group would use a specific extractor,
   and a particular group of integers modulo a prime would use a
   different extractor.  To use this approach in a protocol, it would be
   necessary to associate an extractor with a mathematical group;
   extraction could be incorporated into the group-specific
   computations.  There would still need to be an expand stage.  It may
   be useful to add a statistical extractor to an existing protocol as
   an additional step, in order to add robustness to the extraction
   stage, while retaining the existing KDF.  In this scenario, the
   existing KDF is relieved of meeting the security goals of use case
   #2, and instead need only meet those of use case #1.

   Further analysis of the KDFs referenced in this note would be useful.
   For each of the KDFs referenced in this note, it would be good to
   know

   o  Under what conditions is it secure?  If it relies on a
      computational assumption, what is that assumption?  If it relies
      on a statistical extractor, what are the requirements of the
      inputs of that extractor?

   o  Are there test cases for the KDF?

   o  If the KDF is used in a protocol or application, does that
      protocol or application admit the replacement of the KDF?  If so,
      what is its interface (does it take a "salt" input, for example).

   There are more KDFs that could be analyzed and included in future
   versions of this note, but we believe that analysis of these other
   less-used KDFs would not change our conclusions.


6.  Security Considerations

   The KDF selected for use should meet or exceed the security
   requirements of its particular usage.


7.  IANA Considerations

   This note has no actions for IANA.  This section should be removed by
   the RFC editor before publication as an RFC.


8.  References




McGrew & Weis            Expires August 30, 2010               [Page 14]


Internet-Draft             KDFs and their Uses             February 2010


8.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

8.2.  Informative References

   [I-D.ietf-avt-dtls-srtp]
              McGrew, D. and E. Rescorla, "Datagram Transport Layer
              Security (DTLS) Extension to Establish Keys for  Secure
              Real-time Transport Protocol (SRTP)",
              draft-ietf-avt-dtls-srtp-03 (work in progress), July 2008.

   [I-D.krawczyk-hkdf]
              Krawczyk, H. and P. Eronen, "HMAC-based Extract-and-Expand
              Key Derivation Function (HKDF)", draft-krawczyk-hkdf-01
              (work in progress), January 2010.

   [IEEE1363]
              "IEEE Standard Specifications for Public-Key
              Cryptography", IEEE Std 1363-2000 , January 2000.

   [IEEE1363a]
              "IEEE Standard Specifications for Public-Key Cryptography
              - Amendment 1: Additional Techniques", IEEE Std 1363a-
              2004 , March 2004.

   [ISO-18033-2]
              "Information technology -- Security techniques --
              Encryption algorithms -- Part 2: Asymmetric ciphers",
              International Organization for Standardization , May 2006.

   [RFC2409]  Harkins, D. and D. Carrel, "The Internet Key Exchange
              (IKE)", RFC 2409, November 1998.

   [RFC2898]  Kaliski, B., "PKCS #5: Password-Based Cryptography
              Specification Version 2.0", RFC 2898, September 2000.

   [RFC3711]  Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K.
              Norrman, "The Secure Real-time Transport Protocol (SRTP)",
              RFC 3711, March 2004.

   [RFC3770]  Housley, R. and T. Moore, "Certificate Extensions and
              Attributes Supporting Authentication in Point-to-Point
              Protocol (PPP) and Wireless Local Area Networks (WLAN)",
              RFC 3770, May 2004.

   [RFC3962]  Raeburn, K., "Advanced Encryption Standard (AES)



McGrew & Weis            Expires August 30, 2010               [Page 15]


Internet-Draft             KDFs and their Uses             February 2010


              Encryption for Kerberos 5", RFC 3962, February 2005.

   [RFC4253]  Ylonen, T. and C. Lonvick, "The Secure Shell (SSH)
              Transport Layer Protocol", RFC 4253, January 2006.

   [RFC4306]  Kaufman, C., "Internet Key Exchange (IKEv2) Protocol",
              RFC 4306, December 2005.

   [RFC4346]  Dierks, T. and E. Rescorla, "The Transport Layer Security
              (TLS) Protocol Version 1.1", RFC 4346, April 2006.

   [RFC4402]  Williams, N., "A Pseudo-Random Function (PRF) for the
              Kerberos V Generic Security Service Application Program
              Interface (GSS-API) Mechanism", RFC 4402, February 2006.

   [RFC4615]  Song, J., Poovendran, R., Lee, J., and T. Iwata, "The
              Advanced Encryption Standard-Cipher-based Message
              Authentication Code-Pseudo-Random Function-128 (AES-CMAC-
              PRF-128) Algorithm for the Internet Key Exchange Protocol
              (IKE)", RFC 4615, August 2006.

   [RFC4880]  Callas, J., Donnerhacke, L., Finney, H., Shaw, D., and R.
              Thayer, "OpenPGP Message Format", RFC 4880, November 2007.

   [RFC5246]  Dierks, T. and E. Rescorla, "The Transport Layer Security
              (TLS) Protocol Version 1.2", RFC 5246, August 2008.

   [RFC5754]  Turner, S., "Using SHA2 Algorithms with Cryptographic
              Message Syntax", RFC 5754, January 2010.

   [SP800-108]
              Chen, L., "Special Publication 800-108: Recommendation for
              Key Derivation Using Pseudorandom Functions", U.S.
              National Institute of  Standards and Technology (NIST)
              Special Publication (SP) 800-108, 2008, <http://
              csrc.nist.gov/publications/nistpubs/800-108/
              sp800-108.pdf>.

   [SP800-56A]
              Barker, E., Johnson, D., and M. Smid, "Special Publication
              800-56A: Recommendation for Pair-Wise Key Establishment
              Schemes Using Discrete Logarithm Cryptography (Revised)",
              U.S. National Institute of Standards and Technology (NIST)
              Special Publication (SP) 800-56A, <http://csrc.nist.gov/
              publications/nistpubs/800-56A/
              SP800-56A_Revision1_Mar08-2007.pd>.

   [SP800-90]



McGrew & Weis            Expires August 30, 2010               [Page 16]


Internet-Draft             KDFs and their Uses             February 2010


              Barker, E. and J. Kelsey, "Special Publication 800-90:
              Recommendation for Random Number Generation Using
              Deterministic Random Bit Generators (Revised)", U.S.
              National Institute of  Standards and Technology (NIST)
              Special Publication (SP) 800-90, 2007, <http://
              csrc.nist.gov/publications/nistpubs/800-90/
              SP800-90revised_March2007.pdf>.

   [X9.42]    "Public Key Cryptography for the Financial Services
              Industry: Agreement of Symmetric Keys Using Discrete
              Logarithm Cryptography", American National Standard for
              Financial Services , November 2003.

   [X9.63]    "Public Key Cryptography for the Financial Services
              Industry Key Agreement and Key Transport Using Elliptic
              Curve Cryptography", American National Standard for
              Financial Services , November 2001.


Authors' Addresses

   David A. McGrew
   Cisco Systems
   510 McCarthy Blvd.
   Milpitas, CA  95035
   USA

   Phone: (408) 525 8651
   Email: mcgrew@cisco.com
   URI:   http://www.mindspring.com/~dmcgrew/dam.htm


   Brian Weis
   Cisco Systems
   510 McCarthy Blvd.
   Milpitas, CA  95035
   USA

   Phone: (408) 526 4796
   Email: bew@cisco.com











McGrew & Weis            Expires August 30, 2010               [Page 17]