Как мы защищаем ваши фото
Редакция от 25 сентября 2026 года · English
Коротко: фото и видео шифруются на вашем устройстве до отправки, ключ не попадает на наш сервер, и без ключа файлы не может открыть никто — включая нас. Ниже — как это устроено: сначала простыми словами, потом подробности для специалистов и честно — чего шифрование не делает.
Простыми словами
- Ключ создаётся на вашем телефоне. Это 256 случайных бит. Он хранится в вашем аккаунте Telegram (в облачном хранилище мини-приложения) и на самом устройстве. На сервер My Albums он не отправляется ни при каких действиях.
- Шифруется всё, что говорит о снимке: сами фото и видео, подписи, отмеченные люди, даты и место съёмки, отпечатки лиц для подсказок, названия альбомов. Поиск работает на телефоне — запросы на сервер не уходят.
- Код восстановления — это и есть ключ. Приложение показывает его при первом входе. Запишите его на бумагу и никому не показывайте, в том числе поддержке. Если потерять и код, и аккаунт Telegram, фото не вернёт никто.
- Секретный альбом заперт отдельным паролем. Этого пароля нет ни у нас, ни в Telegram: разблокированный телефон в чужих руках альбом не откроет. Забытый пароль восстановить нельзя.
- Общий альбом шифруется своим ключом, а не вашим основным. Поделившись им, вы открываете только этот альбом, а не всю библиотеку.
Что видит наш сервер, а что — нет
| Видит | Не видит |
|---|---|
| Ваш номер (ID) и имя в Telegram, язык | Сами фото и видео |
| Сколько у вас файлов, их размер, фото это или видео, когда загружены | Подписи, даты и место съёмки |
| Тариф и платежи звёздами | Отмеченных людей и отпечатки лиц |
| В общих альбомах: кто участник и с какой ролью, кто что загрузил, кто поставил реакцию | Названия альбомов, сами реакции, поисковые запросы |
| Что вы загрузили один и тот же файл повторно — так работает защита от дубликатов | Ваш ключ, код восстановления, пароли секретных альбомов |
Честно: чего шифрование не делает
- Код приложения приходит с нашего сервера. Так устроено любое веб-приложение со сквозным шифрованием: в теории взломанный сервер мог бы отдать подменённый код. Что мы делаем: на странице приложения разрешены только наши скрипты и скрипт Telegram; раз в час файлы, которые сервер реально отдаёт, сверяются с опубликованной версией; код открыт и читаем — проверьте сами; готовим независимый аудит.
- Ключ хранится в вашем аккаунте Telegram. Кто получит доступ к вашему Telegram, получит и ключ. Включите в Telegram облачный пароль — двухэтапную проверку.
- «Прислать себе в чат» на Android. Telegram на Android не даёт сохранить файл из мини-приложения, поэтому по вашему нажатию файл уходит расшифрованным через наш сервер в ваш чат с ботом. Сервер его не сохраняет, а в чате он хранится у Telegram без шифрования.
- Разблокированный телефон. Если у постороннего в руках ваш открытый телефон с Telegram, он увидит библиотеку. Для самого личного — секретные альбомы.
Для специалистов
- Шифрование — стандартный WebCrypto браузера: AES-256-GCM, случайный 96-битный IV. Большие файлы шифруются кусками по 1 МиБ: у каждого куска свой IV, а номер куска и заголовок файла входят в проверяемые данные (AAD) — кусок нельзя переставить, подменить или незаметно обрезать.
- Секретные альбомы: случайный ключ альбома завёрнут ключом из пароля — PBKDF2-HMAC-SHA256, 300 000 итераций, соль 128 бит.
- Общие альбомы: у каждого пользователя пара ключей ECDH P-256; закрытая половина хранится на сервере только зашифрованной основным ключом. Ключ альбома участнику передаётся по схеме ECIES (ECDH + HKDF-SHA256 + AES-256-GCM). Подмену ключа сервером видно по коду безопасности, который совпадает на экранах владельца и участника. Гостям по ссылке ключ альбома отдаётся запертым случайным 80-битным кодом (PBKDF2); код передаётся отдельно от ссылки и на сервер не попадает.
- Метки дубликатов: HMAC-SHA256 от содержимого файла ключом, производным от вашего; по метке содержимое не восстановить.
- Вход: подпись данных Telegram (HMAC-SHA256) проверяется на сервере; сессия живёт 12 часов, на сервере хранится только хеш её токена.
- Страница приложения: Content-Security-Policy (скрипты — только наши и Telegram), HSTS, Referrer-Policy: no-referrer. Файлы хранятся в Cloudflare R2 (европейский регион), ссылки на скачивание подписаны и живут 10 минут.
- Всё шифрование — в одном файле: crypto.js.
Проверки и сообщения об уязвимостях
Как проверить шифрование самому — четыре способа, от простого к дотошному. Мы готовим независимый аудит кода и опубликуем его отчёт на этой странице.
Нашли уязвимость? Напишите @MyAlbums_support или на [email protected] — разберёмся и исправим, а с вашего согласия поблагодарим здесь.
