- Обзор
- Что такое LUKS?
- Различия между LUKS1 и LUKS2
- Архитектура и формат на диске
- Функции деривации ключей (PBKDF2 против Argon2)
- Резервирование и восстановление метаданных
- Соображения совместимости (GRUB и устаревшие системы)
- Примеры использования и критерии принятия решений
- Когда следует использовать LUKS1
- Когда следует выбирать LUKS2
- Заключение
Обзор
В наши дни безопасность наших данных имеет большое значение.
Будь то личные вещи или важные рабочие файлы, мы не хотим, чтобы кто-то подглядывал туда, куда не следует.
Именно здесь на помощь приходит шифрование диска, и в Linux популярным выбором является LUKS.
⛹️♂️ 10 лучших инструментов шифрования файлов и дисков для Linux
LUKS, или Linux Unified Key Setup, предлагает нам способ зашифровать разделы и сохранить наши данные в безопасности.
Но вот в чем дело: LUKS существует в двух версиях – LUKS1 и LUKS2.
Каждая из них имеет свои особенности, поэтому выбор правильной версии очень важен для обеспечения максимальной безопасности и бесперебойной работы нашей системы.
В этом руководстве мы подробно рассмотрим LUKS1 и LUKS2, увидим, чем они отличаются, и выясним, какая из них нам больше подходит.
Что такое LUKS?
LUKS – это спецификация шифрования дисков, которая предоставляет стандартизированный метод шифрования разделов в системах Linux.
Мы можем рассматривать его как меру безопасности для нашего жесткого диска или SSD.
Он предотвращает несанкционированный доступ к нашим ценным данным.
Более того, LUKS шифрует весь раздел, включая сами данные, структуру файловой системы и все неиспользуемое пространство.
Это достигается путем создания специализированного заголовка в начале раздела.
🔐 Как расширить зашифрованный диск в Ubuntu
Этот заголовок содержит важные метаданные, такие как используемый алгоритм шифрования (например, AES, DES) и размер ключа шифрования.
Кроме того, он включает набор ключевых слотов, в которых могут храниться различные ключи, например пароли или файлы ключей, что позволяет гибко управлять доступом.
Когда нам нужно получить доступ к зашифрованному разделу, мы используем инструмент cryptsetup.
Мы указываем целевой раздел и предоставляем правильный ключ, который может быть паролем или ключевым файлом. Затем LUKS использует этот ключ для расшифровки главного ключа шифрования, что в конечном итоге разблокирует весь раздел.
🐧 Защита целостности данных на Ext4 и XFS с помощью dm-integrity и LUKS
После разблокировки мы можем получить доступ к нашим данным. После завершения работы мы можем снова использовать cryptsetup, чтобы “закрыть” раздел, эффективно зашифровав его и защитив наши данные.
Например, чтобы инициализировать раздел с LUKS2, мы можем использовать команду cryptsetup:
В приведенной выше команде:
- cryptsetup: утилита, используемая для управления шифрованием диска с помощью LUKS
- luksFormat: специальная подкоманда для форматирования диска с помощью LUKS
- -type luks2: указывает, что мы хотим использовать формат шифрования LUKS2
- /dev/sdX: представляет блочное устройство, которое мы хотим зашифровать.
Кроме того, LUKS отделяет уровень шифрования от самой файловой системы.
Такое разделение облегчает резервное копирование и восстановление данных.
Различия между LUKS1 и LUKS2
Теперь, когда мы хорошо разобрались с LUKS, давайте разберемся в деталях двух его версий: LUKS1 и LUKS2.
Хотя обе они предназначены для шифрования наших разделов, у них есть несколько ключевых различий, которые могут повлиять на наше решение в зависимости от того, что мы ищем.
Архитектура и формат на диске
В LUKS1 все довольно просто – фиксированная схема заголовков.
Все важные метаданные хранятся в одном блоке в начале раздела.
Это как маленькая аккуратная этикетка, содержащая такую важную информацию, как алгоритм шифрования (например, AES), размер ключа и расположение ключевых слотов.
Типичный заголовок LUKS1 выглядит примерно так:
Magic: "LUKS\xba\xbe"
Version: 1
Cipher Name: aes
Cipher Mode: xts-plain64
Hash Spec: sha1
Payload Offset: 4096
Key Slots: 8 fixed entries with set offsets.
LUKS2, с другой стороны, работает с помощью более гибкого заголовка на основе JSON.
Он разделяет метаданные на разные секции, давая нам больше пространства для будущих обновлений и фантастических функций:
cryptsetup luksFormat \
--type luks2 \
--cipher aes-xts-plain64 \
--key-size 512 \
--hash sha256 \
--iter-time 2000 \
--label "Encrypted_Archive" \
/dev/sdX
Такая конструкция также позволяет создавать избыточные копии метаданных, что является отличной новостью, поскольку если одна копия будет испорчена, у нас есть резервные копии.
Функции деривации ключей (PBKDF2 против Argon2)
LUKS1 полагается на PBKDF2 для преобразования наших парольных фраз в надежные ключи шифрования.
PBKDF2 многократно хэширует парольную фразу, что делает ее труднодоступной для злоумышленников.
Хотя это надежный выбор, он не так устойчив к атакам методом “брутфорс”, как некоторые новые методы.
Кроме того, в LUKS2 по умолчанию используется Argon21 (или Argon2id).
Argon2 – это зверь, когда речь идет о безопасности.
Он использует много памяти и параллельную обработку, что очень замедляет атакующих, пытающихся пробиться к нему брутом.
Резервирование и восстановление метаданных
Помните, что в LUKS2 есть резервные копии метаданных?
Это важно для восстановления данных. В LUKS1, если заголовок будет поврежден, у нас могут возникнуть проблемы.
Однако в LUKS2, даже если часть метаданных испортится, у нас есть все шансы восстановить данные.
Мы даже можем заглянуть в метаданные LUKS2 с помощью:
Это показывает все ключевые слоты и дополнительные поля, подтверждая, что LUKS2 прикрывает нас, когда дело доходит до восстановления.
Соображения совместимости (GRUB и устаревшие системы)
Несмотря на то, что LUKS2 – это очень круто, нам нужно помнить о совместимости.
Старые загрузчики, такие как GRUB, могут не очень хорошо работать с LUKS2, особенно когда речь идет о разблокировке зашифрованных разделов, таких как /boot.
Хотя в новых версиях GRUB есть некоторая поддержка LUKS2, они обычно предпочитают более старый алгоритм PBKDF2.
Если нам нужно использовать LUKS2 со старым GRUB, мы можем добавить новый ключевой слот специально для PBKDF2:
Затем мы можем настроить систему на использование этого ключевого слота во время загрузки (что выходит за рамки данного руководства).
Это обеспечит плавный запуск и позволит воспользоваться преимуществами LUKS2 на других разделах.
Кроме того, некоторые старые системы или инструменты могут не понимать всех причудливых функций LUKS2.
В таких случаях лучше придерживаться LUKS1.
Примеры использования и критерии принятия решений
Теперь, когда мы изучили технические различия между LUKS1 и LUKS2, давайте рассмотрим, как эти различия проявляются в практических случаях использования и критериях принятия решений.
Выбор подходящей версии LUKS зависит от наших конкретных потребностей и приоритетов, поэтому давайте взвесим все “за” и “против” для различных сценариев.
Когда следует использовать LUKS1
Хотя LUKS2 предлагает множество усовершенствований, все же есть ситуации, когда LUKS1 остается жизнеспособным и даже предпочтительным выбором:
Совместимость со старыми системами и загрузчиками: если мы работаем со старой системой или загрузчиком, который не поддерживает LUKS2, использование LUKS1 обеспечивает совместимость и позволяет избежать потенциальных проблем с загрузкой.
Среды с ограниченными ресурсами: в средах с ограниченными ресурсами, таких как встроенные системы или старое оборудование, преимущество LUKS1 заключается в меньших накладных расходах и более простой функции получения ключа. PBKDF2, хотя и не так безопасен, как Argon2, требует меньше памяти и вычислительной мощности, что делает его подходящим для устройств с ограниченными возможностями.
Устаревшее программное обеспечение и инструменты: если мы полагаемся на устаревшее программное обеспечение или инструменты, поддерживающие только LUKS1, нам следует придерживаться этой версии, чтобы обеспечить совместимость и избежать проблем с взаимодействием.
Простота и привычность: для пользователей, которые уже знакомы с LUKS1 и его конфигурацией, придерживаться этой версии может быть самым простым и удобным вариантом.
Более простая структура заголовков LUKS1 и хорошо отлаженные инструменты могут упростить управление и устранение неполадок.
Когда следует выбирать LUKS2
LUKS2 обычно предпочитают, когда важны безопасность, гибкость и современные возможности:
Повышенная безопасность: если главными приоритетами являются надежное шифрование и устойчивость к современным атакам, поддержка Argon2 в LUKS2 дает значительное преимущество в плане безопасности.
Твердость памяти Argon2 и устойчивость к атакам по побочным каналам делают его грозным барьером против грубой силы и сложных атак.
Гибкость и перспективность: Расширяемый формат заголовков LUKS2 и метаданные на основе JSON обеспечивают большую гибкость и перспективность по сравнению с LUKS1.
Это позволяет легче интегрировать новые функции и возможности, обеспечивая адаптацию наших зашифрованных разделов к изменяющимся требованиям безопасности.
Улучшенное восстановление данных: Избыточность метаданных в LUKS2 значительно повышает шансы на успешное восстановление данных в случае повреждения заголовка.
Эта функция позволяет быть уверенным в том, что наши данные более устойчивы к неожиданным ошибкам или сбоям.
Современные системы и загрузчики: если мы используем современный дистрибутив Linux с последней версией GRUB2, совместимость с LUKS2 обычно не вызывает проблем.
Большинство современных дистрибутивов теперь включают GRUB2 с поддержкой LUKS2, что позволяет нам использовать повышенную безопасность и функции LUKS2, не сталкиваясь с проблемами загрузки.
Поэтому выбор между LUKS1 и LUKS2 зависит от наших конкретных потребностей.
Заключение
В этой статье мы рассмотрели ключевые различия между LUKS1 и LUKS2.
Мы рассмотрели их архитектуру, функции извлечения ключей, работу с метаданными и совместимость.
Мы также привели практические примеры и дали рекомендации по выбору подходящей версии для различных случаев использования.
В конечном итоге выбор между LUKS1 и LUKS2 зависит от наших конкретных потребностей и приоритетов. LUKS2 предлагает повышенную безопасность и расширенные возможности, что делает ее подходящей для современных систем, в то время как LUKS1 остается актуальной для совместимости со старыми системами и средами с ограниченными ресурсами.
см. также: