Децентрализованный мессенджер

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Как известно, спецслужбы, корпорации, сотовые операторы и прочие воплощения Большого Брата следят за тобой, анонимус^Wдоучанин, и читают твою открытую переписку. И давно пора бы положить этому конец. Путём разработки свободного программного обеспечения, использующего стойкую криптографию и не зависящего от какого-либо центра управления.

В связи с этим хочу представить общественности свой проект, продукт неспешной разработки в течение последних 11 лет.

picapica.im

Pica Pica Messenger — проект свободного мессенджера, распространяющийся под лицензией GNU GPLv3. Состоит из двух компонентов, pica-client и pica-node. pica-client — клиентское приложение, написанное с использованием С++, Qt, sqlite и OpenSSL.
pica-node — это серверный компонент, который может быть установлен добровольцами на своих компьютерах (приблизительно как нода Tor), он обеспечивает связность сети, поиск участников, находящихся онлайн и соединение между ними, если оба собеседника находятся за NAT-ом. Собеседники также могут соединиться напрямую, предварительно обменявшись информацией через pica-node. Общение происходит по защищённому соединению, обеспеченному протоколом TLS 1.2. В качестве адреса используется SHA224 хэш от самоподписанного TLS сертификата, который выступает в роли учётной записи. Использование такого вида адреса обусловлено децентрализованностью, в условиях которой сложно обеспечить уникальность человекочитаемых идентификаторов. Создание аккаунта представляет собой процедуру генерации пары ключей RSA, создание самоподписанного сертификата X.509v3 и вычисление хэша от этого сертификата.

Бинарные сборки Pica Pica доступны для Gentoo, Ubuntu 16.04 и Ubuntu 18.04, Windows и OS X. Разработка мобильного приложения для Android планируется в ближайшем будущем.

Конструктивная критика, финансовые пожертвования, участие в разработке и тестировании всячески приветствуются :)

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

лучший децентр месенджер это емейл

Детское порно убивает идею свободного общения

Дроны убивают не_легализацию наркотиков

Дитяче порно вбиває тероризм і наркотики :|

оу, флейтачатик
школьницы будут селфачиться внутрь? запишите в команду)

школьниц разглядывать, а разве нужно что-то еще?)

зачем мне с вами делиться школьницами )

ну, чтобы у вас в этом революционном продукте завелся хоть кто-то лол)

тогда приводите школьниц, я ж не против )

Не смотрел, но судя по описанию это не очень взлетит.
Есть несколько похожих проектов, например RetroShare.
Ну или старый добрый XMPP (Jabber) с федерацией. Wire Messanger тоже в копилку. В ZeroNet тоже есть месанджинг.
Проблем тут много, но основные:
1. Ноды поднимать никто не горит желанием.
2. Клиенты — без мобильного клиента под iOS он сразу никому не нужен. А ты поди попробуй пропихнуть что-то такое p2p в апстор. Там же тебя обяжут например банить порнуху.
3. Маркетинг — не важно какой классный у тебя протокол, ты попробуй сначала юзеров сюда загнать. Польза сети квадратична количеству её участников.

Ну а технически: можно было не писать свой клиент а сделать плагин для Pidgin и исходники на гитхаб закинуть и багтрекер туда же

кстати в телеге есть канал любителей такого, может они оценят
t.me/distributed

Клиенты — без мобильного клиента под iOS он сразу никому не нужен.

Там главная фишка в том, что написан на C++ под Qt, и всё пофиг.

выпущена версия 0.7.1
теперь клиент под Windows можно запускать на процессорах древнее поколения Intel Haswell :)

groups.google.com/...​a-development/e9eF0DCx6lc

openssl 1.1.0 пока не поддерживается, нужно собирать с openssl-1.0.2r

Отдельный ключ не нужен, openssl — это безусловная зависимость, без неё работать не будет. Ключи —with-foo, —without-foo делаются для опциональных зависимостей.

Нужно ставить -dev пакет с заголовочными файлами (в последних убунтах это libssl1.0-dev, нужно ставить вместо libssl-dev, который для версии 1.1.0), либо если openssl компилируется отдельно, нужно указывать пути явно через CPPFLAGS и LDFLAGS

