Техническая спецификация · для разработчиков
E2EE v1
Черновик спецификации. Цель — чтобы независимая реализация могла обменяться сообщениями с Meeter, не читая их на сервере.
1. Ключи устройства
identityKey— долговременный X25519 (Ed25519 для подписи).signedPreKey— X25519 + подпись identity.oneTimePreKeys— пачка X25519, выдаётся по одному.- Публичный бандл: identity, signed prekey + подпись, N one-time prekeys.
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. Комната и медиа
- Ключ комнаты — 32 случайных байта в
#k=<base64url>ссылки; допуск даёт invite-token, а#k=— только ключ шифрования. Сервер получает производную для проверки пароля, но не сам ключ. - Key material (salt/epoch/keyId) передаётся через сигналинг; SFU ретранслирует.
- Аудио/видео шифруются Insertable Streams (SFrame-подобный формат: заголовок + nonce + AES-GCM); сервер видит шифротекст.
- Fail-closed: кадр без ключа/ошибки не отправляется.
6. Тестовые векторы
Тестовые векторы и фиксация форматов готовятся. До публикации спецификация не считается стабильной; о расхождениях сообщайте на security@meeter.me.
MEETER / DOCS