← Все проекты
Capsule
Асинхронный голосовой мессенджер со сквозным шифрованием. Вы говорите — собеседник читает одну строку.
- 3языка: Kotlin, Rust, Go
- RFC 9420сквозное шифрование MLS
- 0 Бсодержимого в пушах
- Задача
- Голосовое общение без давления: отправитель говорит сколько нужно, получатель сразу видит суть и слушает, когда удобно.
- Статус
- Работает полноценно, закрытая бета со знакомыми и друзьями.
- Что сделано
- Android-клиент, сервер на Go + PostgreSQL, собственная спецификация протокола.
Идея
Голосовые сообщения удобно записывать и неудобно слушать. Capsule расшифровывает речь и выделяет суть прямо на телефоне. Получатель читает одну строку, а аудио слушает позже, если нужно.
Путь голосового сообщения
- ГолосЗапись 0:42
- РасшифровкаРечь в текст на устройстве
- СутьОдна строка, тоже на устройстве
- ШифрованиеДо отправки, ключи только у участников
- СерверХранит и доставляет, но прочитать не может
- ПолучательРасшифровывает и читает одну строку
Сервер не должен читать переписку
- Проблема
- Мессенджеру нужен сервер для доставки, но любые данные на сервере могут утечь.
- Решение
- Сквозное шифрование по протоколу MLS: Rust-библиотека mls-rs подключена к Android через uniffi.
Сервер видит только зашифрованные данные, упорядочивает изменения группы, удаляет уже доставленные сообщения и шлёт пуши без содержимого. Локальная база на телефоне тоже зашифрована, через SQLCipher.
Расшифровка речи без облака
- Проблема
- Чтобы выделить суть голосового, нужно распознать речь. Отправлять аудио на внешний сервис значит сломать сквозное шифрование.
- Решение
- Распознавание и выделение сути работают на устройстве.
Аудио и текст не покидают телефон. Сейчас я улучшаю модель выделения сути.