dm-crypt — это прозрачная подсистема шифрования блочных устройств в ядре Linux версии 2.6 и более поздних, а также в DragonFly BSD . Она является частью инфраструктуры device mapper (dm) и использует криптографические процедуры из Crypto API ядра . В отличие от своего предшественника cryptoloop , dm-crypt был разработан для поддержки расширенных режимов работы, таких как XTS , LRW и ESSIV , чтобы избежать атак с использованием водяных знаков . [1] Кроме того, dm-crypt решает некоторые проблемы надежности cryptoloop. [2]
dm-crypt реализован как цель картографа устройств и может быть наложен поверх других преобразований картографов устройств. Таким образом, он может шифровать целые диски (включая съемные носители ), разделы , программные тома RAID , логические тома , а также файлы . Он выглядит как блочное устройство, которое может использоваться для резервного копирования файловых систем , подкачки или как физический том LVM .
Некоторые дистрибутивы Linux поддерживают использование dm-crypt в корневой файловой системе. Эти дистрибутивы используют initrd для запроса пользователю ввести парольную фразу на консоли или вставить смарт-карту перед обычным процессом загрузки. [3]
Целевой объект dm-crypt device mapper находится полностью в пространстве ядра и занимается только шифрованием блочного устройства – он не интерпретирует никакие данные сам по себе. Он полагается на интерфейсы пользовательского пространства для создания и активации зашифрованных томов и управления аутентификацией. В настоящее время доступны по крайней мере два интерфейса: и .cryptsetup
cryptmount
Оригинальный автор(ы) | Яна Саут, Клеменс Фрувирт, Милан Броз [4] |
---|---|
Стабильный релиз | 2.7.5 [5] / 3 сентября 2024 г. ( 2024-09-03 ) [5] |
Репозиторий | https://gitlab.com/cryptsetup/cryptsetup |
Написано в | С |
Операционная система | Unix-подобный |
Платформа | x86 , x86-64 , ARMv8 , ARMv7 , ppc64le , MIPS |
Размер | 7 МБ |
Доступно в | 16 языков [6] |
Список языков Английский, португальский, китайский (упрощенный), чешский, датский, голландский, финский, французский, немецкий, итальянский, японский, польский, русский, испанский, шведский, украинский | |
Тип | Программное обеспечение для шифрования дисков |
Лицензия | GPLv2 [7] Подбиблиотеки: LGPLv2.1+ [8] |
Веб-сайт | gitlab.com/cryptsetup/cryptsetup/wikis/DMCrypt |
Интерфейс cryptsetup
командной строки по умолчанию не записывает никаких заголовков в зашифрованный том и, следовательно, предоставляет только самое необходимое: параметры шифрования должны быть предоставлены каждый раз при монтировании диска (хотя обычно они используются с помощью автоматизированных скриптов), и для каждого тома может использоваться только один ключ ; симметричный ключ шифрования напрямую выводится из предоставленной парольной фразы .
Поскольку в нем отсутствует « соль », использование cryptsetup в этом режиме менее безопасно, чем в случае с Linux Unified Key Setup (LUKS). [9] Однако простота cryptsetup делает его полезным при сочетании со сторонним программным обеспечением, например, с аутентификацией по смарт-картам .
cryptsetup
также предоставляет команды для работы с форматом LUKS на диске. Этот формат предоставляет дополнительные функции, такие как управление ключами и растяжение ключей (используя PBKDF2 ), а также запоминает конфигурацию зашифрованного тома при перезагрузках. [3] [10]
Интерфейс cryptmount
является альтернативой инструменту «cryptsetup», который позволяет любому пользователю монтировать и размонтировать файловую систему dm-crypt при необходимости, без необходимости иметь права суперпользователя после настройки устройства суперпользователем.
Тот факт, что программное обеспечение для шифрования дисков (шифрования томов), такое как dm-crypt, работает только с прозрачным шифрованием абстрактных блочных устройств, дает ему большую гибкость. Это означает, что его можно использовать для шифрования любых файловых систем на дисках , поддерживаемых операционной системой , а также пространства подкачки ; барьеры записи, реализуемые файловыми системами, сохраняются. [11] [12] Зашифрованные тома могут храниться на разделах дисков , логических томах , целых дисках, а также на образах дисков с файловой поддержкой (с помощью устройств loop с утилитой losetup). dm-crypt также можно настроить для шифрования томов RAID и физических томов LVM .
dm-crypt также можно настроить для обеспечения предзагрузочной аутентификации через initrd , тем самым шифруя все данные на компьютере, за исключением загрузчика, ядра и самого образа initrd. [3]
При использовании режима работы цепочки блоков шифра (CBC) с предсказуемыми векторами инициализации , как и в другом программном обеспечении для шифрования дисков, диск уязвим для атак с использованием водяных знаков . Это означает, что злоумышленник может обнаружить наличие специально созданных данных на диске. Чтобы решить эту проблему в своих предшественниках, dm-crypt включил положения для более сложных, специфичных для шифрования дисков режимов работы. [1] Поддержка ESSIV (зашифрованный вектор инициализации сектора соли) была введена в ядре Linux версии 2.6.10, LRW в 2.6.20 и XTS в 2.6.24. Алгоритм шифрования дисков с широким блоком , Adiantum , был добавлен в 5.0, а его двоюродный брат на основе AES HCTR2 в 6.0.
Linux Crypto API включает поддержку большинства популярных блочных шифров и хэш-функций , которые можно использовать с dm-crypt.
Поддержка зашифрованных файловых систем включает тома LUKS (версии 1 и 2), loop-AES, TrueCrypt / VeraCrypt (начиная с ядра Linux 3.13), [13] [14] [15] и зашифрованную BitLocker NTFS (начиная с cryptsetup 2.3.0). [16] Поддержка TrueCrypt/VeraCrypt (TCRYPT) и BitLocker (BITLK) требует API шифрования пользовательского пространства ядра. [17]
Зашифрованные диски dm-crypt и LUKS могут быть доступны и использованы в MS Windows с использованием ныне несуществующего FreeOTFE (ранее DoxBox, LibreCrypt), при условии, что используемая файловая система поддерживается Windows (например, FAT /FAT32/ NTFS ). Зашифрованные файловые системы ext2 и ext3 поддерживаются с помощью Ext2Fsd или так называемой "Ext2 Installable File System for Windows"; [18] FreeOTFE также поддерживает их.
Cryptsetup/LUKS и необходимая инфраструктура также были реализованы в операционной системе DragonFly BSD. [19]