Cryptsetup(LUKS)
Не буду заострять внимание на истории данной прогруммы, всё самое нужное есть на wiki (https://ru.wikipedia.org/wiki/LUKS), так что будет коротко и по делу )
В данной статье будет рассмотрена тема шифрования дисков при помощи утилиты cryptsetup и в частности при помощи LUKS с возможностью удаления информации из зашифрованного диска или LVM.
Данная программа была протестирована на Kali Linux, пакет cryptsetup был взят из дистрибутива kali linux, в качестве носителя жеский биск WD Blue 320Gb
Примечание: На debian, при попытке собрать данную утилиту, функция nuke категорически отказывалась работать, в итоге пришлось её добавлять на kali linux. Можете попытаться собрать cryptsetup с данной опцией, может вам повезёт больше Ссылка на инструкцию по установке:http://www.kali.org/how-to/emergency-self-destruction-luks-kali/
1. Подготовка.
1)Если на вашем диске или lvm уже есть какая-то информация, то её необходимо бэкапировать, так как все данные будут уничтожены. 2)Теперь приступим к шифрованию нашего носителя:
cryptsetup -c aes -s 256 luksFormat /dev/sdb
Are you sure? (Type uppercase yes): YES(В верхнем регистре)
Enter LUKS passphrase: вводим наш придуманный пароль
Verify passphrase:
Command successful
Примечаение: лучше создайте пароль состоящий минимум из 20 символов, далее в статье обьясню для чего это понадобится.
Рассмотрим основные опции.
с - выбираем алгоритм шифрования из доступных. (Список доступных алгоритмов можно узнать cat /proc/crypto)
s - длинна нашего ключа
luksFormat - он и в Африке luksFormat
/dev/sdb - наш «подопытный».
Полный список всех команд можно получить в мануале cryptsetup.
3)Теперь нам необходимо подключить зашифрованный диск и создать на нём файловую систему.
cryptsetup luksOpen /dev/sdb data и вводим наш пароль. После того, как мы подключили наш диск в директории /dev/mapper/ появится ссылка data которая ссылается на блочное устройство dm-0, после этого уже можно создать на нём файловую систему. mkfs.ext3 /dev/mapper/data
4)Теперь уже можно примонтировать наш диск.
mount /dev/mapper/data /mnt/data
Диск готов к работе. Всё элементарно и просто.
2)Работа с ключами.
Наш зашифврованный диск имеет 8 слотов от 0 до 7, т.е. для его расшифрования возможно создать 8 ключей (ключь может быть парольной фразой или файлом, всё на ваш вкус и цвет). Для просмотра сведений о нашем диске введём команду:
cryptsetup luksDump /dev/sdb
Теперь мы можем узнать такую информацию как алгоритм шифрования, длинну ключа, свободные и занятые слоты ключей, информацию о ключах об используемых ключах, uuid нашего устройства и много чего другого. Краткую справку о нашем зашифрованном диске можно получить, если ввести команду:
cryptsetup status data
Пароль для дэшифрования, это конечно хорошо, но так же мы можем создать файл с ключём, что будет весьма удобнее, чем каждый раз вводить этот длинный пароль.
1)Создадим ключь из рандомных данных.
dd if=/dev/random of=$HOME/data.key bs=1 count=256
2) Добавим наш ключ.
cryptsetup luksAddKey /dev/sdb $HOME/data.key
Воодим пароль от ключа из слота 0.
3)Теперь проверяем, что наш ключь был добавлен в слот.
cryptsetup luksDump /dev/sdb
И теперь мы должны увидеть то, что Key Slot 1 имеет статус ENABLED
4)Теперь для дешифрования нашего диска нужно использовать команду:
cryptsetup -d $HOME/data.key luksOpen /dev/sdb data
Примечания:
1) Для правильного отключения нашего зашифрованного диска, нужно ввести две команды: umount /mnt/data && cryptsetup close data и только после этого мы можем извлечь наш диск или флешку. Ввод второй команды необходим, так как cryptsetup хранит ваш ключ в оперативной памяти, опция close удалит его из памяти.
2)Если вы планируете использовать только файлы ключей для расшифрования, то лучше оставить один «резервный» пароль. Файлы имеют свойство теряться
5)Для удаления ключей нужно ввести:
5.1) Для удаления файла: cryptsetup –key-slot 1 -d $HOME/data.key luksRemoveKey /dev/sdb
5.2) Для удаления пароля: cryptsetup luksRemoveKey /dev/sdb и ввести тот пароль, который вы хотите удалить.
3.Ключ для инучтожения (Nuke).
Для добавления пароля:
cryptsetup luksAddNuke /dev/sdb
вводим наш основной пароль и позже вводим пароль для уничтожения
Теперь, если кто-нибудь введёт данный пароль, то все данные будут уничтожены а пользователь получит сообщение:
No key available with this passphrase.