From 400feb3ba7107474fde3507c2fd5a92e435d1fe2 Mon Sep 17 00:00:00 2001
From: jrandom
Date: Tue, 5 Apr 2005 15:28:54 +0000
Subject: [PATCH] clarify crypto/hmac usage for simpler implementation
---
router/doc/udp.html | 39 +++++++++++++++++++++++----------------
1 file changed, 23 insertions(+), 16 deletions(-)
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.
@@ -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 |
+----+----+----+----+----+----+----+----+