Настройка единого ключа Linux
Настройка унифицированного ключа Linux ( LUKS ) — это спецификация шифрования диска , созданная Клеменсом Фрувиртом в 2004 году и первоначально предназначенная для Linux .
LUKS реализует независимый от платформы стандартный дисковый формат для использования в различных инструментах. Это облегчает совместимость и взаимодействие между различными программами и операционными системами, а также гарантирует, что все они реализуют управление паролями безопасным и документированным образом. [1]
Описание
[ редактировать ]LUKS используется для шифрования блочного устройства . Содержимое зашифрованного устройства произвольно, поэтому зашифровать можно любую файловую систему, включая разделы подкачки . [2] имеется незашифрованный заголовок В начале зашифрованного тома до 8 (LUKS1) или 32 (LUKS2) ключей шифрования вместе с такими параметрами шифрования, как тип шифра и размер ключа. , который позволяет хранить [3] [4]
Наличие этого заголовка является основным отличием между LUKS и dm-crypt , поскольку заголовок позволяет использовать несколько разных парольных фраз с возможностью их изменения и удаления. Если заголовок утерян или поврежден, устройство больше нельзя будет расшифровать. [5]
Шифрование осуществляется с использованием многоуровневого подхода. Сначала блочное устройство шифруется с помощью главного ключа. Этот главный ключ шифруется с каждым активным ключом пользователя . [6] Ключи пользователя создаются на основе парольных фраз, FIDO2 ключей безопасности , TPM или смарт-карт . [7] [8] Многоуровневый подход позволяет пользователям менять свою парольную фразу без повторного шифрования всего блочного устройства. Слоты ключей могут содержать информацию для проверки паролей пользователей или других типов ключей.
Существует две версии LUKS: LUKS2 отличается устойчивостью к повреждению заголовка и использует Argon2 функцию деривации ключей по умолчанию, тогда как LUKS1 использует PBKDF2 . [9] Преобразование между обеими версиями LUKS возможно в определенных ситуациях, но некоторые функции могут быть недоступны в LUKS1, например Argon2. [3] LUKS2 использует JSON в качестве формата метаданных. [3] [10]
Доступные криптографические алгоритмы зависят от индивидуальной поддержки ядра хоста. Libgcrypt можно использовать в качестве бэкэнда для хеширования, который поддерживает все его алгоритмы. [11] Выбор алгоритма по умолчанию зависит от поставщика операционной системы. [12] LUKS1 использует антикриминалистический метод под названием AFsplitter, позволяющий безопасно данные . удалять и защищать [13]
ЛУКС с LVM
[ редактировать ]Управление логическими томами можно использовать вместе с LUKS. [14]
- LVM — это ЛУКИ
- Когда LVM используется в разблокированном контейнере LUKS, все базовые разделы (которые являются логическими томами LVM) могут быть зашифрованы с помощью одного ключа. Это похоже на разделение контейнера LUKS на несколько разделов. Структура LVM не видна до тех пор, пока диск не будет расшифрован. [15]
- LUKS — это LVM
- Когда LUKS используется для шифрования логических томов LVM, зашифрованный том может охватывать несколько устройств. Базовая группа томов LVM видна без расшифровки зашифрованных томов. [16]
Полное шифрование диска
[ редактировать ]Обычно LUKS используется для обеспечения полного шифрования диска , что включает в себя шифрование корневого раздела установки операционной системы, что защищает файлы операционной системы от подделки или чтения посторонними лицами . [14]
В системе Linux загрузочный раздел ( /boot
) может быть зашифровано, если сам загрузчик поддерживает LUKS (например, GRUB ). Это сделано для предотвращения вмешательства в ядро Linux . Однако загрузчик первого этапа или системный раздел EFI не могут быть зашифрованы (см. Полное шифрование диска#Проблема с загрузочным ключом ). [14]
В мобильных системах Linux компания postmarketOS разработала osk-sdl , позволяющий разблокировать систему с полным шифрованием диска с помощью сенсорного экрана.
Для систем, работающих под управлением systemd , systemd-homed
Компонент может использоваться для шифрования отдельных домашних каталогов . [17]
Поддержка операционной системы
[ редактировать ]Эталонная реализация LUKS работает в Linux и основана на расширенной версии cryptsetup , использующей dm-crypt в качестве механизма шифрования диска. В Microsoft Windows диски, зашифрованные с помощью LUKS, можно использовать через подсистему Windows для Linux . [18] (Раньше это было возможно с помощью LibreCrypt, [19] который в настоящее время имеет фундаментальные дыры в безопасности, [20] [21] и который пришел на смену FreeOTFE , ранее DoxBox.)
DragonFly BSD поддерживает LUKS. [22]
Поддержка установщика
[ редактировать ]Некоторые дистрибутивы Linux позволяют шифровать корневое устройство при установке ОС. В число этих установщиков входят Calamares , [23] Вездесущность , [24] Установщик Debian , [25] и многое другое.
Формат на диске
[ редактировать ]Заголовки LUKS обратно совместимы; более новые версии LUKS могут читать заголовки предыдущих версий. [26]
ЛЮКС1
[ редактировать ]Компенсировать | Тип данных | Описание | |
---|---|---|---|
0 | 0 шестнадцатеричный | символ [6] | Магическое число {'L', 'U', 'K', 'S', 0xBA, 0xBE } |
6 | 6 шестнадцатеричный | uint16_t | Версия LUKS (0x0001 для LUKS1) |
8 | 8 шестнадцатеричный | символ [32] | Алгоритм шифрования (например, «twofish», «aes») |
40 | 28 шестнадцатеричный | символ [32] | Режим шифрования (например, «cbc-essiv:sha256») |
72 | 48 шестнадцатеричный | символ [32] | Криптографическая хеш-функция (например, «sha1», «ripemd160») |
104 | 68 шестнадцатеричный | uint32_t | Смещение полезной нагрузки (позиция зашифрованных данных) в смещениях по 512 байт. |
108 | 6C шестнадцатеричный | uint32_t | Количество ключевых байтов |
112 | 70 шестнадцатеричный | символ [20] | PBKDF2 главного ключа Контрольная сумма |
132 | 84 шестнадцатеричный | символ [32] | Параметр соли главного ключа PBKDF2 |
164 | А4 шестнадцатеричный | uint32_t | Итерации главного ключа PBKDF2 (по умолчанию: 10) |
168 | А8 шестнадцатеричный | символ [40] | UUID раздела (например, «504c9fa7-d080-4acf-a829-73227b48fb89») |
208 | D0 шестнадцатеричный | (48 байт) | Ключевой слот 1 |
… | |||
544 | 220 шестнадцатеричный | (48 байт) | Ключевой слот 8 |
Всего 592 байта |
Компенсировать | Тип данных | Описание |
---|---|---|
0 | uint32_t | Состояние слота для ключей: Active=0x00AC71F3; Отключено=0x0000DEAD |
4 | uint32_t | Параметр итерации PBKDF2 |
8 | символ [32] | Параметр соли PBKDF2 |
40 | uint32_t | Начальный сектор ключа |
44 | uint32_t | Количество антикриминалистических полос (по умолчанию: 4000) |
Всего 48 байт |
ЛЮКС2
[ редактировать ]Устройства LUKS2 начинаются с двоичного заголовка, предназначенного для обеспечения распознавания и быстрого обнаружения с помощью blkid , который также содержит такую информацию, как контрольные суммы . Все строки, используемые в заголовке LUKS2, завершаются нулем . Сразу после бинарного заголовка идет область JSON, содержащая объекты. config
(конфигурация), keyslots
, digests
, segments
(описывает зашифрованные области на диске) и tokens
содержащий дополнительные метаданные. [10]
Бинарный формат для обычных luks2
слоты клавиш в основном аналогичны своему предшественнику, с добавлением различных алгоритмов для каждого слота клавиш. Существует другой тип ключа, обеспечивающий избыточность в случае прерывания процесса повторного шифрования. [10]
Примеры
[ редактировать ]Cryptsetup — это эталонная реализация интерфейса LUKS.
Чтобы зашифровать устройство с помощью пути /dev/sda1
:
# cryptsetup luksFormat /dev/sda1
Чтобы разблокировать зашифрованное устройство, где name
это имя сопоставленного устройства:
# cryptsetup open /dev/sda1 name
Повторное шифрование
[ редактировать ]Повторное шифрование контейнера LUKS можно выполнить либо с помощью cryptsetup
сам инструмент или с помощью устаревшего инструмента под названием cryptsetup-reencrypt
. Эти инструменты также можно использовать для добавления шифрования в существующую незашифрованную файловую систему или удаления шифрования с блочного устройства. [11] [27]
Оба метода имеют схожий синтаксис:
# cryptsetup reencrypt /dev/sda1
# cryptsetup-reencrypt /dev/sda1
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Фрувирт, Клеменс (20 января 2018 г.). «Спецификация формата диска LUKS, версия 1.2.3» (PDF) . Проверено 23 сентября 2021 г.
- ^ «Шифрование дисков с помощью LUKS» . Документы Федоры . Проверено 6 мая 2022 г.
- ^ Jump up to: а б с «Глава 12. Шифрование блочных устройств с помощью LUKS» . Портал для клиентов Red Hat .
- ^ «Как зашифровать жесткий диск (раздел) с помощью LUKS в Linux» . 27 февраля 2019 г.
- ^ «Как зашифровать данные с помощью dm-crypt» . Линод .
- ^ Босси, Симона; Висконти, Андреа (2015). «Что пользователи должны знать о полном шифровании диска на основе LUKS» (PDF) .
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ «systemd-cryptenroll — ArchWiki» . wiki.archlinux.org . Проверено 22 ноября 2023 г.
- ^ «Как зашифровать контейнер LUKS с помощью смарт-карты или токена» . 20 апреля 2014 г.
- ^ «Как LUKS работает с полнодисковым шифрованием в Linux» . 25 сентября 2021 г.
- ^ Jump up to: а б с "on-disk-format-luks2.pdf" (PDF) .
- ^ Jump up to: а б по администрированию Linux и привилегированным командам Руководство –
- ^ «Взлом шифрования LUKS» . Электронная криминалистика . 21 августа 2020 г.
- ^ «АФсплиттер» .
- ^ Jump up to: а б с «dm-crypt/Шифрование всей системы» . Проверено 6 мая 2022 г.
- ^ «Арка с LVM на LUKS» .
- ^ «LUKS на LVM: зашифрованные логические тома и безопасные резервные копии» . 12 сентября 2014 г.
- ^ «Домашние каталоги» . системад .
- ^ «Обслуживание подсистемы Windows для ядра Linux (WSL) 2» . Блоги разработчиков Microsoft . 16 апреля 2021 г.
- ^ «ФриКрипт » Гитхаб . 27 июля
- ^ «Недостаток в драйвере позволяет повысить привилегии. Требуется отзыв · Проблема № 38 · tdk/LibreCrypt» . Гитхаб . 30 сентября 2015 г.
- ^ «Драйвер позволяет выполнять запись на произвольные устройства · Проблема № 39 · tdk/LibreCrypt» . Гитхаб . 7 октября 2015 г.
- ^ «Список основных функций DragonFly» . Проверено 6 мая 2022 г.
- ^ Майкл Ларабель (8 мая 2016 г.). «Установщик Calamares добавляет поддержку шифрования LUKS» . Фороникс .
- ^ «Как зашифровать жесткий диск в Ubuntu» . Сделайте технологию проще . 13 января 2017 г.
- ^ «ПартманКрипто» . Дебиан Вики . Проверено 6 мая 2022 г.
- ^ Jump up to: а б «Спецификация формата диска LUKS» (PDF) .
- ^ «Страница руководства CRYPTSETUP-REENCRYPT(8)» . man7.org .