
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@1560 ec53bebd-3082-4978-b11e-865c3cabbd6b
251 lines
8.2 KiB
Plaintext
251 lines
8.2 KiB
Plaintext
|
||
|
||
|
||
|
||
|
||
Network Working Group M. Horowitz
|
||
<draft-ietf-cat-kerb-key-derivation-00.txt> Cygnus Solutions
|
||
Internet-Draft November, 1996
|
||
|
||
|
||
Key Derivation for Kerberos V5
|
||
|
||
Status of this Memo
|
||
|
||
This document is an Internet-Draft. 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.''
|
||
|
||
To learn the current status of any Internet-Draft, please check the
|
||
``1id-abstracts.txt'' listing contained in the Internet-Drafts Shadow
|
||
Directories on ds.internic.net (US East Coast), nic.nordu.net
|
||
(Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific
|
||
Rim).
|
||
|
||
Distribution of this memo is unlimited. Please send comments to the
|
||
<cat-ietf@mit.edu> mailing list.
|
||
|
||
Abstract
|
||
|
||
In the Kerberos protocol [RFC1510], cryptographic keys are used in a
|
||
number of places. In order to minimize the effect of compromising a
|
||
key, it is desirable to use a different key for each of these places.
|
||
Key derivation [Horowitz96] can be used to construct different keys
|
||
for each operation from the keys transported on the network. For
|
||
this to be possible, a small change to the specification is
|
||
necessary.
|
||
|
||
|
||
Overview
|
||
|
||
Under RFC1510 as stated, key derivation could be specified as a set
|
||
of encryption types which share the same key type. The constant for
|
||
each derivation would be a function of the encryption type. However,
|
||
it is generally accepted that, for interoperability, key types and
|
||
encryption types must map one-to-one onto each other. (RFC 1510 is
|
||
being revised to address this issue.) Therefore, to use key
|
||
derivcation with Kerberos V5 requires a small change to the
|
||
specification.
|
||
|
||
For each place where a key is used in Kerberos, a ``key usage'' must
|
||
be specified for that purpose. The key, key usage, and
|
||
encryption/checksum type together describe the transformation from
|
||
plaintext to ciphertext, or plaintext to checksum. For backward
|
||
|
||
|
||
|
||
Horowitz [Page 1]
|
||
|
||
Internet Draft Key Derivation for Kerberos V5 November, 1996
|
||
|
||
|
||
compatibility, old encryption types would be defined independently of
|
||
the key usage.
|
||
|
||
|
||
Key Usage Values
|
||
|
||
This is a complete list of places keys are used in the kerberos
|
||
protocol, with key usage values and RFC 1510 section numbers:
|
||
|
||
1. AS-REQ PA-ENC-TIMESTAMP padata timestamp, encrypted with the
|
||
client key (section 5.4.1)
|
||
2. AS-REP Ticket and TGS-REP Ticket (includes tgs session key or
|
||
application session key), encrypted with the service key
|
||
(section 5.4.2)
|
||
3. AS-REP encrypted part (includes tgs session key or application
|
||
session key), encrypted with the client key (section 5.4.2)
|
||
|
||
4. TGS-REQ KDC-REQ-BODY AuthorizationData, encrypted with the tgs
|
||
session key (section 5.4.1)
|
||
5. TGS-REQ KDC-REQ-BODY AuthorizationData, encrypted with the tgs
|
||
authenticator subkey (section 5.4.1)
|
||
6. TGS-REQ PA-TGS-REQ padata AP-REQ Authenticator cksum, keyed
|
||
with the tgs session key (sections 5.3.2, 5.4.1)
|
||
7. TGS-REQ PA-TGS-REQ padata AP-REQ Authenticator (includes tgs
|
||
authenticator subkey), encrypted with the tgs session key
|
||
(section 5.3.2)
|
||
8. TGS-REP encrypted part (includes application session key),
|
||
encrypted with the tgs session key (section 5.4.2)
|
||
9. TGS-REP encrypted part (includes application session key),
|
||
encrypted with the tgs authenticator subkey (section 5.4.2)
|
||
|
||
10. AP-REQ Authenticator cksum, keyed with the application session
|
||
key (section 5.3.2)
|
||
11. AP-REQ Authenticator (includes application authenticator
|
||
subkey), encrypted with the application session key (section
|
||
5.3.2)
|
||
12. AP-REP encrypted part (includes application session subkey),
|
||
encrypted with the application session key (section 5.5.2)
|
||
|
||
13. KRB-PRIV encrypted part, encrypted with a key chosen by the
|
||
application (section 5.7.1)
|
||
14. KRB-CRED encrypted part, encrypted with a key chosen by the
|
||
application (section 5.6.1)
|
||
15. KRB-SAVE cksum, keyed with a key chosen by the application
|
||
(section 5.8.1)
|
||
|
||
16. Data which is defined in some specification outside of
|
||
Kerberos to be encrypted using an RFC1510 encryption type.
|
||
17. Data which is defined in some specification outside of
|
||
Kerberos to be checksummed using an RFC1510 checksum type.
|
||
|
||
A few of these key usages need a little clarification. A service
|
||
which receives an AP-REQ has no way to know if the enclosed Ticket
|
||
was part of an AS-REP or TGS-REP. Therefore, key usage 2 must always
|
||
|
||
|
||
|
||
Horowitz [Page 2]
|
||
|
||
Internet Draft Key Derivation for Kerberos V5 November, 1996
|
||
|
||
|
||
be used for generating a Ticket, whether it is in response to an AS-
|
||
REQ or TGS-REQ.
|
||
|
||
There might exist other documents which define protocols in terms of
|
||
the RFC1510 encryption types or checksum types. Such documents would
|
||
not know about key usages. In order that these documents continue to
|
||
be meaningful until they are updated, key usages 16 and 17 must be
|
||
used to derive keys for encryption and checksums, respectively. New
|
||
protocols defined in terms of the Kerberos encryption and checksum
|
||
types should use their own key usages. Key usages may be registered
|
||
with IANA to avoid conflicts. Key usages shall be unsigned 32 bit
|
||
integers. Zero is not permitted.
|
||
|
||
|
||
Defining Cryptosystems Using Key Derivation
|
||
|
||
Kerberos requires that the ciphertext component of EncryptedData be
|
||
tamper-resistant as well as confidential. This implies encryption
|
||
and integrity functions, which must each use their own separate keys.
|
||
So, for each key usage, two keys must be generated, one for
|
||
encryption (Ke), and one for integrity (Ki):
|
||
|
||
Ke = DK(protocol key, key usage | 0xAA)
|
||
Ki = DK(protocol key, key usage | 0x55)
|
||
|
||
where the key usage is represented as a 32 bit integer in network
|
||
byte order. The ciphertest must be generated from the plaintext as
|
||
follows:
|
||
|
||
ciphertext = E(Ke, confounder | length | plaintext | padding) |
|
||
H(Ki, confounder | length | plaintext | padding)
|
||
|
||
The confounder and padding are specific to the encryption algorithm
|
||
E.
|
||
|
||
When generating a checksum only, there is no need for a confounder or
|
||
padding. Again, a new key (Kc) must be used. Checksums must be
|
||
generated from the plaintext as follows:
|
||
|
||
Kc = DK(protocol key, key usage | 0x99)
|
||
|
||
MAC = H(Kc, length | plaintext)
|
||
|
||
Note that each enctype is described by an encryption algorithm E and
|
||
a keyed hash algorithm H, and each checksum type is described by a
|
||
keyed hash algorithm H. HMAC, with an appropriate hash, is
|
||
recommended for use as H.
|
||
|
||
|
||
Security Considerations
|
||
|
||
This entire document addresses shortcomings in the use of
|
||
cryptographic keys in Kerberos V5.
|
||
|
||
|
||
|
||
|
||
Horowitz [Page 3]
|
||
|
||
Internet Draft Key Derivation for Kerberos V5 November, 1996
|
||
|
||
|
||
Acknowledgements
|
||
|
||
I would like to thank Uri Blumenthal, Sam Hartman, and Bill
|
||
Sommerfeld for their contributions to this document.
|
||
|
||
|
||
References
|
||
|
||
[Horowitz96] Horowitz, M., "Key Derivation for Authentication,
|
||
Integrity, and Privacy", draft-horowitz-key-derivation-00.txt,
|
||
November 1996. [RFC1510] Kohl, J. and Neuman, C., "The Kerberos
|
||
Network Authentication Service (V5)", RFC 1510, September 1993.
|
||
|
||
|
||
Author's Address
|
||
|
||
Marc Horowitz
|
||
Cygnus Solutions
|
||
955 Massachusetts Avenue
|
||
Cambridge, MA 02139
|
||
|
||
Phone: +1 617 354 7688
|
||
Email: marc@cygnus.com
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Horowitz [Page 4]
|
||
|