The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск p2p-мессенджера Communist 1.4, opennews (??), 25-Июн-22, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


85. "Выпуск p2p-мессенджера Communist 1.4"  +1 +/
Сообщение от Аноним (159), 25-Июн-22, 13:43 
Поднимал свой DHT сканер торретов. Работает шустро, мощностей особо не требуется, т.к. он работает по принципу все же обычного запроса на метаданные по хэшу. А с мессенжером все проще... хотя.. могу ошибаться.
Ответить | Правка | Наверх | Cообщить модератору

96. "Выпуск p2p-мессенджера Communist 1.4"  +2 +/
Сообщение от ProfessorNavigator (ok), 25-Июн-22, 14:13 
> Поднимал свой DHT сканер торретов. Работает шустро, мощностей особо не требуется, т.к.
> он работает по принципу все же обычного запроса на метаданные по
> хэшу. А с мессенжером все проще... хотя.. могу ошибаться.

Вы изначально знаете хэш, а в случае с Коммунистом - вам нужно знать ключ. Потому что в DHT никакие личные данные не попадают (тогда можно было бы организовать поиск по хэшу никнейма или имени например). В DHT попадают только ваши ip адреса в зашифрованном виде. Шифрование же осуществляется на базе двух ключей - вашего и собеседника.

Ответить | Правка | Наверх | Cообщить модератору

143. "Выпуск p2p-мессенджера Communist 1.4"  +/
Сообщение от Аноним (159), 25-Июн-22, 17:10 
Search engine имен в сети
Конечно понимаю, что будет некая помойка имен в поиске и будет нагрузка общим опросом клиентов.
но на самом деле не так много опрашивать и это не метаданные, как торрент
Ответить | Правка | Наверх | Cообщить модератору

170. "Выпуск p2p-мессенджера Communist 1.4"  +/
Сообщение от ProfessorNavigator (ok), 25-Июн-22, 21:33 
Оверлейная сеть может (и будет) фрагментироваться. По кругу общения, по узлам привязки. Так что затея в принципе реализуемая, но работать будет через раз - поэтому смысла особого нет. Кроме того, пока проблемно сделать так, чтобы другой человек узнал, что вы его хотите добавить в друзья. Методами DHT это не реализуется, остальное в силу этого теряет смысл. Можно организовать пересылку по цепочке списков вида "ключ1 хочет добавить в друзья ключ2". Но опять же фрагментация сети рубит затею на корню. Но так-то функция нужная, я об этом думаю с самого начала разработки. Если придумаю что-то стоящее - сделаю.
Ответить | Правка | Наверх | Cообщить модератору

198. "Выпуск p2p-мессенджера Communist 1.4"  +/
Сообщение от Аноним (-), 26-Июн-22, 08:07 
> Оверлейная сеть может (и будет) фрагментироваться. По кругу общения, по узлам привязки.

С чего DHT фрагментироваться? Он всегда может глобальный лукап, пока связность между частями хоть какая-то есть. Хотя он знает только окрестности, но всегда может спросить более подходящих тех кто знает еще более подходящих, а повторив несколько раз найдет любой ключ. Теория 6 рукопожатий в действии.

> Так что затея в принципе реализуемая, но работать будет через раз

С чего б ему?

> - поэтому смысла особого нет. Кроме того, пока проблемно сделать так,
> чтобы другой человек узнал, что вы его хотите добавить в друзья.

Он если хочет чтобы его добавляли может публиковать в DHT координаты себя или своего туннеля. В токсе вроде как-то так добавление в контакты и сделано, ремота находится по ключу в DHT, потом туда где они слушают наш конект и пакет "хотим в ваши контакты, можно?". Там еще антиспам число требуется знать. Его дают как часть идентификатора, он у там 32 байта публичного ключа + 4 байта антиспама + 1 чексуммы (чтобы TYPO сразу завернуть).

Этот же номер можно и с чем-то еще провернуть. Не знаю можно ли на торентовском DHT, а вообще
1) Nick/имя/... -> DHT ID
2) DHT ID -> координаты для конекта

