commit 53aa07081be9eff2080487482e913b2e099f1f90
parent 1d2a28d9285d3d9345862dea8710ca2e46bf3f4a
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date: Wed, 13 Nov 2024 23:15:46 +0100
notes on acks
Diffstat:
1 file changed, 27 insertions(+), 11 deletions(-)
diff --git a/draft-schanzen-cake.xml b/draft-schanzen-cake.xml
@@ -142,6 +142,15 @@
transport underlay layer of GNUnet.
</t>
</section>
+ <section anchor="svcinfo" numbered="true" toc="default">
+ <name>ServicesInfo String</name>
+ <t>
+ The ServicesInfo is a string consisting of key-value pairs separated by
+ a separator indicating supported services and their versions.
+ E.g. "dht:1.1;cadet:0.4".
+ The ServicesInfo is zero terminated.
+ </t>
+ </section>
<section anchor="protocol_flow" numbered="true" toc="default">
<name>Protocol Flow</name>
<t>
@@ -229,6 +238,13 @@ MS | |
v v
]]></artwork>
</figure>
+ <t>
+ Notice how we do not need any acknowledgement messages until after InitiatorFinished (after 1.5 RTT).
+ The InitiatorHello message is a single flight that is implicitly ack'ed with ReceiverHello.
+ ReceiverHello is a single flight that is implicitly ack'ed with InitiatorFinished.
+ InitiatorFinished requires an explicit ack; at this time R and I have already established a secure channel
+ and R can use an EncryptedMessage to send the ack.
+ </t>
<t>
The Initiator creates the InitiatorHello message which includes the encrypted tuple (pk<sub>I</sub>,ServicesInfo).
The fields are encrypted using a key derived from the ETS according to <xref target="figure_swimlane"/>
@@ -383,9 +399,9 @@ nonce = HKDF-Expand ([I,R][A,H]TS, "iv", 12)
</t>
</section>
<section anchor="cake_hs_msg_fmt" numbered="true" toc="default">
- <name>CAKE Handshake Message Format</name>
+ <name>CAKE Message Format</name>
<t>
- Any sent message in the handshake starts with a <tt>MessageHeader</tt>:
+ Any sent message starts with a <tt>MessageHeader</tt>:
</t>
<figure anchor="figure_msghdr" title="The Wire Format of the Message Header.">
<artwork name="" type="" align="left" alt=""><![CDATA[
@@ -406,18 +422,18 @@ nonce = HKDF-Expand ([I,R][A,H]TS, "iv", 12)
<li>InitiatorHello</li>
<li>ReceiverHello</li>
<li>HandshakeFinished</li>
- <li>KeyUpdate</li>
+ <li>EncryptedMessage</li>
</ul>
- </section>
- <section anchor="svcinfo" numbered="true" toc="default">
- <name>ServicesInfo String</name>
<t>
- The ServicesInfo is a string consisting of key-value pairs separated by
- a separator indicating supported services and their versions.
- E.g. "dht:1.1;cadet:0.4".
- The ServicesInfo is zero terminated.
+ An encrypted message also always starts with a MessageHeader
+ and the allowed types are:
</t>
- </section>
+ <ul>
+ <li>KeyUpdate</li>
+ <li>Ack</li>
+ <li>ApplicationData</li>
+ </ul>
+ </section>
<section anchor="initiator_hello" numbered="true" toc="default">
<name>InitiatorHello Message</name>
<t>