Приложение А: Прикладной уровень
Сама I2P действительно не
делает многого - она просто отправляет сообщения на удалённые узлы
назначения, и получает сообщения на локальном узле - большая часть
интересной работы продолжается в более высоких уровнях, выше неё.
Отдельно, I2P может быть представлена как анонимный и безопасный уровень
IP, и связанная библиотека потоковой передачи - как реализация
анонимного и безопасного уровня TCP поверх неё. Кроме того, I2PTunnel
представляет универсальную систему проксирования TCP для вхождения
внутрь, или наружу из сети I2P, плюс множество сетевых приложений
обеспечивают дальнейшую функциональность для конечных пользователей.
Библиотека потоковой передачи
Библиотека потоковой передачи
выросла органически для I2P - сначала mihi, реализовывал
"мини-библиотеку потоковой передачи" как часть I2PTunnel, который был
ограничен размером окна в одно сообщение (требующий ACK прежде, чем
отправить следующий), и затем это был, переработанный в универсальный,
интерфейс потоковой передачи (зеркальное отражение сокетов TCP), и
полная реализация потоковой передачи была развернута с протоколом
раздвигающегося окна и оптимизацией, чтобы принять во внимание высокую
пропускную способность умноженную на задержки. Отдельные потоки могут
скорректировать максимальный пакетный размер и другие опции, хотя
значение по умолчанию в виде данных по 4 Кб, кажется разумным
компромиссом между затратами пропускной способности на ретранслирование
потерянных сообщений и задержкой многократных сообщений.
Кроме того, с учетом
относительно высокой стоимости последующих сообщений, протокол
библиотеки потоковой передачи для планирования и передачи сообщения был
оптимизирован, чтобы позволить отдельным передаваемым сообщениям
содержать так много информации, как это только возможно. Например,
маленькая транзакция HTTP, проксированная через библиотеку потоковой
передачи, может быть завершена в единственном цикле обработки - первое
сообщение связывает SYN, FIN, и маленькую полезную нагрузку (запрос HTTP
обычно подходит), а ответ связывает SYN, FIN, ACK, и маленькую полезную
нагрузку (многие HTTP ответы похожи). В то время как дополнительный ACK
должен быть передан, чтобы сказать HTTP серверу, что SYN/FIN/ACK был
получен, локальный прокси HTTP может доставить полный ответ сразу в
браузер.
В целом, однако,
библиотека потоковой передачи имеет много сходства с абстракцией TCP, с
его раздвижными окнами, алгоритмами управления перегрузками (и медленный
запуск и предотвращение перегрузки), и общее пакетное поведение (ACK,
SYN, FIN, RST, rto вычисление, и т.д.).
Библиотека именований и адресная книга
Для получения дополнительной информации см. страницу Naming and Addressbook.
Разработано: mihi, Ragnarok
Именование в пределах I2P
было темой, часто обсуждаемой с адвокатами с самого начала по всему
спектру возможностей. Однако, свойственному I2P требованию о безопасной
передаче и децентрализованной работе, традиционная система именования
стиля DNS явно не отвечает, как и системы с голосованием "по принципу
большинства". Вместо этого I2P поставляется с универсальной библиотекой
именования. Базовая реализация разработана, чтобы отделаться от
локальных имён для точек назначения. Дополнительное приложение назвали
"Адресной книгой" (addressbook). Адресная книга является управляемой
"сетью доверия" и представляет собой безопасную, распределенную, и
удобочитаемую систему именования, жертвуя только удобочитаемыми именами,
чтобы обеспечить их уникальность, передавая под мандат только локальную
уникальность. В то время как все сообщения в I2P криптографически
адресуются по их точкам назначения, у различных людей могут быть
локальные записи в addressbook для некой абстрактной "Элис", которые
обращаются к различным точкам назначения. Люди могут обнаружить новые
имена, импортируя опубликованные адресные книги пиров, определенных в их
сети доверия, добавляя записи, полученные через третью сторону. Или
(если некоторые организуют серию опубликованных адресных книг, используя
систему регистрации по первому пришедшему), люди могут предпочесть
обрабатывать эти адресные книги как сервера имен эмулируя традиционный
DNS.
I2P не способствует
использованию DNS-подобных служб. Поскольку ущерб, нанесенный кражей
сайта, может быть огромным - небезопасные места назначения не имеют
никакого значения. DNSsec все еще непосредственно обращается к
регистраторам и центрам сертификации, в то время как I2P запросы,
отправленные на точку назначения, не могут быть прерваны, и нельзя
сымитировать ответ сервера, поскольку они шифруются открытыми ключами
точек назначения, и сама точка назначения является только парой открытых
ключей и сертификата. Системы стиля DNS, с другой стороны, позволяют
любому из серверов имен на пути поиска создавать простой отказ
обслуживания (DoS) и уязвимы к атакам имитации. Добавление сертификата,
аутентифицирующего ответы, как подписаные некоторым централизованным
центром сертификации, решило бы многие из проблем враждебного сервера
имен, но оставило бы открытыми для атаки ответные пакеты и атаки на
центры сертификации.
Именование в стиле
голосования также опасно, особенно учитывая эффективность атак Сибила в
анонимных системах - атакующий может просто создать произвольно высокое
число пиров и сымитировать "голос" каждого, чтобы заполучить имя.
"Методы доказательства работы" (Proof-of-work) могут использоваться,
чтобы сделать идентификационные данные несвободными, но поскольку
нагрузка в сети возрастает, требование связывать всех, чтобы провести
онлайновое голосование выглядит неправдоподобно. А если сеть не
опрашивается полностью, то могут достигаться различные наборы ответов.
Однако, как и интернет,
I2P сохраняет проект и работу системы именования вне коммуникационного
уровня (подобного IP). Связанная библиотека именования содержит простой
интерфейс поставщика услуг, который позволяет также включать
альтернативные системы именования, позволяя конечному пользователю
управлять предпочитаемыми компромиссами именования.
Syndie
Старая Syndie, поставляющаяся
вместе с I2P, была заменена на новую, распространяющуюся отдельно. Для
подробной информации обратитесь к сайту Syndie.
Syndie, это безопасная
система анонимного блоггинга / публикации и сбора контента. Она
позволяет вам создавать информацию, делиться ей с людьми и читать
интересующие вас записи, сделанные другими. При этом учитываются ваши
потребности в области безопасности / анонимности. Вместо того, чтобы
создавать собственную сеть распределения контента, Syndie разработан с
расчётом на работу поверх уже существующих сетей, объединения контента
через eep-сайты,
скрытые сервисы Tor, свободные сайты Freenet, обычные сайты, группы
новостей usenet, рассылки по электронной почте, RSS-ленты и так далее.
Данные опубликованные через Syndie позволяют другим аутентифицированным
псевдонимам читать или архивировать их.
I2PTunnel
Разработан: mihi
I2PTunnel это, вероятно,
наиболее популярное клиентское I2P приложение, позволяющее использовать
общий прокси на входе и выходе в/из I2P сеть. I2PTunnel можно
рассматривать как четыре отдельных прокси-приложения. Это "Клиент",
который получает входящие TCP соединения, и перенаправляет их на
требуемого I2P-адресата, HTTP-клиент (также известный как "eeproxy"),
который действует как HTTP-прокси, и направляет запросы на
соответствующего I2P адресата (после запроса сервиса разрешения имён,
если требуется), Сервер, который принимает входящие I2P поточные
соединения, и перенаправляет их на заданный TCP хост + порт, и, также,
HTTP-сервер, который расширяет "сервер" путём разбора HTTP запроса, и
ответа, сохраняя безопасность операций. Существует, также,
дополнительный SOCKS-клиент, но его использование не рекомендуется по
указанным выше причинам.
I2P сама по себе это не
сеть внешних прокси - анонимность и безопасность достигается в смешанной
сети, которая перенаправляет данные в смешанную сеть и из неё. I2P
разработана с расчётом на предоставление анонимной сети, которая
способна удовлетворить потребности пользователей, без необходимости
привлечения внешних ресурсов. Также, приложение I2PTunnel "httpclient",
предлагает и исходящие прокси: если имя хоста не оканчивается на ".i2p",
то он выберет случайный прокси, из предоставленных другими
пользователями, и перенаправит запрос к нему. Эти случайные прокси -
простые серверы I2PTunnel, запущенные добровольцами, которые САМИ
захотели запустить у себя прокси-сервер на выход. Ни у кого не
устанавливается внешний прокси по-умолчанию, и запуск внешнего прокси не
может автоматически заставить других людей использовать именно ваш
прокси. Хотя внешние прокси имеют слабые места, они предназначены для
простой демонстрации концепции использования I2P, и предоставляют
некоторую функциональность при работе "под угрозой", которой, впрочем,
может быть недостаточно для некоторых пользователей.
I2PTunnel может
использоваться большей частью приложений. Например, "httpserver",
указывающий на веб-сервер, позволяет кому угодно запустит свой
собственный анонимный веб-сайт (также известный как eepsite) - веб-сервер для этих целей поставляется совместно с I2P (На данный момент это jetty,
прим. пер.), но вы можете использовать любой веб-сервер, какой
захотите. Любой человек может запустить "клиент", указывающий на один из
анонимно расположенных IRC-серверов, каждый из которых запущен на
"сервере", указывающем на локальный для него IRCd (демон, или, в более
широком смысле - программное обеспечение сервера IRC прим. пер.), и
взаимодействовать между IRC-серверами, посредством своих клиентских
тоннелей. Конечные пользователи также имеют клиентские тоннели,
работающие с I2Pmail по протоколам POP3 и SMTP (которые, в свою очередь
перенаправляют трафик на реальные POP3 и SMTP сервера). Также клиентские
тоннели могут указывать на I2P CVS
сервер, позволяя вести анонимные разработки программного обеспечения.
Иногда люди даже запускают клиентские прокси для доступа к серверу,
который работает как NNTP сервер (протокол, разработанный для обмена
сообщениями в телеконференциях. По строению этот протокол во многом
сходен с протоколом приема и передачи электронной почты SMTP. прим.
пер.).
i2p-bt
Разработан: duck, et al
i2p-bt это порт BitTorrent-клиента, для работы трекера и пиров через I2P. Запросы к трекеру перенаправляются через eeproxy на ипсайты,
определённые в .torrent файлах, пока трекер отвечает на запросы пиров
по их явному назначению, разрешая i2p-bt открывать через потоковую
библиотеку соединения для запроса блоков.
В дополнение к i2p-bt, для
I2P был сделан порт трекера bytemonsoon. Сделаны несколько модификаций,
таких как необходимость отделить любую информацию, компрометирующую
анонимность из приложений, и также был учтён тот факт, что IP-адреса не
могут быть использованы для идентификации пиров.
I2PSnark разработан: jrandom, и другие, портирован из mjw Snark client
Поставляющийся с
инсталлятором I2P, I2PSnark представляет простой анонимный бит-торрент
клиент, с возможностями multitorrent. Предоставляет всю свою
функциональность с помощью простого веб-интерфейса, основанного на HTML.
Azureus/azneti2p
Разработан: parg и др.
Разработчики бит-торрент
клиента Azureus, создали azneti2p плагин, позволяющий пользователям
Azureus принять участие в анонимном "рое" пиров в I2P, или запросто
получать доступ к анонимно расположенным трекерам, обращаясь
непосредственно к каждому узлу. Дополнительно, Azureus содержит
встроенный торрент-трекер, позволяющий пользователям запускать
собственные анонимные трекеры, без запуска bytemoonsoon
(для этого имеются весьма серьёзные предпосылки), или трекеры на основе
i2p-bt. На сегодня (Июль 2005) плагин полностью работоспособен, но
имеет довольно сложный процесс настройки. Хотя мы и надеемся, что в
дальнейшем он будет упрощён.
Дополнение переводчика: на данный момент (Апрель 2010) торрент-клиент Azureus называется Vuze, и доступен по ссылке http://www.vuze.com/. С ним также поставляется плагин, для работы с I2P трекерами.
I2Phex
Разработан: sirup
I2Phex это фактически
полный порт приложения PHex Gnutella, предназначенный для предоставления
общего доступа к файлам внутри I2P. В нём отключены некоторые функции
PHex, таких как интеграция с Gnutella webcaches, но в остальном -
функции расшаривания файлов и система чатов - полностью функциональна и
доступна.
I2Pmail/susimail
Разработан: postman, susi23, mastiejaner
I2Pmail это больше услуга,
нежели приложение. Postman предоставляет внутреннюю и внешнюю
электронную почту посредством обычных POP3 и SMTP протоколов, используя
I2PTunnel, а также некоторые компоненты разработанные совместно с
mastiejaner, позволяющие пользователям использовать их любимые почтовые
клиенты для отправки и получения почты под псевдонимом. Однако,
поскольку большая часть клиентов для работы с электронной почтой могут
разглашать идентификационную информацию, I2P поставляет почтовый клиент
susi23, основаный на веб-интерфейсе и созданный специально для работы с
анонимизирующей сетью I2P. I2PMail/mail.i2p предоставляет прозрачную
проверку почты антивирусом, а также профилактику отказа в обслуживании (DoS)
предотвращая расширение hashcash квот. Дополнительно, каждый
пользователь может контроллировать свою стратегию дозирования поставок
через выходящие прокси mail.i2p, которые отделены от mail.i2p SMTP и
POP3 серверов. Как выходящие, так и входящие прокси общаются с mail.i2p
POP3 и SMTP серверами через I2P, что не позволяет подорвать анонимность
расположения, получить доступ к почтовому аккаунту, либо отследить
шаблоны активности пользователя. На данный момент разработчики трудятся
над децентрализованной почтовой системой, названной v2mail. За более подробной информацией обращайтесь к I2P-сайту hq.postman.i2p.
|