./configure CPPFLAGS="-I/path/to/openssl/include" LDFLAGS="-L/path/to/openssl/lib"

Установил виндовую сборку, под Win10, запустил «pica-client.exe», и... ничего не происходит. Окно для создания аккаунта, как написано в документации — не появляется. Вообще ничего не появляется, логов никаких не нашёл. Что я делаю не так?

А какая конкретно версия Win10? В списках процессов pica-client нет?

Windows 10 Pro, v1803 (сборка 17134.472)
В списке процессов прога не появляется, похоже происходит какой-то фейл сразу же после загрузки. Это ничего, что в папке с прогой файл настроек называется «openssl.cnf», вместо «openssl.cfg»? Хотя переименование эффекта не дало. Ещё кстати у тебя там иконка 32×32, лучше бы сделал 256×256 с пинговым оверлеем.

Это ничего, что в папке с прогой файл настроек называется «openssl.cnf», вместо «openssl.cfg»?

Так и должно быть.

Хотя переименование эффекта не дало.

o_O не, ну наверное я бы сам заметил, если бы это было проблемой :) У других на Win10 всё работает. У OpenSSL просто такое название конфига по дефолту.

В общем, надо под отладчиком запускать и смотреть, в чём проблема. Или Sysinternals ProcessMonitor-ом смотреть, что там творится.

При первом запуске в домашней директории создаётся директория .pica-client/ , в ней SQLite база и ключи от аккаунтов хранятся. Она присутствует? На винде это обычно в C:\Users\username\.pica-client

А на каком процессоре запускается? :)

Я тут протестировал на одном немного древнем компе под виндой, при запуске программа падает с исключением, Illegal instruction — SHLX, оказывается Intel добавила новый набор инструкций BMI2, доступно начиная с семейства Haswell.

Скорей всего причина эта же. Придётся заново пересобирать с другими флагами :(

Это понятно. Кто мог подумать, что Intel-у приспичит в 32 битный набор инструкций ещё что-то новое добавлять.

А на каком процессоре запускается? :)

Core i7, памяти достаточно. Все инструкции — поддерживаются, включая AVX. У тебя подход как бы немного древний, начиная с того, что прога скомпилена под x86, а не под x64. Если скомпилил под x86, тогда как раз и нужно ориентироваться либо на древнее железо, соответственно на древнюю венду. Либо на планшеты с урезанными атомами. И того и другого вообще очень мало. Кроме того, прога заточена под Qt, которая устарела ещё лет 15 назад. На дворе сейчас 2019 год.

Кроме того, прога заточена под Qt, которая устарела ещё лет 15 назад. На дворе сейчас 2019 год.

Надо же, а разработчики Qt об этом не знают, новые версии выпускают :)

Надо же, а разработчики Qt об этом не знают, новые версии выпускают :)

Вот ты стартанул проект в 2007 году вроде бы. Я в этом 2007 году пилил один проект на джаве под GWT. В 2007 году GWT была передовой многообещающей прорывной технологией, которая позволяла делать полнофункциональное UI под веб такое же, как в десктопных приложениях. С тех пор GWT по ряду причин уже морально устарела, однако сам принцип получил распространение, развивается, и ajax на сегодняшний день лежит в основе практически любых технологий. Какое GWT c аяксом имеет отношение к Qt? Да никакого, это знаковое событие, означающее появление принципиально нового поколения и подхода в разработке. Понимаешь, сменилось поколение, так же как в своё время разработка консольных приложений морально устарело вместе со всеми библиотеками для этого, и была вытеснена разработкой приложений под венду. Изменилась архитектура, изменились подходы в разработке, изменились принципы дистрибьюции.

Предлагаешь делать на электроне? :P

Можно конечно заюзать электрон, можно подыскать другие варианты. В любом случае, браузеры специально заточены под UI, и никакие библиотеки контролов и рядом не могут стоять с возможностями html5 в плане разработки пользовательского интерфейса. А можно например вынести весь функционал в отдельный сервис, и создать возможность построения сети серверов.

