Featured image of post Age шифрование

Age шифрование

Тестируем утилиту шифрования Age 1.0

Введение

Age – новейшая утилита, написанная на Go, которая по заверениям выполняет прекрасное потоковове ассиметричное шифрование и не только. По виду действительно простая и, мне лично, чем-то напоминает Wireguard (утилиту wg). Шифрует входоной поток в выходной. Просто и понятно. Из отличительных особенностей, можно зашифровать для группы получателей, так чтобы каждый мог расшифровать.
На повестке дня у меня нынче мысли о создании бекапов btrfs разделов с домашними фото\видео куда-то в облако, например в Backblaze, чтобы подешевле было. Вот только облакам доверия нет (никаким). Данные нужно шифровать. Раздел, допустим, 300 GiB и грузить его одним куском, да и хранить в целом, очень не интересно. Split поможет раздробить файл на куски.

Генерируем ключ

Утверждается, что можно просто SSH public key использовать, кроме ключа age. Попробуем и то, и то.

1
2
3
4
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

Получаем вот такие ключи.

1
2
age1qrcn5glms66thfv9cj5pzdwl3z87t9evzaqlxdj9ksravmw3mypswawuag
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIObk2OuhYlrr3ezvf5gAWXgUdcLn4XQFa8B8GCRpBr9q user@host

Шифрование

Для простоты, просто сгенерим 10 MiB со случайными данными и сразу сделаем копию, чтобы потом сравнить хеш-суммы.

1
2
dd if=/dev/urandom of=data bs=1M count=10
cp data data.orig

Теперь можно шифровать. Использую и архивацию, и разделение.

1
tar -cz data | age -R recipients.txt | split -b 1MiB -d - chunk-

Получаем 10 файлов от chunk-00 до chunk-10.

Расшифровка

Расшифруем используя SSH ключ.

1
2
cat chunk-* | age -d -i id_ed25519 | tar xz
mv data data.ssh

Расшифруем используя Age ключ.

1
2
cat chunk-* | age -d -i age.key | tar xz
mv data data.age

Проверка

Сверим Hash суммы.

1
2
3
4
# sha256sum data*
5ebc271a22cfb9af0430253c2d8f3b83d1c3f5fdd062dd0ecc6c1f2d7925b828  data.age
5ebc271a22cfb9af0430253c2d8f3b83d1c3f5fdd062dd0ecc6c1f2d7925b828  data.orig
5ebc271a22cfb9af0430253c2d8f3b83d1c3f5fdd062dd0ecc6c1f2d7925b828  data.ssh

Вроде работает. Как и всегда, позже найдут какие-то уязвимости, но использовать можно. Множественные адресаты это интересная особенность.

Licensed under Apache License, Version 2.0
Обновлено Dec 01, 2023 14:46 +0200
All rights reserved
Создано при помощи Hugo
Тема Stack, дизайн Jimmy