90 likes | 106 Views
This document proposes evidence extensions for Transport Layer Security (TLS) to provide evidence of protected content using digital signatures in TLS applications.
E N D
ProposedTransport Layer Security (TLS)Evidence Extensions <draft-housley-evidence-extns-00.txt> Russ Housley IETF 67 – TLS WG Session
Motivation • TLS is used to protect many different applications, but TLS does not provide any evidence of the protected content • Of course not, it is the transport layer … • But, the alternative is evidence mechanism in every application that makes use of TLS
Signatures • Digital signatures are used to generate the evidence • Both the client and the server must have certified signature keys
ProposedEvidence Creation Exchange ClientServer ClientHello (w/ extns) --------> ServerHello (w/ extns) Certificate+ ServerKeyExchange* CertificateRequest+ <-------- ServerHelloDone Certificate+ ClientKeyExchange CertificateVerify+ ChangeCipherSpec Finished --------> ChangeCipherSpec <-------- Finished Application Data <-------> Application Data Alert(evidence_start1) --------> Application Data <-------- Alert(evidence_start2) Application Data <-------> Application Data Alert(evidence_end1) --------> Application Data <-------- Alert(evidence_end2) EvidenceRequest --------> <-------- EvidenceResponse Application Data <-------> Application Data
Application Support • To gather evidence from an unchanged application, the evidence start alerts are sent immediately after the Finished message, and the evidence end alerts are sent at the end of the session • If willing to change an application, then alerts can be placed at “interesting” content
Evidence Protocol (1 of 3) enum { request(1), response(2), (255) } EvidenceMsgType; struct { EvidenceMsgType evidence_msg_type; uint24 length; /* number of octets in message */ select (EvidenceMsgType) { case request: EvidenceRequest; case response: EvidenceResponse; } body; } EvidenceProtocol;
Evidence Protocol (2 of 3) struct { Evidence evidence<1..2^16-1>; ASN.1Cert party1_certificate; EvidenceSignature party1_signature; } EvidenceRequest; struct { EvidenceCreateSuite evidence_suite; uint32 gmt_unix_time; opaque handshake_protocol_hash<1..512>; opaque app_data_sent_hash<1..512>; opaque app_data_received_hash<1..512>; } Evidence;
Evidence Protocol (3 of 3) struct { Evidence evidence<1..2^16-1>; ASN.1Cert party1_certificate; EvidenceSignature party1_signature; ASN.1Cert party2_certificate; EvidenceSignature party2_signature; } EvidenceResponse;
Request to TLS Working Group • Authors are asking the TLS WG to accept the document, and move it forward as a Proposed Standard