Core i7, памяти достаточно. Все инструкции — поддерживаются, включая AVX.

Core i7 были и до Haswell, какое конкретно поколение?

На сегодня Matrix.org и его клиент Riot.im идут в правильном направлении.
Антон: имеется кроме Продукт ханта многие другие.
alternativeto.net
www.slant.co

Оно же на электроне! Как можно это добровольно ставить.
За ссылки спасибо, посмотрю

Вам электрон нужен или функционал? Какая разница на чем, если он удовлетворяет нужды.

Так а разница если свою функцию выполняет? Камаз это проблема разработчиков.

Это проблема перевозчика

Но вопрос то не в этом, пользователя либо устраивает либо не устраивает продукт, ему все равно что там под капотом, а вопрос был как раз про техническое исполнение

вы уже в такие дебри лезете, камазы, пиво, еда, и все ради того чтобы доказать что реакт нетив плохой продукт?

Ладно, придется видно таки влезть в этот спор, давайте по порядку, почему вы решили что продукт продукт который уже 2 года на рынке, если верить статистике нпм, за последнюю неделю он был использован 283 279 раз, а смотря на статистику npmtrends мы видим стабильный рост последние 2 года
www.npmtrends.com/react-native.

Неужели у этого продукта нет реально никаких преимуществ и весь рост популярности, это старания маркетологов, каждые последние два года навязывающие этот продукт? Мы ведь не видим резких скачков, рост популярности реакт нетив на графике плавный, значит это либо естественный рост, либо они регулярно прикладывают равномерные усилия для популяризации.

Итак
— Неужели у этого продукта нет реально никаких преимуществ?
— Что бы вы рекомендовали использовать вместо него, для разработки продукта аналогичного Riot.im?
— Что бы вы рекомендовали использовать для мейнстимной мобильной разработки в целом, оценивая цену, поддержку и юзабилити.

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

Насчет JS истерии, Node.js, а этом году 20 лет, ExpressJS уже больше 15 лет, Angular1 вышел более 10 лет назад, React более 5 лет.
Это не истерия а вытеснение старых решений новыми, конечно старые разработчики при этом активно сопротивляются.

Например, куда его суют, где ему не место?

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

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

а ТСу конечно крепких нервов и удачи немножко.

С точки зрения пользователя, включаю, запускается, работает. Знать не знаю что там внутри какой-то электрон.

Виктор, весь этот спор начался не из-за железа, не из-за каких то багов, а от того что кто-то категорически зарезал «раз электрон, значит говно», без уточнения задач, железа, технологий, а кто-то с ним согласился.

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

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

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

Классический вопрос, эту ситуацию кто-то давно уже описывал на доу, вопрос на собеседовании топ менеджера крупного холдинга, «ваш ребенок попал под машину, у вас встреча, куда поедите, на встречу или к ребенку».

Кому фантазии, а как вашему заказчику, когда завалиться проект от разраба которому «просто захотелось\незахотелось», По вашему это нормально когда эмоции преобладают над логикой в рабочем процессе?

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

а аналитика это развлечение не более? тут могу только в голос посмеяться, скинуть шутку нашему сеошнику что ли

Окей, как насчет одного из создателей и разработчика HTML Academy, если не ошибаюсь выступление называлось «Как я перестал верить технологиям», могу ошибаться, давно было, где он приводит пример как не завалил чуть весь проект HTML Academy именно потому что глаза горели и хотелось сделать круто

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

Таки да, Riot.im к сожалению на электроне, и конечно вся Матрикс-систем не такая шустрая как хотелось бы. Есть и другие клиенты на GO, C++ итд. но они не такие функциональные.

Разработчики платформы для децентрализованного обмена сообщениями Matrix объявили об экстренном отключении серверов Matrix.org и Riot.im (основной клиент Matrix) в связи со взломом инфраструктуры проекта
www.opennet.ru/...​nnews/art.shtml?num=50501

Чѣмъ лучше Jami (бывш. GNU Ring)?

