Internet DRAFT - draft-chudov-cryptopro-tlsprfneg
draft-chudov-cryptopro-tlsprfneg
TLS Working Group Grigorij Chudov
Internet Draft CRYPTO-PRO
Expires November 25, 2005 May 25, 2005
Intended Category: Standards Track
Hash/PRF negotiation in TLS using TLS extensions.
<draft-chudov-cryptopro-tlsprfneg-00.txt>
Status of this Memo
This document is an Internet-Draft and is subject to all provisions
of section 3 of RFC 3667.
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 in November 2005.
Copyright Notice
Copyright (C) The Internet Society (2005). All Rights Reserved.
Abstract
This document presents a method of negotiating some of the
algorithms, used by Transport Layer Security Protocol [TLS], which
are not chosen by cipher suite. Those algorithms are hash function
used for Finished message, and PRF function.
Chudov Informational [Page 1]
Internet-Draft Hash/PRF negotiation in TLS May 2005
This is done using TLS Extensions [TLSEXT] mechanism.
Table of Contents
1 Introduction. . . . . . . . . . . . . . . . . . . . . . . 2
2 Extension Type. . . . . . . . . . . . . . . . . . . . . . 2
3 Changes to the Message Contents . . . . . . . . . . . . . 3
3.1 Client Hello. . . . . . . . . . . . . . . . . . . . . . . 3
3.2 Server Hello. . . . . . . . . . . . . . . . . . . . . . . 4
4 Cryptographic computations affected . . . . . . . . . . . 4
4.1 Finished message verify_data calculation. . . . . . . . . 5
4.2 Key calculation . . . . . . . . . . . . . . . . . . . . . 5
4.3 Computing the master secret . . . . . . . . . . . . . . . 5
5 Security Considerations . . . . . . . . . . . . . . . . . 5
6 References. . . . . . . . . . . . . . . . . . . . . . . . 5
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . 6
Author's Addresses. . . . . . . . . . . . . . . . . . . . . . . 6
Full Copyright Statement. . . . . . . . . . . . . . . . . . . . 6
1 Introduction
[TLS] Handshake Protocol negotiates a cipher suite, that is used to
provide connection security. A cipher suite specifies key agreement
mechanism, symmetric encryption and MAC calculation, however it does
not affect the hash algorithm and PRF, which are used during
handshake.
However, some applications require different PRF or hash function.
For example, [PSK] (Pre-Shared Key Ciphersuites) have the following
problem with PRF, used by [TLS]: PRF assumes a long random secret,
which can be split in two independent parts, which usually not the
case for PSK. The second example are [GOST] algorithms, which require
a different hash-function.
This document is intended to register a new TLS extension, using
mechanism, defined in [TLSEXT]. The purpose of this extension is to
allow hash and PRF algorithm negotiation.
This document uses the same notation used in the [TLS] Protocol
specification.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT","SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in
Chudov Informational [Page 2]
Internet-Draft Hash/PRF negotiation in TLS May 2005
this document are to be interpreted as described in [RFC 2119].
2 Extension Type
A new value, "prf_alg(9)", is added to the enumerated ExtensionType,
defined in [TLSEXT]. This value is used as the extension number for
the extensions in both the client hello message and the server hello
message. This new extension type will be used for hash and PRF
algorithm negotiation.
The client enumerates supported algorithm combinations by including
the appropriate extension in its ClientHello message. By echoing
that extension in its ServerHello, the server selects one of them for
this TLS connection. Section 3 describes the structure of this
extension in further details.
3 Changes to the Message Contents
This section describes the changes to the TLS handshake message
contents when prf_alg extension is present.
3.1 Client Hello
In order to indicate the support of alternative hash and PRF
algorithms clients will include an extension of type "prf_alg" in the
extended client hello message. The general extension mechanism is
described in [TLSEXT].
This extension carries a list of hash/PRF algorithm pairs client can
use. The opaque extension_data field contains DER-encoding of the
TLSExtensionPRFSelectClient sequence. Each TLSExtensionPRFSelect
sequence contains one supported algorithm combination.
TLSExtensionPRFSelect :: SEQUENCE {
hashAlgorithm AlgorithmIdentifier OPTIONAL,
prfAlgorithm AlgorithmIdentifier OPTIONAL
}
TLSExtensionPRFSelectClient :: SEQUENCE OF TLSExtensionPRFSelect
This extension MUST be omitted if the client only supports standard
[TLS] algorithms.
A client that wishes to indicate the support of standard [TLS]
algorithms along with alternative ones MUST include the empty
TLSExtensionPRFSelect sequence with both hashAlgorithm and
Chudov Informational [Page 3]
Internet-Draft Hash/PRF negotiation in TLS May 2005
prfAlgorithm fields omitted, indicating use of default algorithms
(PRF and MD5+SHA1).
Actions of the receiver:
A server that receives a ClientHello containing this extension MUST
use one of the proposed algorithm combinations. If a server is unable
to perform handshake using any of the proposed algorithm sets, it
MUST issue a fatal handshake_failure alert message.
3.2 Server Hello
In reply to an extended Client Hello message containing an extension
of type "prf_alg" server MUST send an extended Server Hello message,
containing the same extension. This extension indicates the server's
agreement to use during handshake one of the algorithm combinations
sent by the client.
When used in Server Hello, this extension carries a single hash/PRF
algorithm combination. The opaque extension_data field contains DER-
encoding of the TLSExtensionPRFSelectServer sequence.
TLSExtensionPRFSelectServer :: TLSExtensionPRFSelect
Actions of the receiver:
A client that receives a ServerHello with this extension makes sure
that server selected one of the algorithm sets, specified in the
corresponding ClientHello extension, and proceeds with a handshake
using the algorithms specified in it.
A client that receives a ServerHello without this extension MUST act
as if the standard [TLS] algorithms combination was specified by the
server.
If server specified combination which is not supported or allowed by
a client, it MUST issue a fatal handshake_failure alert message.
SecurityParameters structure from [TLS] is extended to hold a field
PRFSelect of type TLSExtensionPRFSelect.
SecurityParameters.PRFSelect is equal to the prf_alg extension from
Server Hello message.
Further in this document, PRF_EX stands for function, corresponding
to SecurityParameters.PRFSelect.prfAlgorithm, and HASH_EX stands for
function, corresponding to
SecurityParameters.PRFSelect.hashAlgorithm.
Chudov Informational [Page 4]
Internet-Draft Hash/PRF negotiation in TLS May 2005
If prfAlgorithm field is omitted from SecurityParameters.PRFSelect,
then PRF_EX equals PRF. If hashAlgorithm is omitted, HASH_EX(data)
equals MD5(data)+SHA1(data).
4. Cryptographic computations affected
This extension affects calculation of the following values:
Finished.verify_data, key_block and master_secret.
It does not affect calculations in Certificate Verify and
ServerKeyExchange messages. Hash that is used for signature in those
messages depends only on SignatureAlgorithm.
4.1 Finished message verify_data calculation
When prf_alg extension is present, PRF_EX is used instead of PRF, and
HASH_EX is used instead of MD5+SHA1.
Finished.verify_data = PRF_EX (master_secret, finished_label,
HASH_EX (handshake_messages))
[0..11];
4.2 Key calculation
When prf_alg extension is present, PRF_EX is used instead of PRF.
key_block = PRF_EX(SecurityParameters.master_secret,
"key expansion",
SecurityParameters.server_random +
SecurityParameters.client_random);
4.3 Computing the master secret
When prf_alg extension is present, PRF_EX is used instead of PRF.
master_secret = PRF_EX(pre_master_secret, "master secret",
ClientHello.random + ServerHello.random)
[0..47];
5 Security Considerations
Avoiding man-in-the-middle algorithm rollback:
When the server allows several hash/PRF algorithms, a man-in-the-
middle algorithm rollback becomes possible. That is, the attacker can
force the client and the server to use a weaker hash/PRF for
handshake, than that which they would normally choose.
Chudov Informational [Page 5]
Internet-Draft Hash/PRF negotiation in TLS May 2005
The server SHOULD only allow one hash/PRF pair to be used, to avoid
this attack.
6 References
[RFC 2119] Bradner, S., "Key Words for Use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[TLS] The TLS Protocol Version 1.0. T. Dierks, C. Allen.
January 1999, RFC 2246.
[TLSEXT] Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J.
and T. Wright, "Transport Layer Security (TLS) Exten-
sions", RFC 3546, June 2003.
[X.660] ITU-T Recommendation X.660 Information Technology - ASN.1
encoding rules: Specification of Basic Encoding Rules
(BER), Canonical Encoding Rules (CER) and Distinguished
Encoding Rules (DER), 1997.
[PSK] P. Eronen, H. Tschofenig "Pre-Shared Key Ciphersuites for
Transport Layer Security", <draft-ietf-tls-psk-06.txt>,
work in progress.
[GOST] G. Chudov, S. Leontiev "GOST Ciphersuites for Transport
Layer Security", IETF draft, <draft-chudov-cryptopro-
cptls-02.txt>, work in progress.
Acknowledgments
The authors wish to thank:
Russ Hously (Vigil Security, LLC, housley@vigilsec.com) and
Vasilij Sakharov (DEMOS Co Ltd, svp@dol.ru) for initiative,
creating this document.
Author's Addresses
Grigorij Chudov
CRYPTO-PRO
38, Obraztsova,
Chudov Informational [Page 6]
Internet-Draft Hash/PRF negotiation in TLS May 2005
Moscow, 127018, Russian Federation
EMail: chudov@cryptopro.ru
Full Copyright Statement
Copyright (C) The Internet Society (2005). 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.
Chudov Informational [Page 7]