tird
- инструмент для шифрования файлов, сфокусированный на минимизации метаданных и сокрытии зашифрованных данных. Предназначен для использования на современных персональных компьютерах. Написан на Python. Код открыт под 0BSD.
Для шифрования используется ChaCha20-IETF.
Для key stretching и выведения ключей используется Argon2id с 1 GiB памяти и с 4 проходами.
Для аутентификации используется keyed BLAKE2b-512.
Входными ключевыми материалами могут быть:
- Пароли;
- Ключевые файлы (в тоом числе блочные устройства и целые директории).
Зашифрованные данные имеют формат PURB (padded uniform random blob) - неотличимы от случайных, имеют рандомизировавнный размер.
Минимизация метаданных:
- PURB формат - невозможно доказать наличие зашифрованных данных без ключей, неизвестны параметры и структура файла, скрыт настоящий размер полезной нагрузки.
- Путь к выходному файлу не зависит от пути к входному, не имеет стандартного расширения, определяется пользователем.
- Интерфейс в виде диалога с юзером, основанный на подсказках. CLI параметры не протекают в shell history.
- Опционально: данные можно встроить в другой файл и устройство, сделав их недетектируемыми, а их наличие недоказуемым.
Построение скрытой ФС, управляемой пользователем:
Зашифрованные данные можно записывать в контейнеры, указав начальную позицию (отступ в байтах от начала контейнера). В качестве контейнеров могут выступать специально сгенерированные файлы, съемные устройства (пустые или полупустые диски), разделы с LUKS. Дело в том, что загловок FAT32/exFAT ФС расположен в начале раздела, а контент записываемых файлов пишется от начала в конец последовательно. Таким образом, на свежеотформатированной ФС можно сделать отступ от начала и записывать наши данные, запомним их расположение для последующего извлечения.
Далее: смотрите домашнюю страницу https://github.com/hakavlad/tird
Вопросы приветствуются.