Когда для Kali Linux был представлен патч LUKS nuke и добавлен в пакет cryptsetup в Kali Linux, это вызвало большую дискуссию. Следует лучше объяснить эту возможность, а также продемонстрировать некоторые полезные достижения, о которых стоит знать.
LUKS Nuke в Nutshell
Когда создаётся зашифрованный LUKS контейнер, генерируется рандомный мастер-ключ. В свою очередь ключевая фраза тогда используется для шифрования мастер ключа. Этот процесс означает, что ключевая фраза не прямо соответствует данным. То есть, если два набора идентичных данных шифруются и используется одна и та же ключевая фраза, мастер-ключ остаётся уникальным для каждого набора и не может быть заменён. Это означаете, что независимо от используемой ключевой фразы, если мастер-ключ потерян, восстановление данных невозможно. Этот процесс обычно используется для стирания дисков посредством уничтожения ключей.
Пример использования LUKS Nuke
Наша главная цель в представлении этой функции в Kali Linux, это упрощения процесса безопасного путешествия с конфиденциальной клиентской информацией. Хотя при “LUKS Nuking” (стирания диска LUKS) результатом станет недоступность диска, возможно заранее сделать резервную копию ваших мастер-ключей (keyslots) и восстановить их после факта. Нам это позволяет «окирпичить» наш чувствительный ноутбук перед путешествием, отделить себя от ключей восстановления (которые мы шифруем) а затем «восстановить» их в машине после возвращения в безопасное место. При таком способе, если наше железо потеряно или к нему получен доступ во время нашего путешествия, никто не будет способен восстановить данные на нём, включая нас самих.
Есть и другой способ удалить мастер-ключи (keyslots), как бы там ни было, преимущества варианта Nuke — это его быстрота, простота и отсутствие требований полного входа в вашу Kali. Если вы поддерживаете резервную копию ваших заголовков, вы можете уничтожить мастер-ключи в любое время, когда вы почувствовали себя не комфортно. А потом произведите восстановление, когда вернётся чувство безопасности.
Попробуйте это сами
Давайте пройдёмся по всем этапам шифрования, резервного копирования, уничтожения и последующего восстановления ваших данных с использованием Kali Linux. Начнём с загрузки и установки Kali Linux с полным шифрованием диска. Когда это сделано, вы можете верифицировать вашу информацию следующих образом:
root@kali-crypto:~# cryptsetup luksDump /dev/sda5 LUKS header information for /dev/sda5 Version: 1 Cipher name: aes Cipher mode: xts-plain64 Hash spec: sha1 Payload offset: 4096 MK bits: 512 MK digest: 04 cd d0 51 bf 57 10 f5 87 08 07 d5 c8 2a 34 24 7a 89 3b db MK salt: 27 42 e5 a6 b2 53 7f de 00 26 d3 f8 66 fb 9e 48 16 a2 b0 a9 2c bb cc f6 ea 66 e6 b1 79 08 69 17 MK iterations: 65750 UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d Key Slot 0: ENABLED Iterations: 223775 Salt: 7b ee 18 9e 46 77 60 2a f6 e2 a6 13 9f 59 0a 88 7b b2 db 84 25 98 f3 ae 61 36 3a 7d 96 08 a4 49 Key material offset: 8 AF stripes: 4000 Key Slot 1: DISABLED Key Slot 2: DISABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED As you can see, we have slot 0 enabled with slots 1 to 7 unused. At this point, we will add our nuke key. root@kali-crypto:~# cryptsetup luksAddNuke /dev/sda5 Enter any existing passphrase: Enter new passphrase for key slot: Again, we will dump our LUKS header and see what is changed. root@kali-crypto:~# cryptsetup luksDump /dev/sda5 LUKS header information for /dev/sda5 Version: 1 Cipher name: aes Cipher mode: xts-plain64 Hash spec: sha1 Payload offset: 4096 MK bits: 512 MK digest: 04 cd d0 51 bf 57 10 f5 87 08 07 d5 c8 2a 34 24 7a 89 3b db MK salt: 27 42 e5 a6 b2 53 7f de 00 26 d3 f8 66 fb 9e 48 16 a2 b0 a9 2c bb cc f6 ea 66 e6 b1 79 08 69 17 MK iterations: 65750 UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d Key Slot 0: ENABLED Iterations: 223775 Salt: 7b ee 18 9e 46 77 60 2a f6 e2 a6 13 9f 59 0a 88 7b b2 db 84 25 98 f3 ae 61 36 3a 7d 96 08 a4 49 Key material offset: 8 AF stripes: 4000 Key Slot 1: ENABLED Iterations: 267782 Salt: 8c e5 a2 31 60 2a f5 39 41 e9 52 94 eb 82 b8 c2 b7 a6 6e 4a 7a 0e b1 85 c2 3a 75 d6 a7 6a 76 b3 Key material offset: 512 AF stripes: 4000 Key Slot 2: DISABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED
Великолепно. Здесь мы видим, что мы имеет slot 1, который используется для нашего ключа самоуничтожения. Сейчас нам нужно вернуться назад к данным. Это может быть сделано просто с опцией “luksHeaderBackup”.
root@kali-crypto:~# cryptsetup luksHeaderBackup --header-backup-file luksheader.back /dev/sda5 root@kali-crypto:~# file luksheader.back luksheader.back: LUKS encrypted file, ver 1 [aes, xts-plain64, sha1] UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d root@kali-crypto:~#
Итак, в нашем случае мы хотели бы зашифровать эти данные для сохранности. Есть много способов это сделать, как бы там ни было мы будет использовать openssl, чтобы сделать процесс быстрым и простым, используя инструменты уже встроенные в Kali.
root@kali-crypto:~# openssl enc -aes-256-cbc -salt -in luksheader.back -out luksheader.back.enc enter aes-256-cbc encryption password: Verifying - enter aes-256-cbc encryption password: root@kali-crypto:~# ls -lh luksheader.back* -r-------- 1 root root 2.0M Jan 9 13:42 luksheader.back -rw-r--r-- 1 root root 2.0M Jan 9 15:50 luksheader.back.enc root@kali-crypto:~# file luksheader.back* luksheader.back: LUKS encrypted file, ver 1 [aes, xts-plain64, sha1] UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d luksheader.back.enc: data
Отлично, сейчас у нас есть зашифрованный заголовок, готовый для резервного копирования. В этом случая, нам бы хотелось разместить заголовок где-нибудь, где он будет легко доступным. Это может быть, например, хороший USB диск, который будет храниться в безопасном месте. На этом этапе давайте используем ключ Nuke (ключ самоуничтожения) и посмотрим, как Kali поведёт себя.
Итак, мы использовали ключ самоуничтожения, и, как и ожидалось, мы больше не можем загрузиться в Kali. Давайте посмотрим, что случилось на реальном диске, загрузимся с Kali live CD и снова сделаем дамп заголовков LUKS.
root@kali:~# cryptsetup luksDump /dev/sda5 LUKS header information for /dev/sda5 Version: 1 Cipher name: aes Cipher mode: xts-plain64 Hash spec: sha1 Payload offset: 4096 MK bits: 512 MK digest: 04 cd d0 51 bf 57 10 f5 87 08 07 d5 c8 2a 34 24 7a 89 3b db MK salt: 27 42 e5 a6 b2 53 7f de 00 26 d3 f8 66 fb 9e 48 16 a2 b0 a9 2c bb cc f6 ea 66 e6 b1 79 08 69 17 MK iterations: 65750 UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d Key Slot 0: DISABLED Key Slot 1: DISABLED Key Slot 2: DISABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED
Как мы можем видеть, нет мастер-ключей для использования. Nuke (самоуничтожитель) отработал как и ожидалось. Восстановление на место заголовка, это просто вопрос получения зашифрованного заголовка с вашего диска USB. Когда они у вас появились, вы можете расшифровать их и произвести наше восстановление:
root@kali:~# openssl enc -d -aes-256-cbc -in luksheader.back.enc -out luksheader.back enter aes-256-cbc decryption password: root@kali:~# cryptsetup luksHeaderRestore --header-backup-file luksheader.back /dev/sda5 WARNING! ======== Device /dev/sda5 already contains LUKS header. Replacing header will destroy existing keyslots. Are you sure? (Type uppercase yes): YES root@kali:~# cryptsetup luksDump /dev/sda5 LUKS header information for /dev/sda5 Version: 1 Cipher name: aes Cipher mode: xts-plain64 Hash spec: sha1 Payload offset: 4096 MK bits: 512 MK digest: 04 cd d0 51 bf 57 10 f5 87 08 07 d5 c8 2a 34 24 7a 89 3b db MK salt: 27 42 e5 a6 b2 53 7f de 00 26 d3 f8 66 fb 9e 48 16 a2 b0 a9 2c bb cc f6 ea 66 e6 b1 79 08 69 17 MK iterations: 65750 UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d Key Slot 0: ENABLED Iterations: 223775 Salt: 7b ee 18 9e 46 77 60 2a f6 e2 a6 13 9f 59 0a 88 7b b2 db 84 25 98 f3 ae 61 36 3a 7d 96 08 a4 49 Key material offset: 8 AF stripes: 4000 Key Slot 1: ENABLED Iterations: 267782 Salt: 8c e5 a2 31 60 2a f5 39 41 e9 52 94 eb 82 b8 c2 b7 a6 6e 4a 7a 0e b1 85 c2 3a 75 d6 a7 6a 76 b3 Key material offset: 512 AF stripes: 4000 Key Slot 2: DISABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED
Наш слот теперь восстановлен. Всё, что нам нужно сделать — это перезагрузить и ввести наш нормальный пароль LUKS, и система снова вернулась в своё исходное состояние.
Здравствуйте. А работает ли данное уничтожение, если ввести пароль от Nuke слота где не пропатчен cryptsetup?