draft-ms-krb-wg-gssapi-cfx-00.txt [plain text]
<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