RE: [TLS] Please discuss: draft-housley-evidence-extns-00
"Mark Brown" <mark@redphonesecurity.com> Wed, 20 December 2006 05:59 UTC
Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1GwuUE-0007UV-GX; Wed, 20 Dec 2006 00:59:30 -0500
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1GwuUC-0007UH-Ty for tls@ietf.org; Wed, 20 Dec 2006 00:59:28 -0500
Received: from cenn.mc.mpls.visi.com ([208.42.156.9]) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1GwuUB-0000Dl-9P for tls@ietf.org; Wed, 20 Dec 2006 00:59:28 -0500
Received: from rpud1 (v-209-98-144-171.mn.visi.com [209.98.144.171]) by cenn.mc.mpls.visi.com (Postfix) with ESMTP id C50938110; Tue, 19 Dec 2006 23:59:21 -0600 (CST)
From: Mark Brown <mark@redphonesecurity.com>
To: 'EKR' <ekr@networkresonance.com>, tls@ietf.org
Subject: RE: [TLS] Please discuss: draft-housley-evidence-extns-00
Date: Wed, 20 Dec 2006 00:00:47 -0600
Message-ID: <006701c723fc$31a55cc0$6801a8c0@rps.local>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
X-Mailer: Microsoft Office Outlook 11
In-Reply-To: <86ac1jr4jb.fsf@raman.networkresonance.com>
X-MIMEOLE: Produced By Microsoft MimeOLE V6.00.2900.3028
Thread-Index: Accjr+HsSWE6R2eZR0SIMuOXIpaeHwAAn9+g
X-Spam-Score: 1.1 (+)
X-Scan-Signature: b360bd6cb019c35178e5cf9eeb747a5c
Cc:
X-BeenThere: tls@lists.ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <tls.lists.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/tls>, <mailto:tls-request@lists.ietf.org?subject=unsubscribe>
List-Archive: <http://www1.ietf.org/pipermail/tls>
List-Post: <mailto:tls@lists.ietf.org>
List-Help: <mailto:tls-request@lists.ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/tls>, <mailto:tls-request@lists.ietf.org?subject=subscribe>
Errors-To: tls-bounces@lists.ietf.org
Eric, Thank you for your insight into technical weaknesses of the draft. I tried to address these inline, below. More broadly though, Why introduce evidence to TLS? Why ask for a WG charter extension for evidence? I need to give an argument (below) to answer these Why questions. Please bear with me. First, applications defer to TLS for good reason. The essay "Programming Satan's Computer" (Anderson & Needham, 1995) makes it clear that devising and implementing cryptographic protocols is difficult. TLS is so simple to use and ubiquitous that any user/anywhere can get a good secure socket when connecting to a TLS server. TLS hides from the user years of protocol design, analysis and cryptanalysis, all of which is hard. It is a brand that users trust because TLS simply delivers good security for sockets while following an "It better just drop in and work" layered model. (SSL was a good name.) The "users" of TLS are not just people who use web browsers. TLS users are also the numerous application-level programs and programmers that depend on TLS to do the heavy lifting, implementing a cryptographic protocol in a Known Good way. Constructing digital evidence so that it deters frivolous repudiation in a legal setting is similarly difficult. In legal settings users need evidence -- not hearsay nor impossible "burdens of proof." Moreover, what really benefits users is evidence that any user/anywhere can read and interpret (even lawyers). Numerous past attempts have failed, and digital evidence is still a hotly contested topic of debate among expert lawyers. Sure, every bit of data is evidence at the start of a legal contest, but when challenged, data often becomes worthless to the case -- or gets thrown out. While on the one hand lawyers are now crying for standard, open (did I mention nonproprietary?) ways to create digital evidence, on the other hand many relevant standards remain unread, unimplemented and unused (e.g. PKIX, but many other standards specify digital signature methods too). You said well at USENIX 2003 much of what I'm repeating here. Why should we consider digital evidence a hard problem, a crypto protocol problem, a TLS problem? One crucial issue was raised by Steven Kent last year: the problem of the recording the signer's intent. Just to be clear, "signer's intent" problems include not only the challenge of recording something intangible, or the possibility that garbage data was signed, but also claims that the system that created the digital signature was subverted - or used with an intention to defraud. I'm a newcomer to this party, but I don't think any previous standard solves this problem (I don't count the NR bit as solving the problem). Let us know... After pointing out this unsolved problem for constructors of digital evidence, Kent then affirmed the convention of delegating this seemingly intractable problem to the application layer. "Signing things for non-repudiation is usually an application-layer issue..." (http://www3.ietf.org/proceedings/05nov/tls.html ) Which is a pretty sensible approach, I think. But to be perfectly honest, isn't "application layer" here a code word for "let them figure it out, we're not going to waste any more time on this problem"? But now TLS Evidence can solve the "signer's intent" problems, and it requires two parties, implying a network protocol connecting two parties. Or, I should say more conservatively, if TLS Evidence solves the signer's intent problems then I'd like to ask TLS WG to expand its charter to address evidence. Or better yet, would you all consider TLS Evidence to see if it solves the "signer's intent" problems? The solution to signer's intent lies in two parties using TLS Evidence together with TLS Authorizations (see -01, 4.2. EvidenceRequest Message, field handshake_protocol_hash, pp 12-13). If the handshake contains TLS Authorizations that gain one party "access" then the record of that handshake proves that the session was authorized-for something specific. Whatever that something specific is, that's the stated intent for this session. Both parties agree to it -- one said "Authorize me to do this" and the other said, "Ok, I agree." If they don't agree, the session's over before the handshake FINISHED pair. Pick any example you want: authorized to do online banking for my account; authorized to vote; authorized to read email; authorized to post to a blog; etc. There is more to say about this... But the main point is this: Authorization always seems to clarify intent, that is, the intent of both parties. I think it's baked into the definition of authorization somehow. (I'm happy to discuss this more.) To sum up, I agree that evidence is not currently part of the WG charter, it's new, and deserves questioning like this. I have proposed in TLS Evidence the solution to a hard problem and, as I see it, the solution necessarily lives in a cryptographic protocol. I think it fits well with TLS successes as both easy to use and as hiding the challenges of standardizing a cryptographic protocol well. But it's no doubt a change in the WG charter. Now it's up to the WG to answer our request that the charter be expanded. On to your comments. Pertaining to signer's intent, you raised this question: > S 1. > It looks like the evidence creation has to involve signatures by > both parties. Why not have it be one-way. My reasons for two signatures (countersignature) include: 1. Take as an example a military case where a Common Criteria EAL6 TLS server and a non-evaluated TLS client exchange TLS Evidence. If only the client signs it, how much assurance do we have that the evidence is correct? None under the Common Criteria. But if the client asserts it and the EAL6 server countersigns it (using EvidenceResponse under TLS Evidence) now we have "high assurance" for the evidence, which both client and server can retain. In this scenario, the low-assurance party obtains high-assurance evidence just because it participated with a high-assurance server. I call this "assurance bootstrapping," and it can be a valuable service to the client. I think this argument still carries the same weight even if the server is Known Good under some other current or future evaluation system (open source, peer review, etc.). 2. What if in the scenario above the transmission is the acceptance of a relatively small contract that, in its fine print, grants a huge amount of intellectual property rights to the military? And later the contractor wants to repudiate the signature, claiming that the transaction was a forgery? (This illustration is completely fictional.) If only the high-assurance server signed the evidence then the contractor can say that someone else initiated that transaction, and the burden of proof rests on the military. But if the contractor chose his own key pair, and registered his own PKC, and used that registered PKC to sign EvidenceRequest under TLS Evidence it's harder to repudiate frivolously. Especially if the contractor's PKC uses crypto stronger than the military can crack. 3. At a high level, two different parties signing the same thing forges an agreement -- both intrinsically and historically speaking. TLS Evidence proposes a standard for how to agree before evidence is born. This includes: the handshake must have worked (and all that this implies). The evidence suite must have been used with mathematical precision, so the encrypted and hashed outputs are correct. The timestamp must be acceptable to both parties. And so on. Successful TLS handshakes, especially when coupled with other TLS extensions such as TLS Authorizations as I've mentioned, can be used to forge really specific agreements using TLS Evidence. If we don't require two parties to sign, everything having to do with agreement over evidence drops out of the picture. This emphasis on agreement is not foreign to TLS, and I hope others agree that the use of agreement in the core TLS handshake(s) over the years has been a strong security practice. I think agreement between client and server is a strong card to play for evidence as well. > Why not just store the traffic keys? No smoking gun stands out to me as I try to explain why session-key-encrypted application data proves the identity of both parties. Following your book I can see how to derive the session key if I have all the right inputs, but working backwards from session key to identities seems harder. I take this to mean you'd need to hire a crypto expert (or TLS expert) to explain it in court. This is all well and good in today's legal environment where that's the norm when you deal with data, but I'd like to propose a standard that makes cryptographic protocols EASY for the user. For evidence, "It better just drop in and work" in the courtroom, for that user too. For evidence, the user may be some small business that needs to encourage a huge organization to honor a deal they "inked" using TLS. If a small business owner can do a simple cryptographic verify operation on TLS Evidence structures using free tools and his own retained records, and if what he sees using freeware on a commodity computer will stand up to fierce scrutiny in court, then I think we've created evidence worthy of the TLS brand. In fact, that easy-to-use evidence may enable that small business owner to prevail in an out-of-court settlement, which benefits everyone. With current and proposed TLS handshake extensions, the variety of authentication and key derivation methods, and the indirect linkage between a session key and the client & server identities, I guess it would be hard to write a universal TLS evidence viewer that produced a smoking gun. Especially if that viewer software must operate with high assurance, say for example, if the evidence is for a vote in an election recount situation. I'm not complaining, and I'm not opposed to others doing this. I just think that even if the traffic keys "work" at a crypto level they are complex enough to not be useful to a wide range of evidence users (and specifically lawyers and juries without hiring an expert). > ARCHITECTURAL COMMENTS > I'm not particularly enamored of this general approach. The > signatures in question are fundamentally an application-level > construct: they're requested by the applications and > ultimately consumed by them. I think of evidence like old tax returns. You are supposed to keep them for some number of years, so you file them in the garage/basement. The last time you read any of them was when you last signed them, except in special cases where having the old tax return proved really valuable. In my view, TLS layer checks the TLS Evidence as required by the Internet Draft, refuses the bad evidence, and writes the good evidence to a box in the garage (using some configuration flag at the TLS layer). Let me clarify expected operation. TLS Evidence requires participants to store evidence, and it requires configuration -- selecting targets -- before it starts creating evidence, but it does not require application interaction. The usage model I anticipate for TLS Evidence is default do-nothing. Until client (and server) both configure to client authenticate and to demand evidence when accessing specific domains/URIs, then nothing happens. TLS Evidence isn't something one party can demand with no warning, or from a stranger. Once the TLS layer is configured to demand evidence in some cases, now the app layer wants to see no traffic (for those cases) unless the traffic passes the TLS Evidence tests. It is an unwarranted prejudice to hold that digital signatures must be application-level constructs. (Just solve the signer's intent problem though...) I believe and fully expect that the application layer doesn't want to have to check or otherwise process evidence - it wants TLS to do that since it's a Difficult Crypto Problem. If TLS can create evidence, then apps will shed the responsibility. It simply costs the app too much to invent its own crypto implementations and then adequately test them. TLS has quietly bubbled up to preferred status on many occasions; I can think of some Web Services standards that go into detail to explain how to do crypto and then tack on, "and TLS does this too and that's a good approach." > The only real reason to do > this at the TLS layer is the sense that it's easier to deploy. I disagree. The reason an app wants TLS to solve a Difficult Crypto Problem is the raison d'etre of TLS. TLS makes the crypto problems easy (for the app), is a Known Good Way, and can handle the responsibilities of key management & crypto. More than anything TLS is tested and approved. Apps can't duplicate this without great cost. > I'm not actually convinced that that's so, since this approach > still requires modifying the applications to request security > the signature/evidence services. > > In addition, putting this functionality at the TLS layer embodies > some not-so-attractive tradeoffs, in particular, that the > binding of application-layer messages to the actual evidence > provided isn't particularly tight, since the signatures cover extents > of the traffic rather than messages. This introduces a number of > race conditions which are only partially solved by the > interlocking alerts used here. Among these are: > > - The sender of the start1 alert has only minimal > information/control over when the peer will start signing traffic. > - It's quite likely that one side will have to process messages > without knowing whether the peer will actually sign his > section of the traffic. This is obviously a problem if you > are producing side effects. You can mitigate this problem > only by doing two evidence collections in lockstep. > - Applications need a bunch of new logic to detect the evidence > request but hold their response to application-layer boundaries. > This cannot be implemented at the TLS layer. > - If you want to condition your application-layer responses > to whether the peer provided a signature you need some way > to provide application-layer "please resend with signature". > This is a common case but can only be dealt with very > clumsily here. Some of these scenarios seem incongruous with mutual authentication and some form of TLS Authorization (as recommended in TLS Evidence). Please give more information about the scenarios you are thinking of here. > > This seems like a fairly large architectural change to TLS to > make it do something it was never designed to do and which > can be done better in the application. > > > DETAILED COMMENTS > S 1. > It looks like the evidence creation has to involve signatures by > both parties. Why not have it be one-way. See above. > > S 1.2. > Generating evidence is not compatible with Diffie-Hellman Ephemeral > (DHE) key exchanges. DHE does not permit the same keying material to > be generated for validation of the evidence after the TLS session is > over. Persistent evidence requires the use of a digital signature so > that it can be validated well after the TLS session is over. > > Why not just store the traffic keys? See above. > > > Figure 1 would be better with some markers about the traffic > segments that are signed. Ok. > > S 2. > I'm uncomfortable with the idea if "evidence suites" and later > of new certificates and certificate negotiation. This seems > like you're layering an entirely new protocol over TLS. Using the same two certs for both authentication and signing is simple and preferable in most cases. Ditto for cipher suite & evidence suite. However, sometimes you might prefer a null ciphersuite but want evidence (transfer of an already-encrypted file). In a military case, you may need to call the function that checks EvidenceRequest via RPC, in which case using different PKCs is nice to avoid private key sharing. There are some weird cases where this flexibility is nice to have. > > S 3. > This consumes 4 new alerts. The space isn't that big. > Since you're already defining a new protocol type, these > messages might as well be part of that protocol. Let's flesh this out a bit more. Whatever is best. > > S A. > Defining cipher suites with key lengths attached to them > isn't hte TLS way. In this case, using poor crypto actually hurts your partner if you're the one whose going to repudiate with evil intent. That's reversed from the normal TLS model, and why TLS Evidence is stringent where TLS historically has been able to be loose. Parties need to protect themselves by demanding what they consider to be strong asymmetric crypto. > > > -Ekr > Best regards, --mark _______________________________________________ TLS mailing list TLS@lists.ietf.org https://www1.ietf.org/mailman/listinfo/tls
- [TLS] Please discuss: draft-housley-evidence-extn… Eric Rescorla
- Re: [TLS] Please discuss: draft-housley-evidence-… Eric Rescorla
- RE: [TLS] Please discuss: draft-housley-evidence-… Ari Medvinsky
- Re: [TLS] Please discuss: draft-housley-evidence-… Eric Rescorla
- RE: [TLS] Please discuss: draft-housley-evidence-… Mark Brown
- RE: [TLS] Please discuss: draft-housley-evidence-… Peter Williams
- RE: [TLS] Please discuss: draft-housley-evidence-… Peter Williams
- RE: [TLS] Please discuss: draft-housley-evidence-… Peter Williams
- RE: [TLS] Please discuss: draft-housley-evidence-… Stefan Santesson
- RE: [TLS] Please discuss: draft-housley-evidence-… Peter Williams
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- RE: [TLS] Please discuss: draft-housley-evidence-… Peter Williams
- RE: [TLS] Please discuss: draft-housley-evidence-… Mark Brown
- Re: [TLS] Please discuss: draft-housley-evidence-… Eric Rescorla
- RE: [TLS] Please discuss: draft-housley-evidence-… Stefan Santesson
- RE: [TLS] Please discuss: draft-housley-evidence-… Mark Brown
- RE: [TLS] Please discuss: draft-housley-evidence-… Mark Brown
- Re: [TLS] Please discuss: draft-housley-evidence-… Eric Rescorla
- RE: [TLS] Please discuss: draft-housley-evidence-… Mark Brown
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- Re: [TLS] Please discuss: draft-housley-evidence-… Eric Rescorla
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- RE: [TLS] Please discuss: draft-housley-evidence-… Mark Brown
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- RE: [TLS] Please discuss: draft-housley-evidence-… Mark Brown
- Re: [TLS] Please discuss: draft-housley-evidence-… Kyle Hamilton
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- RE: [TLS] Please discuss: draft-housley-evidence-… Mark Brown
- RE: [TLS] Please discuss: draft-housley-evidence-… Mark Brown
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- RE: [TLS] Please discuss: draft-housley-evidence-… Stefan Santesson
- Re: [TLS] Please discuss: draft-housley-evidence-… Kyle Hamilton
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- RE: [TLS] Please discuss: draft-housley-evidence-… Mark Brown
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- RE: [TLS] Please discuss: draft-housley-evidence-… Mark Brown
- Re: [TLS] Please discuss: draft-housley-evidence-… Omirjan Batyrbaev
- Re: [TLS] Please discuss: draft-housley-evidence-… Eric Rescorla
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- RE: [TLS] Please discuss: draft-housley-evidence-… Mark Brown
- RE: [TLS] Please discuss: draft-housley-evidence-… Mark Brown
- Re: [TLS] Please discuss: draft-housley-evidence-… Eric Rescorla
- RE: [TLS] Please discuss: draft-housley-evidence-… Kemp, David P.
- RE: [TLS] Please discuss: draft-housley-evidence-… Russ Housley
- Re: [TLS] Please discuss: draft-housley-evidence-… Eric Rescorla
- RE: [TLS] Please discuss: draft-housley-evidence-… Kemp, David P.
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- Re: [TLS] Please discuss: draft-housley-evidence-… Russ Housley
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- Re: [TLS] Please discuss: draft-housley-evidence-… Omirjan Batyrbaev
- RE: [TLS] Please discuss: draft-housley-evidence-… Stefan Santesson
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- RE: [TLS] Please discuss: draft-housley-evidence-… Stefan Santesson
- Re: [TLS] Please discuss: draft-housley-evidence-… Omirjan Batyrbaev
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- Re: [TLS] Please discuss: draft-housley-evidence-… home_pw
- Re: [TLS] Please discuss: draft-housley-evidence-… Steven M. Bellovin
- Re: [TLS] Please discuss: draft-housley-evidence-… Peter Gutmann
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- RE: [TLS] Please discuss: draft-housley-evidence-… Kemp, David P.
- RE: [TLS] Please discuss: draft-housley-evidence-… Stefan Santesson
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- Re: [TLS] Please discuss: draft-housley-evidence-… Omirjan Batyrbaev
- RE: [TLS] Please discuss: draft-housley-evidence-… Stefan Santesson
- Re: [TLS] Please discuss: draft-housley-evidence-… Steven M. Bellovin
- Re: [TLS] Please discuss: draft-housley-evidence-… home_pw
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- Re: [TLS] Please discuss: draft-housley-evidence-… home_pw
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- RE: [TLS] Please discuss: draft-housley-evidence-… Mark Brown
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- Re: [TLS] Please discuss: draft-housley-evidence-… Peter Gutmann
- Re: [TLS] Please discuss: draft-housley-evidence-… Omirjan Batyrbaev
- Re: [TLS] Please discuss: draft-housley-evidence-… home_pw
- RE: [TLS] Please discuss: draft-housley-evidence-… Kemp, David P.
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- RE: [TLS] Please discuss: draft-housley-evidence-… Stefan Santesson
- Re: [TLS] Please discuss: draft-housley-evidence-… home_pw
- Re: [TLS] Please discuss: draft-housley-evidence-… Steven M. Bellovin
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- Re: [TLS] Please discuss: draft-housley-evidence-… home_pw
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- RE: [TLS] Please discuss: draft-housley-evidence-… Stefan Santesson
- Re: [TLS] Please discuss: draft-housley-evidence-… home_pw
- Re: [TLS] Please discuss: draft-housley-evidence-… Mike
- RE: [TLS] Please discuss: draft-housley-evidence-… Mark Brown
- Re: [TLS] Please discuss: draft-housley-evidence-… Eric Rescorla
- RE: [TLS] Please discuss: draft-housley-evidence-… Stefan Santesson
- RE: [TLS] Please discuss: draft-housley-evidence-… Mark Brown
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex
- Re: [TLS] Please discuss: draft-housley-evidence-… Eric Rescorla
- Re: [TLS] Please discuss: draft-housley-evidence-… Martin Rex