The Invisible Internet Project (I2P, le projet de l'Internet invisible) est le leader parmi les technologies de transfert d'informations privées. La décentralisation et l'indépendance totales rendent le réseau I2P complexe sur le plan architectural, mais unique en son genre. L'article est consacré à la question : un programmeur, ignorant de la cryptographie et des réseaux, peut-il écrire une application qui fonctionne sur I2P.
Les implémentations modernes des routeurs I2P prennent en charge l'API de messagerie anonyme simple (SAM), qui permet aux applications externes de communiquer via I2P à l'aide de quelques commandes simples. Dans le cadre de cet article, nous considérerons le minimum nécessaire pour démarrer vos propres expérimentations.

Petite rétrospective
L'histoire d'I2P commence dans la première moitié des années 2000. Les bonnes pratiques de développement de logiciels à l'ère des bandes vidéo n'étaient pas largement diffusées. À cette époque , il était difficile de présenter des concepts modernes d'interaction avec des applications externes via une interface conviviale (API).
. , - , , , , «example.i2p», . , .
, « – »! – - : , IRC- . peer-to-peer , ?
I2P- I2CP (I2P Control Protocol), . , : I2CP . - , . , - !
I2P Java- BitTorrent Email, I2P- .
API- SAM BOB (Basic Open Bridge). I2P ( SHA1), Java- . , .
, , C++ (i2pd) BOB SAM. PurpleI2P , ( ) . , .
, I2P- SAM. . , .
SAM – . netcat i2pd (Java- ). telnet , (\n\r
), SAM \n
.
i2pd SAM , , . , - (http://127.0.0.1:7070
), . SAM - , sam.enabled = true
. 127.0.0.1:7656
.

Hello hidden world
, SAM, (handshake). HELLO VERSION
. SAM. RESULT=OK
, . HELLO VERSION
: HELLO VERSION MIN=3.0 MAX=3.3
. , . , 3.0 .

(id), , , (destination). – , . TRANSIENT
, , ( base64), . , (, ). , SAM , .
DEST GENERATE
, (SIGNATURE_TYPE=7
). , , . I2P.

, (PUB) (PRIV). .
. SAM : STREAM ( TCP), DATAGRAM ( UDP) RAW ( UDP). TCP. , STREAM-.
SESSION CREATE STYLE=STREAM ID=HabraHabr DESTINATION=__
STYLE
( STREAM
), DESTINATION
– ( PRIV
), ID
– , ( : HabraHabr
).

. , , . . , , , .
. «HabraHabr»: , , . , , STREAM ACCEPT ID=HabraHabr
.

. , «Novosibirsk» , , TRANSIENT
DESTINATION
. .

«HabraHabr», , :
STREAM CONNECT ID=Novosibirsk DESTINATION=___HabraHabr

, , ( ). , , .

. , I2P-, , . .
, , , . P2P (--) - .

, . , , . , . , .
: , . , , .

, , . , SAM .
- ITSOFT.