䜿çšãããæå·å
ç¬èªã®I2Pã«ãŒã¿ãŒãæ§ç¯ããã«ã¯ãæ¬¡ã®æå·åã¢ã«ãŽãªãºã ã®å®è£ ãå¿ èŠã§ãã
- ãšã«ã»ã¬ãã«ã ããŒã¹ãã¢ãžã¥ãã§çޝä¹ããããšã«åºã¥ãé察称æå·åã ããŒã¹ãšã¢ãžã¥ãŒã«ã¯ãI2Pãããã¯ãŒã¯å šäœã®åºå®å®æ°ã§ãã 514ãã€ãã®æšæºãµã€ãºã®ãããã¯ã«å ããŠã512ãã€ãã®ã«ã¹ã¿ã ãµã€ãºã®ãããã¯ã䜿çšãããŸãã
- Diffie-Hellmanã¯ãå ¬ééµã亀æããŠå¯Ÿç§°æå·åéµã®å ±æéµãååŸããŸãã El-GamalãšåãããŒã䜿çšãããŸãã
- é»å眲åãäœæããã³æ€èšŒããããã®DSA
- 2ã€ã®ã¢ãŒãã®AESïŒæå·åããŒãšåæåãã¯ã¿ãŒïŒIVïŒã䜿çšããCBCã16ãã€ãã®é·ãã§IVèªäœãæå·åããECB
- ããã·ã¥ãèšç®ããããã®SHA256
- ã¡ãã»ãŒãžã®ãã§ãã¯ãµã ãèšç®ããAdler32
äž»èŠãããã³ã«
I2Pãããã¯ãŒã¯ã¯ãäž»ã«4ã€ã®ã¬ãã«ã§æ§æãããŠããŸãã
- 茞éã¬ãã«ã ãããã¯ãæå·åãããã€ã³ã¿ãŒãããTCP / IPãŸãã¯UDPæ¥ç¶ã§ãã æ¥ç¶ã®ã»ããã¢ãããšæå·åãå«ãŸããŸãã
- ãã³ãã«ã å€ã®äžçãžã®ããŒãã®ããŠã£ã³ããŠããä»ã®ããŒãã«ãããå®éã®å Žæãé ãããšãã§ããŸãã ãããã¯ããã©ã³ã¹ããŒãå±€ãããã³ã«ã«ãã£ãŠçžäºæ¥ç¶ãããäžé£ã®ããŒãã§æ§æãããŸãã ãã³ãã«ã¯ãã¯ã©ã€ã¢ã³ããšãµãŒããŒã®äž¡æ¹ãå¿ååããããã®ãããã·ãµãŒããŒã®ãã§ãŒã³ãšããŠåçŽã«æ³åããããšãã§ããŸãã
- ãã³ãã¯ã ä»»æã®ã«ãŒããšãã³ãã«ã®2ã€ã®ãšã³ãããŒãéã®ã¡ãã»ãŒãžãŸãã¯ã·ãŒã±ã³ã¹ã®éä¿¡ã ã»ãã·ã§ã³èå¥åãšé察称ã«ãã£ãŠç¹åŸŽä»ããããã»ãã·ã§ã³ã®èšå®åŸã察称æå·å
- ããŒãéã§ãŠãŒã¶ãŒããŒã¿ã転éããããã®ã¢ããªã±ãŒã·ã§ã³å±€ãããã³ã«ã
åã¬ãã«ã¯ãç°ãªãç®çã®ããã«ç¬èªã®æå·åã远å ããŸãã ãã©ã³ã¹ããŒãå±€ã®æå·åã¯ããã³ãã«éã§ã¡ãã»ãŒãžãéä¿¡ãããšãã«ããããã€ããŒã®ãã³ãã«ããã³ãã«ã®äžéããŒãããã®ã³ã³ãã³ããšæ¹åãããã³ãã¯ãããã®ãã©ãã£ãã¯ããã³ãã«ã®ãšã³ãããŒãããé ããŸãã
茞éã¬ãã«
ãã©ã³ã¹ããŒãå±€æ¥ç¶ã確ç«ããã«ã¯ãIPã¢ãã¬ã¹ãšããŒããç¥ãå¿ èŠããããŸãã netDbãšåŒã°ããæ¢ç¥ã®ããŒãã®ãªã¹ãããããæäœäžã«å€æŽãããŸããæ°ããããŒãã«é¢ããæ å ±ã¯ä»ã®ããŒãããååŸãããŸãã æåã«ãããŒãã®ãªã¹ãã¯ã¢ãã¬ã¹ãrouter / networkdb / Reseeder.javaãã¡ã€ã«ã«æç€ºçã«ãªã¹ããããŠããç¹å¥ãªãµã€ãããããŠã³ããŒããããŸãã TCP / IPäžã§å®è¡ããããããã³ã«ã¯NTCPãšåŒã°ããUDPäžã§ã¯SSUãšåŒã°ããŸãã æ¥ç¶èšå®ã®ããã€ãã®éãã«å ããŠãSSUã¯ãã±ããã®æ§è³ªäžãé·ãã¡ãã»ãŒãžãããã€ãã®ãã©ã°ã¡ã³ãã«åå²ããããšããµããŒãããŠããŸãã éä¿¡ãããã¡ãã»ãŒãžã¯ãããããŒãI2PNã¡ãã»ãŒãžïŒä»¥äžã®I2NPãããã³ã«ã«ã€ããŠïŒãããã³ãã§ãã¯ãµã ã§æ§æãããŸãã åæãç®çãšããçŸåšæå»ãå«ãç¹å¥ãªã¡ãã»ãŒãžã宿çã«éä¿¡ãããŸãã æ¥ç¶ã確ç«ããããšãã«ãŒã¿ãŒã®å ¬ééµã亀æãããããã«åºã¥ããŠãAESæå·åã®å ±ééµãDiffie-Helmanã¢ã«ãŽãªãºã ã«åŸã£ãŠããããã«ãã£ãŠèšç®ãããŸãã
ãã³ãã«
ãã³ãã«ã¯åžžã«åæ¹åã§ãããã¹ãŠã®ã¡ãã»ãŒãžã¯ãå ¥åããŒãïŒã²ãŒããŠã§ã€ïŒããåºåããŒãïŒãšã³ããã€ã³ãïŒã«ã®ã¿éä¿¡ã§ããŸãã ãã³ãã«ã®ãã¹ãŠã®æ å ±ãæã€ææè ã«å±ãããã³ãã«ã®ç«¯ã«å¿ããŠããã³ãã«ã¯çä¿¡ïŒææè -åºåããŒãïŒãšçºä¿¡ïŒææè -å ¥åããŒãïŒã«åããããŸãã ãã³ãã«ã®äžéããŒãã¯ããã³ãã«ãçä¿¡ãçºä¿¡ããç¥ããŸãã;äžéããŒãã«ãã£ãŠå®è¡ãããå¯äžã®ã¢ã¯ã·ã§ã³ã¯ãæå·åããŒã§ã¡ãã»ãŒãžãæå·åããæ¬¡ã®ããŒãã«éä¿¡ããããšã§ãã ããããã®éèŠãªçµæã¯æ¬¡ã®ãšããã§ããææè ã®ã¿ããã¹ãŠã®äžéããŒãã®æå·åããŒãæã£ãŠããããããã³ãã«ã¡ãã»ãŒãžã®é 次埩å·åã¯ææè ãå®è¡ããå¿ èŠããããŸãã ãã®äºå®ã¯ãçä¿¡ãã³ãã«ã§ã¯éåžžã«ç°¡åã§ããã€ãŸããã¡ãã»ãŒãžãåä¿¡ããå ŽåãåºåããŒãã¯ãããé æ¬¡åŸ©å·åããå¿ èŠããããŸãããçºä¿¡ãã³ãã«ã§ã¯ãéä¿¡åã«å ã®æå·åãããŠããªãã¡ãã»ãŒãžãé æ¬¡åŸ©å·åããå¿ èŠããããŸãã ãã®ããŒããææè ã§ã¯ãªããã³ãã«ã¯ééãšåŒã°ããŸãã ãã©ã³ãžãããã³ãã«ã¯å€éšãã©ãã£ãã¯ãéä¿¡ããI2Pãããã¯ãŒã¯å šäœã®æ©èœããµããŒãããããã«å¿ èŠã§ããããã«ãããããŒããã«ãŒã¿ãŒã«å€ãããŸãã ãã³ãã«ããŒãã¯3ã€ã®ç°ãªãããŒã§AESæå·åã䜿çšããŸãïŒ1ã€ã¯ãã³ãã«äœææã®ããŒãã®å¿çãæå·åããããã«äœ¿çšãããä»ã®2ã€ã¯ãã³ãã«ãä»ããŠããŒã¿ãéä¿¡ããããã«äœ¿çšãããŸãïŒ1ã€ã®ããŒã¯ããŒã¿èªäœãæå·åãããã1ã€ã¯èå¥ãã¯ãã«ïŒIVïŒãæå·åããŠããŒã¿ãæå·åããŸãã ãã®å ŽåãIVã¯åãããŒã§2åæå·åãããŸããæå·åã®ååŸã«ãããã¯äºéæå·åãšåŒã°ããŸãã ããŒãã¯ãEl-Gamalã䜿çšããŠå ¬éããŒã§æå·åãããé¢é£ãã³ãã«ã¬ã³ãŒãã¡ãã»ãŒãžã§ããã2ã€ã®ããŒãåä¿¡ããŸãã
ãã³ãã«ã®å éšã§ã¯ãTunnelDataã¡ãã»ãŒãžã®ã¿ãéä¿¡ãããäžè¬çã«ã¯ããã€ãã®ãã©ã°ã¡ã³ãã§æ§æãããŸãã ãã³ãã«éã®äŒéã«ã¯ãTunnelGatewayã¡ãã»ãŒãžã䜿çšãããŸãã å ¬åŒã®ããã¥ã¡ã³ãã§ã¯ã忹忥ç¶ã«ã¯å°ãªããšã4ã€ã®ãã³ãã«ïŒã€ã³ããŠã³ã2ã€ãšã¢ãŠãããŠã³ã2ã€ïŒãå¿ èŠã§ãããšèšèŒãããŠããŸãããå®éã«ã¯ãçºä¿¡ãã³ãã«ãä»ããŠã¡ãã»ãŒãžãéä¿¡ããå¿ èŠã¯ãããŸããããTunnelGatewayã¡ãã»ãŒãžãç®çã®çä¿¡ãã³ãã«ã®å ¥åããŒãã«éä¿¡ã§ããŸãã
TunnelDataã¡ãã»ãŒãžã§ã¯ããŒããã€ããšããã«æ·»ä»ãããæå·åãããŠããªãIVã«ç¶ãæå³ã®ããããŒã¿ãããã§ãã¯ãµã ãèšç®ãããŸãã
I2NPãããã³ã«
I2Pãããã¯ãŒã¯å ã®ããŒã¿äº€æã¯ãããŸããŸãªã¿ã€ãã®I2NPã¡ãã»ãŒãžã䜿çšããŠè¡ãããŸãã åã¡ãã»ãŒãžã«ã¯ã¿ã€ããšé·ãã®ããããŒãå«ãŸããŠãããããã¡ãã»ãŒãžéã®å¢çãå®çŸ©ã§ããŸãã ã¿ã€ãã«å¿ããŠãã¡ãã»ãŒãžã®é·ãã¯20ã64Kãã€ããŸã§å€åããŸãã åã¬ãã«ã¯ãããé«ãã¬ãã«ã®ä»ã®I2NPã¡ãã»ãŒãžãå«ããã©ãããŒãã¡ãã»ãŒãžã䜿çšããŸãã ãã³ãã«ã®å Žåããããã®ãã©ãããŒãã¯ããã³ãã«å ã®äŒéçšã®TunnelDataã¡ãã»ãŒãžãšããã³ãã«éã®äŒéçšã®TunnelGatewayã§ãã ããã³ãã¯ãã®å Žå-ãã³ãã¯ã I2Pãã©ãã£ãã¯ã®ã»ãšãã©ã¯ãæ¬¡ã®æ·»ä»ã¡ãã»ãŒãžã§è¡šãããŸãã
ããŒã¿->ãã³ãã¯-> TunnelDataã
ååãšããŠãã¡ãã»ãŒãžã¯ãã³ãã«ãä»ããŠéä¿¡ãããŸãããç¹ã«æ°ãããã³ãã«ãæåã«äœæããå Žåã¯ãããŒã·ã£ã¿ãŒéã§çŽæ¥éä¿¡ããããšãã§ããŸãã ã«ãŒã¿ãŒã¯ãæ¥ç¶ã確ç«ãããçŽåŸã«DatabaseStoreã¡ãã»ãŒãžã亀æããŸãã 察å¿ãããã£ãŒã«ãã¯ããã«ã®ã¿ååšãããããå®å ãã€ã³ãéã®ã¡ãã»ãŒãžã¯ããã³ãã¯ããä»ããŠéä¿¡ããå¿ èŠããããŸãã
ã«ãŒã¿ãŒãšå®å
I2Pãããã¯ãŒã¯ã§åäœããã«ã¯ãI2Pãããã¯ãŒã¯ãžã®ã¢ã¯ã»ã¹ãæäŸããã«ãŒã¿ãŒãšãæå³ã®ããæ å ±ã®äº€æå ãåããI2Pã¯ã©ã€ã¢ã³ããå¿ èŠã§ãã IPã¢ãã¬ã¹ãå«ãã«ãŒã¿ãŒã«é¢ããæ å ±ã¯å ¬éãããŠããŸããããã«ãã«ãŒã¿ãŒã®çŸåšã®ãªã¹ãã¯ç¹å¥ãªftpãµã€ãããããŠã³ããŒãã§ããŸãã åæã«ãç®çå°ã®äœçœ®æ å ±ã¯æ©å¯æ å ±ã§ãã ãã®ã«ãŒã¿ãŒã«ããå®å ãã€ã³ãã«é¢ããæ å ±ã¯ããã®ã«ãŒã¿ãŒã§ã®ã¿äœ¿çšã§ããŸããä»ã®ãã¹ãŠã®ã«ãŒã¿ãŒã§ã¯ããã®æ å ±ãååŸããããšã¯ã§ããŸãããããã¯ãI2Pãããã¯ãŒã¯ã®å¿åæ§ãä¿èšŒããäž»èŠãªã¡ã«ããºã ã®1ã€ã§ãã
ã«ãŒã¿ãŒã¯äž»ã«ãããã¯ãŒã¯åå è ã®ã³ã³ãã¥ãŒã¿ãŒäžã«ããããããã®æ§æã¯åžžã«å€åããŠããŸãã ãã®ãããã«ãŒã¿ãŒã¯ä»ã®ã«ãŒã¿ãŒã®ãªã¹ããåžžã«ææ°ã®ç¶æ ã«ä¿ã€ããšã匷å¶ãããŸãã ãã®ããã»ã¹ã¯æ¢çŽ¢çãšåŒã°ããã©ã³ãã ã«éžæããã32ãã€ãã®ã¢ãã¬ã¹ãæã€ãªã¯ãšã¹ããããã©ãããã£ã«ãšåŒã°ããç¹å¥ãªã«ãŒã¿ãŒã«éä¿¡ããŸãã ãã©ãããã£ã«ã«ãŒã¿ãŒã«ã¯ããããã¯ãŒã¯ã«é¢ãããã¹ãŠã®æ å ±ããããšæ³å®ãããŠããŸãã ãšãããããã©ãããã£ã«ã«ãŒã¿ãŒã¯ãæ€åºãããæ°ããããŒãã«é¢ããæ å ±ãåžžã«çžäºã«äŒããŸãã
ããŒãã«é¢ããæ å ±ãèŠæ±ããããã«ãI2NPã¯DatabaseLookupã¡ãã»ãŒãžã䜿çšããdatabaseStoreæ å ±èªäœãéä¿¡ããŸãã ååãšããŠãã¡ãã»ãŒãžã¯ãã³ãã«ãä»ããŠéä¿¡ãããŸãããDatabaseStoreã¯ãæ¥ç¶ã確ç«ãããçŽåŸã«ããŒãã«ãã£ãŠãã©ã³ã¹ããŒãã¬ãã«ã§çŽæ¥éä¿¡ãããããããããã¯ãŒã¯ã«ãã®ååšãéç¥ãããŸãã ããããªããšãæ°ããããŒãçšã®ãã³ãã«ã®æ§ç¯ãäžå¯èœã«ãªããŸãã
DatabaseStoreã«ã¯ãRouterInfoæ§é ããã®ã¢ãã¬ã¹ã«å¯Ÿå¿ããå Žåãã¢ãã¬ã¹ãã«ãŒã¿ãŒã§ããå Žåãããã³LeaseSetãå®å ã§ããå Žåã2çš®é¡ã®æ å ±ãå«ããããšãã§ããŸãã
RouterInfoã«ã¯ãã«ãŒã¿ãŒã®å ¬éããŒãšããŸããŸãªãµãŒãã¹æ å ±ãå«ãŸããŸããæãéèŠãªæ å ±ã¯ãIPã¢ãã¬ã¹ãããŒããæ¥ç¶çšã®ãµããŒããããŠãããã©ã³ã¹ããŒããããã³ã«ãããã³ç¹å®ã®ã«ãŒã¿ãŒããã©ãããã£ã«ãã©ããã«é¢ããæ å ±ã§ãã RouterInfoã«ã¯éåžžã«å€ãã®ããã¹ãæ å ±ãå«ããããšãã§ãããããã¢ãŒã«ã€ããããgzipã«ãã£ãŠéä¿¡ãããŸãã
LeaseSetã«ã¯ãç¹å®ã®å®å ã®çä¿¡ãã³ãã«ã®ãªã¹ããšããã®å®å ãå®å ãšãããã³ãã¯ã¡ãã»ãŒãžãæå·åããããã®å ¬éããŒãå«ãŸããŠããŸãã
ã¢ããªã±ãŒã·ã§ã³å±€ãµãŒãã¹
I2Pã¯ã©ã€ã¢ã³ãã®å®è³ªçãªã¢ã¯ã·ã§ã³ãæ€èšããŠãã ããããªã³ã©ã€ã³ãªãœãŒã¹ã®å¿åãã¹ãã£ã³ã°ãšãããã«å¿ããããããžã®ã¢ã¯ã»ã¹ã ãŸããFlibustaãªã©ã®Webãµã€ãããããŒã¿ãååŸããŠã¿ãŸãããã çŸæç¹ã§ã¯ãI2Pã¢ãã¬ã¹ã®32ãã€ãã®ããã·ã¥ããæã£ãŠããŸãããç®æšã¯HTTPãªã¯ãšã¹ããéä¿¡ããã¬ã¹ãã³ã¹ãåä¿¡ããããšã§ãã
ãã¡ããããã®ãããªã¢ãã¬ã¹ãæã€ã«ãŒã¿ãŒã¯ããŒã¿ããŒã¹ã«ååšããŸããïŒããã§ãªãå ŽåããªãœãŒã¹ã®IPã¢ãã¬ã¹ã¯ãã¹ãŠã®ãŠãŒã¶ãŒã«è¡šç€ºãããŸãïŒããªã¯ãšã¹ããéä¿¡ããå¯äžã®æ¹æ³ã¯ãæåã«ãªã¯ãšã¹ãããŠLeaseSetãååŸããå¿ èŠãããç¹å®ã®æéã«ååšããç®çã®ããŒãã®äœããã®çä¿¡ãã³ãã«ãçµç±ããããšã§ãã ãã©ã³ã¹ããŒãã¬ãã«ã§é£æ¥ããŒãããèŠæ±ããã³åä¿¡ã§ããRouterInfoãšã¯ç°ãªããLeaseSetã¯ãæåã«æ§ç¯ããå¿ èŠããããã³ãã«ãéããŠã®ã¿èŠæ±ããã³åä¿¡ã§ããŸãã ãããã£ãŠãããªã³ããã³ããã§I2Pãããã¯ãŒã¯ã䜿çšãããšå€±æãããšããæ®å¿µãªçµè«ã¯ãI2Pã«ãŒã¿ãŒã皌åããŠããå¿ èŠããããåžžã«ãã³ãã«ãæ§ç¯ããŠãµããŒãããå¿ èŠããããšããããšã§ãã 忣ãããã¯ãŒã¯ã®ããããã³ãã«ã®æ§ç¯ã¯ç°¡åãªäœæ¥ã§ã¯ãããŸãã-ãã³ãã«ãäœæããã»ãšãã©ã®è©Šã¿ã¯å€±æããŸãã
ãã³ãã«ã®å»ºèšãæåãããã«ã¯ã2ã€ã®æ¡ä»¶ãå¿ èŠã§ãã
- ãã³ãã«ã«åå ãããã¹ãŠã®ããŒãã¯ãå°ãªããšããã³ãã«å ã®åã®ããŒããããã©ã³ã¹ããŒãã¬ãã«ã§ã¢ã¯ã»ã¹å¯èœã§ãªããã°ãªããŸãã
- ãã³ãã«ã«é¢ä¿ãããã¹ãŠã®ããŒãã¯ãæ°ãããã³ãã«ãæ§ç¯ããããšã«åæããå¿ èŠããããŸãã ããŒãã¯ãããšãã°èŒ»èŒ³ã®ããã«ãã³ãã«ã®äœæãæåŠããå ŽåããããŸã
ãã³ãã«ã®æå€§åç¶æéã¯10åã§ãããã³ãã«ã«åå ããŠããããŒãããªãã©ã€ã³ã«ãªããšããã³ãã«ã¯äºå®ããæ©ã忢ããå¯èœæ§ããããŸãã ãã®ããããã³ãã«ã®ææè ã¯åžžã«ãã¹ãã¡ãã»ãŒãžãéä¿¡ããŠãã©ã€ããã³ãã«ã®ãªã¹ããææ°ã®ç¶æ ã«ä¿ã¡ãŸãã
ãã®ããããã³ãã«ãå©çšå¯èœã§ãããå¿ èŠãªLeaseSetãå©çšå¯èœã§ãã ããã§ãHTTPãªã¯ãšã¹ããéä¿¡ã§ããå®å ã«å°éããããšããã§ããŸãããã¬ã¹ãã³ã¹ãåä¿¡ããããšæããŸãã ãããè¡ãã«ã¯ãã¡ãã»ãŒãžã«ç¬èªã®LeaseSetãæå®ããå¿ èŠããããŸãããããããšãäœããã®çä¿¡ãã³ãã«ãä»ããŠåçãéä¿¡ãããããŒãã«æ£åžžã«å°éããå¯èœæ§ãé«ããªããŸãã è€æ°ã®æ¥ç¶ãããŒããä»ããŠåæã«æ©èœããããã忥ç¶ã«ç¬èªã®I2Pã¢ãã¬ã¹ãå²ãåœãŠãè€æ°ã®çä¿¡ãã³ãã«ããLeaseSetã圢æããããé©åãªãã£ãŒã«ããæã€ç¹å¥ãªãããã³ã«ã䜿çšããŠæ¥ç¶ãå€éåãããå ±æãã¢ãã¬ã¹ãäœæããå¿ èŠããããŸããã¢ããªã±ãŒã·ã§ã³å±€ãããã³ã«ã ãã®ãããªãããã³ã«ã¯I2CPãšåŒã°ããå ¬åŒã®I2Pã¯ã©ã€ã¢ã³ãã§ã®ã¿äœ¿çšãããŸãããç¬èªã®ãµãŒãã¹ãæ§ç¯ããããã«å¿ èŠãªããã§ã¯ãããŸããã ãã¡ãããI2CPã䜿çšããŠFlibustã«ã¢ã¯ã»ã¹ããå¿ èŠããããŸãã ãã ããããšãã°ãç¬èªã®ãã¬ã³ãã®ãããªãããã¯ãŒã¯ãæ§ç¯ããã«ã¯ãI2Pã¢ãã¬ãã·ã³ã°ã®ã¿ãå®è¡ã§ããŸãã
I2CPãããã³ã«ãšãã®äžã«æ§ç¯ããããããã³ã«ã¹ã¿ãã¯ã¯å¥ã®ãããã¯ã§ãããå¥ã®èšäºã§èª¬æãããŠããŸã ã