Pull to refresh
144
0

Энтузиаст отказоустойчивых и скрытых сетей

Send message

Был проведен тест: в сети подняли два узла с одинаковыми ключами. В итоге трафик терялся: шел то на один узел, то на другой. Практического теста с разными ключами, но одинаковыми IPv6-адресами проведено не было, т.к. такие коллизии еще не были найдены. Как минимум, включение в сеть стороннего узла с вашим адресом нарушит вашу работу с сетью. Весьма вероятно, что сделает ее вовсе невозможной на прежнем адресе. Только такой сценарий в настоящее время может быть целью описанной нами атаки с майнингом уже существующего адреса.

Второй вариант верен: подразумевается генерация новой пары ключей, у которой часть хеша, образующая IPv6-адрес, будет такой же, как и у целевого адреса, т.е. IPv6 адреса совпадут.
Так как мы поняли, что при формировании адреса используется не весь хеш (64 байта), а только часть (т.к. адрес IPv6 всего 16 байт), видим умозрительную возможность нахождения коллизии: возможно разных ключей, но с одинаковым началом хеша.
Об этой теории как раз заголовок "Почва для размышлений".

Адрес майнится по конкретному паттерну: не случайное попадание пальцем в небо, а намеренная атака. Например, я знаю ваш адрес и буду майнить именного его. Если проверять каждый адрес пингом, скорость майнинга станет столь малой, что об успехе даже в теории говорить не придется.


По поводу обоснованности использования той или иной схемы преобразования изначального ключа в конечный IPv6-адрес: я не разработчик Yggdrasil, чтобы адекватно судить и аргументировать причины этого. В статье я изложил лишь очевидную суть, а глубинные замыслы от меня сокрыты.


Я сам задумываюсь над потенциальной возможностью преобразования публичного ключа вовсе без хеша сразу в IPv6, и немного удивляюсь, что это реализовано более замудренно.

Используется именно хеш публичного ключа. Только он конвертируется в IPv6 для соответствующей логической маршрутизации. Я не утверждаю, что это лучшее решение (даже наоброт, в рамках статьи сею семя сомнения). Именно в силу преобразования хеша в адрес IPv6 (грубо говоря, из 64 байт в 16) происходит сомнительная потеря большой части уникального хеша и коллизия становится более вероятной, т.к. подобрать два ключа с одинаковыми N-байтами в начале хеша проще, чем независимо найти два ключа с одинаковым хешем.
Под майнингом адреса понимается скоростной перебор секретных ключей x25519 и проверка IPv6 от их публичных ключей, выведенных обозначенным выше алгоритмом. Майнингом занимаются либо для поиска "красивого" адреса (например, 200:dead:ded:cafe:babe:...), либо в попытках подобрать уже существующий адрес с целью нарушить обращение к нему (пока практически не удалось никому).

Кажется, вы не совсем знакомы с темой ассиметричного шифрования, в котором существуют две неотъемлемые сущности: открытый ключ и закрытый. Открытым ключом, который распространяется свободно, информация шифруется. Затем информация может быть расшифрована исключительно секретным (приватным) ключом из той же связки.
Устанавливая соединение с кем угодно (в том числе в сетях Тоr и I2P) вы получаете лишь публичный ключ абонента, который формирует его адрес, и которым вы шифруете трафик, отправляемый ему. Но расшифровать массив данных конечный пользователь может только благодаря секретному ключу. В свою очередь воспроизведение секретного ключа из публичного практически (и даже в адекватной теории) невозможно. На этом стоит вся современная криптография.
Отсюда следует, что заполучить чужой адрес можно двумя путями: либо украсть из конфига, получив доступ к серверу, либо смайнить. Однако майнинг здесь чаще всего принимает вселенские масштабы в категориях тысяч и миллионов лет с гугловскими мощностями.

Секретными являются приватные ключи, публичные от которых формируют адрес IPv6. Публичный — общеизвестен, приватный ключ — секретный и хранится в тайне, чтобы в сети не появился левый ресурс с вашим адресом. Похожим образом публичные ключи формируют внутрисетевые адреса в Tor и I2P, где потеря ключей также является потерей домена -onion или -i2p.


