AEAD шифрование/дешифрование файлов

Шифрование файла паролем: AES-256-GCM или (X)ChaCha20-Poly1305 с Argon2id, и обратная расшифровка. Файлы не покидают браузер.

Введённые данные и файлы остаются в браузере

Шифрование

Файл

Большие файлы обрабатываются чанками в браузере.

Чем больше памяти и проходов, тем медленнее подбор пароля, но шифрование и расшифровка дольше и требуют столько же памяти. Параметры сохраняются в файле, при расшифровке они подставляются сами.

Дешифрование

Файл
Используется пароль из панели шифрования.
Вывод

Выберите файл и пароль, затем зашифруйте или расшифруйте — итоговый файл и его заголовок появятся здесь.

Результат
Заголовок
На этой странице

AEAD шифрование/дешифрование файлов защищает файл паролем с помощью аутентифицированного шифрования (AES-256-GCM, ChaCha20-Poly1305 или XChaCha20-Poly1305) и возвращает исходный файл обратно. Всё происходит в браузере: ни файл, ни пароль никуда не загружаются.

Подробное описание функциональности

Пароль растягивается Argon2id (64 МиБ памяти, 3 прохода) со случайной 16-байтной солью в 256-битный ключ, поэтому перебор паролей медленный даже на мощном железе. Затем модуль на Rust/WebAssembly шифрует файл блоками по 1 МиБ; у каждого блока свой nonce (случайный префикс плюс счётчик блока) и 16-байтный тег аутентификации. Полоса прогресса показывает скорость и оставшееся время, Отмена останавливает работу между блоками.

Вывод ключа (Argon2id) задаёт стоимость: лёгкий, стандартный (по умолчанию), усиленный, максимальный (1 ГиБ, для компьютера) или свои память, проходы и потоки. Чем выше стоимость, тем во столько же раз медленнее подбор пароля — и каждое шифрование и расшифровка. Нестандартные параметры записываются в аутентифицируемый заголовок (на 9 байт длиннее), поэтому для расшифровки по-прежнему нужен только пароль; значения ниже минимума OWASP помечаются предупреждением.

Результат — контейнер .aead в формате MDT3: заголовок 35 байт (47 для XChaCha20) с алгоритмом, солью и префиксом nonce, за ним блоки. Заголовок и флаг «последний блок» аутентифицируются вместе с каждым блоком, поэтому неверный пароль, любой изменённый байт, переставленные блоки, обрезанный файл (даже ровно по границе блока) и дописанные в конец данные отклоняются, а не превращаются в испорченный результат. Алгоритм читается из заголовка — для расшифровки нужен только пароль.

Контейнеры, созданные прежними версиями инструмента (MDT2), по-прежнему расшифровываются; этот старый формат не замечает обрезку ровно по границе 1 МиБ, и инструмент сообщает об этом после расшифровки. Пароль используется ровно как введён; для старых файлов дополнительно пробуется пароль без пробелов по краям, потому что прежние версии их обрезали. Зашифрованный или расшифрованный файл собирается в памяти до скачивания, поэтому практический предел размера — объём RAM устройства.

Практические примеры

Шифрование перед загрузкой в облако: report.pdf (2,5 МиБ) с AES-256-GCM превращается в report.pdf.aead — 2,5 МиБ плюс заголовок 35 байт плюс 3 × 16 байт тегов. Поле Заголовок начинается с 4d445433 — это ASCII-байты MDT3.

Расшифровка на другом компьютере: откройте инструмент, выберите report.pdf.aead в панели дешифрования, введите тот же пароль и скачайте report.pdf. Файл без расширения .aead сохраняется с добавленным .dec.

Прерванная передача: если дошли только первые 2 МиБ файла report.pdf.aead, расшифровка остановится с ошибкой «Не удалось расшифровать: неверный пароль либо файл повреждён или изменён» вместо выдачи укороченного PDF.

Пустой файл: из файла в 0 байт получается контейнер 51 байт (заголовок и один аутентифицированный пустой блок), так что даже опустошённый контейнер будет замечен.

Как использовать этот инструмент

  1. Выберите файл для шифрования

    В панели Шифрование нажмите Выбрать файл под полем Файл.

  2. Выберите алгоритм и пароль

    Выберите Алгоритм (по умолчанию AES-256-GCM) и введите Пароль. Если он начинается или заканчивается пробелом, появится подсказка — пробелы учитываются.

  3. Зашифруйте и скачайте

    Нажмите Зашифровать файл, дождитесь окончания прогресса и нажмите Скачать, чтобы сохранить <имя>.aead.

  4. Расшифруйте позже

    В панели Дешифрование выберите файл .aead, введите тот же пароль в поле выше, нажмите Расшифровать файл, затем Скачать.

Советы и лучшие практики

  • Восстановления пароля нет: если пароль потерян, файл не расшифрует никто, включая этот инструмент.
  • Длинная парольная фраза лучше короткого «сложного» пароля; Argon2id замедляет перебор, но не спасёт 123456.
  • XChaCha20-Poly1305 использует 128-битный случайный префикс nonce — выбирайте его, если шифруете очень много файлов одним паролем.
  • «Неверный пароль» и «файл изменён» намеренно дают одну и ту же ошибку: проверка тега их не различает.
  • Зашифруйте старый файл MDT2 заново, чтобы перевести его в MDT3 и получить обнаружение обрезки.
  • После первого открытия страница работает и без сети.