Как защитить от подделки Nick <-> DHT ID вопрос номер два. Но это и для остальных актуально. Извините, кажется министр Германии недавно трындел полчаса с левым "типа-Кличко". И какая разница что в зуме, или типа того? Тут вопрос в том как координаты получены и насколько это доверяемо. А то и министра с централизованной системой могут развести.

> Методами DHT это не реализуется, остальное в силу этого теряет смысл.

Never say never.

> разработки. Если придумаю что-то стоящее - сделаю.

Все уже придумано до вас, имхо. Ну, почти.

Ответить | Правка | Наверх | Cообщить модератору

199. "Выпуск p2p-мессенджера Communist 1.4"  +/
Сообщение от Аноним (-), 26-Июн-22, 08:24 
p.s. если кто не понял ник в DHT засунуть, в самом тупом виде

(обладатель ника):
x = hash(nick)
publish(x <-> DHT ID)
publish(DHT ID <-> координаты конекта)

(тот кто ищет "nick"):
x = hash(nick)
DHT_ID = find(x)
them = find(DHT_ID)
connect(them)

Очевидный минус - кто угодно может претендовать что он - "nick". Верить ли декларации на усмотрение того кто ищет, можно кроме DHT ID разрешить больше данных о себе подшивать, типа как в ICQ было. Это такой высокоуровневый псевдокод, подразумевает что чтец догадывается как DHT работает. Можно ли из именно торента так сделать - ахз.

Ответить | Правка | Наверх | Cообщить модератору

230. "Выпуск p2p-мессенджера Communist 1.4"  +/
Сообщение от ProfessorNavigator (ok), 26-Июн-22, 15:30 
> Он если хочет чтобы его добавляли может публиковать в DHT координаты себя
> или своего туннеля. В токсе вроде как-то так добавление в контакты
> и сделано, ремота находится по ключу в DHT, потом туда где
> они слушают наш конект и пакет "хотим в ваши контакты, можно?".
> Там еще антиспам число требуется знать. Его дают как часть идентификатора,
> он у там 32 байта публичного ключа + 4 байта антиспама
> + 1 чексуммы (чтобы TYPO сразу завернуть).

Вот именно, что ещё и антиспам нужен. Идея же Коммунистам в том числе, чтобы вы общались только с теми, с кем вы хотите общаться. И наоборот, чтобы у вас не было возможности надоедать кому-то, если он того не желает.

> Не знаю можно ли на торентовском DHT

Нет, нельзя.

> Never say never.

Про "никогда" никто и не говорит. Речь о текущем моменте. Собственно есть стойкое ощущение, что в самое ближайшее время нам всем станет совсем не до проблем установления P2P соединения.

> Все уже придумано до вас, имхо. Ну, почти.

Вот тут вы сильно заблуждаетесь)) И я не только про программирование.


Ответить | Правка | К родителю #198 | Наверх | Cообщить модератору

269. "Выпуск p2p-мессенджера Communist 1.4"  +/
Сообщение от Аноним (-), 28-Июн-22, 14:25 
> Вот именно, что ещё и антиспам нужен.

Они его очень грамотно сделали. Когда Вася дает Пете свой "адрес в чате" тем длинным HEX или QR, это не только 32 байта публичного ключа, а еще 4 байта антиспама и 1 байт чексуммы. И соответственно это 32+4+1 = 37 байтов. Или 74 символа HEX.

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

Поэтому посторонние системы сами по себе не могут просто прийти и постучаться к Васе в клиент вообще. Их шанс угадать 4 байта будет (1 / 2^32), по сети подбирать столько чтобы только запрос "можете добавить в контакты?" для спамера не прикольно. А без добавления в контакты мсг от неизвестных просто не пройдут.

Если Вася не хочет спам совсем, он не выкладывает вон то в веб/форумы и проч и в частном порядке дает это только тем кто ему в чатике нужен. Только они и смогут сообщения слать.

