prop 123,144 updates

This commit is contained in:
zzz
2019-07-17 15:44:09 +00:00
parent b45157a31f
commit c19c62f6d3
2 changed files with 107 additions and 44 deletions

View File

@@ -5,7 +5,7 @@ New netDB Entries
:author: zzz, str4d, orignal :author: zzz, str4d, orignal
:created: 2016-01-16 :created: 2016-01-16
:thread: http://zzz.i2p/topics/2051 :thread: http://zzz.i2p/topics/2051
:lastupdated: 2019-07-16 :lastupdated: 2019-07-17
:status: Open :status: Open
:supercedes: 110, 120, 121, 122 :supercedes: 110, 120, 121, 122
@@ -234,9 +234,8 @@ Format
sent in response to a query. If this leaseset expires, do not query the sent in response to a query. If this leaseset expires, do not query the
netdb for a new one, unless bit 2 is set. netdb for a new one, unless bit 2 is set.
Bit 2: If 0, a standard published leaseset. Bit 2: If 0, a standard published leaseset.
If 1, the leaseset is published as blinded (and possibly encrypted). If 1, this unencrypted leaseset will be blinded and encrypted when published.
If this leaseset expires, query the blinded location If this leaseset expires, query the blinded location in the netdb for a new one.
in the netdb for a new one.
As of release 0.9.42. As of release 0.9.42.
Bits 3-15: set to 0 for compatibility with future uses Bits 3-15: set to 0 for compatibility with future uses
- If flag indicates offline keys, the offline signature section: - If flag indicates offline keys, the offline signature section:

View File

