Всем привет, вот наши кхм еженедельные заметки о статусе

  • Index:
  1. 0.6.1.25 и состояние сети 2) I2PSnark 3) Syndie (что/зачем/когда) 4) вопросы по криптографии Syndie 5) ???
    1. 0.6.1.25 and net status

На днях мы выпустили релиз 0.6.1.25, включающий множество исправлений ошибок, накопившихся за последний месяц, а также работу zzz над I2PSnark и Complication по повышению надежности нашего кода синхронизации времени. Сейчас сеть выглядит довольно стабильной, хотя в последние несколько дней с IRC наблюдались некоторые проблемы (по причинам, не связанным с I2P). Возможно, примерно половина сети уже обновилась до последнего релиза; показатели успешности построения tunnel существенно не изменились, хотя общая пропускная способность, по‑видимому, выросла (вероятно, из‑за увеличения числа людей, использующих I2PSnark).

    1. I2PSnark

Обновления zzz для I2PSnark включали оптимизации протокола, а также изменения веб-интерфейса, как описано в журнале изменений [1]. Также с момента релиза 0.6.1.25 для I2PSnark вышло несколько небольших обновлений, и, возможно, zzz сможет предоставить нам обзор текущего состояния на сегодняшней встрече.

[1] http://dev.i2p.net/cgi-bin/cvsweb.cgi/i2p/history.txt?rev=HEAD

    1. Syndie

Как вы все знаете, в последнее время я сосредоточен на переработке Syndie, хотя “revamp” может быть не самым точным словом. Возможно, то, что сейчас развернуто, можно считать “proof of concept” (прототипом), поскольку новый Syndie был перепроектирован и реализован заново с нуля, хотя многие концепции сохранились. Далее, говоря о Syndie, я имею в виду новый Syndie.

  • 3.1) What is Syndie

Syndie — на самом базовом уровне — система для ведения офлайн распределённых форумов. Хотя её структура допускает множество различных конфигураций, в большинстве случаев достаточно выбрать по одному варианту в рамках следующих трёх критериев: - Типы форумов: - Один автор (типичный блог) - Несколько авторов (многоавторский блог)** - Открытый (группы новостей; могут вводиться ограничения, чтобы только авторизованные** пользователи могли создавать новые темы, а любой мог комментировать эти новые темы) - Видимость: - Любой может читать всё - Только авторизованные* пользователи могут читать сообщения, но часть метаданных доступна - Только авторизованные* пользователи могут читать сообщения и вообще знать, кто публикует - Только авторизованные* пользователи могут читать сообщения, и никто не знает, кто публикует - Комментарии/ответы: - Любой может комментировать или отправлять приватные ответы автору/владельцу форума - Только авторизованные** пользователи могут комментировать, а приватные ответы может отправлять любой - Никто не может комментировать, но приватные ответы может отправлять любой - Никто не может комментировать, и никто не может отправлять приватные ответы

  • reading is authorized by giving people the symmetric key or passphrase to decrypt the post. Alternately, the post may include a publicly visible prompt, where the correct answer serves to generate the correct decryption key.

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

Отдельные записи могут содержать множество различных элементов: - Любое количество страниц с out of band data (данными, передаваемыми вне основного канала) для каждой страницы, указывающими тип содержимого, язык и т. п. Может использоваться любое форматирование, поскольку безопасный вывод содержимого зависит от клиентского приложения — простой текст должен поддерживаться, а клиенты, которые могут, должны поддерживать HTML.

  • Любое количество вложений (снова с out of band data, описывающими вложение)
  • Небольшой аватар для записи (если не указано иное, используется стандартный аватар автора)
  • Набор ссылок на другие записи, форумы, архивы, URL и т. д. (который может включать ключи, необходимые для публикации, управления или чтения указанных форумов)

В целом, Syndie работает на уровне контента — отдельные сообщения содержатся в зашифрованных zip-файлах, а участие в форуме означает просто обмен этими файлами. Нет зависимости от того, как файлы передаются (через I2P, Tor, Freenet, gnutella, bittorrent, RSS, usenet, email), но простые инструменты для агрегации и распространения будут включены в стандартный релиз Syndie.

Взаимодействие с контентом Syndie будет происходить несколькими способами. Во-первых, существует текстовый интерфейс с возможностью скриптования, позволяющий выполнять базовые операции из командной строки и интерактивно читать, записывать, управлять и синхронизировать форумы. Например, ниже приведён простой скрипт для создания нового поста “сообщение дня” -

login menu post create –channel 0000000000000000000000000000000000000000 addpage –in /etc/motd –content-type text/plain addattachment –in ~/webcam.webp –content-type image/png listauthkeys –authorizedOnly true authenticate 0 authorize 0 set –subject “Today’s MOTD” set –publicTags motd execute exit

Просто пропустите это через исполняемый файл syndie, и дело сделано: cat motd-script | ./syndie > syndie.log

Кроме того, ведётся работа над графическим интерфейсом Syndie, который включает безопасное отображение простого текста и HTML-страниц (разумеется, с поддержкой прозрачной интеграции с возможностями Syndie).

Приложения, основанные на старом коде Syndie ‘sucker’, позволят выполнять скрейпинг и преобразование обычных веб-страниц и веб-сайтов, чтобы их можно было использовать как одно- или многостраничные публикации Syndie, включая изображения и другие ресурсы в качестве вложений.

В дальнейшем планируется, что плагины Firefox/Mozilla будут как обнаруживать и импортировать файлы в формате Syndie и ссылки Syndie, так и уведомлять локальный GUI Syndie о том, что определённый форум, тема, тег, автор или результат поиска должны быть выведены на передний план.

