Age шифрование
Тестируем утилиту шифрования Age 1.0
Age – новейшая утилита, написанная на Go, которая по заверениям выполняет прекрасное потоковове ассиметричное шифрование и не только. Шифрует входной поток в выходной, просто и понятно. Из отличительных особенностей, можно зашифровать для группы получателей, так чтобы каждый мог расшифровать.
Данные нужно шифровать. Раздел, допустим, 300 GiB и грузить его одним куском, да и хранить в целом, очень не интересно. Split поможет раздробить файл на куски.
Генерируем ключ
Утверждается, что можно просто SSH public key использовать, кроме ключа age. Попробуем и то, и то.
ssh-keygen -t ed25519 -o -a 150 -qN '' -f id_ed25519 age-keygen -o age.key age-keygen -y age.key> recipients.txt cat id_ed25519.pub>> recipients.txt
Получаем вот такие ключи.
age1qrcn5glms66thfv9cj5pzdwl3z87t9evzaqlxdj9ksravmw3mypswawuag
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIObk2OuhYlrr3ezvf5gAWXgUdcLn4XQFa8B8GCRpBr9q user@host
Шифрование
Для простоты, просто сгенерим 10 MiB со случайными данными и сразу сделаем копию, чтобы потом сравнить хеш-суммы.
dd if=/dev/urandom of=data bs=1M count=10 cp data data.orig
Теперь можно шифровать. Использую и архивацию, и разделение.
tar -cz data | age -R recipients.txt | split -b 1MiB -d - chunk-
Получаем 10 файлов от chunk-00 до chunk-10.
Расшифровка
Расшифруем используя SSH ключ.
cat chunk-* | age -d -i id_ed25519 | tar xz mv data data.ssh
Расшифруем используя Age ключ.
cat chunk-* | age -d -i age.key | tar xz mv data data.age
Проверка
Сверим Hash суммы.
# sha256sum data*
5ebc271a22cfb9af0430253c2d8f3b83d1c3f5fdd062dd0ecc6c1f2d7925b828 data.age
5ebc271a22cfb9af0430253c2d8f3b83d1c3f5fdd062dd0ecc6c1f2d7925b828 data.orig
5ebc271a22cfb9af0430253c2d8f3b83d1c3f5fdd062dd0ecc6c1f2d7925b828 data.ssh
Вроде работает. Как и всегда, позже найдут какие-то уязвимости, но использовать можно. Множественные адресаты это интересная особенность.