aboutsummaryrefslogtreecommitdiff
path: root/doc/standardisation/draft-richards-otp-kerberos-01.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/standardisation/draft-richards-otp-kerberos-01.txt')
-rw-r--r--doc/standardisation/draft-richards-otp-kerberos-01.txt1232
1 files changed, 1232 insertions, 0 deletions
diff --git a/doc/standardisation/draft-richards-otp-kerberos-01.txt b/doc/standardisation/draft-richards-otp-kerberos-01.txt
new file mode 100644
index 000000000000..5db9c39f87c9
--- /dev/null
+++ b/doc/standardisation/draft-richards-otp-kerberos-01.txt
@@ -0,0 +1,1232 @@
+
+
+
+Network Working Group G. Richards
+Internet-Draft RSA, The Security Division of EMC
+Intended status: Standards Track October 11, 2006
+Expires: April 14, 2007
+
+
+ OTP Kerberos
+ draft-richards-otp-kerberos-01
+
+Status of this Memo
+
+ By submitting this Internet-Draft, each author represents that any
+ applicable patent or other IPR claims of which he or she is aware
+ have been or will be disclosed, and any of which he or she becomes
+ aware will be disclosed, in accordance with Section 6 of 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 April 14, 2007.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (2006).
+
+Abstract
+
+ The Kerberos protocol provides a framework authenticating a client
+ using the exchange of pre-authentication data. This document
+ describes the use of this framework to carry out One Time Password
+ (OTP) authentication.
+
+
+
+
+
+
+
+Richards Expires April 14, 2007 [Page 1]
+
+Internet-Draft OTP Kerberos October 2006
+
+
+Table of Contents
+
+ 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
+ 2. Usage Overview . . . . . . . . . . . . . . . . . . . . . . . . 3
+ 2.1. Pre-Authentication . . . . . . . . . . . . . . . . . . . . 3
+ 2.2. PIN Change . . . . . . . . . . . . . . . . . . . . . . . . 4
+ 2.3. Re-Synchronization . . . . . . . . . . . . . . . . . . . . 4
+ 3. Pre-Authentication Protocol Details . . . . . . . . . . . . . 4
+ 3.1. Shared Secret . . . . . . . . . . . . . . . . . . . . . . 4
+ 3.2. Client Request . . . . . . . . . . . . . . . . . . . . . . 5
+ 3.3. KDC Challenge . . . . . . . . . . . . . . . . . . . . . . 5
+ 3.4. Client Response . . . . . . . . . . . . . . . . . . . . . 7
+ 3.5. Verifying the pre-auth Data . . . . . . . . . . . . . . . 7
+ 3.6. Updating the Secret . . . . . . . . . . . . . . . . . . . 9
+ 4. Reply Key Generation Algorithms . . . . . . . . . . . . . . . 9
+ 4.1. Using the OTP Value Directly . . . . . . . . . . . . . . . 9
+ 4.2. Hardening the OTP Value . . . . . . . . . . . . . . . . . 9
+ 4.2.1. Using an Iteration Count . . . . . . . . . . . . . . . 10
+ 4.2.2. Using a Shared Secret and OTP . . . . . . . . . . . . 10
+ 4.2.3. Using a Password and OTP . . . . . . . . . . . . . . . 11
+ 4.3. Generating the Key without the OTP . . . . . . . . . . . . 11
+ 4.3.1. Using the Password . . . . . . . . . . . . . . . . . . 11
+ 4.3.2. Using a Shared Secret . . . . . . . . . . . . . . . . 11
+ 5. OTP Kerberos Types . . . . . . . . . . . . . . . . . . . . . . 12
+ 5.1. PA-OTP-CHALLENGE . . . . . . . . . . . . . . . . . . . . . 12
+ 5.2. PA-OTP-RESPONSE . . . . . . . . . . . . . . . . . . . . . 13
+ 5.3. PA-OTP-CONFIRM . . . . . . . . . . . . . . . . . . . . . . 16
+ 5.4. PA-ENC-PIN . . . . . . . . . . . . . . . . . . . . . . . . 16
+ 5.5. OTPChalKeyParam . . . . . . . . . . . . . . . . . . . . . 17
+ 5.6. OTPRespKeyParam . . . . . . . . . . . . . . . . . . . . . 18
+ 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19
+ 7. Security Considerations . . . . . . . . . . . . . . . . . . . 19
+ 7.1. Active attacks . . . . . . . . . . . . . . . . . . . . . . 19
+ 7.2. Denial of service attacks . . . . . . . . . . . . . . . . 19
+ 7.3. Use of a Shared Secret Value . . . . . . . . . . . . . . . 19
+ 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 20
+ 8.1. Normative References . . . . . . . . . . . . . . . . . . . 20
+ 8.2. Informative References . . . . . . . . . . . . . . . . . . 20
+ Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 20
+ Intellectual Property and Copyright Statements . . . . . . . . . . 22
+
+
+
+
+
+
+
+
+
+
+
+Richards Expires April 14, 2007 [Page 2]
+
+Internet-Draft OTP Kerberos October 2006
+
+
+1. Introduction
+
+ A One-Time Password (OTP) token may be a handheld hardware device, a
+ hardware device connected to a personal computer through an
+ electronic interface such as USB or a software module resident on a
+ personal computer. All these devices generate one-time passwords
+ that may be used to authenticate a user towards some service. This
+ document describes extensions to Kerberos V5 [RFC4120] to support
+ pre-authentication using an OTP.
+
+ In this proposal, the KDC sends the client a random nonce,
+ information on which OTP token is to be used, how the OTP is to be
+ generated using that token and how the Reply Key is to be generated.
+ The Reply Key is then used to encrypt the nonce value and the
+ encrypted value is returned to the KDC as the pre-authentication
+ data. Depending on whether the KDC can obtain the OTP value, the OTP
+ value is either used in the generation of the Reply Key or is
+ encrypted using the key and returned to the KDC along with the
+ encrypted nonce. The encrypted nonce, an optional encrypted OTP
+ value and information on how the Reply Key and OTP value were
+ generated are sent to the KDC and used by the KDC to generate the
+ same Reply Key and decrypt and verify the nonce.
+
+ This proposal is partially based upon previous work on integrating
+ single-use authentication mechanisms into Kerberos [HoReNeZo04] and
+ uses the existing password-change extensions to handle PIN change as
+ described in [RFC3244].
+
+ 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].
+
+ << This is an early draft of this document and so is liable to change
+ significantly. >>
+
+
+2. Usage Overview
+
+2.1. Pre-Authentication
+
+ The approach uses pre-authentication data in KRB_AS_REQ, KRB_AS_REP
+ and KRB_ERROR. The client begins by sending an initial KRB_AS_REQ to
+ the KDC that may contain pre-authentication data such as the standard
+ Kerberos password data. The KDC will then determine, in an
+ implementation dependent fashion, whether OTP authentication is
+ required and if it is, it will respond with a KRB_ERROR message
+ containing a PA-OTP-CHALLENGE in the PA-DATA.
+
+
+
+
+Richards Expires April 14, 2007 [Page 3]
+
+Internet-Draft OTP Kerberos October 2006
+
+
+ The PA-OTP-CHALLENGE contains information on how the OTP should be
+ generated, how the Reply Key should be generated and a nonce. The
+ client uses this information to locate the token and generate the
+ OTP, generate the Reply Key and then encrypt the nonce using the
+ generated key. Depending on the type of OTP, the Reply Key may be
+ generated using the OTP value or alternatively, the generated OTP
+ will instead be encrypted along with the nonce using the key.
+
+ The encrypted nonce along with information on how the OTP and Reply
+ Key were generated are then sent to the KDC in a PA-OTP-RESPONSE PA-
+ DATA element. The KDC then uses this information to generate the
+ same key as the client, allowing it to verify the pre-authentication
+ by decrypting the nonce. If the validation succeeds then the KDC
+ returns the TGT in a KRB_AS_REP.
+
+2.2. PIN Change
+
+ If, following successful validation of a PA-OTP-RESPONSE in a
+ KRB_AS_REQ, the KDC requires that the user changes their PIN then it
+ will return PA-DATA of type PA-OTP-PIN-CHANGE in the KRB_AS_REP.
+ This pre-auth data can be used to return a new PIN to the user if the
+ KDC has updated the PIN or to indicate to the user that they must
+ change their PIN.
+
+ In the latter case, user PIN change shall be handled by a PIN change
+ service supporting the ChangePasswdData in a KRB_AP_REQ as described
+ in [RFC3244]. If such a user PIN change is required then the KDC
+ SHALL return a TGT in the KRB_AS_REP but it is RECOMMENDED that it
+ only issues tickets for the PIN change service until the PIN has been
+ changed.
+
+2.3. Re-Synchronization
+
+ It is possible with time and event-based tokens, that the client and
+ OTP server will loose synchronization. If, when processing a PA-OTP-
+ RESPONSE, the pre-authentication validation fails for this reason
+ then the KDC SHALL return a KRB_ERROR message containing a PA-OTP-
+ CHALLENGE in the PA-DATA with the "nextOTP" flag set. The setting of
+ this flag will cause the client to re-try the authentication using
+ the OTP for the next token "state".
+
+
+3. Pre-Authentication Protocol Details
+
+3.1. Shared Secret
+
+ The method of deriving the Reply Key shall depend upon:
+
+
+
+
+Richards Expires April 14, 2007 [Page 4]
+
+Internet-Draft OTP Kerberos October 2006
+
+
+ o Whether the OTP is of sufficiently high entropy to generate the
+ key alone.
+
+ o Whether the OTP has insufficient entropy and so must be
+ strengthened.
+
+ o Whether the OTP value used can be obtained by the KDC.
+
+ If the OTP value is of low entropy then it is important to slow down
+ an attacker sufficiently to make it economically unattractive to
+ brute-force search for an OTP given an observed OTP-Kerberos
+ exchange. If the OTP value cannot be obtained by the KDC then it
+ cannot be used in the derivation of the Reply Key but shall be
+ encrypted using the generated key rather than used to derive the key
+ and so the Reply Key must be derived from some other value. Both of
+ these issues can be solved using shared secret value known by the
+ client and KDC but unknown to the attacker.
+
+ This protocol supports the following types of secret:
+
+ o A pre-shared secret can be established between the client and KDC
+ and stored on the client.
+
+ o Diffie-Hellman key agreement (as defined in [RFC2631]) can be used
+ to establish a shared secret value ZZ. The server's public key,
+ and the base and prime are stored on the client.
+
+ The pre-shared secret value or the Diffie-Hellman shared secret
+ value, ZZ, are converted to a value of the required length for the
+ encryption scheme's random-to-key function using the n-fold function
+ (both defined in [RFC3961]).
+
+3.2. Client Request
+
+ The client begins by sending an initial KRB_AS_REQ possibly
+ containing other pre-authentication data. If the KDC determines that
+ OTP-based pre-authentication is required and the request does not
+ contain a PA-OTP-RESPONSE then it will respond as described in
+ Section 3.3.
+
+ Alternatively, if the client has all the necessary information, it
+ MAY construct a PA-OTP-RESPONSE as described in Section 3.4 and
+ include it in the initial request.
+
+3.3. KDC Challenge
+
+ If the user is required to authenticate using an OTP then the KDC
+ SHALL respond to the initial KRB_AS_REQ with a KRB_ERROR containing:
+
+
+
+Richards Expires April 14, 2007 [Page 5]
+
+Internet-Draft OTP Kerberos October 2006
+
+
+ o An error code of KDC_ERR_PREAUTH_REQUIRED
+
+ o An e-data field containing PA-DATA with a PA-OTP-CHALLENGE.
+
+ The PA-OTP-CHALLENGE SHALL contain a nonce value to be encrypted by
+ the generated Reply Key and it MAY also contain information on how
+ the OTP value is to be generated and information on how the Reply Key
+ is to be generated in an otp-keyParam element.
+
+ Use of the otp-keyParam element is OPTIONAL. If it is not present
+ the Reply Key SHALL be generated directly from the OTP value as
+ specified in Section 4.1 and the OTP value SHALL NOT be included in
+ the client response.
+
+ If the otp-keyParam element is present and the "sendOTP" flag is set
+ then the OTP value MUST NOT be used in the generation of the Reply
+ Key but it must instead be returned to the KDC encrypted using the
+ key. The Reply Key MUST be derived using one of the methods
+ described in Section 4.3. If the "sendOTP" flag is not set then the
+ OTP value is to be used in the key derivation then the client MUST
+ use one of the methods described in Section 4.2.
+
+ The otp-keyParam element will control the use of a shared secret in
+ the key derivation. If the "noSecret" flag is set the the client
+ MUST NOT use a secret value in the key derivation. If the "noSecret"
+ flag is not set and secret identifier is present then the client MUST
+ NOT use any other secret value. If the "noSecret" flag is not set
+ and a secret identifier is not present then the client MAY still use
+ a value if there is a value associated with the KDC.
+
+ If the "noSecret" flag is not set and the client can locate a secret
+ value for the KDC then the Reply Key will be generated using one of
+ the following methods:
+
+ o If the OTP is to be included in the key derivation then the key
+ SHALL be derived as specified in Section 4.2.2.
+
+ o If the OTP is to be sent encrypted in the response then the key
+ SHALL be derived as specified in Section 4.3.2.
+
+ If the client fails to find a shared secret for the KDC or the
+ "noSecret" flag was set in the challenge then the Reply Key will be
+ generated using one of the following methods:
+
+ o If the OTP is to be used in the key derivation then the KDC MAY
+ specify an iteration count. If such a value is specified then the
+ key SHALL be derived from the OTP as described in Section 4.2.1.
+
+
+
+
+Richards Expires April 14, 2007 [Page 6]
+
+Internet-Draft OTP Kerberos October 2006
+
+
+ o If the OTP is to be used in the key derivation but an iteration
+ count was not specified then the key SHALL be derived from the OTP
+ value and the user's Kerberos password as described in
+ Section 4.2.3.
+
+ o If the OTP is to be sent encrypted then the key SHALL be derived
+ from the user's Kerberos password as described in section
+ Section 4.3.1.
+
+3.4. Client Response
+
+ The client will use the generated Reply Key to encrypt the nonce from
+ the KDC challenge and, if required, to encrypt the OTP value. This
+ encrypted data SHALL be sent to the KDC in the otp-encData of a PA-
+ OTP-RESPONSE PA-DATA element included in a KRB_AS_REQ.
+
+ This response MAY also include information on how the Reply Key was
+ generated in an optional otp-keyParam element. The client MUST NOT
+ include this element if the Reply Key was generated directly from the
+ OTP value. The element MUST be included if the Reply Key was
+ generated using either a secret value or an iteration count and
+ contain the secret identifier and iteration count value. If the
+ Reply Key was generated using a password then the element MUST be
+ present and MUST be empty.
+
+ The response SHOULD also include information on the generated OTP
+ value.
+
+3.5. Verifying the pre-auth Data
+
+ If KRB_AS_REQ contains a PA-OTP-RESPONSE then the KDC will then use
+ the information in the otp-keyParam to generate the same Reply Key
+ and decrypt the encrypted nonce contained in the otp-encData.
+
+ If the encrypted OTP value is not included in the otp-encData then
+ the Reply Key was generated using the OTP value. The KDC SHALL
+ therefore use the OTP information in the PA-OTP-RESPONSE to obtain
+ the OTP value for the user and use the value along with the
+ information in the otp-keyParam to generate the Reply Key. This
+ information SHALL be used as follows:
+
+ o If the otp-keyParam is not present then the Reply Key SHALL be
+ generated directly from the OTP value as described in Section 4.1.
+
+ o If the otp-keyParam is present but empty then the Reply Key SHALL
+ be generated using the OTP value and the user's Kerberos Password
+ as described in Section 4.2.3.
+
+
+
+
+Richards Expires April 14, 2007 [Page 7]
+
+Internet-Draft OTP Kerberos October 2006
+
+
+ o If the otp-keyParam is present and contains a secret identifier
+ then the Reply Key SHALL be generated using the OTP value and the
+ secret value as described in Section 4.2.2.
+
+ If the identified secret value can not be found then the KDC SHALL
+ respond with a KDC_ERR_PREAUTH_REQUIRED error as described above
+ but SHALL set the "noSecret" flag in the PA-OTP-CHALLENGE.
+
+ o if the otp-keyParam is present and contains an iteration count
+ then the Reply Key shall be generated from the OTP value using the
+ iteration count value as described in Section 4.2.1.
+
+ If the encrypted OTP value is included in the otp-encData then the
+ Reply Key was not generated using the OTP value but was instead used
+ to encrypt the OTP value. The KDC SHALL therefore use the
+ information in the otp-keyParam to generate the Reply Key and decrypt
+ the OTP value. It SHALL then validate the decrypted value using the
+ OTP information included in the response and fail the authentication
+ if the value is not valid.
+
+ This Reply Key SHALL be generated as follows:
+
+ o If the otp-keyParam is not present the the KDC SHALL fail the pre-
+ authentication with an error of KDC_ERR_PREAUTH_FAILED.
+
+ If the otp-keyParam is omitted then the Reply Key was generated
+ directly from the OTP value and so is an error if the OTP value is
+ encrypted using the key.
+
+ o If the otp-keyParam is present but empty then the Reply Key SHALL
+ be generated using the user's Kerberos Password as described in
+ Section 4.3.1.
+
+ o If the otp-keyParam is present and contains a secret identifier
+ then the Reply Key SHALL be generated using the secret value as
+ described in Section 4.3.2.
+
+ If the identified secret value can not be found then the KDC SHALL
+ respond with a KDC_ERR_PREAUTH_REQUIRED error as described above
+ but SHALL set the "noSecret" flag in the PA-OTP-CHALLENGE.
+
+ o If the otp-keyParam is present and contains an iteration count
+ then the KDC SHALL fail the authentication with an error of
+ KDC_ERR_PREAUTH_FAILED.
+
+
+
+
+
+
+
+Richards Expires April 14, 2007 [Page 8]
+
+Internet-Draft OTP Kerberos October 2006
+
+
+3.6. Updating the Secret
+
+ The secret value can be pre-configured on the client but MAY also be
+ transferred from the KDC to the client in encrypted form in the PA-
+ OTP-CONFIRM of the KRB_AS_REP. If a client receives a new secret
+ value in this way then it MUST update any stored value associated
+ with the KDC.
+
+
+4. Reply Key Generation Algorithms
+
+4.1. Using the OTP Value Directly
+
+ If only the OTP value is to be used then the Reply Key SHALL be
+ generated by passing the OTP value through string-to-key (defined in
+ [RFC3961]).
+
+ K = string-to-key(OTP)
+
+ The salt and additional parameters for string-to-key will be as
+ defined in section 3.1.3 of [RFC4120].
+
+4.2. Hardening the OTP Value
+
+ If the OTP value requires strengthening then several methods shall be
+ supported.
+
+ o The OTP can be used on its own in the key derivation but run
+ through an iteration process many times as described in
+ Section 4.2.1.
+
+ o A secret value, shared between the KDC and client can be used
+ along with the OTP value to derive the key as described in
+ Section 4.2.2.
+
+ o The user's Kerberos password can be used along with the OTP value
+ in the key derivation as described in Section 4.2.3.
+
+ A shared secret can only be used if the client supports the storing
+ of persistent values and has such a value stored. The other two
+ methods could be used to establish a secret value or when client are
+ not capable of storing such values.
+
+ <<Is there value in another mode which uses the Kerberos password in
+ conjunction with an iteration-hardened OTP value?>>
+
+
+
+
+
+
+Richards Expires April 14, 2007 [Page 9]
+
+Internet-Draft OTP Kerberos October 2006
+
+
+4.2.1. Using an Iteration Count
+
+ An initial key is generated by running the OTP value through string-
+ to-key.
+
+ K = string-to-key(OTP)
+
+ The following key generation process is then repeated iteration count
+ times with the resulting key being used as the protocol key for the
+ next iteration.
+
+ A sequence of octets, R, is produced from K by iterating over calls
+ to the function pseudo-random (defined in [RFC3961]) and appending
+ the results until at least the number of bits required by random-to-
+ key have been produced. If the result of the iteration is longer
+ than the required length then the result shall be truncated.
+
+ The octet string parameter for pseudo-random shall be the ASCII
+ string "CombineA" with the loop number appended. This string has the
+ following byte value:
+
+ {0x43, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x65, 0x41}
+
+ A new key is then generated by running R through random-to-key.
+
+ K = random-to-key(R)
+
+4.2.2. Using a Shared Secret and OTP
+
+ Two intermediate keys, K1 and K2, shall be generated by running the
+ OTP value once through string-to-key and the shared secret through
+ random-to-key.
+
+ K1 = random-to-key(shared secret)
+ K2 = string-to-key(OTP)
+
+ Two sequences of octets, R1 and R2, are then produced from K1 and K2
+ by iterating over calls to pseudo-random and appending the results
+ until the required number of bits have been generated for random-to-
+ key. If the result of the iteration is longer than the required
+ length then the result shall be truncated.
+
+ The octet string parameter for pseudo-random shall be the ASCII
+ string "CombineA" for K1 and "CombineB" for K2 with the loop number
+ appended. These have the following byte values:
+
+
+
+
+
+
+Richards Expires April 14, 2007 [Page 10]
+
+Internet-Draft OTP Kerberos October 2006
+
+
+ {0x43, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x65, 0x41}
+ {0x43, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x65, 0x42}
+
+ The final key is then generated by combining R1 and R2 using
+ exclusive-OR and running the result through random-to-key.
+
+ K = random-to-key(R1 ^ R2)
+
+ << Check on issue around combining DES keys. >>
+
+4.2.3. Using a Password and OTP
+
+ Two intermediate keys, K1 and K2, shall be generated by running the
+ OTP and password through string-to-key.
+
+ K1 = string-to-key(Password)
+ K2 = string-to-key(OTP)
+
+ The same process as described in Section 4.2.2 is then used to derive
+ the final reply key.
+
+4.3. Generating the Key without the OTP
+
+ If the OTP value cannot be used in the derivation of the reply key
+ then this protocol supports the following options:
+
+ o A secret value, shared between the KDC and client can be used to
+ derive the key as described in Section 4.3.2.
+
+ o The user's Kerberos password can be used in the key derivation as
+ described in Section 4.3.1.
+
+ A shared secret can only be used if the client supports the storing
+ of persistent values and has such a value stored. The password-only
+ method could be used to establish a secret value or when clients are
+ not capable of storing such values.
+
+4.3.1. Using the Password
+
+ The Reply Key SHALL be generated by passing the password value
+ through string-to-key (defined in [RFC3961]).
+
+4.3.2. Using a Shared Secret
+
+ The reply key shall be generated by running the shared secret value
+ through random-to-key.
+
+ K = random-to-key(shared secret)
+
+
+
+Richards Expires April 14, 2007 [Page 11]
+
+Internet-Draft OTP Kerberos October 2006
+
+
+5. OTP Kerberos Types
+
+5.1. PA-OTP-CHALLENGE
+
+ This is a pre-authentication type sent by the KDC to the client in a
+ KRB_ERROR. It contains information for the client on how to generate
+ the OTP and reply key.
+
+ PA-OTP-CHALLENGE ::= SEQUENCE {
+ otp-flags OTPFlags,
+ otp-nonce UInt32,
+ otp-etype INTEGER,
+ otp-track-id [0] OCTET STRING OPTIONAL,
+ otp-challenge [1] OCTET STRING OPTIONAL,
+ otp-length [2] INTEGER OPTIONAL,
+ otp-service [3] UTF8String OPTIONAL,
+ otp-keyID [4] OCTET STRING OPTIONAL,
+ otp-algID [5] INTEGER OPTIONAL,
+ otp-keyParam [6] OTPChalKeyParam OPTIONAL
+ }
+
+ OTPFlags ::= KerberosFlags
+ -- nextOTP (0)
+
+ otp-flags
+ If the "nextOTP" flag is set then the OTP calculated SHALL be
+ based on the next token "state" rather than the current one. As
+ an example, for a time-based token, this means the next time slot.
+ For an event-based token, this could mean the next counter value,
+ if counter values are used.
+
+ otp-nonce
+ A KDC-supplied nonce value to be encrypted by the client in the
+ PA-OTP-RESPONSE.
+
+ otp-etype
+ The encryption type to be used by the client for all encrypted
+ fields in the PA-OTP-RESPONSE.
+
+ otp-track-id
+ This optional element is used by the KDC to link a client response
+ to the corresponding KDC challenge. If present, this element MUST
+ be copied by the client to the corresponding element in the PA-
+ OTP-RESPONSE.
+
+
+
+
+
+
+
+Richards Expires April 14, 2007 [Page 12]
+
+Internet-Draft OTP Kerberos October 2006
+
+
+ otp-challenge
+ The otp-challenge is used by the KDC to send a challenge value for
+ use in the OTP calculation. The challenge is an optional octet
+ string that SHOULD be uniquely generated for each request it is
+ present in, and SHOULD be eight octets or longer when present.
+ When the challenge is not present, the OTP will be calculated on
+ the current token state only. The client MAY ignore a provided
+ challenge if and only if the OTP token the client is interacting
+ with is not capable of including a challenge in the OTP
+ calculation. In this case, KDC policies will determine whether to
+ accept a provided OTP value or not.
+
+ otp-length
+ The otp-length is used by the KDC to specify the desired length of
+ the generated OTP.
+
+ otp-service
+ An identifier of the service supported by the KDC. This value can
+ be used by the client to locate information such as the shared
+ secret value and OTP key to use.
+
+ otp-keyID
+ The identifier of the OTP key to be used in the OTP calculation.
+ If this value is not present then the client SHOULD use other
+ values such as the otp-service and otp-algID to locate the
+ appropriate key.
+
+ otp-algID
+ The identifier of the algorithm to use when generating the OTP.
+
+ otp-keyParam
+ Information on how the Reply Key should be generated from the OTP
+ and shared secret. If the value is not present then the reply key
+ MUST be generated directly from the OTP value.
+
+ <<TBD: Should a checksum be added to allow the client to verify the
+ challenge?>>
+
+5.2. PA-OTP-RESPONSE
+
+ This is a pre-authentication type sent by the client to the KDC in a
+ KRB_AS_REQ containing the encrypted pre-authentication data. It
+ contains information on the OTP used and how the key was generated
+ that encrypts the pre-authentication data. This information will
+ then allow the KDC to generate the same key and validate the pre-
+ authentication data.
+
+
+
+
+
+Richards Expires April 14, 2007 [Page 13]
+
+Internet-Draft OTP Kerberos October 2006
+
+
+ PA-OTP-RESPONSE ::= SEQUENCE {
+ otp-flags OTPFlags,
+ otp-nonce UInt32,
+ otp-encData EncryptedData,
+ -- PA-ENC-RESPONSE
+ -- Key usage of <<TBD>>
+ otp-track-id [0] OCTET STRING OPTIONAL,
+ otp-challenge [1] OCTET STRING OPTIONAL,
+ otp-time [2] KerberosTime OPTIONAL,
+ otp-counter [3] OCTET STRING OPTIONAL,
+ otp-format [4] OTPFormat OPTIONAL,
+ otp-keyID [5] OCTET STRING OPTIONAL,
+ otp-keyParam [6] OTPRespKeyParam OPTIONAL
+ }
+
+
+
+ OTPFormat ::= INTEGER {
+ decimal(0),
+ hexadecimal(1),
+ alphanumeric(2),
+ binary(3)
+ }
+
+
+
+ PA-ENC-RESPONSE ::= SEQUENCE {
+ nonce OCTET STRING OPTIONAL,
+ otp [0] OCTET STRING OPTIONAL
+ }
+
+ otp-flags
+ If the "nextOTP" flag is set then the OTP was calculated based on
+ the next token "state" rather than the current one. This flag
+ MUST be set if and only if it was set in a corresponding PA-OTP-
+ CHALLENGE.
+
+ otp-nonce
+ The nonce value encrypted in the otp-encData. If the PA-OTP-
+ RESPONSE is sent as a result of a PA-OTP_CHALLENGE then the value
+ MUST be a copy of the corresponding value in the challenge. If no
+ challenge was received then the nonce value MUST be generated by
+ the client.
+
+
+
+
+
+
+
+
+Richards Expires April 14, 2007 [Page 14]
+
+Internet-Draft OTP Kerberos October 2006
+
+
+ otp-track-id
+ This element MUST be included if and only if an otp-track-id was
+ included in the corresponding PA-OTP-CHALLENGE. If included, then
+ the value MUST be copied from the PA-OTP-CHALLENGE.
+
+ otp-challenge
+ Value used by the client to send the challenge used in the OTP
+ calculation. It MUST be sent to the KDC if and only if the value
+ would otherwise be unknown to the KDC. For example, the token or
+ client modified or generated challenge.
+
+ otp-time
+ Value used by the client to send the time used in the OTP
+ calculation.
+
+ otp-counter
+ The counter value used in the OTP calculation. Use of this
+ element is OPTIONAL but it MAY be used by a client to simplify the
+ OTP calculations of the KDC to contain the counter value as
+ reported by the OTP token.
+
+ otp-format
+ The format of the generated OTP.
+
+ otp-keyID
+ The identifier of the OTP key used.
+
+ otp-keyParam
+ Information on how the reply key was generated from the OTP and
+ shared secret. If the value is not present then the reply key was
+ generated directly from the OTP value.
+
+ otp-encData
+ The otp-encData field contains the result of the pre-
+ authentication process and is encrypted using the generated Reply
+ Key. The fields of this element are populated as follows:
+
+ nonce
+ The value of otp-nonce.
+
+ otp
+ The generated OTP value. Present if the "sendOTP" flag is set
+ in the challenge.
+
+ <<TBD: Does the response need something such as an encrypted
+ timestamp to protect against replay?>>
+
+
+
+
+
+Richards Expires April 14, 2007 [Page 15]
+
+Internet-Draft OTP Kerberos October 2006
+
+
+5.3. PA-OTP-CONFIRM
+
+ This is a pre-authentication type returned by the KDC in a KRB_AS_REP
+ if the client requires a new shared secret value. The value is
+ encrypted as described in section 5.2.9 of [RFC4120] using the
+ current reply key as derived by the KDC from the OTP.
+
+ PA-OTP-CONFIRM ::= SEQUENCE {
+ identifier OCTET STRING,
+ newSecretValue EncryptedData -- OTPNewSecret
+ -- Key usage of <<TBD>>
+ }
+
+ OTPNewSecret ::= CHOICE {
+ sharedSecret [0] OCTET STRING,
+ dhParams [1] DHParam
+ }
+
+ DHParam ::= SEQUENCE {
+ dhParameter DHParameter,
+ dhPublic INTEGER
+ }
+
+ identifier
+ An octet string identifying the new secret value.
+
+ newSecretValue
+ The new secret data encrypted using the current Reply Key. The
+ encrypted data can be of one of the following types:
+
+ sharedSecret
+ A random bit string.
+
+ dhParams
+ A Diffie-Hellman public value, prime and modulus.
+
+5.4. PA-ENC-PIN
+
+ Pre-authentication type returned by the KDC in a KRB_AS_REP if the
+ user must change their PIN or if the user's PIN has been changed.
+
+
+
+
+
+
+
+
+
+
+
+Richards Expires April 14, 2007 [Page 16]
+
+Internet-Draft OTP Kerberos October 2006
+
+
+ PA-ENC-PIN ::= EncryptedData -- PA-ENC-PIN-ENC
+ -- Key usage of <<TBD>>
+ PA-ENC-PIN-ENC ::= SEQUENCE {
+ flags PinFlags,
+ pin [0] UTF8String OPTIONAL,
+ minLength [1] INTEGER OPTIONAL,
+ maxLength [2] INTEGER OPTIONAL
+ }
+
+ PinFlags ::= KerberosFlags
+ -- systemSetPin (0)
+
+ If the "systemSetPin" flag is set then the user's PIN has been
+ changed and the new PIN value is contained in the pin field. The PIN
+ field MUST therefore be present.
+
+ If the "systemSetPin" flag is not set then the user's PIN has not
+ been changed by the server but it MUST instead be changed by the user
+ using the PIN change service. Restrictions on the size of the PIN
+ MAY be given by the minLength and maxLength fields. If the pin field
+ is present then it contains a PIN value that MAY be used by the user
+ when changing the PIN. The KDC MAY only issue tickets for the PIN
+ change service until the PIN has been changed.
+
+5.5. OTPChalKeyParam
+
+ This data type can optionally be included by the KDC in a PA-OTP-
+ CHALLENGE to instruct the client on how to generate the reply key.
+
+ This value is included in the challenge if the OTP generated by the
+ token is too weak to be used alone in the generation of the key.
+
+ OTPChalKeyParam ::= SEQUENCE {
+ flags ChallengeFlags,
+ identifer [0] OCTET STRING OPTIONAL,
+ iterationCount [1] INTEGER OPTIONAL
+ }
+
+ ChallengeFlags ::= KerberosFlags
+ -- sendOTP (0)
+ -- noSecret (1)
+
+ flags
+ Flags controlling the generation of the Reply Key.
+
+
+
+
+
+
+
+Richards Expires April 14, 2007 [Page 17]
+
+Internet-Draft OTP Kerberos October 2006
+
+
+ sendOTP
+ If the "sendOTP" flag is set then the client MUST NOT use the
+ OTP value to generate the reply key. It must instead use the
+ generated key to encrypt the OTP value and include the
+ encrypted value in the PA-OTP-RESPONSE.
+
+ noSecret
+ If the "noSecret" flag is set then the client MUST NOT use any
+ stored secret value in the derivation of the Reply Key. If the
+ "sendOTP" flag is also set then the Kerberos password MUST be
+ used. If the "sendOTP" flag is not set then the iteration
+ count MUST be used if it is present or the Kerberos password
+ MUST be used if the iteration count is not specified.
+
+ identifier
+ Name of the secret that the client SHOULD use to generate the
+ reply key.
+
+ If a secret is specified but cannot be located by the client and
+ an iteration count is specified then the client should generate
+ the key using the iteration count. If a secret value is specified
+ and cannot be located and an iteration count is not specified then
+ the reply key MUST be generated using the user's Kerberos
+ password.
+
+ iterationCount
+ This value contains the iteration count to use when the generated
+ OTP value is used in the derivation of the reply key. This value
+ is used by the client if a shared secret is not specified or is
+ specified but cannot be found. The value has no meaning if the
+ "sendOTP" flag is set.
+
+5.6. OTPRespKeyParam
+
+ This data type can optionally be included by the client in a PA-OTP-
+ RESPONSE to inform the KDC of how the reply key was generated.
+
+ OTPRespKeyParam ::= SEQUENCE {
+ iterationCount [0] INTEGER OPTIONAL,
+ secret SEQUENCE {
+ identifier OCTET STRING,
+ dhPublic [1] INTEGER OPTIONAL
+ }
+ }
+
+
+
+
+
+
+
+Richards Expires April 14, 2007 [Page 18]
+
+Internet-Draft OTP Kerberos October 2006
+
+
+ iterationCount
+ The actual value of the iteration count used by the client in the
+ key derivation. If omitted then no iteration was used in the
+ derivation of the reply key.
+
+ secret
+ Information on the secret used in the key derivation. If this
+ value is omitted then no shared secret was used.
+
+ identifier
+ An octet string identifying the shared secret value used by the
+ client in the key derivation.
+ dhPublic
+ The client's Diffie-Hellman public key. Present only if a
+ Diffie-Hellman secret was used.
+
+
+6. IANA Considerations
+
+ A registry may be required for the otp-AlgID values as introduced in
+ Section 5.1. No other IANA actions are anticipated.
+
+
+7. Security Considerations
+
+7.1. Active attacks
+
+ <<TBS >>
+
+7.2. Denial of service attacks
+
+ An active attacker may replace the iteration count value in the PA-
+ OTP-RESPONSE sent by the client to slow down an authentication
+ server. Authentication servers SHOULD protect against this, e.g. by
+ disregarding PA-OTP-RESPONSE elements with an iteration count value
+ higher than some pre- or dynamically- (depending on load) set number.
+
+7.3. Use of a Shared Secret Value
+
+ As described in Section 3.1, the use of a shared secret value will
+ slow down an attacker's search for a matching OTP. The ability to
+ transfer such a value in encrypted form from the KDC to the client
+ means that, even though there may be an initial computational cost
+ for the KDC to authenticate the user if an iteration count is used,
+ subsequent authentications will be efficient, while at the same time
+ more secure, since a pre-shared, value will not be easily found by an
+ attacker.
+
+
+
+
+Richards Expires April 14, 2007 [Page 19]
+
+Internet-Draft OTP Kerberos October 2006
+
+
+ If a client does not have a pre-configured secret value for a KDC
+ then it will have to generate the Reply Key using an iteration count
+ or the Kerberos password. If an iteration count is used then an
+ attacker observing such a KRB_AS_REQ may, depending on available
+ resources, be able to successfully attack that request. Once the
+ correct OTP has been found, eavesdropping on the KDC's PA_OTP_CONFIRM
+ will potentially give the attacker access to the server-provided
+ secret value. For this reason, initial exchanges with KDC servers
+ SHOULD occur in a secure environment and the lifetime of this value
+ must also be calculated with this in mind. Finally, the value MUST
+ be securely stored by the client and the KDC, associated with the
+ user.
+
+
+8. References
+
+8.1. Normative References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+ [RFC2631] Rescorla, E., "Diffie-Hellman Key Agreement Method",
+ RFC 2631, June 1999.
+
+ [RFC3244] Swift, M., Trostle, J., and J. Brezak, "Microsoft Windows
+ 2000 Kerberos Change Password and Set Password Protocols",
+ RFC 3244, February 2002.
+
+ [RFC3961] Raeburn, K., "Encryption and Checksum Specifications for
+ Kerberos 5", RFC 3961, February 2005.
+
+ [RFC4120] Neuman, C., Yu, T., Hartman, S., and K. Raeburn, "The
+ Kerberos Network Authentication Service (V5)", RFC 4120,
+ July 2005.
+
+8.2. Informative References
+
+ [HoReNeZo04]
+ Horstein, K., Renard, K., Neuman, C., and G. Zorn,
+ "Integrating Single-use Authentication Mechanisms with
+ Kerberos", draft-ietf-krb-wg-kerberos-sam-03 (work in
+ progress), July 2004.
+
+
+
+
+
+
+
+
+
+Richards Expires April 14, 2007 [Page 20]
+
+Internet-Draft OTP Kerberos October 2006
+
+
+Author's Address
+
+ Gareth Richards
+ RSA, The Security Division of EMC
+ RSA House
+ Western Road
+ Bracknell, Berkshire RG12 1RT
+ UK
+
+ Email: grichards@rsa.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Richards Expires April 14, 2007 [Page 21]
+
+Internet-Draft OTP Kerberos October 2006
+
+
+Full Copyright Statement
+
+ Copyright (C) The Internet Society (2006).
+
+ This document is subject to the rights, licenses and restrictions
+ contained in BCP 78, and except as set forth therein, the authors
+ retain all their rights.
+
+ This document and the information contained herein are provided on an
+ "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+ OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+ ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+ INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+ INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+ WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+
+Intellectual Property
+
+ The IETF takes no position regarding the validity or scope of any
+ Intellectual Property Rights or other rights that might be claimed to
+ pertain to the implementation or use of the technology described in
+ this document or the extent to which any license under such rights
+ might or might not be available; nor does it represent that it has
+ made any independent effort to identify any such rights. Information
+ on the procedures with respect to rights in RFC documents can be
+ found in BCP 78 and BCP 79.
+
+ Copies of IPR disclosures made to the IETF Secretariat and any
+ assurances of licenses to be made available, or the result of an
+ attempt made to obtain a general license or permission for the use of
+ such proprietary rights by implementers or users of this
+ specification can be obtained from the IETF on-line IPR repository at
+ http://www.ietf.org/ipr.
+
+ The IETF invites any interested party to bring to its attention any
+ copyrights, patents or patent applications, or other proprietary
+ rights that may cover technology that may be required to implement
+ this standard. Please address the information to the IETF at
+ ietf-ipr@ietf.org.
+
+
+Acknowledgment
+
+ Funding for the RFC Editor function is provided by the IETF
+ Administrative Support Activity (IASA).
+
+
+
+
+
+Richards Expires April 14, 2007 [Page 22]
+