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)Если на вашем диске или 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)Создадим ключь из рандомных данных.
Примечания:
1) Для правильного отключения нашего зашифрованного диска, нужно ввести две команды: umount /mnt/data && cryptsetup close data и только после этого мы можем извлечь наш диск или флешку. Ввод второй команды необходим, так как cryptsetup хранит ваш ключ в оперативной памяти, опция close удалит его из памяти.
2)Если вы планируете использовать только файлы ключей для расшифрования, то лучше оставить один «резервный» пароль. Файлы имеют свойство теряться
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
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.