[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Cfrg] existing KDFs and their uses



Uri and Peter,

This is not a new KDF; it's the IKEv2 PRF+ (also used in PANA and EAP-AKA').
So we're *not* proposing creating one more.
 
This is merely moving the KDF specification to a stand-alone document,
so it would be easier to reference it from new protocol specifications 
(that would like to avoid both (1) normative reference to RFC 4306, and 
(2) copy-pasting the specification from RFC 4306). 

(BTW, I'm speaking from personal experience here -- in RFC 5448, we 
ended up copy-pasting the specification...)

Best regards,
Pasi

> -----Original Message-----
> From: cfrg-bounces at irtf.org [mailto:cfrg-bounces at irtf.org] On Behalf Of
> ext Blumenthal, Uri
> Sent: 21 October, 2009 18:33
> To: 'mcgrew at cisco.com'; 'pgut001 at cs.auckland.ac.nz';
> 'dbrown at certicom.com'; 'dmjacobson at sbcglobal.net'
> Cc: 'cfrg at irtf.org'
> Subject: Re: [Cfrg] existing KDFs and their uses
> 
> So having this many different KDF's - why do we need one more, and how
> is it more secure (and more "random") than those already
> standardized???
> 
> 
> ----- Original Message -----
> From: cfrg-bounces at irtf.org <cfrg-bounces at irtf.org>
> To: Peter Gutmann <pgut001 at cs.auckland.ac.nz>; Dan Brown
> <dbrown at certicom.com>; David Jacobson <dmjacobson at sbcglobal.net>
> Cc: Pasi.Eronen at nokia.com Eronen <Pasi.Eronen at nokia.com>; cfrg at irtf.org
> <cfrg at irtf.org>; Hugo Krawczyk <hugo at ee.technion.ac.il>
> Sent: Wed Oct 21 11:29:06 2009
> Subject: [Cfrg] existing KDFs and their uses
> 
> Hi Peter, Dan, and David,
> 
> > "Dan Brown" <dbrown at certicom.com> writes:
> >
> >> 2.  The menagerie of key derivation functions (i.e. DH-like shared
> >> secret
> >> value to symmetric key, which unlike key generation are needed for
> >> interoperability) such as IEEE KDF1 and KDF2, ANSI X9.63 X9.42,
> >> NIST SP
> >> 800-56A, TLS-PRF, and IKE, and now HKDF,
> >
> 
> Peter Gutmann wrote:
> > You missed out the SSH one, and what S/MIME uses for its DH keying,
> > and there
> > are probably several others as well used in lesser-known protocols.
> > In fact
> > every protocol that I know of has invented its own KDF, incompatible
> > with
> > every other KDF out there, thus my question about why we need yet
> > another one.
> 
> David Jacobson wrote:
> > NIST SP 800-90, which is actually about random number generation,
> > specifies two extractors, which it calls Derivation Functions, in
> > Section 10.4.1 and 10.4.2. These are hash based and block cipher
> > based, respectively.  Both can deal with generating internal key
> > material wider than a single block.  (I write "internal key
> > material" because the data so generated is used to as input to the
> > expansion function.)
> 
> good points, and it looks like underestimated the number of KDFs used
> to extract keys from DH in my note yesterday.   It would be valuable
> to list and categorize all of these functions and their uses, to
> better understand the situation.  Collecting text from all of our
> emails, here is a start:
> Uses:
>   1. Generate one key from another. In this case, no extraction stage
> is needed.
>   2. Generate a key from a DH shared secret.  In this case,
> computational extraction seems to be needed, because statistical
> extraction would be inefficient.
> 
>   3. Generate key material from a non-uniform random source.  In this
> case, either statistical or computational extraction could be used.
> 
>    4. Generate a key from a passphrase.
> 
> KDFs:
> P_SHA256 from Section 5 of RFC 5246, The Transport Layer Security
> (TLS) Protocol, Version 1.2.  (HMAC in an OFB mode variant)   Uses #1
> and #2.
> P_MD5 XOR P_SHA1 from Section 5 of RFC 4346, The Transport Layer
> Security (TLS) Protocol Version 1.1.  (HMAC in an OFB mode variant,
> XORed with MD5 in the same mode.)  Uses #1 and #2.
> AES-CMAC-PRF-128 from RFC 4615, 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).   Uses #1 and #2.
> 
> PRF+ from Section 2.13 of RFC 4306, IKEv2.   (HMAC in counter mode.)
> Uses #1 and #2.
> 
> SSH-KDF, Section 7.2 of RFC4253, The Secure Shell (SSH) Transport
> Layer Protocol.  (Hash function in counter mode.)  Uses #1 and #2.
> 
> AES-CM-PRF, Section 4.3.3 of RFC3711, The Secure Real-time Transport
> Protocol.
> 
> S/MIME DH KDF.  Section 2.1.2 of RFC 2631.  (Hash function.)  (Is this
> really the most up-to-date reference for SMIME DH?)   Uses #1 and #2.
> Krb5-KDF from RFC 4402 A Pseudo-Random Function (PRF) for the Kerberos
> V Generic Security Service Application Program Interface (GSS-API)
> Mechanism.  (Hash function in counter mode.)  Use #1.
> 
> PBKDF1 (Hash function in OFB mode.) PBKDF2 (HMAC iterated, with all of
> the iterates XORed together.) from RFC2898, PKCS #5: Password-Based
> Cryptography Specification Version 2.0.   Use #4.
> 
> IEEE KDF1 (Hash function.)   Uses #1 and #2.
> 
> IEEE KDF2 (Hash function in counter mode.)   Uses #1 and #2.
> 
> ANSI X9.42 (Hash function.)   Uses #1 and #2.
> 
> ANSI X9.63 (Hash function in counter mode.)   Uses #1 and #2.
> 
> NIST SP 800-56A Concatenation-KDF and ASN.1-KDF (Hash function in
> counter mode.)   Uses #1 and #2.
> 
> NIST SP 800-90, Section 10.4 defines two extractors (hash function in
> counter mode, and a block cipher mode) and Sections 10.1, 10.2, and
> 10.3 define some "expanders".   Use #3.
> 
> Additions and corrections are welcome.  Also, pointers to security
> analyses would be good to have, wherever they exist.
> For each of these functions, it would be good to know a) under what
> conditions is it secure (e.g. what has to be assumed of the hash
> function) b) where and how is it used, c) does the protocol using it
> admit the replacement of its KDF, and if so, d) what is its interface
> (does it take a "salt" input, for example).
> David
> _______________________________________________
> Cfrg mailing list
> Cfrg at irtf.org
> http://www.irtf.org/mailman/listinfo/cfrg