
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@12581 ec53bebd-3082-4978-b11e-865c3cabbd6b
462 lines
20 KiB
Plaintext
462 lines
20 KiB
Plaintext
|
||
|
||
|
||
<Kerberos Working Group> Larry Zhu
|
||
Internet Draft Microsoft
|
||
Updates: 1964 Karthik Jaganathan
|
||
Category: Standards Track Microsoft
|
||
draft-ietf-krb-wg-gssapi-cfx-00.txt August 16, 2003
|
||
Expires: February 16, 2004
|
||
|
||
Crypto Profile Based Support for the Inclusion of New Encryption and
|
||
Checksum Algorithms in the Kerberos V5 GSSAPI Mechanism
|
||
|
||
|
||
Status of this Memo
|
||
|
||
This document is an Internet-Draft and is in full conformance with
|
||
all provisions of Section 10 of RFC2026 [1].
|
||
|
||
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.
|
||
|
||
|
||
1. Abstract
|
||
|
||
[KCRYPTO] introduced a generic framework for the inclusion of new
|
||
encryption and checksum algorithms to be used in the Kerberos V5
|
||
protocol. [AES-KRB5] describes a crypto profile (per [KCRYPTO]) for
|
||
AES. This document introduces a generic method for adding new
|
||
crypto-systems to the GSSAPI-KerberosV5 mechanism based on crypto
|
||
profiles as defined in [KCRYPTO]. It also describes the use of AES
|
||
encryption for GSSAPI as an example of this new method.
|
||
|
||
|
||
2. 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 RFC-2119 [2].
|
||
|
||
|
||
3. Introduction
|
||
|
||
[GSSAPI-KRB5] describes the GSSAPI mechanism for Kerberos V5. It
|
||
defines the format of context initiation, per-message and context
|
||
deletion tokens. When adding new crypto system support, the
|
||
|
||
|
||
Zhu Standards Trace - February 16, 2003 1
|
||
Crypto Profile Support for Kerberos GSSAPI August 2003
|
||
|
||
|
||
approach taken in [GSSAPI-KRB5] is to add algorithm identifiers for
|
||
each new cryptosystem.
|
||
|
||
The approach taken in this document is to use the same encryption
|
||
and checksum algorithms specified by the crypto profile for the
|
||
session key or subkey that is created during context negotiation.
|
||
Message layouts of the per-message and context deletion tokens are
|
||
revised to remove algorithm indicators and add extra information to
|
||
support the generic crypto framework [KCRYPTO].
|
||
|
||
"Newer" encryption and checksum types MUST use the new token formats
|
||
defined in this document. Older encryption and checksum types SHALL
|
||
NOT use these new token formats. The term "newer" is more precisely
|
||
defined in [KRBCLAR].
|
||
|
||
Note that in this document, "AES" is used for brevity to refer
|
||
loosely to either aes128-cts-hmac-sha1-96 or aes256-cts-hmac-sha1-96
|
||
as defined in [AES-KRB5].
|
||
|
||
4. Quality of Protection and Algorithm Identifiers
|
||
|
||
The GSSAPI specification [GSSAPI] provides for QOP values that can
|
||
be used by the application to request a certain type of encryption
|
||
or signing. A zero QOP value is used to indicate the "default"
|
||
protection; applications which use the default QOP are not
|
||
guaranteed to be portable across implementations or even inter-
|
||
operate with different deployment configurations of the same
|
||
implementation. Using an algorithm that is different from the one
|
||
for which the key is defined may not be appropriate. Therefore, when
|
||
the new method in this document is used, the QOP value is ignored.
|
||
|
||
The encryption and checksum algorithms in per-message and context
|
||
deletion tokens are now implicitly defined by the algorithms
|
||
associated with the session and subkey. Algorithms identifiers are
|
||
therefore no longer needed and removed from the token headers.
|
||
|
||
5. Key Derivation
|
||
|
||
To limit the exposure of a given key, [KCRYPTO] adopted "one-way"
|
||
"entropy-preserving" derived keys, for different purposes or key
|
||
usages, from a base key or protocol key. This document defines four
|
||
key usage values below for signing and sealing messages:
|
||
|
||
Name value
|
||
-------------------------------------
|
||
KG-USAGE-ACCEPTOR-SIGN 22
|
||
KG-USAGE-ACCEPTOR-SEAL 23
|
||
KG-USAGE-INITIATOR-SIGN 24
|
||
KG-USAGE-INITIATOR-SEAL 25
|
||
|
||
|
||
When the sender is the context acceptor, KG-USAGE-ACCEPTOR-SIGN is
|
||
used as the usage number in the key derivation function for deriving
|
||
keys to be used in MIC and context deletion tokens, and KG-USAGE-
|
||
Zhu Standards Track - February 16, 2004 2
|
||
Crypto Profile Support for Kerberos GSSAPI August 2003
|
||
|
||
|
||
ACCEPTOR-SEAL is used for Wrap tokens; similarly when the sender is
|
||
the context initiator, KG-USAGE-INITIATOR-SIGN is used as the usage
|
||
number in the key derivation function for MIC and context deletion
|
||
tokens, KG-USAGE-INITIATOR-SEAL is used for Wrap Tokens. Even if
|
||
the Wrap token does not provide for confidentiality the same usage
|
||
values specified above are used.
|
||
|
||
6. Token Formats and Definitions
|
||
|
||
The new token formats defined in this document are designed to
|
||
accommodate the requirements of newer crypto systems. Certain
|
||
implementations of GSSAPI, such as SSPI, allow for "scatter-gather"
|
||
and in-place encryption, mostly by leveraging low level details of
|
||
crypto systems. The token layouts have been designed to satisfy the
|
||
above requirements without incurring significant performance
|
||
penalties or loosing generality.
|
||
|
||
The design along with the rationale behind it, is discussed in
|
||
detail in the following sections.
|
||
|
||
6.1. Sequence Number and Direction Indicators
|
||
|
||
The sequence number for any per-message or context deletion token is
|
||
a 64 bit integer (expressed in big endian order). One separate byte
|
||
is used as the directional indicator: the hex value FF if the sender
|
||
is the context acceptor, 00 otherwise. Both the sequence number and
|
||
the directional indicator are protected as specified in section 6.2.
|
||
|
||
6.2. Encryption and Checksum Operations
|
||
|
||
The encryption algorithms defined by the crypto profiles provide for
|
||
integrity protection. Therefore no separate checksum is needed.
|
||
|
||
In Wrap tokens that provide for confidentiality, the "header" (the
|
||
first 16 bytes of the Wrap token) is appended to the plaintext data
|
||
before encryption. Hence the resulting Wrap token is {"header" |
|
||
encrypt(plaintext-data | "header")}, where encrypt() is the
|
||
encryption operation defined in the crypto profile. In Wrap tokens
|
||
that do not provide for confidentiality, the checksum is calculated
|
||
over the plaintext data concatenated with the token header (the
|
||
first 16 bytes of the Wrap token). Hence the resulting Wrap token
|
||
is {"header" | plaintext-data | get_mic(plaintext-data | "header")},
|
||
where get_mic() is the checksum operation defined in the crypto
|
||
profile. The parameters for the key and the cipher-state in the
|
||
encrypt() and get_mic() operations have been omitted for brevity.
|
||
|
||
The resulting Wrap tokens bind the data to the token header,
|
||
including the sequence number, directional indicator, and the
|
||
rotation count.
|
||
|
||
[With AEAD, Wrap tokens with confidentiality do not need to encrypt
|
||
the header and the overhead can be reduced slightly]
|
||
|
||
|
||
Zhu Standards Track - February 16, 2004 3
|
||
Crypto Profile Support for Kerberos GSSAPI August 2003
|
||
|
||
|
||
For MIC tokens, the checksum is first calculated over the token
|
||
header (the first 16 bytes of the MIC token) and then the to-be-
|
||
signed plaintext data.
|
||
|
||
For context deletion tokens, the checksum is calculated over the
|
||
token header (the first 16 bytes of the context deletion token).
|
||
|
||
When AES is used, the checksum algorithm is HMAC_SHA1_96 and the
|
||
checksum size is 12 bytes. Data is pre-pended with a 16 byte
|
||
confounder before encryption, and no padding is needed.
|
||
|
||
6.3. RRC Field
|
||
|
||
A new field, called "RRC" (Right Rotation Count), is added to allow
|
||
the data to be encrypted in place. The resulting Wrap token in the
|
||
previous section, excluding the first 16 bytes of the token header,
|
||
is rotated to the right by "RRC" bytes. The net result is that
|
||
"RRC" bytes of trailing octets are moved toward the header.
|
||
Consider the following as an example of this rotation operation:
|
||
Assume that the RRC value is 3 and the token before the rotation is
|
||
{"header" | aa | bb | cc | dd | ee | ff | gg | hh}, the token after
|
||
rotation would be {"header" | ff | gg | hh | aa | bb | cc | dd | ee
|
||
}, where {aa | bb | cc |...| hh} is used to indicate the byte
|
||
sequence.
|
||
|
||
The RRC field is expressed as a two octet integer in big endian
|
||
order.
|
||
|
||
The rotation count value is chosen by the sender based on
|
||
implementation details, and the receiver MUST be able to interpret
|
||
all possible rotation count values.
|
||
|
||
6.4. EC Field
|
||
|
||
The decryption operation in the crypto profile may not always return
|
||
the exact length of the plaintext data. An "EC"(Extra Count) field
|
||
is added to the Wrap() token header to indicate the number of bytes
|
||
that have been added to the end of the plaintext data before
|
||
encryption. The "EC" field is a two byte integer expressed in big
|
||
endian order and it should be 00 00 if confidentiality is not
|
||
provided for by the Wrap tokens.
|
||
|
||
6.5. Seal Field
|
||
|
||
The Seal field in Wrap tokens is used to indicate whether
|
||
confidentiality is provided for. If confidentiality is provided for
|
||
by the Wrap token, this field contains the hex value FF, otherwise it
|
||
contains the hex value 00.
|
||
|
||
6.6. Message Layout for Per-message and Context Deletion Tokens
|
||
|
||
The new message layouts are as follows.
|
||
|
||
MIC Token:
|
||
Zhu Standards Track - February 16, 2004 4
|
||
Crypto Profile Support for Kerberos GSSAPI August 2003
|
||
|
||
|
||
|
||
Byte no Name Description
|
||
0..1 TOK_ID Identification field.
|
||
Tokens emitted by GSS_GetMIC()
|
||
contain the hex value 04 04 in
|
||
this field.
|
||
2..2 Direction Hex value FF if the sender is the
|
||
context acceptor, 00 otherwise.
|
||
3..7 Filler Contains 5 bytes of hex value FF.
|
||
8..15 SND_SEQ Sequence number field in
|
||
cleartext, in big endian order.
|
||
16.. SGN_CKSUM Checksum of byte 0..15 and the
|
||
"to-be-signed" data, where the
|
||
checksum algorithm is defined by
|
||
the crypto profile for the
|
||
session key or subkey.
|
||
|
||
|
||
The Filler field is included in the checksum calculation for
|
||
simplicity. This is common to both MIC and context deletion token
|
||
checksum calculations.
|
||
|
||
Wrap Token:
|
||
|
||
Byte no Name Description
|
||
0..1 TOK_ID Identification field.
|
||
Tokens emitted by GSS_Wrap()
|
||
contain the hex value 05 04
|
||
in this field.
|
||
2..2 Direction Hex value FF if the sender is the
|
||
context acceptor, 00 otherwise.
|
||
3..3 Seal Confidentiality indicator: hex
|
||
value FF if confidentiality is
|
||
provided for, 00 otherwise.
|
||
4..5 EC Contains the "extra count" field,
|
||
in big endian order as described in
|
||
section 6.4.
|
||
6..7 RRC Contains the "right rotation
|
||
count" in big endian order, as
|
||
described in section 6.3.
|
||
8..15 SND_SEQ Sequence number field in
|
||
cleartext, in big endian order.
|
||
16.. Data Encrypted or plaintext data, as
|
||
described in section 6.2, where
|
||
the encryption or checksum
|
||
algorithm is defined by the crypto
|
||
profile for the session key or
|
||
subkey.
|
||
|
||
|
||
Context Deletion Token:
|
||
|
||
Byte no Name Description
|
||
Zhu Standards Track - February 16, 2004 5
|
||
Crypto Profile Support for Kerberos GSSAPI August 2003
|
||
|
||
|
||
0..1 TOK_ID Identification field.
|
||
Tokens emitted by
|
||
GSS_Delete_sec_context() contain
|
||
the hex value 04 05 in this
|
||
field.
|
||
2..2 Direction Hex value FF if the sender is the
|
||
context acceptor, 00 otherwise.
|
||
3..7 Filler Contains 5 bytes of hex value FF.
|
||
8..15 SND_SEQ Sequence number field in
|
||
cleartext, in big endian order.
|
||
16.. SGN_CKSUM Checksum of byte 0..15, where the
|
||
checksum algorithm is defined by
|
||
the crypto profile for the
|
||
session key or subkey.
|
||
|
||
|
||
7. Backwards compatibility considerations
|
||
|
||
The new token formats defined in this document will only be
|
||
recognized by new implementations. A MIC or wrap token generated
|
||
with the algorithms defined in this document will not be recognized
|
||
by an older implementation that only recognizes the algorithms
|
||
defined in [GSSAPI-KRB5]. To address this, implementations can
|
||
always use the explicit sign or seal algorithm in [GSSAPI-KRB5] when
|
||
the key type corresponds to those algorithms. An alternative
|
||
approach might be to retry sending the message with the sign or seal
|
||
algorithm explicitly defined as in [GSSAPI-KRB5]. However this would
|
||
require the use of a mechanism such as [SPNEGO] to securely
|
||
negotiate the algorithm or the use out of band mechanism to choose
|
||
appropriate algorithms. For this reason, it is RECOMMENDED that the
|
||
use of the new token formats defined in this document be confined
|
||
only for "newer encryption and checksum" described by a crypto
|
||
profile.
|
||
|
||
8. Security Considerations
|
||
|
||
It is possible that the KDC returns a session-key type that is not
|
||
supported by the GSSAPI implementation (either on the client and the
|
||
server). In this case the implementation MUST not try to use the key
|
||
with a supported cryptosystem. This will ensure that no security
|
||
weaknesses arise due to the use of an inappropriate key with an
|
||
encryption algorithm.
|
||
|
||
In addition the security problem described in [3DES] arising from
|
||
the use of a service implementation with a GSSAPI mechanism
|
||
supporting only DES and a Kerberos mechanism supporting both DES and
|
||
Triple DES is actually a more generic one. It arises whenever the
|
||
GSSAPI implementation does not support a stronger cryptosystem
|
||
supported by the Kerberos mechanism. KDC administrators desiring to
|
||
limit the session key types to support interoperability with such
|
||
GSSAPI implementations should carefully weigh the reduction in
|
||
protection offered by such mechanisms against the benefits of
|
||
interoperability.
|
||
Zhu Standards Track - February 16, 2004 6
|
||
Crypto Profile Support for Kerberos GSSAPI August 2003
|
||
|
||
|
||
|
||
It is recommended by some cryptographers that the output of a
|
||
checksum used with an encryption algorithm should have the same
|
||
strength as the key in use. In this regard standardization work for
|
||
SHA-256 and SHA-512 to be used with AES is currently in progress.
|
||
This document retains the use of HMAC_SHA1_96 as specified in the
|
||
[AES-KRB5] draft. The use of SHA-256 or SHA-512 with AES will
|
||
require new crypto profiles and there should not be any further
|
||
changes needed to this document.
|
||
|
||
9. Acknowledgments
|
||
|
||
|
||
The authors wish to acknowledge the contributions from the following
|
||
individuals:
|
||
|
||
Ken Raeburn and Nicolas Willams corrected many of our errors in the
|
||
use of generic profiles and were instrumental in the creation of this
|
||
draft. Sam Hartman and Ken Raeburn suggested the "floating trailer"
|
||
idea.
|
||
|
||
Sam Hartman and Nicolas Williams recommended the replacing our
|
||
earlier key derivation function for directional keys with different
|
||
key usage numbers for each direction as well as retaining the
|
||
directional bit for maximum compatibility.
|
||
|
||
Paul Leach provided numerous suggestions and comments. Scott Field,
|
||
Richard Ward, Dan Simon also provided valuable inputs on this draft.
|
||
|
||
10. References
|
||
|
||
[AES] National Institute of Standards and Technology, U.S.
|
||
Department of Commerce, "Advanced Encryption Standard", Federal
|
||
Information Processing Standards Publication 197, Washington, DC,
|
||
November 2001.
|
||
|
||
[AES-KRB5] Raeburn, K., "AES Encryption for Kerberos 5", draft-
|
||
raeburn-krb-rijndael-krb-05.txt, June, 2003. Work in progress.
|
||
|
||
[DES3] Raeburn, K., "Triple-DES Support for the Kerberos 5 GSSAPI
|
||
Mechanism", draft-raeburn-gssapi-krb5-3des-XX.txt in the MIT
|
||
distribution, June 2000.
|
||
|
||
|
||
[GSSAPI] Linn, J., "Generic Security Service Application Program
|
||
Interface Version 2, Update 1", RFC 2743, January, 2000.
|
||
|
||
[GSSAPI-KRB5] Linn, J., "The Kerberos Version 5 GSS-API Mechanism",
|
||
RFC 1964, June, 1996.
|
||
|
||
[KCRYPTO] Raeburn, K., "Encryption and Checksum Specifications for
|
||
Kerberos 5", draft-ietf-krb-wg-crypto-05.txt, June, 2003. Work in
|
||
progress.
|
||
|
||
Zhu Standards Track - February 16, 2004 7
|
||
Crypto Profile Support for Kerberos GSSAPI August 2003
|
||
|
||
|
||
|
||
[KRBCLAR] Neuman, C., Kohl, J., Ts'o T., Yu T., Hartman, S.,
|
||
Raeburn, K., "The Kerveros Network Authentication Service (V5)",
|
||
http://www.isi.edu/people/bcn/draft-kerberos-rev.html/krb-
|
||
clarifications-00-020222.txt, February,2002. Work in progress.
|
||
|
||
[SPNEGO] Baize, E., Pinkas D., "The Simple and Protected GSS-API
|
||
Negotiation Mechanism.", RFC 2478, December 1998.
|
||
|
||
11. Author's Address
|
||
|
||
Larry Zhu
|
||
One Microsoft Way
|
||
Redmond, WA 98052 - USA
|
||
EMail: LZhu@microsoft.com
|
||
|
||
Karthik Jaganathan
|
||
One Microsoft Way
|
||
Redmond, WA 98052 - USA
|
||
EMail: karthikj@microsoft.com
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Zhu Standards Track - February 16, 2004 8
|