Намедни пробовал с адроида на моб.огрызок этот Jami. Результат теста — удалили апп оба. Возможно с десктопа работает но без рабочей мобильной версии он не нужен. А вот риот работает на всем.

Не залежить ні від чого — підняв свій поштовий сервер — і вуаля.

почта не децентрализованная, почта федеративная. Если вывести из строя почтовый сервер, разделегировать домен и т.д., то на конкретный почтовый адрес больше никто не сможет написать. То же самое верно для Jabber/XMPP. У Pica Pica другая концепция, клиент не привязан к конкретной ноде, может использовать для связи любую доступную в данный момент ноду.

Мова йде не просто про чат, а про секурний і надійний чат.

1. Віправник-адресат відкриті. Закрите лише тіло мессаги. При бажанні завжди можна застосувати термокриптоаналізатора з передбачуваним результатом.

2. Ідентифікатори ненадійні. Емейли залежать від ДНС, який сам не дуже надійний.

Для секурності потрібно приховати одночасно:
1. тіла месаг
2. відправника-отримувача
3. сам факт комунікації
4. здатність особи використовувать безпечний зв’язок

— О, пацан, у тебя установлен «JBond» v0.0.7.11_2, давай, сам рассказывай, пока мы термокриптоанализатор не достали...

все остальные — ерунда
почта работает без днс, с секюрными идентификаторами(смотрим мейлисты) и так далее.
вопрос организации процесса

Chat
imap

dafuq

новий рівень красноглазія просто

Це щось типу Pidgin?
Якось мав справу з ним, жахлива штука

Подивився UI. Ні дядь, таке тільки для задротів проканає. Найми UI/UX-ера, хай тобі шось більш приємне для очей намалює.

Наскальная живопись — олдскул, а это..... )))

Є працюючий https://tox.chat/ Не ідеальний, з проблемами, але потроху розвивається https://blog.tox.chat/

Разработчики Tox изобрели собственный криптографический протокол, и это его главный фатальный недостаток. Он не проходил аудит безопасности, в отличие от TLS, который существует много лет, пережил несколько версий, обнаруженных уязвимостей и их исправлений.

Оно может быть сколь угодно плох, но он работает, имеет андроид клиент, и минимальное community (на том же reddit — около 2-3 тысяч)

я за телеграм, Паша не должен сливать ключи ФСБ

В телеграме есть деление на секретные и несекретные чаты, что в принципе неприемлемо, шифрование должно быть включено всегда по умолчанию

На продуктхант зразу давай.

Воу дядь, ну так не працює. Хочеш просувати свій продукт — гугли сам де і як це робити.

Сказано же — неспешной. Звонки и видео в планах есть, когда руки дойдут.

забил Ваш месс. в фавориты, как только звонки и видио будут — попробую. А пока риот.им

Оно на сайтике предлагает зарегистрироваться по e-mail-у, как-то не похоже на отсутствие сбора метаданных.

Но вообще да, скрытие метаданных это сложная тема. Как один из возможных вариантов решения, все участники могут непрерывно слать потоки зашифрованного мусора, случайных последовательностей байтов. С заданным фиксированным битрейтом и таймингами. А когда нужно передать сообщение, часть мусора заменяется полезной нагрузкой. Со стороны при мониторинге трафика ничего не меняется, обнаружить факт передачи становится затруднительно.

Но метод неудобный, затратный по трафику, скорее даже расточительный в плане нагрузки на сеть.

Можно взять любой мессенджер, да тотже слак и прикрутить к нему gpg

Можно. Можно и через фейсбук зашифрованные с помощью PGP тексты копипастить. Только кто так делает

Проще плагин написать для браузера который это будет делать

Теж за українську версію сайту!

Если кто-то сделает украинскую версию сайта, с удовольствием её добавлю. К сожалению, я не нэйтив спикер украинского.

Гит репы с контентом сайта нету. Могу дать аккаунт wordpress-а, с правами на редактирование

Зачем приват? Ставьте мессенджер и в месенджере ему пишите. Или зачем эта фигня тогда?

Підписатись на коментарі