Compare commits

..

5 Commits

4 changed files with 35 additions and 25 deletions

View File

@@ -2,15 +2,15 @@
{% set i2pinstall_jar_hash = '3ddf3afb0c06edeed4810c6d1f34d909959dd94640adf7c638781b4a3b282e9e' %} {% set i2pinstall_jar_hash = '3ddf3afb0c06edeed4810c6d1f34d909959dd94640adf7c638781b4a3b282e9e' %}
{% set i2psource_hash = 'dbccada6a353b54ceb844fe8cb0912c0363375a2f57214d23fcf463c4e6d2c4f' %} {% set i2psource_hash = 'dbccada6a353b54ceb844fe8cb0912c0363375a2f57214d23fcf463c4e6d2c4f' %}
{% set i2pupdate_hash = '328f85ba28ff6f60480aa0dcda88654fabeabcf63b732a770354bff7f134b135' %} {% set i2pupdate_hash = '328f85ba28ff6f60480aa0dcda88654fabeabcf63b732a770354bff7f134b135' %}
{% set i2p_android_hash = 'b35eb467511343a8aecdf6a1f19c0459baac007c99a93e0933ce5ab70b5a7261' %} {% set i2p_android_hash = 'c4604736ec45f35a1570ace124cc2a111f1c8b2d04972f340752ef4833e9953f' %}
{% set i2p_macnative_hash = '70447e8a352654afd940cfc6c05f094732de7ab05db7c42c173e49f37259d601' %} {% set i2p_macnative_hash = '70447e8a352654afd940cfc6c05f094732de7ab05db7c42c173e49f37259d601' %}
{% set i2p_windows_subver = '' %} {% set i2p_windows_subver = '' %}
{% set i2p_macosx_launcher_version = '0.1.8' %} {% set i2p_macosx_launcher_version = '0.1.8' %}
{% set i2p_android_version = '0.9.47-1' %} {% set i2p_android_version = '0.9.47' %}
{% set i2p_android_version_kytv = '0.9.22' %} {% set i2p_android_version_kytv = '0.9.22' %}
{% set i2p_android_version_fdroid = '0.9.47-1' %} {% set i2p_android_version_fdroid = '0.9.47' %}
{% macro package_outer(type, name, icon) -%} {% macro package_outer(type, name, icon) -%}

View File

@@ -10,7 +10,7 @@ has been actively developed since 2001.{%- endtrans %}</p>
<p>{% trans %}The applications are made available through a webUI, which listens at <p>{% trans %}The applications are made available through a webUI, which listens at
127.0.0.1:7657, and the main page of which is called the “Router Console,” 127.0.0.1:7657, and the main page of which is called the “Router Console,”
where you monitor the health of your connection to the network and access where you monitor the health of your connection to the network and access
applications to use on the network.{%- endtrans %}</p> applications that to use on the network.{%- endtrans %}</p>
<h3>{% trans %}What is included:{%- endtrans %}</h3> <h3>{% trans %}What is included:{%- endtrans %}</h3>
<p>{% trans %}<strong>The Set Up Wizard</strong>: When you download the <p>{% trans %}<strong>The Set Up Wizard</strong>: When you download the
I2P software, a set up wizard will guide you through a few configuration steps I2P software, a set up wizard will guide you through a few configuration steps

View File

@@ -1,7 +1,7 @@
{% extends "global/layout.html" %} {% extends "global/layout.html" %}
{% block title %}SAM V3{% endblock %} {% block title %}SAM V3{% endblock %}
{% block lastupdated %}2020-10{% endblock %} {% block lastupdated %}July 2020{% endblock %}
{% block accuratefor %}0.9.48{% endblock %} {% block accuratefor %}0.9.47{% endblock %}
{% block content %} {% block content %}
<p>Specified below is a simple client protocol for interacting with I2P. <p>Specified below is a simple client protocol for interacting with I2P.
</p> </p>
@@ -838,8 +838,8 @@ $port is the port number of the socket server to which SAM will
forward connection requests. It is mandatory. forward connection requests. It is mandatory.
</p><p> </p><p>
When a connection request arrives from I2P, the SAM bridge opens a When a connection request arrives from I2P, the SAM bridge requests a
socket connection to $host:$port. If it is accepted in less socket connection from $host:$port. If it is accepted after no more
than 3 seconds, SAM will accept the connection from I2P, and then: than 3 seconds, SAM will accept the connection from I2P, and then:
</p><p> </p><p>

View File