Разумеется, поскольку Syndie по своей сути является уровнем контента с определённым файловым форматом и криптографическими алгоритмами, со временем, вероятно, появятся другие приложения или альтернативные реализации.

  • 3.2) Why does Syndie matter?

За последние несколько месяцев я слышал от нескольких человек вопрос, почему я работаю над инструментом для форумов/блогинга — какое это имеет отношение к обеспечению сильной анонимности?

Ответ: всё.

Кратко подытоживая: - Дизайн Syndie как клиентского приложения, учитывающего требования анонимности, тщательно избегает сложных проблем чувствительности данных, которых почти каждое приложение, не созданное с учётом анонимности, избежать не может. - Работая на уровне содержимого, Syndie не зависит от производительности или надёжности распределённых сетей, таких как I2P, Tor или Freenet, хотя при необходимости может их использовать. - Благодаря этому он может полноценно работать с небольшими ad hoc-механизмами для распространения контента - механизмами, которые может быть не стоят усилий могущественным противникам для противодействия (поскольку «выгода» от поимки всего лишь нескольких десятков людей, вероятно, превысит стоимость подготовки атак) - Это подразумевает, что Syndie будет полезен даже без нескольких миллионов людей, использующих его - небольшие, не связанные между собой группы людей должны настроить свои собственные приватные схемы распространения Syndie без необходимости взаимодействия с какими-либо другими группами или даже их осведомлённости. - Поскольку Syndie не полагается на взаимодействие в реальном времени, он может даже использовать системы и методы анонимности с высокой задержкой, чтобы избежать атак, которым уязвимы все системы с низкой задержкой (такие как пассивные атаки пересечения, пассивные и активные временные атаки и активные атаки смешивания).

В целом, я считаю, что Syndie даже важнее для основной миссии I2P (предоставление сильной анонимности тем, кому она нужна), чем сам router. Это не панацея, но это ключевой шаг.

  • 3.3) When can we use Syndie?

Хотя было выполнено много работы (включая почти весь текстовый интерфейс и значительную часть графического интерфейса пользователя (GUI)), работы ещё предстоит немало. Первый релиз Syndie будет включать следующую базовую функциональность:

  • Scriptable text interface, packaged up as a typical java application, or buildable with a modern GCJ
  • Support for all forum types, replies, comments, etc.
  • Manual syndication, transferring .snd files.
  • HTTP syndication, including simple CGI scripts to operate archives, controllable through the text interface.
  • Specs for the file formats, encryption algorithms, and database schema.

Критерием для релиза будет “полная работоспособность”. Среднестатистический пользователь не станет возиться с приложением с текстовым интерфейсом, но я надеюсь, что некоторые гики — да.

Последующие версии улучшат возможности Syndie по нескольким направлениям: - Пользовательский интерфейс: - GUI на базе SWT - Расширения для веб-браузера - Текстовый UI для веб-скрейпинга (загрузка и переписывание страниц) - Интерфейс чтения через IMAP/POP3/NNTP - Поддержка контента - Простой текст - HTML (безопасная отрисовка внутри GUI, не в браузере) - BBCode (?) - Синдикация - Feedspace, Feedtree и другие инструменты синхронизации с низкой задержкой - Freenet (хранение файлов .snd по адресам CHK@s и архивов, ссылающихся на файлы .snd по адресам SSK@s и USK@s) - Электронная почта (отправка через SMTP/mixmaster/mixminion, чтение через procmail/etc) - Usenet (отправка через NNTP или ремейлеры, чтение через (проксируемый) NNTP) - Полнотекстовый поиск с интеграцией Lucene - Расширение HSQLDB для полного шифрования базы данных - Дополнительные эвристики управления архивами

То, что и когда появляется на выходе, зависит от того, когда выполняются операции.

    1. Open questions for Syndie

В настоящее время Syndie реализован с использованием стандартных криптопримитивов I2P - SHA256, AES256/CBC, ElGamal2048, DSA. Однако последний из них выбивается из общего ряда, поскольку использует 1024-битные открытые ключи и зависит от (быстро слабеющего) SHA1. Из практики я слышал предложение о дополнении DSA алгоритмом SHA256, и хотя это осуществимо (хотя еще не стандартизировано), оно по-прежнему обеспечивает только 1024-битные открытые ключи.

Поскольку Syndie пока ещё не выпущен в широкое обращение и нет необходимости заботиться о совместимости с предыдущими версиями, мы можем позволить себе сменить используемые криптографические примитивы. Один из подходов — выбрать подписи ElGamal2048 или RSA2048 вместо DSA; другой — обратить внимание на ECC (с подписями ECDSA и асимметричным шифрованием ECIES), возможно на уровнях безопасности 256 или 521 бит (что соответствует, соответственно, 128-битным и 256-битным размерам ключей симметричных алгоритмов).

Что касается патентных вопросов, связанных с ECC (криптография на эллиптических кривых), они, похоже, актуальны лишь для отдельных оптимизаций (сжатие точек) и алгоритмов, которые нам не нужны (EC MQV). С поддержкой Java доступно немногое, хотя в библиотеке bouncycastle, похоже, есть какой-то код. Однако, вероятно, не составит большого труда добавить небольшие обёртки к libtomcrypt, openssl или crypto++, как мы сделали для libGMP (в результате получили jbigi).

Какие мысли по этому поводу?

    1. ???

Там много материала для осмысления, поэтому (по предложению cervantes) я рассылаю эти заметки о статусе так рано. Если у вас есть какие-либо комментарии, вопросы, опасения или предложения, загляните в #i2p сегодня в 20:00 UTC на irc.freenode.net/irc.postman.i2p/irc.freshcoffee.i2p на нашу кхм еженедельную встречу!

=jr