Релиз анонимной сети I2P 0.9.37 и C++-клиента i2pd 2.21
Представлен релиз анонимной сети I2P 0.9.37 (эталонная реализация на Java) и полнофункциональной реализации клиента I2P на языке C++ - i2pd 2.21 (I2P Daemon).
Новый выпуск I2P ознаменовал включение по умолчанию поддержки транспортного протокола NTCP2. Протокол NTCP2 создан на основе Noise Protocol Framework и дополнительно использует хэш HMAC-SHA256 и систему обмена ключами x25519 на основе эллиптических кривых. NTCP2 позволяет эффективно противостоять системам распознавания трафика (DPI) и обеспечивает снижение нагрузки на CPU в процессе работы. Из-за применения более быстрых алгоритмов шифрования NTCP2 подходит для применения на маломощных встраиваемых устройствах, смартфонах и домашних маршрутизаторах.
По сравнению с ранее предлагаемым протоколом NTCP в NTCP2 требуется определение не двух, а трех ключей (ключ x25519, ключ для шифрования и ключ для цифровой подписи), а при доставке ключей используется несколько вызовов HMAC-SHA256. Кроме того, вместо ElGamal для согласования ключей применяется x25519, а для шифрования вместо связки AES-256-CBC/Adler32 используется AEAD/Chaha20/Poly1305. Для запутывания информации о длине пакета дополнительно используется SipHash.
Из других изменений в I2P 0.9.37 упоминается устранение сбоя при попытке сборки с Tomcat 8.5.33/34, улучшение поддержки повторяемых сборок и обновление данных GeoIPv6. В выпуске i2pd 2.21 добавлена поддержка входящих NTCP2-соединений при использовании IPv6, обеспечено применение EdDSA, x25519 и SipHash при наличии OpenSSL 1.1.1, добавлена поддержка Android API 26.
Напомним, что I2P представляет собой многослойную анонимную распределенную сеть, работающую поверх обычного интернета, активно использующую сквозное (end-to-end) шифрование, гарантирующую анонимность и изолированность. В сети I2P можно анонимно создавать web-сайты и блоги, отправлять мгновенные сообщения и электронную почту, обмениваться файлами и организовывать P2P-сети. Базовый I2P-клиент написан на языке Java и может работать на широком спектре платформ, таких как Windows, Linux, macOS, Solaris и т. п. I2pd представляет собой независимую реализацию клиента I2P на языке C++ и распространяется под модифицированной лицензией BSD.