kas писал(а): 31 мар 2026, 01:19
Распишешь подробнее работу с ключами? А от у меня как-то не складывается. Например где взять/хранить ключ от базы с ключом
Если копируем мессенджер тамтам, то можно немного от телеги взять. Это не стремно, брать проверенные решения и допиливать:
"1. Секретные чаты (End-to-End Encryption)
Для таких чатов используется протокол MTProto 2.0 со сквозным шифрованием.
Генерация: Ключи создаются непосредственно на устройствах собеседников с использованием протокола обмена Диффи-Хеллмана.
Хранение: Закрытый ключ (decryption key) хранится исключительно во внутренней памяти приложения на Android. Он привязан к конкретному устройству и сессии: если вы выйдете из аккаунта (Log Out) или удалите приложение, ключ будет безвозвратно удален, и прочитать секретный чат станет невозможно.
Идентификация: Пользователи могут сравнить визуальные изображения (хэши ключей) в профиле чата, чтобы убедиться в отсутствии атаки «человек посередине» (MITM).
2. Облачные чаты (Client-Server Encryption)
Стандартные переписки используют шифрование «клиент-сервер».
Ключи сессии: На устройстве хранятся временные ключи для авторизации и шифрования трафика между приложением и сервером Telegram.
Серверное хранение: Основные ключи расшифровки самих сообщений распределены по разным дата-центрам в разных юрисдикциях. Это сделано для того, чтобы ни одно правительство не могло получить доступ к данным без международного судебного ордера.
3. Ключи доступа (Passkeys) — Новая функция
Telegram также поддерживает системные Passkeys для входа без СМС.
Где хранятся: На Android эти ключи сохраняются в системном «Менеджере паролей Google» или другом менеджере паролей, поддерживаемом ОС.
Безопасность: Доступ к ним защищен биометрией (отпечаток, лицо) или PIN-кодом самого устройства.
4. Особенности локального хранения на Android
База данных: Telegram хранит историю переписки в базе данных SQLite. По умолчанию локальная копия данных на Android не зашифрована сквозным методом, но защищена стандартными механизмами песочницы Android (другие приложения не имеют к ней доступа).
Код-пароль: Если в настройках Telegram включен «Код-пароль» (Passcode), приложение использует его для дополнительного шифрования локальной базы данных."