Proposal 159 fixes

This commit is contained in:
zzz
2021-10-17 09:32:53 -04:00
parent 0c3e740b6a
commit 3cd54147f2

View File

@@ -5,7 +5,7 @@ SSU2
:author: orignal, zlatinb, zzz :author: orignal, zlatinb, zzz
:created: 2021-09-12 :created: 2021-09-12
:thread: http://zzz.i2p/topics/2612 :thread: http://zzz.i2p/topics/2612
:lastupdated: 2021-10-16 :lastupdated: 2021-10-17
:status: Open :status: Open
:target: 0.9.55 :target: 0.9.55
@@ -207,7 +207,7 @@ Additional DPI Discussion
We assume two DPI components: We assume two DPI components:
1) Online DPI Online DPI
````````````` `````````````
Online DPI inspecting all flows in real-time. Connections may be blocked or Online DPI inspecting all flows in real-time. Connections may be blocked or
@@ -268,7 +268,7 @@ Appendix A are taken into account), but only limited protection against flow
analysis. analysis.
2) Offline DPI Offline DPI
`````````````` ``````````````
Offline DPI inspecting data stored by the online DPI for later analysis. Offline DPI inspecting data stored by the online DPI for later analysis.
@@ -2619,6 +2619,20 @@ Header Protection KDF:
{% endhighlight %} {% endhighlight %}
Header Validation
```````````````````
After decrypting the first 16 bytes of the header,
the receiver will know the Destination Session ID. From there,
the receiver knows what header protection keys to use based on the key phase of the session.
Removing the header protection will then reveal the message type and be able to determine
if it is a short or long header.
If it is a long header, the receiver must validate the version and netid fields.
If the version is != 2, or the netid is != the expected value (generally 2, except in test networks),
the receiver should drop the message.
In limited situations (after sending a Session Request but before receiving a Session Created),
the receiver should retry header protection with a different key, to check for a Retry message.
Authenticated Encryption Authenticated Encryption
@@ -2714,12 +2728,10 @@ Notes
AEAD Error Handling AEAD Error Handling
``````````````````` ```````````````````
- In all messages, the AEAD message size is known in advance. - In all messages, the AEAD message size is known in advance.
On an AEAD authentication failure, recipient must halt further message processing and close the On an AEAD authentication failure, recipient must halt further message processing and
connection without responding. This should be an abnormal close (TCP RST). discard the message.
- For probing resistance, in Session Request, after an AEAD failure, Bob should - Bob should maintain a blacklist of IPs with
set a random timeout (range TBD) and then read a random number of bytes (range TBD)
before closing the socket. Bob should maintain a blacklist of IPs with
repeated failures. repeated failures.
@@ -3045,7 +3057,7 @@ Notes
Key Derivation Function (KDF) (for Session Created and Session Confirmed part 1) KDF for Session Created and Session Confirmed part 1
---------------------------------------------------------------------------------- ----------------------------------------------------------------------------------
.. raw:: html .. raw:: html
@@ -3273,7 +3285,7 @@ Issues
Encryption for for Session Confirmed part 1, using Session Created KDF KDF for Session Confirmed part 1, using Session Created KDF
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
.. raw:: html .. raw:: html
@@ -3313,7 +3325,7 @@ Encryption for for Session Confirmed part 1, using Session Created KDF
{% endhighlight %} {% endhighlight %}
Key Derivation Function (KDF) (for Session Confirmed part 2) KDF for Session Confirmed part 2
-------------------------------------------------------------- --------------------------------------------------------------
.. raw:: html .. raw:: html
@@ -3531,7 +3543,7 @@ Notes
subsequent Data messages. subsequent Data messages.
Key Derivation Function (KDF) (for data phase) KDF for data phase
---------------------------------------------- ----------------------------------------------
The data phase uses the header for associated data. The data phase uses the header for associated data.
@@ -3851,7 +3863,7 @@ Block types:
Payload Block Type Type Number Block Length Payload Block Type Type Number Block Length
==================================== ============= ============ ==================================== ============= ============
DateTime 0 7 DateTime 0 7
Options (TBD) 1 21+ Options (TBD) 1 15+
Router Info 2 varies Router Info 2 varies
I2NP Message 3 varies I2NP Message 3 varies
First Fragment 4 varies First Fragment 4 varies
@@ -5255,7 +5267,6 @@ Session Created 37 256 79 1 336 Incl. 64 byt
Session Confirmed 37 462 13 512 Incl. 391 byte ident and 64 byte sig Session Confirmed 37 462 13 512 Incl. 391 byte ident and 64 byte sig
Data (RI) 37 1014 1051 Incl. 5 byte I2NP header, 1000 byte RI Data (RI) 37 1014 1051 Incl. 5 byte I2NP header, 1000 byte RI
Data (1 full msg) 37 14 51 Incl. 5 byte I2NP header Data (1 full msg) 37 14 51 Incl. 5 byte I2NP header
================== =========== ===== ====== ======= ====== =====
Total 2254 Total 2254
================== =========== ===== ====== ======= ====== ===== ================== =========== ===== ====== ======= ====== =====
@@ -5269,7 +5280,6 @@ Session Request 48 32 7 87 DateTime blo
Session Created 48 32 7 87 DateTime block Session Created 48 32 7 87 DateTime block
Session Confirmed 45 32 1003 1080 RI block Session Confirmed 45 32 1003 1080 RI block
Data (1 full msg) 13 14 27 Data (1 full msg) 13 14 27
================== =========== ===== ====== ======= ====== =====
Total 1281 Total 1281
================== =========== ===== ====== ======= ====== ===== ================== =========== ===== ====== ======= ====== =====