Improve GTK-DOC coverage.
[gnutls.git] / doc / protocol / draft-housley-evidence-extns-01.txt
blob639dd0b4814ebeaadb296ac9bb051f508b23891d
5 Internet-Draft                                                  M. Brown
6 November 2006                                          RedPhone Security
7 Expires: May 2007                                             R. Housley
8                                                           Vigil Security
11            Transport Layer Security (TLS) Evidence Extensions
12                  <draft-housley-evidence-extns-01.txt>
16 Status of this Memo
18    By submitting this Internet-Draft, each author represents that any
19    applicable patent or other IPR claims of which he or she is aware
20    have been or will be disclosed, and any of which he or she becomes
21    aware will be disclosed, in accordance with Section 6 of BCP 79.
23    Internet-Drafts are working documents of the Internet Engineering
24    Task Force (IETF), its areas, and its working groups.  Note that
25    other groups may also distribute working documents as Internet-
26    Drafts.
28    Internet-Drafts are draft documents valid for a maximum of six months
29    and may be updated, replaced, or obsoleted by other documents at any
30    time.  It is inappropriate to use Internet-Drafts as reference
31    material or to cite them other than as "work in progress."
33    The list of current Internet-Drafts can be accessed at
34    http://www.ietf.org/ietf/1id-abstracts.txt.
36    The list of Internet-Draft Shadow Directories can be accessed at
37    http://www.ietf.org/shadow.html.
39 Copyright Notice
41    Copyright (C) The Internet Society (2006).  All Rights Reserved.
43 Abstract
45    This document specifies evidence creation extensions to the Transport
46    Layer Security (TLS) Protocol.  Extension types are carried in the
47    client and server hello message extensions to confirm that both
48    parties support the protocol features needed to perform evidence
49    creation.  The syntax and semantics of the evidence creation alerts
50    and messages are described in detail.
56 Brown & Housley                                                 [Page 1]
58 Internet-Draft                                             November 2006
61 1. Introduction
63    Transport Layer Security (TLS) protocol [TLS1.0][TLS1.1] is being
64    used in an increasing variety of operational environments, including
65    ones that were not envisioned when the original design criteria for
66    TLS were determined.  The extensions specified in this document
67    support evidence creation in environments where the peers in the TLS
68    session cooperate to create persistent evidence of the TLS-protected
69    application data.  Such evidence may be necessary to meet business
70    requirements, including regulatory requirements.  Also, evidence may
71    be used in tandem with authorization information to make high
72    assurance access control and routing decisions in military and
73    government environments.  Evidence created using this extension may
74    also be used to audit various aspects of the TLS handshake, including
75    the cipher suite negotiation and the use of other TLS extensions.  In
76    many cases, the evidence does not need to be validated by third
77    parties; however, in other cases, the evidence might be validated by
78    third parties.  To accommodate all of these situations, the evidence
79    is generated using a digital signature.  Since validation of a
80    digital signature requires only public information, evidence
81    generated with this mechanism is suitable for sharing with third
82    parties.
84    When digital certificates are to be employed in evidence creations,
85    the client must obtain the public key certificate (PKC) for the
86    server, and the server must obtain the PKC for the client.  This is
87    most easily accomplished by using the PKCs provided in the Handshake
88    Protocol Certificate messages.  Further, both parties SHOULD have an
89    opportunity to validate the PKC that will be used by the other party
90    before evidence creation.  Again, this is naturally accomplished
91    using the Handshake Protocol, where the TLS session can be rejected
92    if the PKC cannot be validated.
94    This document describes evidence creation TLS extensions supporting
95    both TLS 1.0 and TLS 1.1.  These extensions observe the conventions
96    defined for TLS Extensions [TLSEXT].  The extensions are designed to
97    be backwards compatible, meaning that the protocol alerts and
98    messages associated with the evidence creation extensions will be
99    exchanged only if the client indicates support for them in the client
100    hello message and the server indicates support for them in the server
101    hello message.
103    Clients typically know the context of the TLS session before it is
104    established.  As a result, the client can request the use of the
105    evidence creation extensions in sessions where they might be needed.
106    Servers accept extended client hello messages, even if the server
107    does not support the all of the listed extensions.  However, the
108    server will not indicate support for any extensions that are not
112 Brown & Housley                                                 [Page 2]
114 Internet-Draft                                             November 2006
117    "understood" by the implementation.  At the end of the hello message
118    exchange, the client may reject communications with servers that do
119    not support the evidence creation extensions, or the client may
120    accept the situation and proceed, whichever is appropriate.
122 1.1. Conventions
124    The syntax for the evidence creation messages is defined using the
125    TLS Presentation Language, which is specified in Section 4 of
126    [TLS1.0].
128    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
129    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
130    document are to be interpreted as described in RFC 2119 [STDWORDS].
132 1.2. Overview
134    Figure 1 illustrates the placement of the evidence creation alerts
135    and messages in the TLS session.  The first pair of evidence creation
136    alerts indicates the beginning of the protected content that will be
137    covered by the evidence.  The first pair of alerts can appear any
138    place after the TLS Handshake Protocol Finished messages, which
139    ensures that they are integrity protected.  The second pair of
140    evidence creation alerts indicates the ending of the protected
141    content that will be covered by the evidence.  Immediately after the
142    reception of the final alert, a pair of Evidence Protocol messages is
143    exchanged to create the persistent evidence.
145    Generating evidence is not compatible with Diffie-Hellman Ephemeral
146    (DHE) key exchanges.  DHE does not permit the same keying material to
147    be generated for validation of the evidence after the TLS session is
148    over.  Persistent evidence requires the use of a digital signature so
149    that it can be validated well after the TLS session is over.
151    The ClientHello message includes an indication that the evidence
152    creation messages are supported.  The ServerHello message also
153    includes an indication that the evidence creation messages are
154    supported.  Both the client and the server MUST indicate support for
155    the evidence protocol alerts and messages; otherwise they MUST NOT be
156    employed by either the client or the server.
168 Brown & Housley                                                 [Page 3]
170 Internet-Draft                                             November 2006
173       Client                                                 Server
175       ClientHello               -------->
176                                                         ServerHello
177                                                        Certificate+
178                                                  ServerKeyExchange*
179                                                 CertificateRequest+
180                                 <--------           ServerHelloDone
181       Certificate+
182       ClientKeyExchange
183       CertificateVerify+
184       ChangeCipherSpec
185       Finished                  -------->
186                                                    ChangeCipherSpec
187                                 <--------                  Finished
188       Application Data          <------->          Application Data
189       Alert(evidence_start1)    -------->
190                                                    Application Data
191                                 <--------    Alert(evidence_start2)
193       Application Data          <------->          Application Data
194       Alert(evidence_end1)      -------->
195                                                    Application Data
196                                 <--------      Alert(evidence_end2)
197       EvidenceRequest           -------->
198                                 <--------          EvidenceResponse
199       Application Data          <------->          Application Data
201        *  Indicates optional or situation-dependent messages that
202           are not always sent.
203        +  Indicates messages optional to the TLS handshake that
204           MUST be sent when using TLS evidence.
207            Figure 1. Example TLS Session with Evidence Creation.
224 Brown & Housley                                                 [Page 4]
226 Internet-Draft                                             November 2006
229 2. Evidence Extension Types
231    The general extension mechanisms enable clients and servers to
232    negotiate whether to use specific extensions, and how to use specific
233    extensions.  As specified in [TLSEXT], the extension format used in
234    the extended client hello message and extended server hello message
235    within the TLS Handshake Protocol is:
237       struct {
238          ExtensionType extension_type;
239          opaque extension_data<0..2^16-1>;
240       } Extension;
242    The extension_type identifies a particular extension type, and the
243    extension_data contains information specific to the particular
244    extension type.
246    As specified in [TLSEXT], for all extension types, the extension type
247    MUST NOT appear in the extended server hello message unless the same
248    extension type appeared in the preceding client hello message.
249    Clients MUST abort the handshake if they receive an extension type in
250    the extended server hello message that they did not request in the
251    preceding extended client hello message.
253    When multiple extensions of different types are present in the
254    extended client hello message or the extended server hello message,
255    the extensions can appear in any order, but there MUST NOT be more
256    than one extension of the same type.
258    This document specifies the use of the evidence_creation extension
259    type.  This specification adds one new type to ExtensionType:
261       enum {
262          evidence_creation(TBD), (65535)
263       } ExtensionType;
265    The evidence_creation extension is relevant when a session is
266    initiated and also for any subsequent session resumption.  However, a
267    client that requests resumption of a session does not know whether
268    the server has maintained all of the context necessary to accept this
269    request, and therefore the client SHOULD send an extended client
270    hello message that includes the evidence_creation extension type.
271    This indicates that the client requests the server's continued
272    cooperation in creating evidence.  If the server denies the
273    resumption request, then the evidence_creation extension will be
274    negotiated normally using the full Handshake protocol.
276    Clients MUST include the evidence_creation extension in the extended
280 Brown & Housley                                                 [Page 5]
282 Internet-Draft                                             November 2006
285    client hello message to indicate their desire to send and receive
286    evidence creation alerts and messages.  The extension_data field
287    indicates the evidence creation algorithms that are supported.  The
288    format is indicated with the EvidenceCreateList type:
290       uint16 EvidenceCreateSuite[2];
292       struct {
293          EvidenceCreateSuite evidence_suites<2..2^16-1>;
294       } EvidenceCreateList;
296    The EvidenceCreateList enumerates the evidence creation algorithms
297    that are supported by the client.  The client MUST order the entries
298    from most preferred to least preferred, but all of the entries MUST
299    be acceptable to the client.  Values are defined in Appendix A, and
300    others can be registered in the future.
302    Servers that receive an extended client hello message containing the
303    evidence_creation extension MUST respond with the evidence_creation
304    extension in the extended server hello message if the server is
305    willing to send and receive evidence creation alerts and messages.
306    The evidence_creation extension MUST be omitted from the extended
307    server hello message if the server is unwilling to send and receive
308    using one of the evidence creation algorithm suites identified by the
309    client.  The extension_data field indicates the evidence creation
310    algorithm suite that the server selected from the list provided by
311    the client.  The format is indicated with the EvidenceCreateSuite
312    type defined above.
314 3. Alert Messages
316    This document specifies the use of four new alert message
317    descriptions: the evidence_start1, evidence_start2, evidence_end1,
318    and evidence_end2.  These descriptions are specified in Sections 3.1,
319    3.2, 3.3, and 3.4, respectively.  The alert descriptions are
320    presented below in the order they MUST be sent; sending alerts in an
321    unexpected order results in a fatal error.  These descriptions are
322    always used with the warning alert level.  This specification adds
323    four new types to AlertDescription:
325       enum {
326          evidence_start1(TBD),
327          evidence_start2(TBD),
328          evidence_end1(TBD),
329          evidence_end2(TBD),
330          evidence_failure(TBD),
331          (255)
332       } AlertDescription;
336 Brown & Housley                                                 [Page 6]
338 Internet-Draft                                             November 2006
341 3.1. The evidence_start1 Description
343    The client and the server need to synchronize evidence creation.
344    Either party may indicate the desire to start creating evidence by
345    sending the evidence_start1 alert.  If the other party is ready to
346    begin creating evidence, then the other party MUST send an
347    evidence_start2 alert in response to the evidence_start1 alert that
348    was sent.  If the other party is unwilling to begin creating
349    evidence, the other party MUST respond with fatal
350    evidence_failure(TBD) alert and terminate the TLS session.
352    Evidence may be collected more than once during a TLS session;
353    however, evidence gathering MUST NOT be nested.  That is, a party
354    sending the a second evidence_start1 alert before evidence_end2 alert
355    has occurred and the evidence protocol has completed is a protocol
356    violation.  Reception of an evidence_start1 alert that would result
357    in evidence nesting MUST be responded to with a fatal
358    evidence_failure(TBD) alert and terminating the TLS session.
360    Digital signatures are used in evidence creation.  If an
361    evidence_start1 alert is received before the other party has provided
362    a valid PKC, then the evidence_start1 alert recipient MUST terminate
363    the TLS session using a fatal certificate_unknown alert.
365 3.2. The evidence_start2 Description
367    The evidence_start2 alert is sent in response to the evidence_start1
368    alert.  By sending the evidence_start2 alert, the sending party
369    indicates that they are also ready to begin creating evidence.  After
370    this pair of alerts is exchanged, both the client and the server use
371    the hash function indicated in the extended server hello message to
372    start computing the evidence.  Each party computes two independent
373    hash values: one for each octet that is written, and one for each
374    octet that is read.
376    Digital signatures are used in evidence creation.  If an
377    evidence_start2 alert is received before the other party has provided
378    a valid PKC, then the evidence_start2 alert recipient MUST terminate
379    the TLS session using a fatal certificate_unknown alert.
381 3.3. The evidence_end1 Description
383    Either party may initiate the closure of an evidence-creating
384    interval and the exchange of evidence messages by sending the
385    evidence_end1 alert.  Upon sending evidence_end1, the sender MUST not
386    send any more application data on this connection until the Evidence
387    Protocol messages are exchanged.
392 Brown & Housley                                                 [Page 7]
394 Internet-Draft                                             November 2006
397    The evidence_end1 alert sender MAY initiate the Evidence Protocol as
398    described in Section 4 at any time following this alert.  The
399    evidence_end1 alert sender SHOULD ensure that it has received all
400    pending application data writes from the other party before
401    initiating the Evidence Protocol.  One way to ensure that all of the
402    application data has been received it to wait for the receipt of an
403    evidence_end2 alert.  If the Evidence Protocol begins before all of
404    the application data is available, the result will be a fatal
405    evidence_failure(TBD) alert when signature verification fails.
407 3.4. The evidence_end2 Description
409    The evidence_end2 alert is sent in response to the evidence_end1
410    alert.  The evidence_end1 alert receiver SHOULD complete any pending
411    writes.  The intent is to include any application data that would be
412    sent in response to application data that was received before the
413    evidence_end1 alert as part of evidence creation.  Once the pending
414    writes are complete, the evidence_end1 alert receiver sends the
415    evidence_end2 alert.
417    At this point, each party completes the hash value computations.
419    The evidence_end2 alert receiver MUST respond by initiating the
420    Evidence Protocol as described in Section 4, if it has not already
421    done so.
423 3.5. The evidence_failure Description
425    The evidence_failure fatal alert is sent to indicate a failure in
426    evidence creation.  During evidence synchronization, this alert
427    indicates that the sending party is unwilling to begin evidence
428    creation.  During the Evidence Protocol, this alert indicates that
429    the evidence provided by the other party is not acceptable or cannot
430    be validated.
432 4. Evidence Protocol
434    This document specifies an additional TLS Protocol: the Evidence
435    Protocol.  It is used to create persistent evidence of the TLS
436    session content.  This specification adds one new Record layer
437    ContentType:
439       enum {
440          evidence(TBD),
441          (255)
442       } ContentType;
448 Brown & Housley                                                 [Page 8]
450 Internet-Draft                                             November 2006
453    Persistence evidence of the TLS session content is produced by the
454    TLS Evidence Protocol.  Evidence messages are supplied to the TLS
455    Record Layer, where they are encapsulated within one or more
456    TLSPlaintext structures, which are processed and transmitted as
457    specified by the current active session state.
459    The Evidence Protocol structure follows:
461       enum {
462          request(1), response(2), (255)
463       } EvidenceMsgType;
465       struct {
466          EvidenceMsgType evidence_msg_type;
467          uint24 length; /* number of octets in message */
468          select (EvidenceMsgType) {
469             case request:     EvidenceRequest;
470             case response:    EvidenceResponse;
471          } body;
472       } EvidenceProtocol;
474    The Evidence Protocol messages are presented below in the order they
475    MUST be sent; sending evidence messages in an unexpected order
476    results in a fatal unexpected_message(10) alert.  The EvidenceRequest
477    message and the EvidenceResponse message are specified in Section 4.2
478    and Section 4.3, respectively.  Section 4.1 describes structures that
479    are used in the EvidenceRequest and EvidenceResponse messages.
481 4.1. Certificates and Digital Signatures
483    The evidence Protocol makes use of the ASN.1Cert definition used
484    elsewhere in TLS.  It is repeated here for convenience.
486       opaque ASN.1Cert<1..2^24-1>;
504 Brown & Housley                                                 [Page 9]
506 Internet-Draft                                             November 2006
509    The EvidenceSignature definition is very similar to the Signature
510    definition used elsewhere in TLS.  The EvidenceSignature definition
511    signs hash[hash_size], but the Signature definition used elsewhere in
512    TLS signs a combination of an md5_hash and a sha_hash.  Also, the
513    EvidenceSignature definition excludes the anonymous case.
515       enum { rsa, dsa, ecdsa } EvidenceSignatureAlgorithm;
517       select (EvidenceSignatureAlgorithm)
518       {   case rsa:
519               digitally-signed struct {
520                   opaque hash[hash_size];
521               };
522           case dsa:
523               digitally-signed struct {
524                   opaque hash[hash_size];
525               };
526           case ecdsa:
527               digitally-signed struct {
528                   opaque hash[hash_size];
529               };
530       } EvidenceSignature;
532    The hash algorithm and the hash_size depend on evidence create
533    algorithm suite selected by the server in the evidence_creation
534    extension.
536 4.2. EvidenceRequest Message
538    The EvidenceRequest message contains the evidence_end1 alert sender's
539    contribution to the persistent evidence.  It employs the evidence
540    create algorithm suite selected by the server in the
541    evidence_creation extension in the extended server hello message.
543       struct {
544          Evidence evidence<1..2^16-1>;
545          ASN.1Cert party1_certificate;
546          EvidenceSignature party1_signature;
547       } EvidenceRequest;
560 Brown & Housley                                                [Page 10]
562 Internet-Draft                                             November 2006
565       struct {
566          EvidenceCreateSuite evidence_suite;
567          uint64 gmt_unix_time;
568          uint64 app_data_sent_offset;
569          uint64 app_data_received_offset;
570          opaque handshake_protocol_hash<1..512>;
571          opaque app_data_sent_hash<1..512>;
572          opaque app_data_received_hash<1..512>;
573       } Evidence;
575    The elements of the EvidenceRequest structure are described below:
577       evidence
578          Contains an evidence create algorithm identifier, a timestamp,
579          and three hash values in the Evidence structure as described
580          below.
582       party1_certificate
583          Contains the X.509 certificate of the signer.  While this
584          certificate was probably exchanged and validated in the
585          Handshake Protocol, inclusion here makes it clear which
586          certificate was employed by the signer when the evidence is
587          validated in the future, possibly by a third party.
589       party1_signature
590          Contains the digital signature computed by the sender of the
591          evidence_end1 alert using the evidence creation algorithm suite
592          identified in evidence_create_suite.  The hash value is
593          computed as:
595             Hash(evidence)
597    The elements of the Evidence structure are described below:
599       evidence_suite
600          Indicates the evidence creation algorithm suite selected by the
601          server in the evidence_creation extension in the Handshake
602          Protocol.  This value determines the structure of the hash
603          values and digital signatures.
605       gmt_unix_time
606          Indicates the current date and time according to the local
607          system clock used by the sender of the evidence_end1 alert.
608          This time value is intended to represent the moment in time
609          that evidence_end1 was sent.  Unlike other places in the TLS
610          protocol, a 64-bit value is used to ensure that time values do
611          not wrap in 2038.
616 Brown & Housley                                                [Page 11]
618 Internet-Draft                                             November 2006
621       app_data_sent_offset
622          Indicates the number of octets that were sent as part of this
623          TLS session before evidence collection began.
625       app_data_received_offset
626          Indicates the number of octets that were received as part of
627          this TLS session before evidence collection began.
629       handshake_protocol_hash
630          Compute as:
632             Hash(handshake_messages),
634          where handshake_messages refers to all Handshake Protocol
635          messages sent or received, beginning with the most recent
636          client hello message.  If the double handshake mechanism
637          described in the security considerations of [TLSAUTHZ] is used
638          to encrypt the Handshake Protocol, the plaintext form of these
639          messages is used in calculating this hash value.
641          Verification of the handshake_protocol_hash is performed using
642          the plaintext form of the Handshake protocol messages.  For
643          this hash value to be validated at a later time, this
644          information must be saved as part of the overall evidence.  Any
645          attempt to save this data must ensure that it is not
646          inappropriately disclosed by employing suitable physical
647          protection or cryptographic mechanisms that are at least as
648          strong as the selected TLS ciphersuite.  Suitable controls are
649          discussed further in the Security Considerations; see Section
650          6.
652          In the case of successful TLS session resumption, the most
653          recent client hello message will contain a valid
654          ClientHello.session_id value as well as extensions, and these
655          extensions may include sensitive data.  The TLS Authorization
656          Extension [AUTHZ] is one example where an extension might
657          contain sensitive information.  Thus, even when session
658          resumption is employed, the content of the Handshake protocol
659          messages ought to be protected.
661          TLS users should ensure that the content of the Handshake
662          protocol messages contain sufficient evidence to determine the
663          intent of the signers, where "signers" are defined as the
664          subject identities in the exchanged X.509 certificates.
665          Clients and servers MAY record the protocol messages containing
666          an expression of the intent of the signers using a suitable TLS
667          extension [TLSEXT], such as [TLSAUTHZ].  For example, a client
668          may request access to a resource provided by the server,
672 Brown & Housley                                                [Page 12]
674 Internet-Draft                                             November 2006
677          provide sufficient authentication and authorization information
678          grounds to convince the server to grant the requested access,
679          and receive an affirmative response from the server.  A record
680          of TLS Handshake protocol messages representing this example
681          may provide a sufficient record of the intent of both the
682          client and the server.
684       app_data_sent_hash
685          Compute as:
687             Hash(sent_application_data),
689          where sent_application_data refers to all of the Application
690          Data messages sent since the most recent evidence_start1 or
691          evidence start2 alert was sent, and ending with the sending of
692          the evidence_end1 alert.  The alerts are not application data,
693          and they are not included in the hash computation.
695       app_data_received_hash
696          Compute as:
698             Hash(received_application_data),
700          where received_application_data refers to all of the
701          Application Data messages received since the most recent
702          evidence_start1 or evidence start2 alert was received, and
703          ending with the receipt of the evidence_end2 alert.  The alerts
704          are not application data, and they are not included in the hash
705          computation.
707 4.3. EvidenceResponse Message
709    The EvidenceResponse message contains the complete persistent
710    evidence.  The value is saved by one or both parties as evidence of
711    the TLS session content identified by the evidence_start1,
712    evidence_start2, evidence_end1, and evidence_end2 alerts.
714       struct {
715          Evidence evidence<1..2^16-1>;
716          ASN.1Cert party1_certificate;
717          EvidenceSignature party1_signature;
718          ASN.1Cert party2_certificate;
719          EvidenceSignature party2_signature;
720       } EvidenceResponse;
728 Brown & Housley                                                [Page 13]
730 Internet-Draft                                             November 2006
733    The elements of the EvidenceResponse structure are described below:
735       evidence
736          Contains an evidence create algorithm identifier, a timestamp,
737          and three hash values in the Evidence structure as described in
738          section 4.2.  The evidence creation algorithm MUST match the
739          evidence create algorithm suite selected by the server in the
740          evidence_creation extension in the extended server hello
741          message.  The timestamp MUST be acceptable to the
742          EvidenceRequest recipient as the same value is provided in the
743          EvidenceResponse message.  The three hash values received in
744          the EvidenceRequest message MUST match locally computed values
745          over the same data.  Note that the app_data_sent_hash and the
746          app_data_received_hash values represent the session from the
747          perspective of the EvidenceRequest originator, and the values
748          are not swapped to represent the EvidenceRequest recipient
749          perspective.  If any of these conditions is not met, then the
750          EvidenceResponse message MUST NOT be sent, and the TLS session
751          MUST be closed immediately after sending a fatal
752          evidence_failure(TBD) alert.
754       party1_certificate
755          Contains the X.509 certificate of the sender of the
756          evidence_end1 alert.  If this certificate cannot be validated,
757          then TLS session must be closed immediately after sending one
758          of the following fatal alerts: bad_certificate(42),
759          unsupported_certificate(43), certificate_revoked(44), or
760          certificate_expired(45).  These alerts are described in Section
761          7.2.2 of [TLS1.1].
763       party1_signature
764          Contains the digital signature computed by the sender of the
765          evidence_end1 alert.  If this signature cannot be validated,
766          then TLS session must be closed immediately after sending a
767          fatal evidence_failure(TBD) alert.
769       party2_certificate
770          Contains the X.509 certificate of the sender of the
771          evidence_end2 alert.  While this certificate was probably
772          exchanged and validated in the Handshake Protocol, inclusion
773          here make it clear which certificate was employed by the signer
774          when the evidence is validated in the future, possibly by a
775          third party.
784 Brown & Housley                                                [Page 14]
786 Internet-Draft                                             November 2006
789       Party2_signature
790          Contains the digital signature computed by the sender of the
791          evidence_end2 alert using the evidence creation algorithm suite
792          identified in evidence_suite.  The hash value is computed as:
794             Hash(evidence)
796 5. IANA Considerations
798    This document defines one TLS extension: evidence_creation(TBD).
799    This extension type value is assigned from the TLS Extension Type
800    registry defined in [TLSEXT].
802    This document defines five TLS alert descriptions: the
803    evidence_start1(TBD), evidence_start2(TBD), evidence_end1(TBD),
804    evidence_end2(TBD), and evidence_failure(TBD).  These alert
805    descriptions are assigned from the TLS Alert registry defined in
806    [TLS1.1].
808    This document defines one TLS ContentType: evidence(TBD).  This
809    ContentType value is assigned from the TLS ContentType registry
810    defined in [TLS1.1].
812    This document establishes a registry for TLS Evidence Protocol
813    EvidenceMsgType.  The first two entries in the registry are
814    request(1) and response(2).  All additional TLS Evidence Protocol
815    EvidenceMsgType values are assigned by Standards Action as described
816    in [IANA].
818    This document establishes a registry for Evidence Create Algorithm
819    suite identifiers.   Appendix A lists the initial values for this
820    registry.  Evidence Create Algorithm suite identifier values with the
821    first byte in the range 0-191 (decimal) inclusive are assigned by
822    Standards Action as described in [IANA].  Values with the first byte
823    in the range 192-254 (decimal) are assigned by Specification Required
824    as described in [IANA].  Values with the first byte 255 (decimal) are
825    reserved for Private Use as described in [IANA].
827 6. Security Considerations
829    This document describes an extension to the TLS protocol, and the
830    security considerations in [TLS1.1] and [TLSEXT] apply.
831    Additionally, temporal and storage security considerations are
832    discussed below.
840 Brown & Housley                                                [Page 15]
842 Internet-Draft                                             November 2006
845 6.1. Temporal Considerations
847    Generating evidence that covers Application Data values that do not
848    explicitly or implicitly indicate the point in time at which the
849    Application Data was transferred over the TLS session might give rise
850    to replay attacks, post-dating, pre-dating, or other temporal
851    disputes.  To avoid these concerns, the evidence includes an
852    indication of the date and time.  The TLS implementation MUST NOT
853    attempt to extract date and time values from the Application Data;
854    doing so is likely to be error prone.  Instead, the date and time
855    SHOULD come from a local clock or a trustworthy time server.  Date
856    and time are provided by one of the parties, and the other party
857    determines that the date and time value is sufficiently accurate.
859    When a more highly trusted time source is needed, the Time-Stamp
860    Protocol [TSP] can be used to obtain a time-stamp on the evidence
861    from a trusted third party.
863 6.2. Storage Considerations
865    Parties that choose to preserve a plaintext record of Application
866    Data or Handshake Protocol messages for evidence verification at a
867    later time must ensure must ensure that this data is not
868    inappropriately disclosed by employing suitable physical protection
869    or cryptographic mechanisms that are at least as strong as the
870    selected TLS ciphersuite.
872    Suitable physical controls for the protection of Application Data or
873    Handshake Protocol messages containing keying material or sensitive
874    data should use removable storage media in conjunction with durable,
875    locking storage containers.  If the removable media is transferred
876    from one location to another or backup copies are made, secure
877    handling protections ought to be employed, which might include the
878    use of insured or bonded couriers.
880    A suitable cryptographic mechanism provides confidentiality
881    protection, since the hash value in the evidence itself provides
882    integrity protection.  One reasonable solution is to encrypt the
883    Handshake Protocol messages and Application Data messages with a
884    fresh symmetric encryption key using the same algorithm that was
885    negotiated for the selected TLS ciphersuite.  The key generation
886    should follow the recommendations in [RANDOM].  Then, the symmetric
887    key is encrypted for storage with the party's RSA public key or long-
888    lived key-encryption key.  The Cryptographic Message Syntax (CMS)
889    [CMS] offers a convenient way to keep all of this information
890    together.
896 Brown & Housley                                                [Page 16]
898 Internet-Draft                                             November 2006
901    An alternative cryptographic mechanism is to save the TLS session
902    itself.  The negotiated TLS ciphersuite was already used to protect
903    the Application Data messages, and the Handshake Protocol messages
904    contain the keying material necessary to decrypt them if the party
905    retains the private keys and/or pre-shared secrets.
907 7. References
909 7.1. Normative References
911    [IANA]       Narten, T., and H. Alvestrand, "Guidelines for Writing
912                 an IANA Considerations Section in RFCs", RFC 3434,
913                 October 1998.
915    [DSS]        Federal Information Processing Standards Publication
916                 (FIPS PUB) 186, Digital Signature Standard, 2000.
918    [PKCS1]      Kaliski, B., "PKCS #1: RSA Encryption Version 1.5",
919                 RFC 2313, March 1998.
921    [PKIX1]      Housley, R., Polk, W., Ford, W. and D. Solo, "Internet
922                 Public Key Infrastructure - Certificate and
923                 Certificate Revocation List (CRL) Profile", RFC 3280,
924                 April 2002.
926    [TLS1.0]     Dierks, T., and C. Allen, "The TLS Protocol, Version 1.0",
927                 RFC 2246, January 1999.
929    [TLS1.1]     Dierks, T., and E. Rescorla, "The Transport Layer Security
930                 (TLS) Protocol, Version 1.1", RFC 4346, April 2006.
932    [TLSEXT]     Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J.,
933                 and T. Wright, "Transport Layer Security (TLS) Extensions",
934                 RFC 4366, April 2006.
936    [SHA]        Federal Information Processing Standards Publication
937                 (FIPS PUB) 180-2, Secure Hash Algorithm, 2002.
939    [STDWORDS]   Bradner, S., "Key words for use in RFCs to Indicate
940                 Requirement Levels", BCP 14, RFC 2119, March 1997.
942    [X9.62]      X9.62-1998, "Public Key Cryptography For The Financial
943                 Services Industry: The Elliptic Curve Digital
944                 Signature Algorithm (ECDSA)", January 7, 1999.
952 Brown & Housley                                                [Page 17]
954 Internet-Draft                                             November 2006
957 7.2. Informative References
959    [AUTHZ]      Brown, M., and R. Housley, "Transport Layer Security
960                 (TLS) Authorization Extensions", work in progress,
961                 draft-housley-tls-authz-extns.
963    [CMS]        Housley, R., "Cryptographic Message Syntax (CMS)",
964                 RFC 3852, July 2004.
966    [TSP]        Adams, C., Cain, P., Pinkas, D., and R. Zuccherato,
967                 "Internet X.509 Public Key Infrastructure: Time-Stamp
968                 Protocol (TSP)", RFC 3161,August 2001.
970 8.  Acknowledgements
972    Thanks to C. Robert Beattie, J.D. and Randy V. Sabett, J.D., CISSP
973    for their observations and comparisons between the Uniform Electronic
974    Transactions Act (1999) prepared by the National Conference of
975    Commissioners on Uniform State Laws versus the American Bar
976    Association's Digital Signature Guidelines (1996), their observations
977    regarding the strengths and weaknesses of these two approaches, and
978    their desire to promote trust and reduce potential for litigation in
979    online transactions.  Their pro bono contribution of time and
980    expertise deserves recognition.
982    This material is based, in part, upon work supported by the United
983    States Navy Space and Naval Warfare Systems Command under Contract
984    No. N00039-06-C-0097.
1008 Brown & Housley                                                [Page 18]
1010 Internet-Draft                                             November 2006
1013 Appendix A.  Evidence Create Algorithms
1015    The following values define the EvidenceCreateSuite identifiers used
1016    in the TLS Evidence Extensions.
1018    An EvidenceCreateSuite defines a cipher specification supported by
1019    TLS Evidence Extensions.  A suite identifier names a public key
1020    signature algorithm and an associated one-way hash function.  A
1021    registration is named as follows:
1023       <SignatureAlgorithm>_WITH_<HashFunction>
1025    These components have the following meaning:
1027       <SignatureAlgorithm>
1028          Specifies the digital signature algorithm and key length
1029          associated with the algorithm.  It is used to digitally sign
1030          the evidence.  The "RSA_1024" value indicates the use of the
1031          PKCS#1 v1.5 [PKCS1] digital signature algorithm using a
1032          1024-bit public key.  The "DSS_1024" value indicates the use of
1033          the DSS digital signature algorithm [DSS] with a 1024-bit
1034          public key.  The "ECDSA_P384" value indicates the use of the
1035          ECDSA digital signature algorithm [X9.62] using the P-384 named
1036          elliptic curve.
1038       <HashFunction>
1039          Specifies the one-way hash function used as part of the digital
1040          signature. The "SHA_1", "SHA_224", "SHA_256", "SHA_384", and
1041          "SHA_512" values identify members of the Secure Hash Algorithm
1042          family of one-way- hash functions [SHA].
1044    In most cases it will be appropriate to use the same algorithms and
1045    certified public keys that were negotiated in the TLS Handshake
1046    Protocol.  The following additional steps are required in order to
1047    employ the digital signature aspects of a TLS CipherSuite to a valid
1048    EvidenceCreateSuite:
1050       1) CipherSuites that do not include signature-capable certificates
1051          cannot be used as EvidenceCreateSuite.
1053       2) CipherSuites that specify the use of MD5 one-way hash function
1054          should not be used as EvidenceCreateSuite.
1056    Of course, any aspect of a CipherSuite that deals with symmetric
1057    ciphers and symmetric cipher key lengths is not relevant to the
1058    EvidenceCreateSuite.
1064 Brown & Housley                                                [Page 19]
1066 Internet-Draft                                             November 2006
1069    All public key certificate profiles used in TLS are defined by the
1070    IETF PKIX working group in [PKIX1].  When a key usage extension is
1071    present, then either the digitalSignature bit or the nonRepudiation
1072    bit MUST be set for the public key to be eligible for signing
1073    evidence.  If both bits are set, then this requirement is satisfied.
1075    The following EvidenceCreateSuite definitions are made at this time.
1076    Section 5 specifies the procedures for registering additional
1077    EvidenceCreateSuite definitions.
1079       EvidenceCreateSuite RSA_1024_WITH_SHA_1       = { 0x00, 0x01 };
1080       EvidenceCreateSuite RSA_1024_WITH_SHA_256     = { 0x00, 0x02 };
1081       EvidenceCreateSuite RSA_2048_WITH_SHA_256     = { 0x00, 0x03 };
1083       EvidenceCreateSuite DSS_1024_WITH_SHA_1       = { 0x00, 0x11 };
1084       EvidenceCreateSuite DSS_2048_WITH_SHA_256     = { 0x00, 0x12 };
1086       EvidenceCreateSuite ECDSA_P256_WITH_SHA_256   = { 0x00, 0x21 };
1087       EvidenceCreateSuite ECDSA_P384_WITH_SHA_384   = { 0x00, 0x22 };
1088       EvidenceCreateSuite ECDSA_P521_WITH_SHA_512   = { 0x00, 0x23 };
1120 Brown & Housley                                                [Page 20]
1122 Internet-Draft                                             November 2006
1125 Author's Address
1127    Mark Brown
1128    RedPhone Security
1129    2019 Palace Avenue
1130    Saint Paul, MN  55105
1131    USA
1132    mark <at> redphonesecurity <dot> com
1134    Russell Housley
1135    Vigil Security, LLC
1136    918 Spring Knoll Drive
1137    Herndon, VA 20170
1138    USA
1139    housley <at> vigilsec <dot> com
1141 Full Copyright Statement
1143    Copyright (C) The Internet Society (2006). This document is subject
1144    to the rights, licenses and restrictions contained in BCP 78, and
1145    except as set forth therein, the authors retain all their rights.
1147    This document and translations of it may be copied and furnished to
1148    others, and derivative works that comment on or otherwise explain it
1149    or assist in its implementation may be prepared, copied, published
1150    and distributed, in whole or in part, without restriction of any
1151    kind, provided that the above copyright notice and this paragraph are
1152    included on all such copies and derivative works. However, this
1154    document itself may not be modified in any way, such as by removing
1155    the copyright notice or references to the Internet Society or other
1156    Internet organizations, except as needed for the purpose of
1157    developing Internet standards in which case the procedures for
1158    copyrights defined in the Internet Standards process must be
1159    followed, or as required to translate it into languages other than
1160    English.
1162    This document and the information contained herein are provided on an
1163    "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
1164    OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
1165    ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
1166    INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
1167    INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
1168    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
1176 Brown & Housley                                                [Page 21]