> Идея же Коммунистам в том числе, чтобы вы общались только с теми, с кем вы хотите
> общаться. И наоборот, чтобы у вас не было возможности надоедать кому-то,
> если он того не желает.

У вон тех оно тоже получилось, в далеко не хучшем виде. Половину идей можно нагло спереть. В том плане что это особых неудобств не создает, достаточно прозрачно для юзерей, а спамеров в целом отшивает. Единственный минус этого решения: в контакте неполное число. И поэтому я не могу послать координаты для добавления Васи какому-нибудь Коле, в лучшем случае надо вспоминать где я полный ключ + антиспам заныкал, а антиспам число еще и сменить можно. Не ведет к выпадению уже добавленых. На самом деле они протокол делали достаточно хитрож...о и креативно, я лишь общую идею пока уловил.

> Нет, нельзя.

Я просто не помню что там можно опубликовать. Если что-то кроме айпишника, ноу проблем. Если нельзя, тогда хуже. Так даже STUN/TURN без конфигурации юзером и упования на сторонний централизованый сервер не пройдет. А у токса каждый юзер DHT аналог STUN, если мы коммуницируем значит и кучку "STUN" знаем, бутстрапы еще и эквивалент TURN обычно, как и юзеры кто захотел этим быть.

Поэтому у обычного юзера оно просто работает, пробиваясь много где. Эту логику они частично сперли из скайпа. Но у них свой кастомный DHT. Заодно позволило им крипто делать сильно проще чем могло бы быть.

> стойкое ощущение, что в самое ближайшее время нам всем станет совсем
> не до проблем установления P2P соединения.

Может да, может нет, а распределенный и неподконтрольный особо никому чат "хрен удавишь", переживающий даже сильные пертурбации сети КМК может оказаться довольно полезным в некоторых пиковых ситуациях тулом.

> Вот тут вы сильно заблуждаетесь)) И я не только про программирование.

Трезво оцениваю соотношение возможностей моего мозга vs суммарный интеллект планеты. Сеть и поисковик делает это доступным мне для изучения.

Ответить | Правка | Наверх | Cообщить модератору

275. "Выпуск p2p-мессенджера Communist 1.4"  +/
Сообщение от ProfessorNavigator (ok), 28-Июн-22, 23:00 
> Я просто не помню что там можно опубликовать.

DHT, поддерживаемая библиотекой libtorrent, работает достаточно просто. Либо вы кладёте в неё хэш торрент файла, и тогда поиск ведётся по этому хэшу. Либо кладёте произвольное значение размером не более килобайта под произвольно же выбранным ключом длинной 32 байта и "солью". Чтобы получить это значение нужно знать ключ и "соль".

Ответить | Правка | Наверх | Cообщить модератору

281. "Выпуск p2p-мессенджера Communist 1.4"  +/
Сообщение от Аноним (-), 29-Июн-22, 19:49 
> Либо кладёте произвольное значение размером не более килобайта под произвольно же выбранным
> ключом длинной 32 байта и "солью". Чтобы получить это значение нужно знать ключ и "соль".

Т.е. оно вроде как умеет key <-> value, как и любой DHT такого плана, и не очень сильно интересуется тем что там на самом деле в value?

Кроме всего прочего вроде ж можно публиковать (и искать) соответствие ник <-> DHT ID. Типа как ник - номер аськи, только без сервера и номер теперь подлиннее. Чтобы ник стал ключом, фиксированного размера, его хешировать, конечно.

Основной трабл что кто угодно может это публиковать и там могут появиться подделки. Но это и в остальных системах можно, поискав Васю можно узнать что вась довольно много, и кто их них нужный отдельный вопрос. К сожалению хорошего и полного решения этой проблемы вроде бы не существует. На основе блокчейна в принципе можно например сделать "кто первый схватил ник тот и Вася". Но это сразу очень мощно все утяжелит и усложнит. Да и вообще не настолько большая проблема чтобы ее в приоритете держать.

Ответить | Правка | Наверх | Cообщить модератору

