gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lsd0007] branch master updated: More reverse engineering. Propose heade


From: gnunet
Subject: [lsd0007] branch master updated: More reverse engineering. Propose header for udp box
Date: Fri, 28 Jul 2023 11:17:51 +0200

This is an automated email from the git hooks/post-receive script.

martin-schanzenbach pushed a commit to branch master
in repository lsd0007.

The following commit(s) were added to refs/heads/master by this push:
     new 7cd9bf2  More reverse engineering. Propose header for udp box
7cd9bf2 is described below

commit 7cd9bf223acec1b0011e275910279f90af714f49
Author: Martin Schanzenbach <schanzen@gnunet.org>
AuthorDate: Fri Jul 28 11:17:35 2023 +0200

    More reverse engineering. Propose header for udp box
---
 draft-gnunet-communicators.xml | 146 ++++++++++++++++++++++++++++++++---------
 1 file changed, 115 insertions(+), 31 deletions(-)

diff --git a/draft-gnunet-communicators.xml b/draft-gnunet-communicators.xml
index 0d98d6c..80d80e9 100644
--- a/draft-gnunet-communicators.xml
+++ b/draft-gnunet-communicators.xml
@@ -238,29 +238,57 @@
        each peer ID to reject possible replay attacks.
      </t>
      <t>
-       FIXME: Handshake wire format, KX, Flow.
+       Until a shared secret has been established, messages sent from the 
sender peer to the receiver peer
+       are always encrypted and a key exchange metadata header is prepended.
+       The wire format can be found in <xref target="figure_udp_initialkx"/>.
+       This method of sending messages to a peer can be used indefinitely, but 
is ineffienct since for every
+       message, a new symmetric key must be established.
      </t>
 <figure anchor="figure_udp_initialkx" title="The binary representation of the 
initial key exchange packet.">
        <artwork name="" type="" align="left" alt=""><![CDATA[
-0     8     16    24    32    40    48    56
+0           8           16          24    
++-----+-----+-----+-----+-----+-----+-----+-----+
+|         SIZE          |       TYPE (0x0X)     |
 +-----+-----+-----+-----+-----+-----+-----+-----+
 |                EPHEMERAL PUBLIC KEY           |
 |                                               |
 |                                               |
 |                                               |
+|                                               |
+|                                               |
+|                                               |
+|                                               |
 +-----+-----+-----+-----+-----+-----+-----+-----+
 |                    GCM TAG                    |
 |                                               |
+|                                               |
+|                                               |
 +-----+-----+-----+-----+-----+-----+-----+-----+
 |                    REKEY                      |
 |                                               |
+|                                               |
+|                                               |
++-----+-----+-----+-----+-----+-----+-----+-----+
+/                 ENCRYPTED DATA                /
 +-----+-----+-----+-----+-----+-----+-----+-----+
          ]]></artwork>
      </figure>
        <dl>
+         <dt>SIZE</dt>
+         <dd>
+           A 16-bit value containing the length of the message in bytes
+           in network byte order.
+         </dd>
+         <dt>TYPE</dt>
+         <dd>
+           A 16-bit type flag in network byte order. The value of this
+           field <bcp14>MUST</bcp14> be XXXX.
+         </dd>
          <dt>EPHEMERAL PUBLIC KEY</dt>
          <dd>
-           A 256-bit EdDSA public key.
+           A 256-bit EdDSA public key. This key is used as input to a 
Diffie-Hellman KEM to decapsulate
+           the symmetric secret used to establish a shared secret which can be 
used to
+           decrypt ENCRYPTED DATA.
          </dd>
          <dt>GCM TAG</dt>
          <dd>
@@ -270,6 +298,69 @@
          <dd>
            A 128-bit rekey flag. If any bit is set, this indicates a rekey.
          </dd>
