Мес­сен­джер без собс­твен­ных сер­веров, без номера телефо­на, без при­вяз­ки к обла­ку — и при этом с end-to-end-шиф­ровани­ем из короб­ки. Delta Chat работа­ет поверх обыч­ной элек­трон­ной поч­ты: сооб­щения идут по IMAP и SMTP, но шиф­руют­ся через OpenPGP. Сна­ружи — при­выч­ный чат с кон­такта­ми, груп­пами и мгно­вен­ной дос­тавкой. Внут­ри — нет­риви­аль­ная связ­ка крип­тогра­фии, про­токо­лов рукопо­жатия и жес­тких огра­ниче­ний на фор­мат пакетов.
 

Быстрый старт

При­ложе­ние качай с офи­циаль­ного сай­та — есть вер­сии для Android, iOS, Windows, macOS и Linux. При пер­вом запус­ке дос­таточ­но ввес­ти имя поль­зовате­ля — поч­товый акка­унт соз­дас­тся авто­мати­чес­ки на сер­вере chatmail. При желании мож­но под­клю­чить собс­твен­ный акка­унт Gmail или «Яндекса».

 

Система релеев

Из­началь­но Delta Chat задумы­вал­ся как мес­сен­джер поверх любого поч­тового сер­вера, но на прак­тике это при­вело к проб­лемам:

  • спам‑филь­тры уда­ляли зашиф­рован­ные сооб­щения;
  • сер­веры огра­ничи­вали чис­ло пересы­лок в час;
  • сер­веры собира­ли метадан­ные;
  • ре­гис­тра­ция тре­бова­ла номер телефо­на;
  • при пересыл­ке ломались заголов­ки.

Вдо­бавок, если про­вай­дер заб­локиру­ет кон­крет­ный сер­вер, ты фак­тичес­ки лишишь­ся дос­тупа к сво­ему акка­унту. В ответ на эти огра­ниче­ния появи­лись relay-сер­веры.

По фак­ту релей — это час­тный поч­товый сер­вер, обыч­но на базе chatmail. Любой жела­ющий может арен­довать VPS на Linux, купить домен и за счи­таные минуты раз­вернуть свой релей.

Delta Chat под­держи­вает multi-relay: один акка­унт может иметь нес­коль­ко адре­сов на раз­ных реле­ях. Собесед­ник при получе­нии сооб­щения видит все твои адре­са и отве­чает на каж­дый из них.

Это соот­ветс­тву­ет идее федера­тив­ного устрой­ства сети — у чата нет еди­ной точ­ки отка­за. Если пуб­личные сер­веры ста­нут недос­тупны, обще­ние про­дол­жится через час­тные релеи.

 

Пишем свой клиент

Вмес­то того что­бы раз­бирать­ся в мегабай­тах докумен­тации, которая час­то рас­ходит­ся с реали­заци­ей, я поп­росил Claude соб­рать минималь­но работа­ющий кли­ент на чис­том Python, све­ряясь с исходни­ками Delta Chat. Иде­аль­ная задача для ИИ: исходни­ки откры­ты, резуль­тат лег­ко про­веря­ется — либо сооб­щение дош­ло и рас­шифро­валось, либо нет.

Для работы нуж­ны два репози­тория:

  • deltachat-core-rust — ядро Delta Chat на Rust. Здесь реали­зова­на вся крип­тогра­фия (через rPGP), про­токол SecureJoin, работа с IMAP и SMTP, фор­мат сооб­щений;
  • chatmail — сер­верная часть chatmail-реле­ев. Здесь вид­но, как сер­вер филь­тру­ет сооб­щения (filtermail), какие пакеты при­нима­ет, а какие откло­няет.

За­дача — соб­рать кли­ент, у которо­го есть три фун­кции:

  1. Ре­гис­тра­ция — соз­дать акка­унт на chatmail-сер­вере и сге­нери­ровать ключ PGP.
  2. До­бав­ление кон­такта и отправ­ка — отпра­вить сооб­щение пер­вым.
  3. Эхо‑бот — при­нимать вхо­дящие сооб­щения, рас­шифро­вывать и отве­чать на них.

Ес­ли все три сце­нария работа­ют — кли­ент отправ­ляет, при­нима­ет, шиф­рует и рас­шифро­выва­ет, — зна­чит, про­токол понят вер­но. Пос­ле это­го раз­бира­ем по­лучен­ный код вруч­ную.

 

Регистрация

python -m pydeltachat.tests.register
python -m pydeltachat.tests.register --name "My Bot" --domain nine.testrun.org

Скрипт соз­дает новый chatmail-акка­унт с клю­чом PGP, сов­мести­мым с Delta Chat.

 

Создание аккаунта

По умол­чанию исполь­зует­ся релей nine.testrun.org. Скрипт генери­рует слу­чай­ные credentials: 9-сим­воль­ный username и 50-сим­воль­ный пароль из [a-zA-Z0-9] через secrets.choice — крип­тогра­фичес­ки стой­кий ГПСЧ.

Chatmail-сер­веры реали­зуют instant onboarding: отдель­ной регис­тра­ции нет — акка­унт соз­дает­ся авто­мати­чес­ки при пер­вом IMAP-логине. Скрипт под­клю­чает­ся к сер­веру по IMAP4 SSL, выпол­няет LOGIN — и акка­унт готов.

 

Генерация ключа PGP

Скрипт генери­рует ключ OpenPGP v4, сос­тоящий из двух час­тей.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    1 Комментарий
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии