Краткий обзор
Присутствовали: co, jrand0m, LeerokLacerta, mihi, mrflibble, mrsc, nop, shardy, thecrypto, w0rmus
Протокол собрания
[22:53] 0) добро пожаловать [22:54] 1) приложения: [22:54] 1.1) IM (мгновенные сообщения) [22:54] 1.2) NS (служба имен) [22:54] 2) статус разработки: [22:54] 2.1) подсистемы [22:54] 2.2) сохранение ключей шифрования [22:54] 2.3) список дел [22:54] 3) вопросы спецификаций [22:54] 3.1) изменения [22:54] 4) административные вопросы: [22:54] 4.1) анонимный CVS [22:54] 5) ? [22:55] ок, 0) добро пожаловать [22:55] добро пожаловать на собрание 58 [22:55] это всё [22:55] да, сэр, если только у кого-то нет, что добавить? [22:55] * nop замечает, что jrand0m объектно-ориентирован с его нумерацией :) [22:56] 3.1.2.2.4.5.8() ;) [22:56] хей, это могли бы быть и структуры ;) [22:56] хаха [22:56] это точно [22:56] ок, 1.1) IM. thecrypto? [22:56] хотя [22:56] у 2 есть наследование [22:57] ;) [22:57] хех [22:57] не обращайте на меня внимания [22:57] ок [22:57] сорри [22:57] продолжайте [22:57] *** mihi_ (~none@anon.iip) присоединился к каналу #iip-dev [22:57] окей, сейчас я загружаю базовые спецификации для IM [22:58] (Ссылка: http://www.thecrypto.org/i2pim.sxw)http://www.thecrypto.org/i2pim.sxw для oowriter [22:58] и я загружаю PDF [22:59] если хочешь, я могу выложить на сайт i2p [22:59] секунду [22:59] конечно [22:59] *** mrflibble (mrflibble@anon.iip) присоединился к каналу #iip-dev [22:59] хочешь поместить это в i2p/apps/IM/doc/ ? [22:59] *** mihi_ теперь известен как mihi_backup [23:00] могу [23:00] да [23:00] я имел в виду в cvs :) [23:00] я тоже могу [23:00] (но и на вебе тоже хорошо) [23:00] о [23:00] ха-ха [23:00] (Ссылка: http://www.thecrypto.org/i2pim.pdf)http://www.thecrypto.org/i2pim.pdf [23:01] "the file is damaged and could not be repaired" ошибка AR [23:01] попробуй ещё раз [23:01] * jrand0m загрузил без проблем [23:01] MrEcho: Файл PDF? [23:01] (sxw) [23:01] тогда он был загружен только частично [23:01] теперь работает [23:01] хе-хе [23:02] в основном я просто добавил вещи про presence (статусы присутствия), сообщения о входе/выходе в сеть (online/offline), и обычное сообщение [23:02] я без стыда выдрал кое-какие разделы из документа I2NP [23:02] :) [23:02] хех, я так и подумал, что кое-что выглядит знакомо :) [23:02] i'm also working on uploading the UI i [23:02] i've been working on [23:03] jrand0m: мне нужно создать каталоги apps/IM/doc [23:03] да, и выполнить cvs add для каждого по отдельности [23:03] -kb? [23:03] да [23:03] thecrypto: Думаю, apps/ уже там. [23:04] что такое presence? [23:05] дай выполню update [23:05] но оно туда попадает [23:05] *** Выход: shardy (Ping timeout) [23:05] я просто говорю: разбирайте спецификации в клочки [23:05] и UI тоже скоро будет там [23:05] если что-то нужно прояснить — отправьте мне anonymail, e-mail, что угодно, и я поправлю [23:05] я пропустил собрание? [23:05] *** shardy (~shardy@anon.iip) присоединился к каналу #iip-dev [23:05] thecrypto: Возможно, стоит объявить об этом в списке рассылки, с ссылкой на документы. [23:05] думал, я это туда добавил? [23:05] нет, всё ещё на первом пункте, mrflibble [23:05] mrflibble: Собрание идёт. [23:05] о, сорри, просто не видел «logger» [23:06] thecrypto> ты говоришь, что это destination, но это destination, на который отправлять сообщения? как работают офлайн-сообщения? [23:06] здесь нет mids, так что и logger нет ;) [23:06] ок [23:06] * mrflibble снова уходит в тень [23:06] о, погодите, это же только уведомления о presence, извините [23:06] как подписаться на presence? [23:06] jrand0m: никаких офлайн-сообщений [23:07] в общем, [23:07] presence просто объединяет вместе destination и имя [23:07] для удобства [23:08] так что, если хотите, можем перейти к NS, а к этому вернёмся позже? [23:09] ок, круто [23:09] и вы всё равно можете присылать мне вопросы [23:09] на самом деле, один быстрый вопрос [23:09] давай [23:09] то есть IM строго только текстовый? [23:10] в этой базовой версии — да, но я добавлю поддержку файлов [23:10] круть [23:10] я просто хочу закрыть основы системы и дальше наращивать [23:10] (итеративно и инкрементально)++ [23:11] отлично. Я ещё внимательно это просмотрю, и другим тоже стоит... а пока перейдём к 1.2) NS. co? [23:11] Версия 1.1 (финальная) спецификации службы имен была опубликована сегодня ранее. [23:12] (и все радовались) [23:12] По сути, я закончил разделы о структурах данных и сетевых сообщениях, которые нужны программе. [23:12] В четверг выпущу клиентский API. [23:12] И начну реализовывать приложение NS. [23:12] отлично [23:13] Одна идея изменилась: что делает CA при регистрации сущностей. [23:13] co: как ты будешь это реализовывать? [23:13] co: NS-сервер или клиент? [23:14] thecrypto: Сначала реализую необходимые структуры данных. [23:14] Затем клиента, потом сервер и компоненты CA. [23:14] окей [23:15] Как я говорил, теперь я хочу, чтобы CA выдавал сертификат новым зарегистрированным сущностям. [23:15] Они будут предъявлять этот сертификат серверам имен при изменении своих записей. [23:15] В этой версии я не указал, что содержит сертификат; это войдёт в следующую версию спецификации. [23:16] Кому-то кажется это плохой идеей? [23:16] хмм. не было бы проще/безопаснее просто чтобы клиент использовал пару открытый/закрытый ключ? [23:16] то есть при регистрации предоставить открытый ключ для обновлений и подписать регистрацию, а при каждом следующем обновлении — подписывать его [23:16] (чтобы CA никогда не получал закрытый ключ) [23:17] К слову: всё по I2PIM теперь закоммичено в репозиторий cvs [23:17] отлично [23:17] Возможно, так и правда проще. Я пересмотрю этот вопрос. Спасибо за замечание. [23:17] Это всё, что у меня по службе имен на сейчас, если нет других вопросов. [23:18] Выглядит хорошо, я ещё не прошёлся по 1.1, но напишу по почте, если что-то найду [23:19] Ок. Следующая тема? [23:19] ок, 2.1) статус разработки подсистем. [23:19] *** w0rmus (o0o@anon.iip) присоединился к каналу #iip-dev [23:20] подсистема транспорта достаточно хороша, чтобы двигаться дальше. подсистема управления пирами заглушена «тупыми» алгоритмами, но работает. подсистемы сетевой БД, управления tunnel и управления статистикой — всё ещё в работе. клиентская подсистема будет тривиальной (просто переиспользуем SDK local-only router) [23:21] Что ты имеешь в виду под «тупыми» алгоритмами? [23:21] не быстрые? [23:21] ну, подсистема управления пирами не отслеживает производительность пиров, она просто возвращает случайных пиров. [23:22] алгоритм будет обновлён и подтюнен по мере продвижения, чтобы адекватнее выбирать пиров [23:22] текущая задача у меня — построение и обработка garlic‑сообщений, это та ещё морока. [23:23] но реализуемо, просто раздражает [23:23] это как раз подводит к 2.2) сохранению ключей шифрования. [23:24] garlic‑сообщения используют шифрование ElG+AES, чтобы оборачивать слои «долек» [23:24] а приватные ключи используются и в других местах (транспорт, управление клиентами) [23:25] *** Выход: thecrypto (Ping timeout) [23:25] хранить приватные и сеансовые ключи только в памяти и никогда не писать на диск — идеально, но плохо в случаях, когда router падает (умышленно или из-за сбоя) [23:26] есть мысли, стоит ли 1) никогда не писать ключи на диск и рисковать излишними потерями сообщений (так как их нельзя будет расшифровать), 2) шифровать их перед записью на диск, или 3) просто писать на диск в открытом виде? [23:26] Вариант 2. [23:27] jrand0m вариант 2, или как мы говорили раньше [23:27] мы должны доверять localhost [23:27] *** Выход: cohesion (class) [23:27] мы исходим из того, что localhost не скомпрометирован [23:27] странность варианта 2 в том, что либо пользователю придётся вводить парольную фразу при запуске router, либо сеансовый ключ будет узнаваем [23:27] верное замечание, nop. [23:28] ещё раз: мы — транспорт, нам об этом не так сильно переживать, это можно менять на стороне клиента, или мы можем дать им опции [23:28] в зависимости от уровня паранойи [23:28] компромисс между безопасностью и удобством [23:29] Тогда предлагаю по умолчанию 3, а пользователю дать возможность выбрать 2. [23:29] именно [23:29] верно. ок, хорошо, что люди могут (и должны!) взять код router и модифицировать его под нужный компромисс — «tinfoil I2P router» и «jane sixpack I2P router» (для параноиков и для «среднего пользователя») [23:29] ок, круто, тогда пока возьму простой вариант 3) [23:30] ок, 2.3) список дел [23:30] * co хотел бы вернуться к теме NS в конце встречи. [23:30] * nop нужно дочитать письмо по NS [23:30] ок, ты теперь пункт №5 [23:30] Могу подождать до конца. [23:31] mihi собрал несколько тестов, чтобы указать на баги в реализации SDK. некоторые уже исправлены, некоторые — нет. их исправление — в списке дел :) [23:32] также было около дюжины изменений в разных спецификациях. как будет время — обновлю доки и выложу, хотя, возможно, пока просто размещу страницу с errata в вики [23:33] точно [23:34] другие дела... эм, сегодня утром я починил штуку с «Wrong Size generating key», плюс пару случайных багов [23:34] ок, это всё по статусу разработки. 3) вопросы спецификаций [23:35] 3.1) см. список дел насчёт изменений. в основном были типографские правки, сегодня при реализации garlic'ов наткнулся на чуть более крупную. ничего страшного, просто надо перетасовать некоторые структуры данных и сделать кое-какую акробатику с шифрованием. добавлю это в errata. [23:35] 3.2) [знаю, этого пункта не было в повестке, но всё же] вопросы по спецификациям [23:35] (скоро буду, я всё ещё здесь, если понадоблюсь) [23:35] есть вопросы по каким-либо спецификациям? [23:35] круто, shardy [23:36] jrand0m: Напомни, пожалуйста, какая спецификация в каком документе. [23:37] (Ссылка: http://wiki.invisiblenet.net/iip-wiki?I2PProtocolSpecs)http://wiki.invisiblenet.net/iip-wiki?I2PProtocolSpecs — там всё разложено по полочкам [23:37] посмотрю. [23:38] (глядя на это, я вспомнил, что нужно задокументировать надёжный защищённый UDP‑транспорт. ещё один пункт в список дел...) [23:39] были вопросы от разных людей по поводу того, какие спецификации смотреть — в целом, если вам не нужно знать, как работают routers (или вы не хотите помогать их реализовывать), читать спецификацию I2NP не нужно. достаточно I2CP и раздела I2CP в структурах данных [23:40] jrand0m [23:40] да, сэр? [23:41] ты имеешь в виду настоящий UDP, как в UDP‑пакетах [23:41] или UDP как общий протокол на основе UDP [23:41] да, UDP как UDP‑пакеты [23:41] для I2P [23:41] *** thecrypt1 (~thecrypto@anon.iip) присоединился к каналу #iip-dev [23:41] *** thecrypt1 теперь известен как thecrypto [23:41] i2p/code/router/java/src/net/invisiblenet/i2p/router/transport/udp — реализация [23:42] вернулся [23:42] с возвращением [23:42] кто-нибудь пришлёт, что произошло, пока меня не было? [23:43] UDP‑реализация довольно простая — делает обмен DH, сообщения разбиваются на пакеты по 1K и шифруются AES‑256 с сгенерированным ключом [23:43] перегенерация ключей поддерживается, хотя сейчас не автоматическая [23:43] ACK-и отправляются пачками (то есть «я получил все пакеты для сообщения 42 до пакета 18 включительно, но не 3 или 7») [23:44] (а практическая причина, почему я взялся за UDP раньше TCP, — UDP даёт «бесплатный» асинхронный ввод-вывод почти без накладных расходов) [23:45] разумеется [23:45] в этой UDP‑реализации осталось сделать две вещи — добавить station-to-station для защиты от MITM и добавить пакет «чёрт, я забыл сеансовый ключ» [23:45] хорошо [23:46] после UDP‑транспорта следующим хочу сделать polling HTTP — чтобы была поддержка и обычного пользователя (UDP), и пользователя за файрволом/NAT/прокси (polling HTTP) [23:47] ок, да, это надо задокументировать в спецификацию :) [23:48] * jrand0m !шлёпает себя за код до спеки [23:48] писать код до спецификации мне помогает [23:48] ага, лучше всего это работает итеративно [23:48] (потому что, реализуя, мы находим проблемы в спецификациях и т. д.) [23:49] ок, это 3) спецификации. 4) административные вопросы [23:49] 4.1) анонимный CVS. thecrypto? :) [23:49] прямо вовремя [23:49] ну, я разбираюсь, кажется, 2401 сейчас заблокирован [23:49] можешь локально выполнить cvs -d :pserver:? [23:49] и, возможно, надо что-то поправить в inetd, спасибо, jrandom [23:50] ага, круто [23:50] дай проверю, я забыл, что так можно :) [23:51] это просто cvs -d :pserver: ? [23:51] cvs -d :pserver:anonymous@localhost:/home/cvsgroup/cvsroot/ co i2p [23:52] ещё было бы здорово поставить туда bugzilla [23:52] acvs [checkout aborted]: connect to localhost(127.0.0.1):2401 failed: Connection refused [23:52] ок, после добавления строки в inetd.conf и kill -HUP identd? [23:52] дай попробую эту строку для inet, и я вернусь [23:52] то есть inetd :) [23:52] ок, круто [23:53] pserver пишется в ту же строку? [23:53] да, всё в одной строке [23:55] ок, это всё по административным вопросам, по крайней мере, что приходит в голову [23:55] 5a) co, твоя очередь [23:56] Когда два человека хотят зарегистрировать одно и то же имя сущности, второму отказывают. [23:56] Но если использовать подход на основе подписи, [23:56] человек, которому отказали, всё равно может послать сообщение серверу имен [23:56] с требованием изменить запись. [23:56] Есть два варианта: [23:57] 1) CA отправляет серверу имен копию открытого ключа для одобренной сущности. [23:57] 2) CA отправляет регистрирующему имя сертификат, подписанный своим приватным ключом. У сервера имен будет открытый ключ CA для проверки. [23:58] Если злоумышленник скажет серверу имен изменить определённую запись, отсутствие сертификата не позволит сделать изменение. [23:58] Вот о чём я думал. [23:59] но в этом случае CA знает ключ — при асимметричной криптографии CA знает только открытый ключ, плюс CA не захочет и не будет кому-либо выдавать этот открытый ключ — он нужен лишь для того, чтобы подлинный обновляющий подписывал запрос на обновление [00:00] то, что ты описываешь, больше похоже на симметричную криптографию — по сути, использование парольной фразы [00:00] cvs издевается надо мной! [00:00] (где сертификат — это общий секрет между CA и подлинным владельцем псевдонима) [00:00] *** mrsc (~efgsdf@anon.iip) присоединился к каналу #iip-dev [00:01] что там, thecrypto? [00:01] я добавил пользователя anonymous с пустым паролем, добавил его в readers и в cvsgroup, и получаю cvs login: authorization failed: server localhost rejected access to /home/cvsgroup/cvsroot for user anonymous [00:01] jrand0m: Хорошее замечание. Считаем, что эта часть спецификации не финализирована, и я ещё подумаю над ней. [00:01] круто [00:01] *** LeerokLacerta (~leerok@anon.iip) присоединился к каналу #iip-dev [00:02] Konnichiwa. [00:02] хм, thecrypto, думаю, тебе не нужен пользователь ОС anonymous [00:02] привет, LeerokLacerta [00:02] Hello, jrand0m. [00:02] ну, я поставил пароль, и теперь работает [00:03] jrand0m: И если после прочтения спеки будут ещё предложения, пришли. [00:03] сделаю, co [00:03] круто, thecrypto.. у него shell /bin/false? [00:03] теперь осталось найти в руководстве cvs раздел о том, как создавать пользователя [00:03] -> *thecrypto* какой пароль? [00:04] теперь да [00:05] ок, разберёмся с этим после встречи. [00:05] ок, последний пункт повестки: 5b) ? [00:05] какие-нибудь вопросы / мысли / опасения? [00:05] просто посмотрите приложение IM [00:06] сейчас оно лишь строит дерево, но показывает, как всё начинает выглядеть [00:06] Нет SOCKS? [00:06] ох да, вот что я забыл [00:06] ага, круто, thecrypto [00:06] SOCKS? в смысле протокол прокси? [00:06] кто-то здесь умеет делать иконки? [00:06] Ага. [00:06] Ответ на все мои прошлые вопросы был «нет». [00:07] ага. да, нам определённо понадобится SOCKS‑прокси, но сейчас этим никто не занимается. [00:07] Хмм. [00:07] это будет одно из приложений, которое нам понадобится к 1.0 public, чтобы люди могли просматривать сайты на i2p, а также чтобы люди могли анонимно просматривать обычную сеть [00:07] есть достаточно SOCKS‑прокси, доступных бесплатно, я бы сказал ;) [00:08] именно, нам нужно только их интегрировать [00:08]