diff --git a/router/doc/udp.html b/router/doc/udp.html index 90e861a03..2a71dfd0a 100644 --- a/router/doc/udp.html +++ b/router/doc/udp.html @@ -1,4 +1,4 @@ -$Id: udp.html,v 1.7 2005/03/29 19:20:07 jrandom Exp $ +$Id: udp.html,v 1.8 2005/04/04 12:21:30 jrandom Exp $

Secure Semireliable UDP (SSU)

DRAFT @@ -48,7 +48,8 @@ key. The specific construct of the MAC is the first 16 bytes from:

The payload itself is AES256/CBC encrypted with the IV and the sessionKey, with replay prevention addressed within its body, -explained below.

+explained below. The payloadLength in the MAC is a 2 byte unsigned +integer in 2s complement.

Payload

@@ -136,14 +137,17 @@ around briefly, to address packet loss and reordering.

  • 1 byte IP address size
  • that many byte representation of Alice's IP address
  • 2 byte port number (unsigned, big endian 2s complement)
  • -
  • 0-15 pad bytes to reach the 16 byte boundary
  • 4 byte relay tag which Alice can publish (else 0x0)
  • -
  • 40 byte DSA signature of the critical exchanged data
  • +
  • 40 byte DSA signature of the critical exchanged data, encrypted + with another layer of encryption using the negotiated sessionKey. + The IV is reused here (but with the sessionKey, not the introKey).
  • +
  • 8 bytes padding, encrypted with an additional layer of encryption + using the negotiated session key as part of the DSA block
  • N bytes, currently uninterpreted (later, for challenges)
  • Key used: - introKey for the data through the pad bytes, and the - sessionKey for the DSA signature + introKey, with an additional layer of encryption over the 40 byte + signature and the following 8 bytes padding.
    @@ -155,18 +159,21 @@ around briefly, to address packet loss and reordering.

    +----+----+----+----+----+----+----+----+ |size| that many byte IP address (4-16) | +----+----+----+----+----+----+----+----+ - | Port (A)| (pad to 16 byte boundary) | + | Port (A)| public relay tag | | + +----+----+----+----+----+----+ | + | DSA signature | + | | + | | + | | + | +----+----+ + | | +----+----+----+----+----+----+----+----+ - | public relay tag | DSA signature | - +----+----+----+----+ | + (8 bytes of padding) | | + +----+----+----+----+----+----+ | + | arbitrary amount | + | of uninterpreted data | + . . . | | - | | - | | - | | - + +----+----+----+----+ - | | arbitrary amount | - +----+----+----+----+ | - | of uninterpreted data | +----+----+----+----+----+----+----+----+