+         <dt>ENCRYPTED DATA</dt>
+         <dd>
+           The remaining data (as indicated by SIZE) is AES-GCM encrypted 
using the current session key and authenticated
+           through the GCM TAG.
+           This data contains a confirmation message (<xref 
target="figure_udp_confirmation"/>).
+         </dd>
+       </dl>
+       <t>
+         FIXME: Explain key schedule/KEM.
+       </t>
+       <t>
+         In order to prevent replay attacks for KX messages, the plaintext 
resulting from decryption of the ENCRYPTED DATA
+         in the KX message starts with a session-specific confirmation header:
+       </t>
+<figure anchor="figure_udp_confirmation" title="The binary representation of 
the KX confirmation packet">
+       <artwork name="" type="" align="left" alt=""><![CDATA[
+0     8     16    24    32    40    48    56
++-----+-----+-----+-----+-----+-----+-----+-----+
+|                                               |
+|                   SENDER PEER ID              |
+|                                               |
+|                                               |
++-----+-----+-----+-----+-----+-----+-----+-----+
+|                                               |
+|                 SIGNATURE                     |
+|                                               |
+|                                               |
+|                                               |
+|                                               |
+|                                               |
+|                                               |
++-----+-----+-----+-----+-----+-----+-----+-----+
+|                MONOTONIC TIMESTAMP            |
+|                                               |
+|                                               |
+|                                               |
+|                                               |
+|                                               |
+|                                               |
+|                                               |
++-----+-----+-----+-----+-----+-----+-----+-----+
+/                PAYLOAD                        /
++-----+-----+-----+-----+-----+-----+-----+-----+
+         ]]></artwork>
+     </figure>
+       <dl>
+         <dt>SENDER PEER ID</dt>
+         <dd>
+           A 256-bit EdDSA public key.
+         </dd>
+         <dt>SIGNATURE</dt>
+         <dd>
+           The EdDSA signature is computed with the peer private key
+           over the session metadata as detailed in <xref 
target="figure_udp_handshake_sig"/>.
+         </dd>
+         <dt>MONOTONIC TIMESTAMP</dt>
+         <dd>
+           FIXME.
+         </dd>
+         <dt>PAYLOAD</dt>
+         <dd>
+           The message payload data.
+         </dd>
        </dl>
        <figure anchor="figure_udp_handshake_sig" title="The wire format used 
for creating the signature of the identification packet.">
          <artwork name="" type="" align="left" alt=""><![CDATA[
@@ -344,56 +435,49 @@
            A 256-bit random value.
          </dd>
        </dl>
-<figure anchor="figure_udp_confirmation" title="The binary representation of 
the KX confirmation packet">
+<figure anchor="figure_udp_box" title="The binary representation of the UDP 
Box.">
        <artwork name="" type="" align="left" alt=""><![CDATA[
-0     8     16    24    32    40    48    56
+0           8           16          24    
 +-----+-----+-----+-----+-----+-----+-----+-----+
-|                                               |
-|                   SENDER PEER ID              |
-|                                               |
-|                                               |
+|         SIZE          |       TYPE (0x0X)     |
 +-----+-----+-----+-----+-----+-----+-----+-----+
-|                                               |
-|                 SIGNATURE                     |
-|                                               |
-|                                               |
-|                                               |
+|                    GCM TAG                    |
 |                                               |
 |                                               |
 |                                               |
 +-----+-----+-----+-----+-----+-----+-----+-----+
-|                MONOTONIC TIMESTAMP            |
-|                                               |
-|                                               |
-|                                               |
-|                                               |
+|                    REKEY                      |
 |                                               |
 |                                               |
 |                                               |
 +-----+-----+-----+-----+-----+-----+-----+-----+
-/                PAYLOAD                        /
+/                 ENCRYPTED DATA                /
 +-----+-----+-----+-----+-----+-----+-----+-----+
          ]]></artwork>
      </figure>
        <dl>
-         <dt>SENDER PEER ID</dt>
+         <dt>SIZE</dt>
          <dd>
-           A 256-bit EdDSA public key.
+           A 16-bit value containing the length of the message in bytes
+           in network byte order.
          </dd>
-         <dt>SIGNATURE</dt>
+         <dt>PURPOSE</dt>
          <dd>
-           The EdDSA signature is computed with the peer private key
-           over the DER-encoded TLS
-           certificate of the peer along with a pseudo-header
-           as detailed in <xref target="figure_udp_handshake_sig"/>.
+           A 16-bit type flag in network byte order. The value of this
+           field <bcp14>MUST</bcp14> be XXXX.
          </dd>
-         <dt>MONOTONIC TIMESTAMP</dt>
+         <dt>GCM TAG</dt>
          <dd>
-           FIXME.
+           A 128-bit GCM tag used to authenticate the ciphertext immediately 
following this KX.
          </dd>
-         <dt>PAYLOAD</dt>
+         <dt>REKEY</dt>
+         <dd>
+           A 128-bit rekey flag. If any bit is set, this indicates a rekey.
+         </dd>
+         <dt>ENCRYPTED DATA</dt>
          <dd>
-           Optional payload data. FIXME: Not part of this?
+           The remaining data (as indicated by SIZE) is AES-GCM encrypted 
using the current session key and authenticated
+           through the GCM TAG.
          </dd>
        </dl>
        <t>

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]