corrected copyright notices
[gnutls.git] / doc / protocol / draft-hajjeh-tls-sign-03.txt
blobc0a9b1cb76234685b94df115797514785eb6f25e
4 Internet Engineering Task Force                               I. Hajjeh 
5 INTERNET DRAFT                                                ESRGroups 
6                                                                M. Badra 
7                                                        LIMOS Laboratory 
8  
9 Expires: November 2007                                        June 2007 
10     
11                                   TLS Sign  
12                        <draft-hajjeh-tls-sign-03.txt> 
13     
14     
15 Status 
16     
17    By submitting this Internet-Draft, each author represents that any 
18    applicable patent or other IPR claims of which he or she is aware 
19    have been or will be disclosed, and any of which he or she becomes 
20    aware will be disclosed, in accordance with Section 6 of BCP 79. 
21     
22    Internet-Drafts are working documents of the Internet Engineering 
23    Task Force (IETF), its areas, and its working groups. Note that 
24    other groups may also distribute working documents as Internet- 
25    Drafts. 
26     
27    Internet-Drafts are draft documents valid for a maximum of six 
28    months and may be updated, replaced, or obsoleted by other documents 
29    at any time. It is inappropriate to use Internet-Drafts as reference 
30    material or to cite them other than as "work in progress." 
31     
32    The list of current Internet-Drafts can be accessed at 
33    http://www.ietf.org/ietf/1id-abstracts.txt 
34     
35    The list of Internet-Draft Shadow Directories can be accessed at 
36    http://www.ietf.org/shadow.html  
37     
38    This Internet-Draft will expire on November 2007. 
39     
40 Copyright Notice 
41     
42    Copyright (C) The IETF Trust (2007). 
43     
44 Abstract  
45      
46    TLS protocol provides authentication and data protection for 
47    communication between two entities. However, missing from the 
48    protocol is a way to perform non-repudiation service.  
49      
50    This document defines extensions to the TLS protocol to allow it to 
51    perform non-repudiation service. It is based on [TLSSign] and it 
52    provides the client and the server the ability to sign by TLS, 
53    handshake and applications data using certificates such as X.509. 
54     
57 Hajjeh & Badra            Expires November 2007                [Page 1] \f
58 INTERNET-DRAFT                   TLS Sign                     June 2007 
60 1 Introduction 
61     
62    Actually, TLS is the most deployed security protocol for securing 
63    exchanges. It provides end-to-end secure communications between two 
64    entities with authentication and data protection. However, what is 
65    missing from the protocol is a way to provide the non-repudiation 
66    service. 
67     
68    This document describes how the non-repudiation service may be 
69    integrated as an optional module in TLS. This is in order to provide 
70    both parties with evidence that the transaction has taken place and 
71    to offer a clear separation with application design and development.  
72     
73    TLS-Sign's design motivations included:  
74      
75    o   TLS is application protocol-independent. Higher-level protocol   
76        can operate on top of the TLS protocol transparently.  
77      
78    o   TLS is a modular nature protocol. Since TLS is developed in four  
79        independent protocols, the approach defined in this document can  
80        be added by extending the TLS protocol and with a total 
81        reuse of pre-existing TLS infrastructures and implementations.  
82         
83    o   Several applications like E-Business require non-repudiation   
84        proof of transactions. It is critical in these applications to   
85        have the non-repudiation service that generates, distributes,   
86        validates and maintains the evidence of an electronic   
87        transaction. Since TLS is widely used to secure these   
88        applications exchanges, the non-repudiation should be offered by   
89        TLS.  
90         
91    o   Generic non-repudiation with TLS. TLS Sign provides a generic   
92        non-repudiation service that can be easily used with protocols.    
93        TLS Sign minimizes both design and implementation of the   
94        signature service and that of the designers and implementators   
95        who wish to use this module. 
96     
97 1.2 Requirements language 
98     
99    The key words "MUST", "SHALL", "SHOULD", and "MAY", in this document 
100    are to be interpreted as described in RFC-2119. 
101     
102 2 TLS Sign overview  
103      
104    TLS Sign is integrated as a higher-level module of the TLS Record 
105    protocol. It is optionally used if the two entities agree. This is 
106    negotiated by extending Client and Server Hello messages in the same 
107    way defined in [TLSExt]. 
108     
109    In order to allow a TLS client to negotiate the TLS Sign, a new 
110    extension type should be added to the Extended Client and Server 
113 Hajjeh & Badra            Expires November 2007                [Page 2] \f
114 INTERNET-DRAFT                   TLS Sign                     June 2007 
116    Hellos messages. TLS clients and servers MAY include an extension of 
117    type 'signature' in the Extended Client and Server Hellos messages. 
118    The 'extension_data' field of this extension contains a 
119    'signature_request' where:  
120      
121     enum {  
122           pkcs7(0), smime(1), xmldsig(2), (255);  
123        } ContentFormat;  
124     
125     struct {  
126             ContentFormat content_format;  
127             SignMethod sign_meth;  
128             SignType sign_type<2..2^16-1>;  
129          } SignatureRequest;  
130     
131     enum {  
132           ssl_client_auth_cert(0), ssl_client_auth_cert_url(1), (255);  
133        } SignMethod;  
134      
135     uint8 SignType[2]; 
136     
137    The client initiates the TLS Sign module by sending the 
138    ExtendedClientHello including the 'signature' extension. This 
139    extension contains:  
140     
141    - the SignType carrying the type of the non repudiation proof. It 
142    can have one of these two values: 
143     
144    SignType non_repudiation_with_proof_of_origin      = { 0x00, 0x01 }; 
145    SignType non_repudiation_without_proof_of_origin   = { 0x00, 0x02 }; 
146     
147    - the ContentFormat carrying the format of signed data. It can be 
148    PKCS7 [PKCS7], S/MIME [S/MIME] or XMLDSIG [XMLDSIG] 
149     
150              ContentFormat PKCS7   = { 0x00, 0xA1 }; 
151              ContentFormat SMIME   = { 0x00, 0xA2 }; 
152              ContentFormat XMLDSIG = { 0x00, 0xA3 }; 
153     
154          o if the value of the ContentFormat is PKCS7, then the PKCS7  
155            Content_type is of type signed-data. 
156     
157          o if the value of the ContentFormat is S/MIME, then S/MIME  
158            Content_type is of type SignedData 
159     
160          o if the value of the ContentFormat is XMLDSIG, then XMLDSIG  
161            signatureMethod algorithms. 
162     
163    - the SignMethod carrying the signature method that is used to sign 
164    the application data (e.g. X509  authentication certificate). 
165     
166                SignMethod X509 = { 0x00, 0xB1 }; 
169 Hajjeh & Badra            Expires November 2007                [Page 3] \f
170 INTERNET-DRAFT                   TLS Sign                     June 2007 
172     
173    Actually, this document uses the same certificate used in client 
174    authentication. Any new signature method MAY be added in future 
175    versions (e.g. delegated attributes certificates). 
176     
177    The server MAY reject the connection by sending the error alert 
178    "unsupported_extension" [TLSExt] and closing the connection. 
179     
180    The client and the server MAY or MAY NOT use the same certificates 
181    used by the Handshake protocol. Several cases are possible: 
182     
183    - If the server has an interest in getting non-repudiation data from 
184    the client and that the cipher_suites list sent by the client does 
185    not include any cipher_suite with signature ability, the server MUST 
186    (upon reception of tls_sign_on_off protocol message not followed by 
187    a certificate with a type equals to ExtendedServerHello.sign_method) 
188    close the connection by sending a fatal error. 
189     
190    - If the server has an interest in getting non-repudiation data from 
191    the client and that the cipher_suites list sent by the client 
192    includes at least a cipher_suite with signature ability, the server 
193    SHOULD select a cipher_suite with signature ability and MUST provide 
194    a certificate (e.g., RSA) that MAY be used for key exchange. 
195    Further, the server MUST request a certificate from the client using 
196    the TLS certificate request message (e.g., an RSA or a DSS 
197    signature-capable certificate). If the client does not send a 
198    certificate during the TLS Handshake, the server MUST close the TLS 
199    session by sending a fatal error in the case where the client sends 
200    a tls_sign_on_off protocol message not followed by a certificate 
201    with a type equals to ExtendedServerHello.sign_method. 
202     
203    - The client or the server MAY use a certificate different to these 
204    being used by TLS Handshake. This MAY happen when the server agrees 
205    in getting non-repudiation data from the client and that the type of 
206    the client certificate used by TLS Handshake and the type selected 
207    by the server from the list in ExtendedClientHello.sign_method are 
208    different, or when the ExtendedServerHello.cipher_suite does not 
209    require client and/or server certificates. In these cases, the 
210    client or the server sends a new message called certificate_sign, 
211    right after sending the tls_sign_on_off protocol messages. The new 
212    message contains the sender's certificate in which the type is the 
213    same type selected by the server from the list in 
214    ExtendedClientHello.sign_method. The certificate_sign is therefore 
215    used to generate signed data. It is defined as follows: 
216     
217        opaque ASN.1Cert<2^24-1>; 
218     
219        struct { 
220            ASN.1Cert certificate_list<1..2^24-1>; 
221        } CertificateSign; 
222     
225 Hajjeh & Badra            Expires November 2007                [Page 4] \f
226 INTERNET-DRAFT                   TLS Sign                     June 2007 
228    The certificate_list, as defined in [TLS], is a sequence (chain) of 
229    certificates. The sender's certificate MUST come first in the list. 
230     
231    If the server has no interest in getting non-repudiation data from 
232    the client, it replays with an ordinary TLS ServerHello or return a 
233    handshake failure alert and close the connection [TLS]. 
234     
235          Client                                               Server  
236          ------                                               ------  
237     
238          ClientHello             -------->  
239                                                          ServerHello  
240                                                         Certificate* 
241                                                   ServerKeyExchange*  
242                                                  CertificateRequest*  
243                                  <--------           ServerHelloDone  
244          Certificate*  
245          ClientKeyExchange  
246          CertificateVerify* 
247          [ChangeCipherSpec] 
248          Finished                -------->  
249                                                   [ChangeCipherSpec] 
250                                  <--------                  Finished 
251     
252          TLSSignOnOff   <-------------------------->    TLSSignOnOff 
253           
254          CertificateSign* <-----------------------> CertificateSign* 
255      
256          (Signed) Application Data <---->  (Signed) Application Data 
257     
258    * Indicates optional or situation-dependent messages that are not 
259    always sent. 
260     
261 2.1 tls sign on off protocol  
262     
263    To manage the generation of evidence, new sub-protocol is added by 
264    this document, called tls_sign_on_off. This protocol consists of a 
265    single message that is encrypted and compressed under the 
266    established connection state. This message can be sent at any time 
267    after the TLS session has been established. Thus, no man in the 
268    middle can replay or inject this message. It consists of a single 
269    byte of value 1 (tls_sign_on) or 0 (tls_sign_off). 
270     
271        enum {   
272              change_cipher_spec(20), alert(21), handshake(22),   
273              application_data(23), tls_sign(TBC), (255)   
274           } ContentType;   
275       
276        struct {   
277                enum { tls_sign_off(0), tls_sign_on(1), (255) } type;   
278             } TLSSignOnOff;  
281 Hajjeh & Badra            Expires November 2007                [Page 5] \f
282 INTERNET-DRAFT                   TLS Sign                     June 2007 
284     
285    The tls_sign_on_off message is sent by the client and/or server to 
286    notify the receiving party that subsequent records will carry data 
287    signed under the negotiated parameters.   
288     
289    Note: TLSSignOnOff is an independent TLS Protocol content type, and 
290    is not actually a TLS handshake message. 
291     
292  2.1.1 TLS sign packet format  
293     
294    This document defines a new packet format that encapsulates signed 
295    data, the TLSSigntext. The packet format is shown below. The fields 
296    are transmitted from left to right.  
297     
298    0                   1                   2                   3        
299    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1    
300    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
301    | Content-Type  |     Flag      |     Version                   |   
302    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
303    |              Length           |  Signed Data ...  
304    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
305     
306    Content-Type 
307     
308    Same as TLSPlaintext.type. 
309     
310    Flag 
311     
312    0 1 2 3 4 5 6 7 8  
313    +-+-+-+-+-+-+-+-+   
314    |A R R R R R R R|   
315    +-+-+-+-+-+-+-+-+   
316     
317    A = acknowledgement of receipt 
318    R = Reserved 
319     
320    When the whole signed data is delivered to the receiver, the TLS 
321    Sign will check the signature. If the signature is valid and that 
322    the sender requires a proof of receipt, the receiver MUST generate a 
323    TLSSigntext packet with the bit A set to 1 (acknowledgement of 
324    receipt). This helps the receiver of the acknowledgment of receipt 
325    in storing the data-field for later use (see section 2.2). The data-
326    field of that message contains the digest of the whole data receiver 
327    by the generator of the acknowledgement of receipt. The digest is 
328    signed before sending the result to the other side. 
329     
330     2.1.3 bad_sign alert 
331     
332    This alert is returned if a record is received with an incorrect 
333    signature. This message is always fatal. 
334     
337 Hajjeh & Badra            Expires November 2007                [Page 6] \f
338 INTERNET-DRAFT                   TLS Sign                     June 2007 
340 2.2 Storing signed data  
341     
342    The objective of TLS Sign is to provide both parties with evidence 
343    that can be stored and later presented to a third party to resolve 
344    disputes that arise if and when a communication is repudiated by one 
345    of the entities involved. This document provides the two basic types 
346    of non-repudiation service:  
347     
348    o   Non-repudiation with proof of origin: provides the TLS server   
349        with evidence proving that the TLS client has sent it the signed   
350        data at a certain time.  
351     
352    o   Non-repudiation with proof of delivery: provides the TLS client   
353        with evidence that the server has received the client's signed   
354        data at a specific time.  
355     
356    TLS Handshake exchanges the current time and date according to the 
357    entities internal clock. Thus, the time and date can be stored with 
358    the signed data as a proof of communication. For B2C or B2B 
359    transactions, non-repudiation with proof of origin and non-
360    repudiation with proof of receipt are both important. If the TLS 
361    client requests a non-repudiation service with proof of receipt, the 
362    server SHOULD verify and send back to client a signature on the hash 
363    of signed data.  
364     
365    The following figure explains the different events for proving and 
366    storing signed data [RFC2828]. RFC 2828 uses the term "critical 
367    action" to refer to the act of communication between the two 
368    entities. For a complete non-repudiation deployment, 6 phases should 
369    be respected: 
370     
371    --------   --------   --------   --------   --------     --------  
372    Phase 1:   Phase 2:   Phase 3:   Phase 4:   Phase 5:     Phase 6:  
373    Request    Generate   Transfer   Verify     Retain       Resolve  
374    Service    Evidence   Evidence   Evidence   Evidence     Dispute  
375    --------   --------   --------   --------   --------     --------  
376    Service    Critical   Evidence   Evidence   Archive      Evidence  
377    Request => Action  => Stored  => Is      => Evidence     Is  
378    Is Made    Occurs     For Later  Tested     In Case      Verified  
379               and        Use |          ^      Critical         ^  
380               Evidence       v          |      Action Is        |  
381               Is         +-------------------+ Repudiated       |  
382               Generated  |Verifiable Evidence|------>       ----+  
383                          +-------------------+  
384     
385    1- Requesting explicit transaction evidence before sending data. 
386    Normally, this action is taken by the SSL/TLS client  
387     
388    2- If the server accepts, the client will generate evidence by 
389    signing data using his X.509 authentication certificate. Server will 
390    go through the same process if the evidence of receipt is requested. 
393 Hajjeh & Badra            Expires November 2007                [Page 7] \f
394 INTERNET-DRAFT                   TLS Sign                     June 2007 
396     
397    3 - The signed data is then sent by the initiator (client or server) 
398    and stored it locally, or by a third party, for a later use if 
399    needed. 
400     
401    4 - The entity that receive the evidence process to verify the 
402    signed data. 
403     
404    5- The evidence is then stored by the receiver entity for a later 
405    use if needed. 
406     
407    6- In this phase, which occurs only if the critical action is 
408    repudiated, the evidence is retrieved from storage, presented, and 
409    verified to resolve the dispute. 
410     
411    With this method, the stored signed data (or evidence) can be 
412    retrieved by both parties, presented and verified if the critical 
413    action is repudiated. 
414     
415 Security Considerations 
416     
417    Security issues are discussed throughout this memo. 
418     
419 IANA Considerations 
420     
421    This document defines a new TLS extension "signature", assigned the 
422    value TBD from the TLS ExtensionType registry defined in [TLSEXT]. 
423     
424    This document defines one TLS ContentType: tls_sign(TBD). This 
425    ContentType value is assigned from the TLS ContentType registry 
426    defined in [TLS]. 
427     
428    This document defines a new handshake message, certificate_sign, 
429    whose value is to be allocated from the TLS HandshakeType registry 
430    defined in [TLS]. 
431     
432    The bad_sign alert that is defined in this document is assigned to 
433    the TLS Alert registry defined in [TLS]. 
434     
435 References 
436     
437    [TLS]     Dierks, T., et. al., "The TLS Protocol Version 1.0",  
438              RFC 2246, January 1999. 
439     
440    [TLSExt]  Blake-Wilson, S., et. al., "Transport Layer Security TLS)  
441              Extensions", RFC 3546, June 2003. 
442     
443    [PKCS7]   RSA Laboratories, "PKCS #7: RSA Cryptographic Message  
444              Syntax Standard," version 1.5, November 1993.  
445         
446    [S/MIME]  Ramsdell, B., "S/MIME Version 3 Message Specification",  
449 Hajjeh & Badra            Expires November 2007                [Page 8] \f
450 INTERNET-DRAFT                   TLS Sign                     June 2007 
452              RFC 2633, June 1999.  
453     
454    [XMLDSIG] Eastlake, D., et. al, "(Extensible Markup Language) XML  
455              Signature Syntax and Processing", RFC 3275, March 2002.  
456     
457    [TLSSign] Hajjeh, I., Serhrouchni, A., "Integrating a signature   
458              module in SSL/TLS, ICETE2004., ACM/IEEE, First   
459              International Conference on E-Business and  
460              Telecommunication Networks, Portugal, August 2004.  
461     
462    [RFC2828] Shirey, R., "Internet Security Glossary", RFC 2828, May   
463              2000. 
464     
465 Author's Addresses 
466     
467    Ibrahim Hajjeh 
468    Engineering and Scientific Research Groups (ESRGroups) 
469    82 rue Baudricourt 
470    75013 Paris               Phone: NA  
471    France                    Email: Ibrahim.Hajjeh@esrgroups.org 
472     
473    Mohamad Badra 
474    LIMOS Laboratory - UMR 6158, CNRS 
475    France                    Email: badra@isima.fr 
476     
477    Acknowledgements  
478     
479    The authors would like to thank Eric Rescorla for discussions and 
480    comments on the design of TLS Sign. 
481     
482 Appendix  Changelog 
483     
484    Changes from -01 to -02: 
485     
486    o Add an IANA section. 
487     
488    o Small clarifications to section 2.  
489     
490    o Add the bad_sign alert and the certificate_sign message. 
491     
492    Changes from -00 to -01: 
493     
494    o Clarifications to the format of the signed data in Section 2. 
495     
496    o Small clarifications to TLS SIGN negotiation in Section 2. 
497     
498    o Added Jacques Demerjian and Mohammed Achemlal as 
499      contributors/authors. 
500     
501    Full Copyright Statement 
502     
505 Hajjeh & Badra            Expires November 2007                [Page 9] \f
506 INTERNET-DRAFT                   TLS Sign                     June 2007 
508    Copyright (C) The IETF Trust (2007). 
509     
510    This document is subject to the rights, licenses and restrictions 
511    contained in BCP 78, and except as set forth therein, the authors 
512    retain all their rights. 
513     
514    This document and the information contained herein are provided on 
515    an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE 
516    REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE 
517    IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL 
518    WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY 
519    WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE 
520    ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS 
521    FOR A PARTICULAR PURPOSE. 
522     
523    Intellectual Property 
524     
525    The IETF takes no position regarding the validity or scope of any 
526    Intellectual Property Rights or other rights that might be claimed 
527    to pertain to the implementation or use of the technology described 
528    in this document or the extent to which any license under such 
529    rights might or might not be available; nor does it represent that 
530    it has made any independent effort to identify any such rights.  
531    Information on the procedures with respect to rights in RFC 
532    documents can be found in BCP 78 and BCP 79. 
533     
534    Copies of IPR disclosures made to the IETF Secretariat and any 
535    assurances of licenses to be made available, or the result of an 
536    attempt made to obtain a general license or permission for the use 
537    of such proprietary rights by implementers or users of this 
538    specification can be obtained from the IETF on-line IPR repository 
539    at http://www.ietf.org/ipr. 
540     
541    The IETF invites any interested party to bring to its attention any 
542    copyrights, patents or patent applications, or other proprietary 
543    rights that may cover technology that may be required to implement 
544    this standard.  Please address the information to the IETF at ietf-
545    ipr@ietf.org. 
546     
547    Acknowledgement 
548     
549    Funding for the RFC Editor function is provided by the IETF 
550    Administrative Support Activity (IASA). 
561 Hajjeh & Badra            Expires November 2007               [Page 10] \f