284. "Выпуск p2p-мессенджера Communist 1.4"  +/
Сообщение от ProfessorNavigator (ok), 30-Июн-22, 13:20 
> Т.е. оно вроде как умеет key <-> value, как и любой DHT
> такого плана, и не очень сильно интересуется тем что там на
> самом деле в value?

В целом - да. Только ключ - это публичный ключ от ed25519 цифровой подписи. Т.е., когда вы отправляете запрос на помещение чего либо на узлы DHT, они проверяют подпись. И когда вы запрашиваете информацию по ключу - тоже проверяется подпись. Иными словами, разместить информацию под тем или иным ключом может только тот, у кого есть "зерно", из которого получаются публичный и секретный ключ. Ну и помещаемая информация должна быть в hex виде (по крайней мере такова реализация в libtorrent).


Ответить | Правка | Наверх | Cообщить модератору

289. "Выпуск p2p-мессенджера Communist 1.4"  +/
Сообщение от Аноним (-), 30-Июн-22, 22:41 
> В целом - да. Только ключ - это публичный ключ от ed25519
> цифровой подписи. Т.е., когда вы отправляете запрос на помещение чего либо
> на узлы DHT, они проверяют подпись.

Хм...? А они точно это делают? Когда я смотрел на DHT торента, там был SHA1 (== ширина 160 битов везде) и никакого ed25519. А клиенты выбирали например рандомный DHT ID и его тоже публиковали (чтобы остальные могли их постепенно в таблицы добавить).

С тех пор какие-то расширения наверное были, но 160-битная версия точно живет.

> И когда вы запрашиваете информацию по ключу - тоже проверяется подпись.
> Иными словами, разместить информацию под тем или иным ключом может только тот,
> у кого есть "зерно", из которого получаются публичный и секретный ключ.
> Ну и помещаемая информация должна быть в hex виде (по крайней мере такова
> реализация в libtorrent).

HEX это всего лишь человекочитаемое представление "произвольных байтов". Там ключ структурно как u8[32] и каждый байт это 8 бит, от 0 до 255. Проблема в том что не любое из этого можно напечатать. Скажем 0x0a это перевод строки. Но мы то хотим его как байт ключа отдать, без интерпретации при копировании и проч. Поэтому и кодируют в hex или иногда Base64 (base58, ... ).

Ответить | Правка | Наверх | Cообщить модератору

292. "Выпуск p2p-мессенджера Communist 1.4"  +/
Сообщение от ProfessorNavigator (ok), 30-Июн-22, 23:43 
> Хм...? А они точно это делают? Когда я смотрел на DHT торента,
> там был SHA1 (== ширина 160 битов везде) и никакого ed25519.
> А клиенты выбирали например рандомный DHT ID и его тоже публиковали
> (чтобы остальные могли их постепенно в таблицы добавить).
> С тех пор какие-то расширения наверное были, но 160-битная версия точно живет.

Подпись проверяют точно. Это второй вариант. Я особо не вчитывался - по-моему это прописано в каком-то BEP. Меня больше интересовало, что такое реализовано в libtorrent ;) SHA1 тоже присутствует. Как я понимаю, в качестве него берётся хэш торрент-файла, а значение - ip адрес. Т.е. таким образом получают пиров для торрента. Ну и во второй версии libtorrent вроде бы уже кроме 160 бит и SHA256 в качестве альтернативы есть.  

> HEX это всего лишь человекочитаемое представление "произвольных байтов". Там ключ структурно
> как u8[32] и каждый байт это 8 бит, от 0 до
> 255. Проблема в том что не любое из этого можно напечатать.
> Скажем 0x0a это перевод строки. Но мы то хотим его как
> байт ключа отдать, без интерпретации при копировании и проч. Поэтому и
> кодируют в hex или иногда Base64 (base58, ... ).

Да, я в курсе. Просто в libtorrent на входе в соответствующую функцию требуется string. И даже если вы в неё скопируете, скажем, int (через memcpy), то в DHT оно не попадёт. Почему - не знаю, я в исходники libtorrent не лазил особо.

Ответить | Правка | К родителю #289 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру