SSU2/NTCP2 and props. 160/161 minor updates

This commit is contained in:
zzz
2022-12-19 06:17:44 -05:00
parent 8d423fa1fb
commit bf0565230a
6 changed files with 52 additions and 20 deletions

View File

@ -3,8 +3,8 @@ Common structures Specification
===============================
.. meta::
:category: Design
:lastupdated: 2021-04
:accuratefor: 0.9.49
:lastupdated: 2022-11
:accuratefor: 0.9.56
.. contents::

View File

@ -3,8 +3,8 @@ NTCP 2
======
.. meta::
:category: Transports
:lastupdated: 2022-01
:accuratefor: 0.9.53
:lastupdated: 2022-12
:accuratefor: 0.9.56
.. contents::
@ -1475,6 +1475,7 @@ Special case for time synchronization:
{% endhighlight %}
NOTE: Implementations must round to the nearest second to prevent clock bias in the network.
Options
```````
@ -1748,6 +1749,7 @@ If present, this must be the last block in the frame.
Notes
`````
- Size = 0 is allowed.
- Padding strategies TBD.
- Minimum padding TBD.
- Padding-only frames are allowed.

View File

@ -5,7 +5,7 @@ SSU2
:author: eyedeekay, orignal, zlatinb, zzz
:created: 2021-09-12
:thread: http://zzz.i2p/topics/2612
:lastupdated: 2022-10-16
:lastupdated: 2022-12-19
:status: Open
:target: 0.9.56
@ -5215,10 +5215,11 @@ For time synchronization:
Notes:
Unlike in SSU 1, there is no timestamp in the packet header
for the data phase in SSU 2.
Implementations should periodically send DateTime blocks
in the data phase.
- Unlike in SSU 1, there is no timestamp in the packet header
for the data phase in SSU 2.
- Implementations should periodically send DateTime blocks
in the data phase.
- Implementations must round to the nearest second to prevent clock bias in the network.
Options
@ -6389,6 +6390,7 @@ If present, this must be the last block in the payload.
Notes:
- Size = 0 is allowed.
- Padding strategies TBD.
- Minimum padding TBD.
- Padding-only payloads are allowed.
@ -6546,7 +6548,7 @@ Recommended timeout: 15 seconds total
Retry
---------
If no Session Confirmed is received by Bob:
If no Session Request is received by Bob:
A Retry message is not retransmitted on timeout, to reduce the impacts
of spoofed source addresses.
@ -6778,8 +6780,13 @@ EXCEPT for the following are ack-eliciting:
- DateTime block
- Padding block
- Termination block
- Any blocks in the same packet as a Termination block
- Others?
Packets containing a Termination block with a reason other than
"termination received" are acknowledged with a packet containing
a Termination block with "termination received".
Out-of session packets, including handshake messages
and peer test messages 5-7, have their own acknowledgement mechanisms.
See below.

View File

@ -5,9 +5,9 @@ UDP Trackers
:author: zzz
:created: 2022-01-03
:thread: http://zzz.i2p/topics/1634
:lastupdated: 2022-01-17
:lastupdated: 2022-12-19
:status: Open
:target: 0.9.54
:target: 0.9.58
.. contents::
@ -116,6 +116,22 @@ Client Tracker
This mode omits a round-trip, but requires every announce request to be repliable.
Security Analysis
------------------
The primary goal of an announce protocol is to impose a cost on address spoofing.
In compatibility mode, the client must actually exist and bundle a real leaseset.
It must have inbound tunnels to receive the Connect Response.
These tunnels could be zero-hop and built instantly, but that would
expose the creator.
However, in fast mode, the destination and leaseset could be fake.
Multiple fake destinations and leasesets can be rapidly generated without
actually building tunnels. The Announce Request messages could then be sent out
any tunnel.
Specification
=============
@ -231,9 +247,9 @@ Offset Size Name Value
12 32-bit integer leechers
16 32-bit integer seeders
20 16-bit integer count of hashes to follow
22 + 32 * n 32-byte hash binary hashes
22 32 * n 32-byte hash binary hashes
...
22 + 32 * c TBD additional data TBD
22 + 32 * n TBD additional data TBD
{% endhighlight %}

View File

@ -5,7 +5,7 @@ RI and Destination Padding
:author: zzz
:created: 2022-09-28
:thread: http://zzz.i2p/topics/3279
:lastupdated: 2022-09-28
:lastupdated: 2022-12-19
:status: Open
:target: 0.9.57
@ -272,6 +272,8 @@ Subject to backward compatibility issues, and after disabling SSU,
implementations may remove ElGamal code completely.
Approximately 14% of routers in the network are ElGamal encryption type, including many floodfills.
A draft merge request for Java I2P is at [MR]_.
References
==========
@ -288,6 +290,9 @@ References
.. [I2NP]
{{ spec_url('i2np') }}
.. [MR]
http://git.idk.i2p/i2p-hackers/i2p.i2p/-/merge_requests/66
.. [NTCP2]
{{ spec_url('ntcp2') }}

View File

@ -3,7 +3,7 @@ SSU2
======
.. meta::
:category: Transports
:lastupdated: 2022-10
:lastupdated: 2022-12
:accuratefor: 0.9.56
.. contents::
@ -2825,10 +2825,11 @@ For time synchronization:
Notes:
Unlike in SSU 1, there is no timestamp in the packet header
for the data phase in SSU 2.
Implementations should periodically send DateTime blocks
in the data phase.
- Unlike in SSU 1, there is no timestamp in the packet header
for the data phase in SSU 2.
- Implementations should periodically send DateTime blocks
in the data phase.
- Implementations must round to the nearest second to prevent clock bias in the network.
Options
@ -3999,6 +4000,7 @@ If present, this must be the last block in the payload.
Notes:
- Size = 0 is allowed.
- Padding strategies TBD.
- Minimum padding TBD.
- Padding-only payloads are allowed.