HTTP/1.1 200 OK Date: Tue, 09 Apr 2002 01:31:46 GMT Server: Apache/1.3.20 (Unix) Last-Modified: Sat, 02 Mar 1996 14:00:24 GMT ETag: "304e11-79a8-31385478" Accept-Ranges: bytes Content-Length: 31144 Connection: close Content-Type: text/plain INTERNET-DRAFT Clifford Neuman ISI Updates: RFC 1510 Glen Zorn November 21, 1995 CyberSAFE Corporation Integrating Single-use Authentication Mechanisms with Kerberos 0. 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 docu- ments at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as ``work in pro- gress.'' To learn the current status of any Internet-Draft, please check the ``1id-abstracts.txt'' listing contained in the Internet-Drafts Sha- dow Directories on ds.internic.net (US East Coast), nic.nordu.net (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific Rim). The distribution of this memo is unlimited. It is filed as , and expires May 26, 1996. Please send comments to the authors. 1. Abstract This document defines extensions to the Kerberos protocol specifi- cation [RFC1510] which provide a method by which a variety of single-use authentication mechanisms may be supported within the protocol. The method defined specifies a standard fashion in which the preauthentication data and error data fields in Kerberos mes- sages may be used to support single-use authentication mechanisms. 2. Terminology To simplify the following discussion, we will define those terms which may be unfamiliar to the audience or specific to the discus- sion itself. Single-use Preauthentication Data (SPD): Data sent in the padata- value field of a Kerberos V5 message proving that knowledge of cer- tain unique information is held by a principal. This information may or may not be identical to the single-use authentication data input to the client. For example, in the case of S/Key, the prin- cipal might input a one-time password (in any of several forms); the knowledge of this one-time password is taken to indicate Neuman & Zorn [Page 1] INTERNET-DRAFT November 21, 1995 knowledge of the principal's secret passphrase. Similarly, the SPD may or may not contain the provided single-use authentication data. For instance, if a given single-use authentication mechanism includes a token which generates an encryption key for a supported cryptosystem, that key could be used to encrypt portions of the SPD before transmission. As long as the verification process of the mechanism was capable of independently generating the same key, the successful decryption of the SPD would provide assurance that the originator of the message was in possession of the token, as well as whatever information the token required to generate the encryp- tion key. Single-use Authentication Mechanism (SAM): A system for generating and verifying authentication data which is usable only once. Single-use Authentication Data (SAD): SAM-specific data provided by a principal as input to client software to be used in the creation of SPD. 3. Motivation and Scope Several single-use authentication mechanisms are currently in widespread use, including hardware-based schemes from vendors such as Enigma Logic, Digital Pathways and Security Dynamics and software-based methods like S/Key [RFC1760]. The hardware-based schemes typically require that the authenticating user carry a small, credit-card-sized electronic device (called a token) which is used to generate unique authentication data. Some tokens require the user to enter data into the device. This input may take the form of a Personal Identification Number (PIN), a server- generated challenge string or both. Other tokens do not use a challenge-response technique, instead spontaneously generating new and unique authentication data every few seconds. These tokens are usually time-synchronized with a server. The use of one-time pass- words and token cards as an authentication mechanism has steadily increased over the past few years; in addition, the Internet Archi- tecture Board has encouraged the use of SAMs to improve Internet security [RFC1636]. The widespread acceptance of Kerberos within the Internet community has produced considerable demand for the integration of SAM tech- nology with the authentication protocol. Several currently avail- able implementations of Kerberos include support for some types of token cards, but the implementations are either not interoperable, or would require the release of source code (not always an option) to make them interoperate. This memo attempts to remedy that prob- lem by specifying a method in which SAM data may be securely tran- sported in Kerberos V5 messages in a standard, extensible fashion. This document does not, however, attempt to precisely specify either the generation or verification of SAM data, since this is likely to be SAM-specific; nor does it dictate the conditions under which SAM data must be included in Kerberos messages, since we con- sider this to be a matter of local policy. Neuman & Zorn [Page 2] INTERNET-DRAFT November 21, 1995 4. Generic Approach - Two Models As outlined above, there are essentially two types of single-use authentication mechanisms: challenge/response and time-based. In order to support challenge/response mechanisms, the Kerberos Key Distribution Center (KDC) must communicate the appropriate chal- lenge string to the user, via the client software. Furthermore, some challenge/response mechanisms require tight synchronization between all instances of the KDC and the client. One example is S/Key and its variants. If the KDC and client do not perform the same number of message digest iterations, the protocol will fail; worse, it might be possible for an eavesdopping attacker to capture a valid S/Key passcode and replay it to a KDC replica which had an outdated iteration number. In the time-based case, no challenge is required. This naturally gives rise to two modes of client behavior, described below. 4.1 Challenge/Response Model The client begins with an initial KRB_AS_REQ message to the KDC, possibly using existing preauthentication methods (PA-ENC-TIMESTAMP (encrypted timestamp), PA-OSF-DCE (DCE), etc.). Depending on whether preauthentication is used, the user may or may not be prompted at this time for a Kerberos password. If (for example) encrypted timestamp preauthentication is used, then the user will be prompted; on the other hand, if no preauthentication is in use the prompt for the password may be deferred (possibly forever). Note that the use of preauthentication here may allow an offline guessing attack against the Kerberos password separate from the SPD, but if the use of a SAM is required, then the password by itself is not sufficient for authentication. The KDC will determine in an implementation- and policy-dependent fashion if the client is required to utilize a single-use authenti- cation mechanism. For example, the implementation may use IP address screening to require principals authenticating from outside a firewall to use a SAM, while principals on the inside need not. If SAM usage is required, then the KDC will respond with a KRB_ERROR message, with the error-code field set to KDC_ERR_PREAUTH_REQUIRED and the e-data field containing the ASN.1 structure that is a sequence of PA-DATA fields. If the type of one of the PA-DATA fields is PA-SAM-REDIRECT, the client should re-execute the authentication protocol from the beginning, directing messages to another of the KDCs for the realm. This is done to allow some methods to require that a single KDC be used for SAM authentication when tight synchronization is needed between all replicas and the KDC database propagation code does not provide such synchronization. The corresponding padata-value will contain an encoded sequence of host addresses [RFC1510], from which the client must choose the KDC to be contacted next. Otherwise, if one of the PA-DATA fields has the type PA-SAM- CHALLENGE, the exchange will continue as described in section 5, below. Neuman & Zorn [Page 3] INTERNET-DRAFT November 21, 1995 4.2 Time-based Model For mechanisms where no challenge is required, the user (or the client software being utilized) may or may not know a priori whether SAM usage is required. If it does not know, then the ini- tial exchange may proceed as above. If it is known that a use of a single-use authentication mechanism is required then the first exchange can be skipped and the authentication will continue as follows. 5. Authentication Using Passcodes Prior to performing preauthentication using a single-use authenti- cation mechanism, the client must know whether a challenge is required (if the client doesn't have this information prior to its sending the first KRB_AS_REQ message, it will be informed of the requirement by the KDC, as described in section 4.1). The client does NOT need to know the specific type of SAM in use. If a chal- lenge is required the client will be sent the challenge by the KDC. This means that a client supporting SAMs will be able to work with new methods without modification. The challenge, as well as all other prompts mentioned herein, can be internationalized by the KDC on a per-principal basis. If a KRB_ERROR message is received from the KDC indicating that SAM usage is required, that message will include in its e-data field a PA-DATA structure that encodes information about the SAM to be used. This includes whether a challenge is required, and if so, the challenge itself; and informational data about the type of SAM that is in use, and how to prompt for the SAD. The SAM type is informational only and does not affect the behavior of the client. The prompt is also informational and may be presented to the user by the client, or it may be safely ignored. The ASN.1 definition for the SAM challenge is: PA-SAM-CHALLENGE ::= SEQUENCE { sam-type[0] INTEGER, sam-flags[1] SAMFlags, sam-type-name[2] GeneralString OPTIONAL, sam-track-id[3] GeneralString OPTIONAL, sam-challenge-label[4] GeneralString OPTIONAL, sam-challenge[5] GeneralString OPTIONAL, sam-response-prompt[6] GeneralString OPTIONAL, sam-pk-for-sad[7] EncryptionKey OPTIONAL, sam-nonce[8] INTEGER OPTIONAL, sam-cksum[9] Checksum OPTIONAL } SAMFlags ::= BIT STRING { use-sad-as-key[0], send-encrypted-sad[1], must-pk-encrypt-sad[2] } Neuman & Zorn [Page 4] INTERNET-DRAFT November 21, 1995 The sam-type field is informational only, but it must be specified and sam-type values must be registered with the IANA. Initially defined values of the sam-type codes are: PA_SAM_TYPE_ENIGMA 1 -- Enigma Logic PA_SAM_TYPE_DIGI_PATH 2 -- Digital Pathways PA_SAM_TYPE_SKEY_K0 3 -- S/key where KDC has key 0 PA_SAM_TYPE_SKEY 4 -- Traditional S/Key PA_SAM_TYPE_SECURID 5 -- Security Dynamics PA_SAM_TYPE_SECURID, PA_SAM_TYPE_DIGI_PATH and PA_SAMC_TYPE_ENIGMA are popular token cards. PA_SAM_TYPE_SKEY is the traditional S/Key protocol, in which the SAD verifier does not have knowledge of the principal's S/Key secret. PA_SAM_TYPE_SKEY_K0 is a variant of S/Key that uses the same SAD and PC software or hardware device, but where the zeroth key (the S/Key secret) is actually stored on, and can be used by, the SAD verifier to independently generate the correct authentication data. Note that using PA_SAM_TYPE_SKEY_K0 gives up one advantage of S/Key, viz., that the information required to generate the SAD need not be stored on the host; but since the SAD verifier (which may be the KDC) is assumed to be more secure than other hosts on the net- work, it may be acceptable to give up this advantage in some situa- tions. The advantage of using this S/Key variant is that the secu- rity of the network protocol is strengthened since the SAD need not be sent from the client to the KDC. Thus, the SAD can be used as part of the key used to encrypt the encrypted parts of both the SPD and the KRB_AS_REP message, rather than being sent protected by the principal's Kerberos secret key which may have been previously exposed to an attacker (see section 6, below). In any case, there is a definite advantage to being interoperable with the S/Key algo- rithm. Due to the volatility of, and rapid developments in, the area of single-use authentication mechanisms (both software-only and hardware supported), any subsequently defined sam-type codes will be maintained by the IANA. The sam-flags field indicates whether the SAD is known by the KDC (in which case it can be used as part of the encryption key for the ensuing KRB_AS_REP message), or if it must be provided to the KDC in a recoverable manner. If it is known to the KDC, use-sad-as-key indicates that the SAD alone will be used to generate the encryp- tion key for the forthcoming KRB_AS_REQ and KRB_AS_REP messages, and that the user will not need to also enter a password. We recommend that this option not be used, and that the principal also enter the Kerberos password, but for some situations, presentation of the SAD alone may be acceptable. If the single-use authentica- tion data is not known (and cannot be generated or discovered) by the KDC, then send-encrypted-sad flag will be set, indicating that the SAD must be sent to the KDC encrypted under the principal's secret key. If neither use-sad-as-key nor send-encrypted-sad are Neuman & Zorn [Page 5] INTERNET-DRAFT November 21, 1995 set, the client may assume that the KDC knows the SAD, but the Ker- beros password should be used along with the passcode in the derivation of the encryption key (see below). The must-pk- encrypt-sad flag is reserved for future use. If this flag is set and a client does not support the must-pk-encrypt-sad option (to be defined in a separate document), the client will not be able to complete the authentication and must notify the user. Note that there are specific constraints on the integrity of the PA-SAM-CHALLENGE when some of these options are specified. In par- ticular, if any of these flags are set, a cryptographic checksum must be present and verified. If absent, or the checksum does not match the request, the challenge must be considered invalid and the user notified. The optional sam-type-name field is informational only. It may be used by the client to display a short description of the type of single-use authentication mechanism to be used. The optional sam-track-id field may be returned by the KDC in the KRB_ERROR message. If present, the client should copy this field into the corresponding field of the SAM response sent in the subse- quent KRB_AS_REQ message. This field may be used by the KDC to match challenges and responses. It might be a suitably encoded integer, or even be encrypted data with the KDC state encoded so that the KDC doesn't have to maintain the state internally. The sam-challenge-label field is informational and optional. If present, a client may choose to precede the presentation of the challenge with this string. For example, if the challenge is 135773 and the string in the sam-challenge-label field is "Enter the following number on your card", the client may choose to display to the user: Enter the following number on your card: 135773 If no challenge label was presented, or if the client chooses to ignore it, the client might display instead: Challenge from authentication server: 135773 If the sam-checksum field is empty the sam-challenge-label should be ignored, since in that case it may have been modified by an adversary. Internationalization is supported by allowing customi- zation of the challenge label and other strings on a per-principal basis. The optional sam-challenge field contains a string that will be needed by the user to generate a suitable response. If the sam- challenge field is left out, it indicates that the SAM in use does not require a challenge, and that the authorized user should be able to produce the correct SAD without one. If the sam-challenge field is present, it is the data that is used by the SAD generator to create the SAD to be used in the production of the SPD to be Neuman & Zorn [Page 6] INTERNET-DRAFT November 21, 1995 included in the response. The sam-response-prompt field is informational and optional. If present, a client may choose to precede the prompt for the response with the specified string; however, it should not be used if the sam-checksum field is empty, since in that case the prompt may have been modified by an adversary. If this field is empty the prompt displayed will be hardcoded into the application, such as Passcode: sam-pk-for-sad is an optional field. It is included in the interest of future extensability of the protocol to the use of public-key cryptography. The sam-nonce field is optional. If present, it should conform to the specification of the nonce field in a KRB_KDC_REQ message [RFC1510]. The optional sam-cksum field contains a cryptographic checksum of the preceding fields, protected using the same key as that used for preauthentication in the intial KRB_AS_REQ message. While any secure checksum method may be used, the RSA-MD5-DES type is recom- mended and must be supported by the client. This field should always be present if the initial KRB_AS_REQ message included a form of cryptographic preauthentication (such as PA_ENC_TIMESTAMP). If the intial message included preauthentication, but this field is missing in the response, the client should reject the response. If this field is present, the client should verify its correctness: if the sam-cksum field is present in the KRB_ERROR message, but not verified by the client, then an attacker can change the message contents at will. Such a change could cause unexpected instruc- tions to be displayed to the user in the prompt string, or allow the denial of service through the presentation of an invalid chal- lenge. Another effect of a change might be to effect a limited chosen plaintext attack on the Kerberos password where the attacker picks the nonce, and the challenge. Note that it is possible for the KDC to generate a cryptographic checksum for this message using the users' secret key even though no cryptographic preauthentication was present in the initial AS_REQ message. Doing so, however, makes material available which enables an offline guessing attack against that key. If the client is performing SAM preauthentication in the initial message, without receipt of a PA-SAM-CHALLENGE (i.e. without wait- ing for the KRB_ERROR message), and the SAM in use does not require a challenge, the client will prompt for the SAD in an application- specific manner. Once the user has been prompted for and entered the SAD (and possi- bly the Kerberos password), the client will derive a key to be used to encrypt the preauthentication data for a KRB_AS_REQ message. This key will be determined as follows: Neuman & Zorn [Page 7] INTERNET-DRAFT November 21, 1995 By default, the key is derived from the password and the SAD by running each through the string_to_key function [RFC1510] separately; i.e., K1 = string_to_key(password) and K2 = string_to_key(SAD). The K1 and K2 are then combined to form a single key K in a manner specific to the type of key being generated. For DES keys, K will be formed by XORing K1 and K2, then correcting the parity of K. If the result matches a "weak" or "semiweak" key as described in the DES specifi- cation, it is XORed with the hexadecimal constant 00000000000000F0. If the send-encrypted-sad flag is set, the key will be derived by running the Kerberos password though the string_to_key function in the normal fashion. If the use-sad-as-key flag is set and the integrity of the PA-SAM-CHALLENGE PADATA field can be verified using the sam-cksum field, then the SAD is run through the string_to_key function and the result is used as the encryp- tion key for the request. WARNING: the use of single-use authentication data in this manner is NOT recommended unless the range of the SAD is large enough to make an exhaustive off-line search impractical and the risks involved in the use of SAD alone are fully considered. Also, note that without the availabilty to the KDC of a relatively static, unique secret key shared with the user, the only mechanisms that can be used to protect the integrity of the PA-SAM- CHALLENGE PADATA field are based on either public key cryp- tography or the KDC's a priori knowledge of the SAD itself. In the latter case, the client must obtain the SAD from the user and use it to verify the integrity of the challenge before the new KRB_AS_REQ message is sent. The sam-pk-for-sad field is reserved for future use. If this field is not empty and the client does not support the use of public-key encryption for SAD (to be defined in a separate document), the client will not be able to complete the authentication and must notify the user. Neuman & Zorn [Page 8] INTERNET-DRAFT November 21, 1995 The client will then send another KRB_AS_REQ message to the KDC, but with a padata field with padata-type equal to PA-SAM-RESPONSE and padata-value defined as follows: PA-SAM-RESPONSE ::= SEQUENCE { sam-type[0] INTEGER, sam-flags[1] SAMFlags, sam-track-id[2] GeneralString OPTIONAL, sam-enc-key[3] EncryptedData -- PA-ENC-SAM-KEY, sam-enc-nonce-or-ts[4] EncryptedData -- PA-ENC-SAM-RESPONSE-ENC, sam-nonce[5] INTEGER OPTIONAL, sam-patimestamp[6] KerberosTime OPTIONAL } PA-ENC-SAM-KEY ::= SEQUENCE { sam-key[0] EncryptionKey } PA-ENC-SAM-RESPONSE-ENC ::= SEQUENCE { sam-nonce[0] INTEGER OPTIONAL, sam-timestamp[1] KerberosTime OPTIONAL, sam-usec[2] INTEGER OPTIONAL, sam-passcode[3] GeneralString OPTIONAL } The source of the data included in the PA-SAM-RESPONSE structure depends upon whether or not a KRB_ERROR message was received by the client from the KDC. If an error reply was received, the sam-type and sam-flags fields will contain copies of the same fields from the error message. If the sam-nonce field was present in the KRB_ERROR message, then the PA-ENC-PASSCODE-RESPONSE-ENC structure returned to the KDC will include that value, encrypted as described above, the otpc_nonce field in the KRB_AS_REQ message will contain a plaintext copy of the same value and the sam-patimestamp field of the message will be empty. If a KRB_ERROR message was received but the sam-nonce field was omitted from it, the encrypted data will contain a timestamp encrypted in the same manner, the sam-patimestamp field will con- tain an unencrypted copy of the same value, and the sam-nonce field will be empty. In either case, if the send-encrypted-sad flag is set in the sam-flags field of the error message, the sam-sad field must contain the entered single-use authentication data. If no error reply was received (i.e., the client knows that a single-use authentication mechanism is to be used), the sam-type field must be set to a value chosen from the list of registered sam-type codes. The value of the sam-flags field may vary depending upon the type of SAM in use, but in all cases the must-pk-encrypt-sad flag must be zero. If the send-encrypted-sad flag is set, the sam-sad field Neuman & Zorn [Page 9] INTERNET-DRAFT November 21, 1995 must contain the entered single-use authentication data. The sam-enc-key field is reserved for future use. Upon receipt the KDC validates this PADATA in much the same way that it validates the PA-ENC-TS preauthentication method except that it uses the SAD (if available, and possibly in conjunction with saved state information or portions of the preauthentication data) to determine the correct key(s) required to verify the encrypted data. Note that if the KDC uses the sam-track-id field to encode its state, the KDC is responsible for including informa- tion in that field to detect modification or replay by an attacker. The rest of the processing of the request proceeds normally, except that instead of being encrypted in the users password, the KRB_AS_REP message is encrypted in the key obtained above. Note, however, that some single-use authentication mechanisms may require further KRB_AS_REQ/KRB_ERROR exchanges to complete authentication; for example, in order to allow the server to resynchronize with the drifting clock on a time-based token card. In these cases the KDC may respond with another KRB_ERROR message containing a different sam-type value, along with appropriate prompts and/or challenges. This sequence of exchanges will continue until authentication either succeeds or fails. 6. Limitations Single-use authentication mechanisms requiring the use of the send-encrypted-sad option are discouraged as their use on the net- work is less secure than the case where a combination of the users password and SAD is used as the encryption key. In particular, when the send-encrypted-sad option is used, an attacker who observes the response and is in possession of the users' secret key (which doesn't change from login to login) can use the key to decrypt the response and obtain the single-use authentication data. If the KDC sets the must-pk-encrypt-sad flag of the sam-flags field but the client software being used does not support public-key cryptography, it is possible that legitimate users may be denied service. An attacker in possession of the users encryption key (again, which doesn't change from login to login) might be able to generate/modify a SAM challenge and attach the appropriate check- sum. This affects the security of both the send-encrypted-sad option and the must-pk-encrypt-sad option. 7. Expiration This Internet-Draft expires on May 26, 1995. 8. References Neuman & Zorn [Page 10] INTERNET-DRAFT November 21, 1995 [RFC1510] _T_h_e _K_e_r_b_e_r_o_s _N_e_t_w_o_r_k _A_u_t_h_e_n_t_i_c_a_t_i_o_n _S_y_s_t_e_m; Kohl and Neuman; September 1993. [RFC1760] _T_h_e _S/_K_e_y _O_n_e-_T_i_m_e _P_a_s_s_w_o_r_d _S_y_s_t_e_m; Haller; February 1995 [RFC1636] _R_e_p_o_r_t _o_f _I_A_B _W_o_r_k_s_h_o_p _o_n _S_e_c_u_r_i_t_y _i_n _t_h_e _I_n_t_e_r_n_e_t _A_r_c_h_i_t_e_c_- _t_u_r_e; Braden, Clark, Crocker and Huitema; June 1994 9. Authors' Addresses B. Clifford Neuman USC/Information Sciences Institute 4676 Admiralty Way #1001 Marina del Rey, CA 90292-6695 Phone: 310-822-1511 EMail: bcn@isi.edu Glen Zorn CyberSAFE Corporation 2443 152nd Avenue N.E. Redmond, WA 98052 Phone: 206-883-8721 EMail: gwz@cybersafe.com Neuman & Zorn [Page 11]