@@ -6,7 +6,7 @@ ECIES Tunnels
:author: chisana, zzz, orignal :author: chisana, zzz, orignal
:created: 2019-07-04 :created: 2019-07-04
:thread: http://zzz.i2p/topics/2737 :thread: http://zzz.i2p/topics/2737
:lastupdated: 2020-10-26 :lastupdated: 2020-10-09
:status: Open :status: Open
:target: 0.9.51 :target: 0.9.51
@@ -31,9 +31,6 @@ follow this spec for creating tunnels containing ECIES hops.
This proposal specifies changes needed for ECIES-X25519 Tunnel Building. This proposal specifies changes needed for ECIES-X25519 Tunnel Building.
For an overview of all changes required for ECIES routers, see proposal 156 [Prop156]_. For an overview of all changes required for ECIES routers, see proposal 156 [Prop156]_.
This proposal maintains the same size for tunnel build records,
as required for compatibility. Smaller build records and messages will be
implemented later - see [Prop157]_.
Cryptographic Primitives Cryptographic Primitives
@@ -346,7 +343,7 @@ Summary of changes:
- Unencrypted record is longer because there is less encryption overhead - Unencrypted record is longer because there is less encryption overhead
The request record does not contain any ChaCha reply keys. The request record does not contain any explicit tunnel or reply keys.
Those keys are derived from a KDF. See below. Those keys are derived from a KDF. See below.
All fields are big-endian. All fields are big-endian.
@@ -387,9 +384,6 @@ Bit 7 indicates that the hop will be an inbound gateway (IBGW). Bit 6
indicates that the hop will be an outbound endpoint (OBEP). If neither bit is indicates that the hop will be an outbound endpoint (OBEP). If neither bit is
set, the hop will be an intermediate participant. Both cannot be set at once. set, the hop will be an intermediate participant. Both cannot be set at once.
The request exipration is for future variable tunnel duration.
For now, the only supported value is 600 (10 minutes).
The tunnel build options is a Mapping structure as defined in [Common]_. The tunnel build options is a Mapping structure as defined in [Common]_.
This is for future use. No options are currently defined. This is for future use. No options are currently defined.
If the Mapping structure is empty, this is two bytes 0x00 0x00. If the Mapping structure is empty, this is two bytes 0x00 0x00.
@@ -592,8 +586,7 @@ Request Record Keys (ECIES)
----------------------------------------------------------------------- -----------------------------------------------------------------------
These keys are explicitly included in ElGamal BuildRequestRecords. These keys are explicitly included in ElGamal BuildRequestRecords.
For ECIES BuildRequestRecords, the tunnel keys and AES reply keys are included, For ECIES BuildRequestRecords, these keys are derived from the DH exchange.
but the ChaCha reply keys are derived from the DH exchange.
See [Prop156]_ for details of the router static ECIES keys. See [Prop156]_ for details of the router static ECIES keys.
Below is a description of how to derive the keys previously transmitted in request records. Below is a description of how to derive the keys previously transmitted in request records.
@@ -668,9 +661,6 @@ Failing to use unique keys opens an attack vector for colluding hops to confirm
sesk = GENERATE_PRIVATE() sesk = GENERATE_PRIVATE()
sepk = DERIVE_PUBLIC(sesk) sepk = DERIVE_PUBLIC(sesk)
// MixHash(sepk)
h = SHA256(h || sepk);
End of "e" message pattern. End of "e" message pattern.
This is the "es" message pattern: This is the "es" message pattern:
@@ -776,15 +766,35 @@ This design minimizes risk.
Implementation Notes Implementation Notes
===================== =====================
* Older routers do not check the encryption type of the hop and will send ElGamal-encrypted
records. Some recent routers are buggy and will send various types of malformed records.
Implementers should detect and reject these records prior to the DH operation
if possible, to reduce CPU usage.
Issues Issues
====== ======
* Is an HKDF required for the keys, what's the advantage of doing that vs.
just including them in the build record as before?
* Make KDFs be similar to those in Noise (NTCP2) and Ratchet
* HKDF output no more than 64 bytes preferred
* In the current Java implementation, the full router hash field in the build
request record at bytes 4-35 is not checked and does not appear to be necessary.
* Each record is CBC encrypted with the same AES reply key and IV, as with the current design.
Is this a problem? Can it be fixed?
* In the current Java implementation, the originator leaves one record empty
for itself. Thus a message of n records can only build a tunnel of n-1 hops.
This is necessary for inbound tunnels (where the next-to-last hop
can see the hash prefix for the next hop), but not for outbound tunnels.
However, if the build message length is different for inbound and outbound
tunnels, this would allow hops to determine which direction the tunnel was.
* Should we define new, smaller VTBM/VTBRM I2NP messages for all-ECIES tunnels
now instead of waiting for the rollout?
Migration Migration