@@ -5,7 +5,7 @@ ECIES-X25519-AEAD-Ratchet
:author: zzz, chisana :author: zzz, chisana
:created: 2018-11-22 :created: 2018-11-22
:thread: http://zzz.i2p/topics/2639 :thread: http://zzz.i2p/topics/2639
:lastupdated: 2019-07-10 :lastupdated: 2019-07-17
:status: Open :status: Open
.. contents:: .. contents::
@@ -377,9 +377,9 @@ In the new protocol, since the inbound and outbound sessions are paired,
we can have ACKs in-band. No separate clove is required. we can have ACKs in-band. No separate clove is required.
An explicit ACK is simply an existing session message with no I2NP block. An explicit ACK is simply an existing session message with no I2NP block.
However, in most cases, an explict ACK can be avoided, as there is reverse However, in most cases, an explict ACK can be avoided, as there is reverse traffic.
traffic. Implementations should set a short timer (a few hundred ms) It may be desirable for implementations to wait a short time (perhaps a hundred ms)
before sending an explicit ACK. before sending an explicit ACK, to give the streaming or application layer time to respond.
Implementations will also need to defer any ACK sending until after the Implementations will also need to defer any ACK sending until after the
I2NP block is processed, as the Garlic Message may contain a Database Store Message I2NP block is processed, as the Garlic Message may contain a Database Store Message
@@ -770,7 +770,10 @@ each message, including retransmissions.
Ephemeral Key Section Decrypted data Ephemeral Key Section Decrypted data
```````````````````````````````````` ````````````````````````````````````
Ephemeral Key Section contains flags and a key: The Ephemeral Key section contains flags and a key.
It is always 40 bytes.
When used in the one-time message, the key is all zeroes.
.. raw:: html .. raw:: html
@@ -2070,6 +2073,12 @@ Typical Usage Patterns
HTTP GET HTTP GET
-------- --------
This is the most typical use case, and most non-HTTP streaming use cases
will be identical to this use case as well.
A small initial message is sent, a reply follows,
and additional messages are sent in both directions.
An HTTP GET generally fits in a single I2NP message.
Alice sends a small request with a single new Session message, bundling a reply leaseset. Alice sends a small request with a single new Session message, bundling a reply leaseset.
Alice includes immediate ratchet to new key. Alice includes immediate ratchet to new key.
Includes sig to bind to destination. No ack requested. Includes sig to bind to destination. No ack requested.
@@ -2090,24 +2099,17 @@ Alice Bob
with next key with next key
with bundled HTTP GET with bundled HTTP GET
with bundled LS with bundled LS
with bundled Delivery Status Message without bundled Delivery Status Message
any retransmissions, same as above any retransmissions, same as above
following two messages can come in either order: following messages may arrive in any order:
<-------------- Delivery Status Message
<-------------- Existing Session <-------------- Existing Session
with next key with next key
with bundled HTTP reply part 1 with bundled HTTP reply part 1
After reception of any of these messages,
Alice switches to use existing session messages.
After reception of the next key, Alice ratchets.
<-------------- Existing Session <-------------- Existing Session
with next key with next key
with bundled HTTP reply part 2 with bundled HTTP reply part 2
@@ -2116,6 +2118,11 @@ Alice Bob
with next key with next key
with bundled HTTP reply part 3 with bundled HTTP reply part 3
After reception of any of these messages,
Alice switches to use existing session messages,
and ratchets.
Existing Session -------------------> Existing Session ------------------->
with next key with next key
with bundled streaming ack with bundled streaming ack
@@ -2139,6 +2146,7 @@ Alice Bob
{% endhighlight %} {% endhighlight %}
HTTP POST HTTP POST
--------- ---------
@@ -2161,6 +2169,8 @@ Alice has three options:
and respond to all with the same ratchet. and respond to all with the same ratchet.
Alice uses that next public key and continues. Alice uses that next public key and continues.
Option 3 message flow:
.. raw:: html .. raw:: html
{% highlight %} {% highlight %}
@@ -2171,7 +2181,7 @@ Alice Bob
with next key with next key
with bundled HTTP POST part 1 with bundled HTTP POST part 1
with bundled LS with bundled LS
with bundled Delivery Status Message without bundled Delivery Status Message
New Session (1b) -------------------> New Session (1b) ------------------->
@@ -2179,7 +2189,7 @@ Alice Bob
with next key with next key
with bundled HTTP POST part 2 with bundled HTTP POST part 2
with bundled LS with bundled LS
with bundled Delivery Status Message without bundled Delivery Status Message
New Session (1b) -------------------> New Session (1b) ------------------->
@@ -2187,25 +2197,17 @@ Alice Bob
with next key with next key
with bundled HTTP POST part 3 with bundled HTTP POST part 3
with bundled LS with bundled LS
with bundled Delivery Status Message without bundled Delivery Status Message
following messages can come in any order:
<-------------- Delivery Status Message 1
<-------------- Delivery Status Message 2
<-------------- Delivery Status Message 3
<-------------- Existing Session <-------------- Existing Session
with next key with next key
with bundled streaming ack with bundled streaming ack
After reception of any of these messages, After reception of any of this message,
Alice switches to use existing session messages. Alice switches to use existing session messages,
After reception of the next key, Alice ratchets. and Alice ratchets.
Existing Session -------------------> Existing Session ------------------->
@@ -2224,10 +2226,15 @@ Alice Bob
{% endhighlight %} {% endhighlight %}
Repliable Datagram Repliable Datagram
------------------ ------------------
As in HTTP GET, but with smaller options for session tag window size and lifetime. A single message, with a single reply expected.
Additional messages or replies may be sent.
Similar to HTTP GET, but with smaller options for session tag window size and lifetime.
Maybe don't request a ratchet. Maybe don't request a ratchet.
.. raw:: html .. raw:: html
@@ -2240,20 +2247,16 @@ Alice Bob
with next key with next key
with bundled repliable datagram with bundled repliable datagram
with bundled LS with bundled LS
with bundled Delivery Status Message without bundled Delivery Status Message
following two messages can come in either order:
<-------------- Delivery Status Message
<-------------- Existing Session <-------------- Existing Session
with next key with next key
with bundled reply with bundled reply
After reception of any of these messages, After reception of this message,
Alice switches to use existing session messages. Alice switches to use existing session messages,
After reception of the next key, Alice ratchets. and ratchets.
if there are any other messages: if there are any other messages:
@@ -2272,10 +2275,68 @@ Alice Bob
{% endhighlight %} {% endhighlight %}
Raw Datagram
------------
Multiple Raw Datagrams
----------------------
Multiple anonymous messages, with no replies expected.
In this scenario, Alice requests a session, but without binding.
New session message is sent. New session message is sent.
No reply LS is bundled.
A reply DSM is bundled (this is the only use case that requires bundled DSMs).
No next key is included. No reply or ratchet is requested.
No ratchet is sent.
Options set session tags window to zero.
.. raw:: html
{% highlight %}
Alice Bob
New Session (1c) ------------------->
with bundled message
without bundled LS
with bundled Delivery Status Message 1
New Session (1c) ------------------->
with bundled message
without bundled LS
with bundled Delivery Status Message 2
New Session (1c) ------------------->
with bundled message
without bundled LS
with bundled Delivery Status Message 3
following messages can come in any order:
<-------------- Delivery Status Message 1
<-------------- Delivery Status Message 2
<-------------- Delivery Status Message 3
After reception of any of these messages,
Alice switches to use existing session messages.
Existing Session ------------------->
Existing Session ------------------->
Existing Session ------------------->
{% endhighlight %}
Single Raw Datagram
-------------------
A single anonymous messages, with no reply expected.
One-time message is sent.
No reply LS or DSM are bundled. No next key is included. No reply or ratchet is requested. No reply LS or DSM are bundled. No next key is included. No reply or ratchet is requested.
No ratchet is sent. No ratchet is sent.
Options set session tags window to zero. Options set session tags window to zero.
@@ -2285,12 +2346,15 @@ Options set session tags window to zero.
{% highlight %} {% highlight %}
Alice Bob Alice Bob
New Session (1d) -------------------> One-Time Message (1d) ------------------->
with bundled message with bundled message
without bundled LS
without bundled Delivery Status Message
{% endhighlight %} {% endhighlight %}
Long-Lived Sessions Long-Lived Sessions
------------------- -------------------