Перейти к содержанию
Me2eM

E2EE-мессенджер

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

Канонический X3DH — OTK обязателен Ключ на сообщение, ротация эпох Конверты для офлайн Идентичность восстанавливается из seed

Что можно построить

End-to-end encrypted messenger на audited primitives: key agreement, которое следует specification Signal, channels, где каждое сообщение получает свой key, и delivery до recipients, которые не были online днями. Account — это Handle, выведенный из seed пользователя — без registration, без account database, та же идентичность на каждом устройстве.

Как это работает

Каждая сторона публикует PreKeyBundle; initiator запускает X3DH против него и обе стороны выводят тот же channel. Envelopes wrap message keys для offline recipients.

flowchart LR
    A["@alice: PreKeyBundle"] --> X[X3DH: OTK consumed]
    B["@bob: PreKeyBundle"] --> X
    X --> C["Channel: per-message HKDF keys, epoch rotation"]
    C --> M["Envelopes for offline peers"]
const x3dh = await initiateX3DH(aliceIdentity, theirPreKeyBundle);
const channel = await establishChannel(x3dh.sharedSecret, 'chat-42');
const msg = await encryptChannelMessage(channel, 0, plaintext);

Бенефиты

  • Канонический X3DH. OTK consumption обязательна — no zero-fallback; SPK signature verification защищает от MITM.
  • Forward secrecy на rotation points. Epoch rotation стирает предыдущий material; per-message keys и strictly-increasing replay protection покрывают всё между ними.
  • Offline delivery. Envelopes self-contained и replay-guarded by OTK consumption.
  • Seed-recoverable identity. Второе устройство выводит ту же идентичность из seed alone — без sync service.

Компромиссы

  • Нет message-level forward secrecy пока. Double Ratchet на roadmap crypto package; today’s guarantee — на rotation points.
  • Pre-key infrastructure. Bundles должны быть published и stored для asynchronous delivery.
  • Alpha. Package APIs are pre-1.0; pin versions.

Ссылки

Вашего сценария здесь нет?

Термины протокола доменно-нейтральны — новые сценарии ложатся на те же примитивы. Начните с quick start или прочтите, как аттестации несут делегируемое доверие.