diff --git a/papers/graphics/rosenpass-wp-hashing-tree-rgb.pdf b/papers/graphics/rosenpass-wp-hashing-tree-rgb.pdf deleted file mode 100644 index 4d5708c..0000000 Binary files a/papers/graphics/rosenpass-wp-hashing-tree-rgb.pdf and /dev/null differ diff --git a/papers/graphics/rosenpass-wp-hashing-tree-rgb.svg b/papers/graphics/rosenpass-wp-hashing-tree-rgb.svg deleted file mode 100644 index 7228f23..0000000 --- a/papers/graphics/rosenpass-wp-hashing-tree-rgb.svg +++ /dev/null @@ -1,2341 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - hash function - - - application - - - - - chaining key - - - - - - - - - "string constant" - - - - - - - - - - output - - - - - - - - - - - - - - - - - - - pseudo-random label - - - - - - - - - - - - - - - - input variable - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - RespHello - - - - - - - - - - - state from InitHello - - - - - encaps spki - - - - - encaps epki - - - - - encrypt auth - - - - - - - - sidr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - epki - - - - - - - - - - - - - - - - - epti - - - - - - - - - - - - - - - - - - - - - - - - - - scti - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - sidi - - - - - - - - - - - - - - - - - - - - - - - - - - ecti - - - - - - - - - - - - - - - - - - - - - - - - - - spki - - - - - - - - - - - - - - - - - - - - - - - - - - spti - - - - - - - - - - - - - - - - - - - - - - - - - - - - - InitHello - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - sidi - - - - - - - - - - - - mix - - - - - - - - - - mix - - - - - - - - - - - - - - - - - - - - - mix - - - - - - - - - - mix - - - - - - - - - - - - - - - - - - - - - - mix - - - - - - - - - - mix - - - - - - - - - - - - - - - - - - - - - - mix - - - - - - - - - - mix - - - - - - - - - - - - - - - - - - - - - - mix - - - - - - - - - - mix - - - - - - - - - - - - - - - - - - - - - - mix - - - - - - - - - - mix - - - - - - - - - - - - - - - - - - - - - - mix - - - - - - - - - - mix - - - - - - - - - - - - - - - - - - - - - - mix - - - - - - - - - - mix - - - - - - - - - - - - - - - - - - - - - - mix - - - - - - - - - - mix - - - - - - - - - - - - - - - - - - - - - - mix - - - - - - - - - - mix - - - - - - - - - - - - - - - - - - - - - mix - - - - - - - - - - mix - - - - - - - - - - - - - - - - - - - - mix - - - - - - - - - - mix - - - - - - - - - - - - - - - - - - - - mix - - - - - - - - - - mix - - - - - - - - - - - - - - - - - - - - mix - - - - - - - - - - mix - - - - - - - - - - - - - - - - - - - - mix - - - - - - - - - - mix - - - - - - - - - - - - - - - - - - - - mix - - - - - - - - - - mix - - - - - - - - - - - - - - - - - - - - mix - - - - - - - - - - mix - - - - - - - - - - - - - - - - - - - - mix - - - - - - - - - - mix - - - - - - - - - - - - - - - - - - - - mix - - - - - - - - - - mix - - - - - - - - - - - - - - - - - - epki - - - - - - - - - - spkr - - - - - - - - - - spki - - - - - - - - - sctr - - - - - - - - - psk - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - sptr - - - - - - - - - - - spkr - - - - - - - - - - PROTOCOL - - - - - - - - - - - - Global Domains - - - - - - - - - - - - - - - - - - "user" - - - - - - - - - - "mix" - - - - - - - - - - "rosenpass.eu" - - - - - - - - - - "wireguard psk" - - - - - - - - - - "key chaining init" - - - - - - - - - - - - mix - - - - - - - - - - - - - - - - "handshake encryption" - - - - - - - - "initiator session encryption" - - - - - - - - "responder session encryption" - - - - - - - - - - - - - - "mac" - - - - - "cookie" - - - - - "peer_id" - - - - - "key chaining extract" - - - - - MAC_WIRE_DATA - - - - - COOKIE_WIRE_DATA - - - spki - - - spkr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - encrypt auth - - - - - - - - - - - - - - - - - - - - - - - encaps spkr - - - - - encrypt ltk - - - - - encrypt auth - - - - - AEAD::enc(pidi) - - - - - store_biscuit() - - - - - AEAD::enc(empty()) - - - - - AEAD::enc(empty()) - - - - - AEAD::enc(empty()) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - data - - - - - pidi - - - - - key - - - - - ck - - - - - key - - - - - key - - - - - key - - - - - pidiC - - - - - biscuit - - - - - auth - - - - - auth - - - - - ct - - - - - - - - - - - InitConf - - - - - - - - - - - - - - - - - state from RespHello - - - - - osk - - - - - ini_enc - - - - - res_enc - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - mac - - - - - - - - - - - - - - - - - - - - - cookie - - - - - - - - - - - - - - - - - - - - pidi   pidr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pidi - - - - - pidi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - mix - - - - - - - - - - - - - - - - - - - osk - - - - - osk - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hs_enc - - - - - - - - - - - - - - - - - - hs_enc - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hs_enc - - - - - hs_enc - - - - - hs_enc - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ini_enc - - - - - ini_enc - - - - - - - - - - - - - - - - res_enc - - - - - res_enc - - - - - - - - - - sidi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - sidr - - - - - - - - - - - - - - - diff --git a/papers/graphics/rosenpass-wp-hashing-tree.afdesign b/papers/graphics/rosenpass-wp-hashing-tree.afdesign index e520ce1..d8482fe 100644 Binary files a/papers/graphics/rosenpass-wp-hashing-tree.afdesign and b/papers/graphics/rosenpass-wp-hashing-tree.afdesign differ diff --git a/papers/graphics/rosenpass-wp-hashing-tree.pdf b/papers/graphics/rosenpass-wp-hashing-tree.pdf index bc1f09a..3a1fa3a 100644 Binary files a/papers/graphics/rosenpass-wp-hashing-tree.pdf and b/papers/graphics/rosenpass-wp-hashing-tree.pdf differ diff --git a/papers/graphics/rosenpass-wp-hashing-tree.png b/papers/graphics/rosenpass-wp-hashing-tree.png index f57bde5..eeed426 100644 Binary files a/papers/graphics/rosenpass-wp-hashing-tree.png and b/papers/graphics/rosenpass-wp-hashing-tree.png differ diff --git a/papers/graphics/rosenpass-wp-hashing-tree.svg b/papers/graphics/rosenpass-wp-hashing-tree.svg index b6dafc5..55180c8 100644 --- a/papers/graphics/rosenpass-wp-hashing-tree.svg +++ b/papers/graphics/rosenpass-wp-hashing-tree.svg @@ -1,17 +1,17 @@ - - + + - + - - + + @@ -25,38 +25,24 @@ - - - - - hash function - + + + - application - - - - - chaining key - - - - - - - + + - "string constant" + "string constant" - - - + + + - - + + - output + output @@ -68,42 +54,42 @@ - - - + + + - + pseudo-random label - + - + - - - + + + - - + + - input variable + input variable - + - + - + - + @@ -115,25 +101,25 @@ - + - + - + - + - + - + - + 0 @@ -240,9 +226,9 @@ - + - epti + ecti @@ -266,9 +252,9 @@ - + - scti + spti @@ -330,9 +316,9 @@ - + - ecti + epti @@ -382,9 +368,9 @@ - + - spti + scti @@ -451,7 +437,7 @@ - + @@ -1190,9 +1176,9 @@ - + - sctr + sptr @@ -1246,9 +1232,9 @@ - + - sptr + sctr @@ -1262,7 +1248,7 @@ spkr - + @@ -1272,43 +1258,45 @@ PROTOCOL - - + + - + - + Global Domains - + - + - + - + - + - + - + - - + + + + + "user" - "user" - + @@ -1318,24 +1306,28 @@ "mix" - + - + - - + + + + + "rosenpass.eu" - "rosenpass.eu" - + - + - - + + + + + "wireguard psk" - "wireguard psk" @@ -1348,7 +1340,7 @@ "chaining key init" - + @@ -1367,104 +1359,104 @@ - + - + "handshake encryption" - - + + - - + + - "initiator session encryption" + "initiator handshake encryption" - - + + - - + + - "responder session encryption" + "responder handshake encryption" - + - + - + - + - + - + - + "mac" - + spkt - + "cookie" - + "biscuit additional data" - + "peer id" - + "chaining key extract" - + MAC_WIRE_DATA - + COOKIE_WIRE_DATA - + spkr - + sidi - + sidr - + spki @@ -1629,9 +1621,9 @@ key - + - pidiC + pidi_ct @@ -1687,14 +1679,14 @@ osk - + - ini_enc + txki - + - res_enc + txkr @@ -1729,14 +1721,11 @@ - + - - - - - + + @@ -1759,10 +1748,10 @@ - - - - + + + + @@ -1843,31 +1832,28 @@ - - - - + + + + - - - - + + + + - + - - - - + - + - + @@ -1969,70 +1955,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + - - - - + + + + - - - - + + + + @@ -2053,91 +2039,91 @@ - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - + @@ -2158,7 +2144,7 @@ - + @@ -2179,15 +2165,36 @@ - + + + + + + + + osk + + + + + + + + + + + + + + - + biscuit_ad - + @@ -2198,21 +2205,21 @@ - + - + pidi    pidr - + - + - + @@ -2223,16 +2230,16 @@ - + - + - + - + @@ -2273,15 +2280,15 @@ - + - + mix - + @@ -2289,30 +2296,14 @@ - - - - - - - osk - osk - - - - - - - - @@ -2321,7 +2312,7 @@ - + @@ -2366,7 +2357,7 @@ hs_enc - + @@ -2390,7 +2381,7 @@ - + hs_enc @@ -2427,10 +2418,10 @@ - + - + @@ -2438,20 +2429,20 @@ - - + + - ini_enc + txki - + - ini_enc + txki - + - + @@ -2459,15 +2450,15 @@ - - + + - res_enc + txkr - + - res_enc + txkr @@ -2529,6 +2520,45 @@ + + hash function + + + application + + + chaining + + + key + + + + + + + + + + + + + + + "protocol extention" + + + + + + + + + + + + protocol extention + diff --git a/papers/graphics/rosenpass-wp-key-exchange-protocol-rgb.pdf b/papers/graphics/rosenpass-wp-key-exchange-protocol-rgb.pdf deleted file mode 100644 index 2caa9e4..0000000 Binary files a/papers/graphics/rosenpass-wp-key-exchange-protocol-rgb.pdf and /dev/null differ diff --git a/papers/graphics/rosenpass-wp-key-exchange-protocol-rgb.svg b/papers/graphics/rosenpass-wp-key-exchange-protocol-rgb.svg deleted file mode 100644 index 4e3ed23..0000000 --- a/papers/graphics/rosenpass-wp-key-exchange-protocol-rgb.svg +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - InitHello - - - - - - - - - - - - - - - - - - InitConf - - - - - Biscuit - - - - - - - - - - - - - - - - - - - - - - - - - - - RespHello - - - - - Biscuit - - - - - - - - - - - - - - - EmptyData - - - - - - - - - - - - responder - - - authentication - - - initiator - authentication, - - - forward secrecy - - - acknowledges - - - InitConf - - - OSK handed - - - to WireGuard - - - - - Initiator State - - - - - Responder State - - - - - Initiator - - - - - Responder - - - - - - - - - - - - - - - - - handshake - - - - - live phase - - - - - - - - - - - - - - - - diff --git a/papers/graphics/rosenpass-wp-key-exchange-protocol.afdesign b/papers/graphics/rosenpass-wp-key-exchange-protocol.afdesign new file mode 100644 index 0000000..db70ca8 Binary files /dev/null and b/papers/graphics/rosenpass-wp-key-exchange-protocol.afdesign differ diff --git a/papers/graphics/rosenpass-wp-key-exchange-protocol.pdf b/papers/graphics/rosenpass-wp-key-exchange-protocol.pdf index f087c31..49d0642 100644 Binary files a/papers/graphics/rosenpass-wp-key-exchange-protocol.pdf and b/papers/graphics/rosenpass-wp-key-exchange-protocol.pdf differ diff --git a/papers/graphics/rosenpass-wp-key-exchange-protocol.png b/papers/graphics/rosenpass-wp-key-exchange-protocol.png index 6c5b3af..0c79732 100644 Binary files a/papers/graphics/rosenpass-wp-key-exchange-protocol.png and b/papers/graphics/rosenpass-wp-key-exchange-protocol.png differ diff --git a/papers/graphics/rosenpass-wp-key-exchange-protocol.svg b/papers/graphics/rosenpass-wp-key-exchange-protocol.svg index 3a3d271..1ec21d6 100644 --- a/papers/graphics/rosenpass-wp-key-exchange-protocol.svg +++ b/papers/graphics/rosenpass-wp-key-exchange-protocol.svg @@ -1,15 +1,12 @@ - - + + - + - - - diff --git a/papers/graphics/rosenpass-wp-message-handling-code-rgb.pdf b/papers/graphics/rosenpass-wp-message-handling-code-rgb.pdf deleted file mode 100644 index 43ecdb5..0000000 Binary files a/papers/graphics/rosenpass-wp-message-handling-code-rgb.pdf and /dev/null differ diff --git a/papers/graphics/rosenpass-wp-message-handling-code-rgb.svg b/papers/graphics/rosenpass-wp-message-handling-code-rgb.svg deleted file mode 100644 index 101ff23..0000000 --- a/papers/graphics/rosenpass-wp-message-handling-code-rgb.svg +++ /dev/null @@ -1,1009 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - Responder Code - - - - - Comments - - - - - Initiator Code - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Action - - - - - - Action - - - - - - Action - - - - - - Action - - - - - - Action - - - - - - Action - - - - - Variables - - - - - Variables - - - - - Variables - - - - - Variables - - - - - Variables - - - - - Variables - - - - - Comment - - - - - Comment - - - - - Comment - - - - - Line - - - - - Line - - - - - Line - - - - - Line - - - - - Line - - - - - Line - - - - - ck - - - - - ck - - - - - - lhash("chaining key init", spkr) - - - - - sidi - - - - - - random_session_id(); - - - - - eski, epki - - - - - - EKEM::keygen(); - - - - - mix(sidi, epki); - - - - - sctr - - - - - sctr - - - - - - encaps_and_mix<SKEM>(spkr); - - - - - pidiC - - - - - pidiC - - - - - - encrypt_and_mix(pidi); - - - - - mix(spki, psk); - - - - - auth - - - - - - encrypt_and_mix(empty()) - - - - - ck - - - - - - lhash("chaining key init", spkr) - - - - - mix(sidi, epki) - - - - - decaps_and_mix<SKEM>(sskr, spkr, ct1) - - - - - spki, psk - - - - - - lookup_peer(decrypt_and_mix(pidi_crypt)) - - - - - mix(spki, psk); - - - - - decrypt_and_mix(auth) - - - - - Initialize the chaining key, for domain separation. - - - - - The session id is used to associate packets with the handshake state. - - - - - Generate new ephemeral keys for forward secrecy. - - - Sidi and epki are included in InitHello, so we mix them into the chaining key to - - - prevent tampering. - - - Key encapsulation using the responder public key. Mixes the public key, shared - - - key and ciphertext into the chaining key and authenticates the responder. - - - - - Tell the responder who the initiator is by transmitting the peer id. - - - Ensure the responder has the correct peer information. Mixing PSK also - - - provides a static, symmetric key exchange with epki & sptr serving as nonces. - - - - - Add a message authentication code ensuring both participants share the state. - - - - - Responder generates a session id. - - - - - Initiator needs to look up their session state using the session id they generated. - - - - - Protect both session ids against tampering. - - - - - Key encapsulation using the ephemeral key; provides forward secrecy. - - - Key encapsulation using the initiator static key; authenticates the initiator - - - (and provides redundant secrecy if kyber where broken). - - - The responder transmits their state to the initiator in an encrypted container - - - to avoid having to store state. - - - - - Authentication code. - - - - - IHI1 - - - - - RHI1 - - - - - ICI1 - - - - - IHR1 - - - - - RHR1 - - - - - ICR1 - - - - - IHI4 - - - - - RHI4 - - - - - ICI4 - - - - - IHR4 - - - - - RHR4 - - - - - ICR4 - - - - - IHI5 - - - - - RHI5 - - - - - ICI5 - - - - - IHR5 - - - - - RHR5 - - - - - ICR5 - - - - - IHI2 - - - - - RHI2 - - - - - ICI2 - - - - - RHR2 - - - - - ICR2 - - - - - IHI6 - - - - - RHI6 - - - - - ICI6 - - - - - IHR6 - - - - - RHR6 - - - - - ICR6 - - - - - IHI3 - - - - - RHI3 - - - - - ICI3 - - - - - RHR3 - - - - - ICR3 - - - - - IHI7 - - - - - RHI7 - - - - - ICI7 - - - - - IHR7 - - - - - RHR7 - - - - - ICR7 - - - - - IHI8 - - - - - IHR8 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lookup_session(sidi); - - - - - mix(sidr, sidi); - - - - - decaps_and_mix<EKEM>(eski, epki, ecti); - - - - - decaps_and_mix<SKEM>(sski, spki, scti); - - - - - mix(biscuit) - - - - - decrypt_and_mix(auth) - - - - - - random_session_id() - - - - - sidr - - - - - mix(sidr, sidi); - - - - - - encaps_and_mix<EKEM>(epki); - - - - - ecti - - - - - - encaps_and_mix<SKEM>(spki); - - - - - scti - - - - - - store_biscuit(); - - - - - biscuit - - - - - - encrypt_and_mix(empty()); - - - - - auth - - - - - mix(sidi, sidr); - - - - - auth - - - - - - encrypt_and_mix(empty); - - - - - enter_live(); - - - - - biscu it_no - - - - - - load_biscuit(biscuit); - - - - - encrypt_and_mix(empty()); - - - - - mix(sidi, sidr); - - - - - decrypt_and_mix(auth); - - - - - assert(biscuit_no > biscuit_used); - - - - - biscuit_used - - - - - - biscuit_no; - - - - - enter_live(); - - - - - Responder loads their biscuit. This restores the state from after RHR6. - - - - - Responder recalculates RHR7, since this step was performed after biscuit encoding. - - - - - Protect session ids against tampering. - - - - - - - - - - - - - Authentication code certifies that both participants have the same final chaining key. - - - - - Biscuit replay attack detection. - - - - - Biscuit replay attack detection. - - - - - Generate the transmission keys, classic wireguard key. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - InitHello { sidi, epki, sctr, pidiC, auth } - - - - - RespHello { sidr, sidi, ecti, scti, biscuit, auth } - - - - - InitConf { sidi, sidr, biscuit, auth } - - - - - - - - - - - - - - - - - - - - - - - 1 - - - - - 4 - - - - - 5 - - - - - 2 - - - - - 3 - - - - - 6 - - - - diff --git a/papers/graphics/rosenpass-wp-message-handling-code.afdesign b/papers/graphics/rosenpass-wp-message-handling-code.afdesign new file mode 100644 index 0000000..1387262 Binary files /dev/null and b/papers/graphics/rosenpass-wp-message-handling-code.afdesign differ diff --git a/papers/graphics/rosenpass-wp-message-handling-code.pdf b/papers/graphics/rosenpass-wp-message-handling-code.pdf index e9d93fc..3d4e6e7 100644 Binary files a/papers/graphics/rosenpass-wp-message-handling-code.pdf and b/papers/graphics/rosenpass-wp-message-handling-code.pdf differ diff --git a/papers/graphics/rosenpass-wp-message-handling-code.png b/papers/graphics/rosenpass-wp-message-handling-code.png index 82b7f5c..7b4adbf 100644 Binary files a/papers/graphics/rosenpass-wp-message-handling-code.png and b/papers/graphics/rosenpass-wp-message-handling-code.png differ diff --git a/papers/graphics/rosenpass-wp-message-handling-code.svg b/papers/graphics/rosenpass-wp-message-handling-code.svg index b4c8398..79092ad 100644 --- a/papers/graphics/rosenpass-wp-message-handling-code.svg +++ b/papers/graphics/rosenpass-wp-message-handling-code.svg @@ -1,10 +1,10 @@ - - + + - + @@ -70,9 +70,6 @@ - - - @@ -94,6 +91,9 @@ + + + @@ -310,7 +310,7 @@ - pidiC + pidi_ct @@ -351,9 +351,9 @@ mix(sidi, epki) - + - decaps_and_mix<SKEM>(sskr, spkr, ct1) + decaps_and_mix<SKEM>(sskr, spkr, sctr) @@ -362,9 +362,9 @@ - + - lookup_peer(decrypt_and_mix(pidiC)) + lookup_peer(decrypt_and_mix(pidi_ct)) @@ -720,9 +720,9 @@ decaps_and_mix<SKEM>(sski, spki, scti); - + - mix(biscuit) + mix(biscuit_ct) @@ -774,9 +774,9 @@ store_biscuit(); - + - biscuit + biscuit_ct @@ -816,10 +816,10 @@ biscuit_no - - + + - load_biscuit(biscuit); + load_biscuit(biscuit_ct) @@ -924,32 +924,32 @@ - - - + + + - - - + + + - - - + + + - + - InitHello { sidi, epki, sctr, pidiC, auth } + InitHello { sidi, epki, sctr, pidi_ct, auth } - - + + - RespHello { sidr, sidi, ecti, scti, biscuit, auth } + RespHello { sidr, sidi, ecti, scti, biscuit_ct, auth } - + - InitConf { sidi, sidr, biscuit, auth } + InitConf { sidi, sidr, biscuit_ct, auth } diff --git a/papers/graphics/rosenpass-wp-message-types-rgb.pdf b/papers/graphics/rosenpass-wp-message-types-rgb.pdf deleted file mode 100644 index ea9e7c3..0000000 Binary files a/papers/graphics/rosenpass-wp-message-types-rgb.pdf and /dev/null differ diff --git a/papers/graphics/rosenpass-wp-message-types-rgb.svg b/papers/graphics/rosenpass-wp-message-types-rgb.svg deleted file mode 100644 index 87d0fa8..0000000 --- a/papers/graphics/rosenpass-wp-message-types-rgb.svg +++ /dev/null @@ -1,393 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - type - reserved - payload - mac - - - cookie - - - 1 - 3 - n - 16 - 6 - - - envelope  n + 36 - - - Envelope - - - bytes - - - - - - - - - - - MAC_WIRE_DATA - - - - - COOKIE_WIRE_DATA - - - - - - - - - - - - InitHello - - - type=0x81 - - - sidi - epki - sctr - peerid - auth - - - 4 - 800 - 188 - 32 + 16 = - 48 - 16 - payload  1056 - - - + envelope  1092 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RespHello - - - type=0x82 - - - sidr - sidi - ecti - scti - biscuit - - - auth - - - 4 - 4 - 768 - 188 - 76 + 24 + 16 = - 116 - 16 - payload  1096 - - - + envelope  1132 - - - - - data - - - - - nonce - - - - - auth code - - - - - - - - - - - - EmptyData - - - type=0x84 - - - sidx - ctr - - - auth - - - 4 - 8 - 16 - payload  28 - - - + envelope  64 - - - - - - - - - - - - CookieReply - - - type=0x86 - - - sidx - nonce - - - cookie - - - 4 - 24 - 16 + 16 = - 32 - payload  60 - - - + envelope  96 - - - - - - - - - - - - - - - - - - - - - - - - - - - - InitConf - - - type=0x83 - - - sidi - sidr - biscuit - - - auth - - - 4 - 4 - 76 + 24 + 16 = - 116 - 16 - payload  140 - - - + envelope  176 - - - - - - - - - - - - Data - - - type=0x85 - - - sidx - ctr - - - data - - - 4 - 8 - variable + - 16 - payload - variable + - 28 - + envelope - variable + - - - 64 - - - - - - - - - - - - - - biscuit - - - 32 - 12 - 32 - biscuit  76 - + nonce  100 - - - + auth code  116 - - - - - - peerid - no - - - ck - - - - diff --git a/papers/graphics/rosenpass-wp-message-types.afdesign b/papers/graphics/rosenpass-wp-message-types.afdesign new file mode 100644 index 0000000..80e85af Binary files /dev/null and b/papers/graphics/rosenpass-wp-message-types.afdesign differ diff --git a/papers/graphics/rosenpass-wp-message-types.pdf b/papers/graphics/rosenpass-wp-message-types.pdf index 3423351..95ca28e 100644 Binary files a/papers/graphics/rosenpass-wp-message-types.pdf and b/papers/graphics/rosenpass-wp-message-types.pdf differ diff --git a/papers/graphics/rosenpass-wp-message-types.png b/papers/graphics/rosenpass-wp-message-types.png index 04fbe27..6e9b730 100644 Binary files a/papers/graphics/rosenpass-wp-message-types.png and b/papers/graphics/rosenpass-wp-message-types.png differ diff --git a/papers/graphics/rosenpass-wp-message-types.svg b/papers/graphics/rosenpass-wp-message-types.svg index 0199599..40dbb75 100644 --- a/papers/graphics/rosenpass-wp-message-types.svg +++ b/papers/graphics/rosenpass-wp-message-types.svg @@ -1,10 +1,10 @@ - - + + - + @@ -72,7 +72,7 @@ 16 - envelope  n + 36 + package  n + 36 Envelope @@ -115,7 +115,7 @@ sidi epki sctr - pidiC + pidi_ct auth @@ -136,14 +136,14 @@ - + - + - + @@ -151,7 +151,7 @@ - + @@ -159,7 +159,7 @@ - + @@ -178,19 +178,17 @@ sidi ecti scti - biscuit - - - auth + auth + biscuit_ct 4 4 768 188 - 76 + 24 + 16 = - 116 - 16 + 16 + 76+24+16 = + 116 payload  1096 @@ -275,7 +273,7 @@ 32 - payload  64 + package  64 @@ -285,13 +283,13 @@ - + - + - + @@ -311,7 +309,7 @@ sidi sidr - biscuit + biscuit_ct auth @@ -319,7 +317,7 @@ 4 4 - 76 + 24 + 16 = + 76+24+16 = 116 16 payload  140 diff --git a/papers/whitepaper.md b/papers/whitepaper.md index b3a7e37..82432b6 100644 --- a/papers/whitepaper.md +++ b/papers/whitepaper.md @@ -21,10 +21,10 @@ abstract: | \enlargethispage{5mm} \setupimage{label=img:KeyExchangeProt,width=.9\linewidth} -![Rosenpass Key Exchange Protocol](graphics/rosenpass-wp-key-exchange-protocol-rgb.svg) +![Rosenpass Key Exchange Protocol](graphics/rosenpass-wp-key-exchange-protocol.svg) \setupimage{label=img:MessageTypes} -![Rosenpass Message Types](graphics/rosenpass-wp-message-types-rgb.svg) +![Rosenpass Message Types](graphics/rosenpass-wp-message-types.svg) \clearpage @@ -287,7 +287,7 @@ Recall from Section \ref{hash} that rosenpass supports using either BLAKE2b or S Using one hash function for multiple purposes can cause real-world security issues and even key recovery attacks [@oraclecloning]. We choose a tree-based domain separation scheme based on a keyed hash function – the previously introduced primitive `hash` – to make sure all our hash function calls can be seen as distinct. \setupimage{landscape,fullpage,label=img:HashingTree} -![Rosenpass Hashing Tree](graphics/rosenpass-wp-hashing-tree-rgb.svg) +![Rosenpass Hashing Tree](graphics/rosenpass-wp-hashing-tree.svg) Each tree node $\circ{}$ in Figure \ref{img:HashingTree} represents the application of the keyed hash function, using the previous chaining key value as first parameter. The root of the tree is the zero key. In level one, the `PROTOCOL` identifier is applied to the zero key to generate a label unique across cryptographic protocols (unless the same label is deliberately used elsewhere). In level two, purpose identifiers are applied to the protocol label to generate labels to use with each separate hash function application within the Rosenpass protocol. The following layers contain the inputs used in each separate usage of the hash function: Beneath the identifiers `"mac"`, `"cookie"`, `"peer id"`, and `"biscuit additional data"` are hash functions or message authentication codes with a small number of inputs. The second, third, and fourth column in Figure \ref{img:HashingTree} cover the long sequential branch beneath the identifier `"chaining key init"` representing the entire protocol execution, one column for each message processed during the handshake. The leaves beneath `"chaining key extract"` in the left column represent pseudo-random labels for use when extracting values from the chaining key during the protocol execution. These values such as `mix >` appear as outputs in the left column, and then as inputs `< mix` in the other three columns. @@ -397,7 +397,7 @@ These variables are used after the handshake terminates for encryption of the \t The main reference for how messages are processed in the Rosenpass protocol can be found in Fig. \ref{img:HandlingCode}. The figure uses Rust-like pseudo code. \setupimage{landscape,fullpage,label=img:HandlingCode} -![Rosenpass Message Handling Code](graphics/rosenpass-wp-message-handling-code-rgb.svg) +![Rosenpass Message Handling Code](graphics/rosenpass-wp-message-handling-code.svg) ## Helper Functions {#functions}