Sofia Celi, Jonathan Hoyland, Douglas Stebila and me.
Once upon a time...
Both proofs have seen several corrections, and live in similar, but slightly separate models.
Tamarin models protocols as rules that take in a set of variables and one or more messages, and then emit new variables and messages.
The (Dolev-Yao) attacker controls the network and can read, send, change, drop all messages.
Any cryptographic operation is perfect. Cryptographic compromise is modeled through manually modeled "oracles" that reveal specific keys.
rule ProtocolMessageI:
[
In(message), VariableI(x)
]
--[
ReceivedMessageFact(message, x)
]->
[
Out(SomeOtherMessage),
VariableII(operation(x))
]
lemma my_lemma:
"All key #i #j.
ExchangedKey(key)@#i // some protocol-emitted fact
// over `key` at time #i
& K(key)@#j // Adversary knows `key` at #j
==> /* then */
/* exists a time #z */
Ex #z.
/* at which key was revealed */
RevealedKey(key)@#z
/* and #z was before #j */
& #z < #j
"
<div class="col">
<h3>Approach #2</h3>
Build a new model from scratch
</div>
<div class="col">
<h3>Approach #2</h3>
<ol>
<li>Simplify the protocol to its cryptographic core</li>
<li>Convert the pen-and-paper claimed security properties to Tamarin</li>
<li>???</li>
<li>Prove it</li>
</ol>
</div>
<div class="col">
<h3>Approach #2</h3>
<ul>
<li>Precisely model the different levels of forward-secrecy and explicit authentication properties claimed in our pen-and-paper proofs</li>
<li>Don't carry around the baggage of handshake encryption, full TLS key schedule</li>
<li>Analyze KEMTLS' deniability features</li>
</ul>
</div>
| Feature | Model #1 | Model #2 |
|---|---|---|
| Protocol modelling | ||
| Encrypted handshake messages | ✅ | ❌ |
| HKDF and HMAC decomposed into hash | ✅ | ❌ |
| Key exchange and auth KEMs are same algorithm | ✅ | ❌ |
| Security properties | ||
| Adversary can reveal long-term keys | ✅ | ✅ |
| Adversary can reveal ephemeral keys | ✅ | ❌ |
| Adversary can reveal intermediate session keys | ❌ | ✅ |
| Secrecy of handshake and traffic keys | ✅ | ✅ |
| Forward Secrecy | ✅ | ✅ |
| Multiple flavours of forward secrecy | ❌ | ✅ |
| Explicit authentication | ✅ | ✅ |
| Deniability | ❌ | ✅ |
<div class="col">
<h3>Approach #2</h3>
<ul>
<li>Found several minor mistakes in stated forward secrecy and authentication properties of KEMTLS and KEMTLS-PDK</li>
<li>Proves most security properties of KEMTLS in <strong>minutes</strong>.</li>
</ul>
</div>
[reuse]!)Model your own protocols!
Thanks for your attention