Rewrite CertificateVerify and Finished transcript hash definitions#1403
Rewrite CertificateVerify and Finished transcript hash definitions#1403davidben wants to merge 4 commits intotlswg:mainfrom
Conversation
Rather than trying to define in terms of a funky Handshake Context and then a set of messages that are appended throughout, define this the way it is actually implemented: you stop the transcript just before the message you are working on. One cloud darkens this simple description: post-handshake authentication acts on a funny transcript where the main transcript is forked off and then we get extra messages appended to it.
martinthomson
left a comment
There was a problem hiding this comment.
Lots of changes, but I don't see a major problem.
draft-ietf-tls-rfc8446bis.md
Outdated
| immediately preceding this Finished message: | ||
|
|
||
| verify_data = | ||
| HMAC(finished_key, Transcript-Hash(ClientHello...Previous)) |
There was a problem hiding this comment.
Is "Previous" a good name? "Last" might be better. Or "end_of_transcript" or "last_in_transcript" (see, different casing to indicate it's a variable). The title case word is too much like a real Handshake message.
There was a problem hiding this comment.
"Last" is a bit ambiguous between "the final message" vs "the message before the current one". In this context, it seemed good to be precise. Good call about the title case. Will fix.
|
This is an interesting suggestion and it might have been a better way to write things, but I don't think we should make it now, for two reasons:
I think the most expedient thing to do is to take #1401, #1402, and #1404 but not #1403. This addresses the ambiguity while minimizing changes. @davidben I'm happy to take care of that, but I wanted to see if people wanted to argue differently before I made those changes. |
I think that one is fine? From a brief skim, RFC 9261 already redefines the calculations anyway, to account for its "authenticator request" thing. Aside: this is a much, much better Handshake Context than post-handshake auth. Post-handshake auth forces you to retain the running hash, which contains a partial block. This one falls out of the exporter secret so we don't increase per-connection memory.
Totally fair. I wasn't sure whether we wanted this much surgery myself. :-) |
Co-authored-by: Martin Thomson <[email protected]>
|
Addressed @martinthomson's comments. |
I am not following the comparison you are trying to make here. Are you comparing the
I don't understand this. Could you please explain? In particular, what exactly do you mean by "partial block"? |
(This is a standalone PR because GitHub is bad at stacked PRs, but you probably want to look at #1401 first.)
Rather than trying to define in terms of a funky Handshake Context and then a set of messages that are appended throughout, define this the way it is actually implemented: you stop the transcript just before the message you are working on.
One cloud darkens this simple description: post-handshake authentication acts on a funny transcript where the main transcript is forked off and then we get extra messages appended to it.