diff --git a/i2p2www/pages/site/get-involved/roadmap.html b/i2p2www/pages/site/get-involved/roadmap.html index f4b9c2cd2593b281c657f108015bf7a6fb6c26c2..803b5fe17fe7d7c9b113b95d6e5195624a8280fe 100644 --- a/i2p2www/pages/site/get-involved/roadmap.html +++ b/i2p2www/pages/site/get-involved/roadmap.html @@ -1,6 +1,6 @@ {% extends "global/layout.html" %} {% block title %} {{ _('Roadmap') }}{% endblock %} -{% block lastupdated %}2022-11{% endblock %} {% block content %} +{% block lastupdated %}2024-01{% endblock %} {% block content %} <p> This is the official project roadmap for the desktop and Android Java I2P releases only. Some related tasks for resources such as the website and plugins may be included. @@ -15,8 +15,8 @@ Older releases are at the bottom of the page. </p> -<h2 id="2.5.0">2.5.0 (API 0.9.61)</h2> -<p><b>Target release: September 2023</b></p> +<h2 id="2.5.0">2.5.0 (API 0.9.62)</h2> +<p><b>Target release: April 2024</b></p> <ul> <li> "Install Plugin from File" command-line option @@ -27,10 +27,46 @@ <li> Website Migration </li> + <li> + Console iframe improvements + </li> + <li> + Reduce memory usage for netdb + </li> + <li> + Redesign i2psnark bandwidth limiter + </li> + <li> + Javascript drag-and-drop for i2psnark and susimail + </li> + <li> + i2ptunnel SSL error handling improvements + </li> + <li> + i2ptunnel persistent HTTP connection support + </li> + <li> + Start removing SSU1 code + </li> + <li> + SSU2 relay tag request handling improvements + </li> + <li> + susimail initial loading speedup + </li> + <li> + susimail javascript markdown for plain text emails + </li> + <li> + susimail HTML email support + </li> + <li> + tunnnel peer selection adjustments + </li> </ul> -<h2 id="2.4.0">2.4.0 (API 0.9.60)</h2> -<p><b>Target release: September 2023</b></p> +<h2 id="2.4.0">2.4.0 (API 0.9.61)</h2> +<p><b>Released: December 18, 2023</b></p> <ul> <li> NetDB context management/Segmented NetDB @@ -41,10 +77,31 @@ <li> Revive Android helper library </li> + <li> + i2psnark local torrent file selector + </li> + <li> + NetDB lookup handler fixes + </li> + <li> + Disable SSU1 + </li> + <li> + Ban routers publishing in the future + </li> + <li> + SAM fixes + </li> + <li> + susimail fixes + </li> + <li> + UPnP fixes + </li> </ul> <h2 id="2.3.0">2.3.0 (API 0.9.59)</h2> -<p><b>Target release: June 2023</b></p> +<p><b>Released: June 28, 2023</b></p> <ul> <li> Tunnel peer selection improvements @@ -66,8 +123,16 @@ </li> </ul> +<h2 id="2.2.1">2.2.1 (API 0.9.58)</h2> +<p><b>Released: April 12, 2023</b></p> +<ul> + <li> + Packaging fixes + </li> +</ul> + <h2 id="2.2.0">2.2.0 (API 0.9.58)</h2> -<p><b>Target release: April 2023</b></p> +<p><b>Released: March 13, 2023</b></p> <ul> <li> Tunnel peer selection improvements diff --git a/i2p2www/spec/ntcp2.rst b/i2p2www/spec/ntcp2.rst index cd9b239294910274037e0ff95e58a6db8b2d894a..eca46bda548002e65ec33b3a5011d61b9ab25883 100644 --- a/i2p2www/spec/ntcp2.rst +++ b/i2p2www/spec/ntcp2.rst @@ -3,8 +3,8 @@ NTCP 2 ====== .. meta:: :category: Transports - :lastupdated: 2022-12 - :accuratefor: 0.9.56 + :lastupdated: 2024-01 + :accuratefor: 0.9.61 .. contents:: @@ -1383,6 +1383,14 @@ Raw contents {% endhighlight %} +Notes +````` +- As the receiver must get the entire frame to check the MAC, + it is recommended that the sender limit frames to a few KB + rather than maximizing the frame size. + This will minimize latency at the receiver. + + Unencrypted data ```````````````` diff --git a/i2p2www/spec/proposals/165-ssu2-fix.rst b/i2p2www/spec/proposals/165-ssu2-fix.rst new file mode 100644 index 0000000000000000000000000000000000000000..6fd4489203e66881f1e33f6f3dd5697d90fbb369 --- /dev/null +++ b/i2p2www/spec/proposals/165-ssu2-fix.rst @@ -0,0 +1,169 @@ +=========================== +I2P proposal #165: SSU2 fix +=========================== +.. meta:: + :author: weko, orignal, the Anonymous, zzz + :created: 2024-01-19 + :thread: http://i2pforum.i2p/viewforum.php?f=13 + :lastupdated: 2024-01-19 + :status: Open + :target: 0.9.62 + +.. contents:: + + + +Proposal by weko, orignal, the Anonymous and zzz. + + +Overview +-------- + +Suggesting changes in SSU2 after the attack on I2P that used SSU2’s +problem. + + +Threat model +------------ + +An attacker creates new fake RIs (router doesn’t exist): is regular RI, +but he puts address, port, s and i keys from real Bob’s router, then he +floods the network. When we are trying to connect to this (as we think +real) router, we, as Alice can connect to this address, but we can’t be +sure what done it with real Bob’s RI. This is possible and was used for +a Distributed Denial of Service attack (make big amount of such RIs and +flood the network), also this can make de-anon attacks easier by framing +good routers and do not framing attacker’s routers, if we ban IP with +many RIs (instead better distrubute tunnel building to this RIs as to +one router). + + +Potential fixes +--------------- + +1. Fix with support for old (before the change) routers +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. _overview-1: + +Overview +^^^^^^^^ + +A workaround to support SSU2 connections with old routers. + +Behavivor +^^^^^^^^^ + +Bob’s router profile should have ‘verified’ flag, it’s false by default +for all new routers (with no profile yet). When ‘verified’ flag is +false, we never do connections with SSU2 as Alice to Bob - we can’t be +sure in RI. If Bob connected to us (Alice) with NTCP2 or SSU2 or we +(Alice) connected to Bob with NTCP2 once (we can verify Bob’s +RouterIdent in these cases) - flag is set to true. + +Problems +^^^^^^^^ + +So, there is a problem with fake SSU2-only RI flood: we can’t verify it +by ourselves and are forced to wait when the real router will make +connections with us. + +2. Verify RouterIdent during connection creation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. _overview-2: + +Overview +^^^^^^^^ + +Add “RouterIdent” block for SessionRequest and SessionCreated. + +Possible format of RouterIdent block +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +1 byte flags, 32 bytes RouterIdent. Flag_0: 0 if receiver’s RouterIdent; +1 if sender’s RouterIdent + +Behavior +^^^^^^^^ + +Alice (should(1), can(2)) send in payload RouterIdent block Flag_0 = 0 +and Bob’s RouterIdent. Bob (should(3), can(4)) check if is it his +RouterIdent, and if not: terminate the session with “Wrong RouterIdent” +reason, if it is his RouterIdent: send RI block with 1 in Flag_0 and +Bob’s RouterIdent. + +With (1) Bob does not support old routers. With (2) Bob supports old +routers, but can be a victim of DDoS from routers that are trying to +make connection with fake RIs. With (3) Alice does not support old +routers. With (4) Alice supports old routers and is using a hybrid +scheme: Fix 1 for old routers and Fix 2 for new routers. If RI says new +version, but while in the connection we didnt’s recieve the RouterIdent +block - terminate and remove RI. + +.. _problems-1: + +Problems +^^^^^^^^ + +An attacker can mask his fake routers as old, and with (4) we are +waiting for ‘verified’ as in fix 1 anyways. + +Notes +^^^^^ + +Instead of 32 byte RouterIdent, we can probably use 4 byte +siphash-of-the-hash, some HKDF or something else, which must be +sufficient. + +3. Bob sets i = RouterIdent +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. _overview-3: + +Overview +^^^^^^^^ + +Bob uses his RouterIdent as i key. + +.. _behavior-1: + +Behavior +^^^^^^^^ + +Bob (should(1), can(2)) uses his own RouterIdent as i key for SSU2. + +Alice with (1) connects only if i = Bob’s RouterIdent. Alice with (2) +uses the hybrid scheme (fix 3 and 1): if i = Bob’s RouterIdent, we can +make the connection, otherwise we should verify it first (see fix 1). + +With (1) Alice does not support old routers. With (2) Alice supports old +routers. + +.. _problems-2: + +Problems +^^^^^^^^ + +An attacker can mask his fake routers as old, and with (2) we are +waiting for ‘verified’ as in fix 1 anyways. + +.. _notes-1: + +Notes +^^^^^ + +To save on RI size, better add handling if i key isn’t specified. If it +is, then i = RouterIdent. In that case, Bob does not support old +routers. + +Backward compability +-------------------- + +Described in fixes. + + +Current status +-------------- + +i2pd: Fix 1.