← К документацииMEETER / DOCSEN

Техническая спецификация · для разработчиков

E2EE v1

← Публичный обзор шифрования

Черновик спецификации. Цель — чтобы независимая реализация могла обменяться сообщениями с Meeter, не читая их на сервере.

1. Ключи устройства

GET /v1/keys/bundle/{wallet} отдаёт бандл; приватные ключи не покидают устройство.

2. Установление сессии (X3DH)

Отправитель: DH(identityA, signedPreKeyB), DH(ephemeralA, identityB), DH(ephemeralA, signedPreKeyB), DH(ephemeralA, oneTimePreKeyB). Общий секрет → HKDF → root/key. Первое сообщение несёт isX3DH=true, ephemeralPub, senderIdentityKey, oneTimePreKeyId, dhRatchetKey, previousCounter, senderKeyId.

3. Конверт сообщения

{
  "version": 1,
  "type": 1,
  "senderKeyId": "…",
  "ciphertext": "base64",
  "iv": "base64",
  "ephemeralPub": "base64",
  "senderIdentityKey": "base64",
  "isX3DH": true,
  "oneTimePreKeyId": 123,
  "dhRatchetKey": "base64",
  "previousCounter": 0
}

type: 1 — текст, 2 — файл/медиа, 0x54 — приглашение на встречу, и т.д. Сервер не интерпретирует ciphertext; размеры и время — метаданные.

4. Группы

Sender keys: участник рассылает свой sender key каждому через E2EE; сообщения подписаны/зашифрованы sender key. Сервер видит senderKeyId, конверт и метаданные. Новый участник получает ключ отправителя через E2EE-сообщение.

5. Комната и медиа

6. Тестовые векторы

Тестовые векторы и фиксация форматов готовятся. До публикации спецификация не считается стабильной; о расхождениях сообщайте на security@meeter.me.