Короткий ответ: файлы закрываются тем же шифром, которым банки закрывают
переводы, а государственные учреждения — секретные документы. Ниже — что
именно происходит и почему это надёжно.
Чем закрывается сам файл
Используется AES-256-GCM — это мировой стандарт, утверждённый
американским институтом стандартов (NIST) и принятый во всём мире. Число 256 —
это длина ключа в битах. Чтобы почувствовать масштаб: вариантов такого ключа
примерно 10 в 77-й степени — это единица с 77 нулями. Столько
же, сколько атомов во всей видимой Вселенной. Перебрать их нельзя ни за какое
разумное время, даже если задействовать все компьютеры на планете.
Буквы GCM в названии означают, что вместе с шифрованием считается
проверочный код на 128 бит. Если в зашифрованном файле
изменить хотя бы один бит — при расшифровке это сразу обнаружится, и файл
не откроется. Подменить содержимое незаметно невозможно.
Откуда берётся ключ
Ключ не хранится нигде — он каждый раз вычисляется заново из ваших чисел
PK и PK2. Приложение возводит одно число в степень с точностью
5000–7000 знаков после запятой и берёт из результата отрезок
длиной 40–60 цифр. Этот отрезок и есть основа ключа.
Дальше отрезок прогоняется через процедуру PBKDF2 с хеш-функцией
SHA-256, и не один раз, а 150 000 раз подряд. Это
сделано специально: каждая попытка подбора становится в 150 тысяч раз дороже.
Если обычный компьютер проверяет миллионы паролей в секунду, то здесь он
осилит всего несколько десятков.
К каждому файлу добавляется соль — 16 случайных байт и
вектор инициализации — 12 случайных байт. Из-за них два
одинаковых файла, зашифрованных подряд, дают совершенно разные результаты, и
по ним нельзя понять, что содержимое одно и то же.
Чем закрыт список контактов
Контакты лежат в папке в зашифрованном виде. Ключ к ним получается из вашего
мастер-пароля той же процедурой PBKDF2-SHA256, но с
120 000 повторов, и тоже с собственной случайной солью на
16 байт. Мастер-пароль нигде не сохраняется — ни в файле, ни на сервере.
Большие файлы
Файлы больше 256 МБ режутся на куски по 64 МБ, и каждый кусок
шифруется отдельно, со своим вектором инициализации и своей проверкой
целостности. Поэтому размер файла ничем не ограничен, а повреждение одного
куска не тянет за собой остальные.
Куда уходят ваши файлы
Никуда. Ни файлы, ни пароли, ни контакты не отправляются в
интернет — всё считается прямо на вашем устройстве. Приложение для компьютера
и телефона вообще работает без подключения к сети.
Что важно понимать
Надёжность держится на ваших числах PK и PK2: это и есть секрет. Передавайте
их собеседнику лично или через QR-код и звук, а не сообщением в мессенджере
вместе с файлом. Пароль от файла и сам файл всегда отправляйте разными путями.