В статье используется термин "высоких адресов", подбор которых в теории намного сложнее. Их отличие — большое значение во втором байте адреса, который отображает количество лидирующих единиц в хеше от публичного ключа. Количество лидирующих единиц в хеше (в бинарном виде) после подсчета записывается во второй байт адреса, затем они урезаются, а последующие 14 байт хеша формируют оставшуюся часть IPv6-адреса. То есть: чем больше значение второго байта адреса, тем большее количество бит формирует адрес, и в этом его дополнительная надежность.

Не устраивает в данном случае что весь трафик пойдет через Tor exit nodes

Весь трафик Yggdrasil имеет оконечное шифрование, злонамеренные выходные узлы Tor — не угроза.


при наличии протокола резолва I2P адресов, соответствующие узлы могли бы коннектиться напрямую (т.е. из Yggdrasil сразу в I2P и обратно, как я понял)

Мне кажется, вы хотите скрестить грушу с ёжиком. Это абсолютно разные концепции. Наверняка теоритическая реализация вашего предложения возможна, но примерно также возможна интеграция газонокосилки в болид Формулы-1. Моя позиция в дискуссии мультидоступности всех сетей из всех сетей такая: это попросту никому не нужно.

Примитивное решение вашего кейса:


  1. Сервер со скрытым I2P-сервисом;
  2. Yggdrasil с отключенным локальным обнаружением пиров и списком паблик-пиров с подключением через прокси Tor socks://127.0.0.1:9050/address:port. В настоящее время Tor имеет лучшую пропускную способность и более уместен для такого рода извращений.
  3. Настройка доступности локального скрытого сервиса на адресе IPv6-Yggdrasil.

I2P — весьма и весьма специфичная сеть, ставящая скорость передачи данных на последнее место. Действительно серьезные ресурсы не стоит зеркалировать "в лоб", ну а прочие можно и вовсе размещать вне этой скрытой и сложно доступной для новичка среды.

Про выход из I2P в Yggdrasil и из Yggdrasil в I2P посредством собственного шлюза. Это весьма просто реализуется любым Proxy Software. Если нет своего, а очень надо, в ознакомительных целях можете воспользоваться моим: http://acetone.i2p/ или http://[324:9de3:fea4:f6ac::ace]/.


Пустить трафик Yggdrasil через I2P-туннель тоже возможно, только это весьма экзотичный случай, который напрочь отсечет все скоростные преимущества Yggdrasil. Наверное, в большинстве подобных случаев будет удобнее использовать Tor-прокси.


В части, касающейся удобства/неудобства I2P, я вас не понял. I2Pd — весьма лаконичный инструмент после ознакомления с краткой документацией. Всё интуитивно и конфигурируемо. Для умозрительного понимания механики сети I2P рекомендую к просмотру прикрепленное к посту видео.

Концепции несколько отличны, согласен. Однако в Yggdrasil есть нативные средства ограничения доступа с допуском только доверенного списка ключей (указываются в конфиге). Таким образом подключиться к TUN-интерфейсу машины смогут только вручную добавленные пользователи. IPv6-Yggdrasil пользователя извне недоверенные участники сети даже пинговать не смогут, при этом транзитный трафик никак не пострадает.
Для большей ясности добавил ремарку в спойлер «Небольшое замечание».
Несколько сложная формулировка вопроса. Но в целом mesh-сеть — это как VPN, только бесплатно и абсолютно масштабируемо.
Вот мой показатель транзита с белым IP и включенным режимом флудфила прямо сейчас (постоянно изменяется) image

Что касается http-сервера: I2P всё же в первую очередь про анонимность и в силу этого происходит жертва (потеря) скорости. Для бытового использования домашних сервисов за NAT-ом советую посмотреть Yggdrasil Network.
Yggdrasil и I2P не подразумевают каких-либо выходных прокси по умолчанию (как если бы Tor умел ходить только на .onion-сайты). Однако админ в праве стравить любые сервисы, в том числе и outproxy.
Но что такое выходное прокси? Это когда вы выпускаете неопределенных пользователей со своего адреса, и, соответственно, готовы к возможной ответственности за их сомнительные действия.
12 ...
10

Information

Rating
Does not participate
Location
Россия
Registered
Activity