Расшифровка дисков LUKS

18 августа, 2020, Oleg Afonin
Рубрика: «Разное»
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Шифрование по стандарту LUKS поддерживается практически во всех сборках Linux для настольных компьютеров. Использование LUKS позволяет как зашифровать диск целиком, так и создать зашифрованный контейнер. В LUKS поддерживаются многочисленные алгоритмы и методы шифрования, а также несколько хэш-функций для преобразования пароля пользователя в ключ шифрования. Если установленный пользователем пароль неизвестен, то для расшифровки защищённого диска необходимо восстановить оригинальный текстовый пароль. Этим мы и займёмся сегодня.

Основы шифрования диска

Утилиты шифрования дисков используют симметричную криптографию для преобразования информации в зашифрованный поток данных. В подавляющем большинстве случаев используется алгоритм шифрования AES, для которого (единственного из множества алгоритмов) в большинстве современных платформ доступно аппаратное ускорение, а в процессорах Intel – специальный набор инструкций процессора AES-NI. Как правило, используется ключ шифрования длиной 256 бит, но и ключи длиной 128 бит используются достаточно часто (в частности, в реализации шифрования Microsoft BitLocker, в котором по умолчанию используются ключи шифрования длиной 128 бит, но можно включить и поддержку 256-разрядных ключей).

В некоторых утилитах шифрования дисков пользователь может выбрать, каким алгоритмом зашифровывать данные. Например, в VeraCrypt пользователь может выбрать из 15 вариантов, многие из которых являются результатом применения нескольких алгоритмов шифрования последовательно, один за другим.

Не менее, а для целей восстановления доступа – даже более важной особенностью систем шифрования диска является выбор функции преобразования ключа – Key Derivation Function (KDF). Эта функция используется для одностороннего (то есть, несимметричного и принципиально необратимого) преобразования текстового пароля (или другого протектора – например, данных сертификата или содержимого файла) в двоичный ключ заданной длины. Как правило, алгоритм KDF достаточно прост: входные данные (а ими является не только сам пароль, но и дополнительный набор данных – «соль») преобразовываются посредством хэш-функции, причём процедура проводится итеративно с целью замедлить скорость потенциальной атаки. Чем большее количество итераций используется для преобразования пароля, тем ниже будет скорость перебора.

Число итераций может быть фиксированным или произвольным. LUKS использует произвольное количество итераций, которое вычисляется в процессе создания зашифрованного диска или контейнера в зависимости от производительности системы. Единожды заданное число итераций в LUKS в дальнейшем не меняется. В других системах это не всегда так; к примеру, в VeraCrypt пользователь может в любой момент изменить число итераций хэш-функции, усилив или ослабив стойкость защиты.

Для проведения атаки на зашифрованный диск нужно знать все параметры защиты, включая алгоритм и метод шифрования, длину ключа, выбранную хэш-функцию и число итераций. В некоторых реализациях шифрования дисков эти данные являются ещё одним секретом, что заставляет перебирать не только пароль, но и все возможные параметры шифрования (так, например, работает VeraCrypt). В LUKS все параметры шифрования сохраняются в составе контейнера в открытом виде.

LUKS

LUKS (от Linux Unified Key Setup) — спецификация формата шифрования дисков, разработанная для использования в ОС на основе ядра Linux. Поддержка LUKS доступна во множестве дистрибутивов Linux как для настольных компьютеров, так и для специализированных устройств. При помощи LUKS могут быть зашифрованы диски, работающие в составе сетевых накопителей QNAP и некоторых других производителей.

Одной из особенностей формата является поддержка нескольких ключей, используемых наравне друг с другом для доступа к одному зашифрованному носителю, с возможностью их добавления и изъятия по запросу пользователя. Ключи записываются в так называемые слоты ключей, которых в составе контейнера может быть до восьми. В свою очередь, слоты сохраняются в составе заголовка LUKS, в котором хранится вся необходимая для доступа к зашифрованному разделу информация – за исключением, разумеется, паролей пользователей, которые необходимы для расшифровки содержимого слотов ключей. В заголовке содержатся следующие данные:

 

magic сигнатура заголовка раздела LUKS
version версия LUKS
cipher-name название алгоритма шифрования
cipher-mode режим работы алгоритма шифрования
hash-spec хэш, используемый в функции PBKDF2
payload-offset смещение начала зашифрованных данных (в секторах)
key-bytes размер ключа в байтах
mk-digest контрольная сумма мастер-ключа
mk-digest-salt соль, применяемая в PBKDF2
mk-digest-iter количество итераций PBKDF2
uuid UUID раздела
key-slot-1 слот ключа 1
key-slot-2 слот ключа 2
key-slot-8 слот ключа 8

LUKS поддерживает многочисленные алгоритмы шифрования и режимы работы, а также несколько хэш-функций; при этом некоторые комбинации не описаны в официальной спецификации, но часто встречаются в реальных условиях, а некоторые – описаны, но практически никогда не используются.

Алгоритмы шифрования в LUKS

В LUKS поддерживаются следующие алгоритмы шифрования:

  • AES
  • Serpent
  • Twofish
  • CAST-128
  • CAST-256

Чаще всего применяется AES, но в процессе создания зашифрованного диска или контейнера пользователь может указать другой алгоритм. В наших продуктах поддерживаются алгоритмы AES, Serpent и Twofish как наиболее распространённые.

Режимы шифрования

В LUKS можно использовать один из следующих режимов шифрования:

  • ECB
  • CBC-PLAIN64
  • CBC-ESSIV:hash
  • XTS-PLAIN64

В различных дистрибутивах Linux могут использоваться различные настройки по умолчанию. К примеру, в Red Hat Linux используется комбинация параметров cbc-essiv:sha256 с шифрованием AES и 256-битным ключом. Эти настройки встречаются чаще всего.

Хэш-функции

Хэш-функции, или функции одностороннего криптографического преобразования, используются для преобразования пароля в двоичный ключ в составе Key Derivation Function (KDF). LUKS поддерживает следующие варианты:

  • SHA-1
  • SHA-256
  • SHA-512
  • RIPEMD160
  • WHIRLPOOL *

По умолчанию используется SHA-256. При этом Whirlpool – отличный пример хэш-функции, которая не является частью спецификации, но присутствует и используется в реальной жизни. В наших продуктах поддерживаются все перечисленные хэш-функции.

Настройки шифрования по умолчанию

Чаще всего при создании зашифрованного диска используются настройки по умолчанию: aes-cbc-essiv:sha256 с ключом шифрования длиной 256 бит. Ниже приводится расшифровка параметров шифрования:

  • AES – алгоритм симметричного шифрования AES (в данном случае с ключом длиной 256 бит)
  • CBC – режим шифрования Cipher Block Chaining
  • ESSIV – Encrypted Salt-Sector Initialization Vector. Он должен использоваться для шифров в режиме CBC.
  • SHA-256 – Secure Hash Algorithm, используется по умолчанию с шифрами в режиме CBC.

Альтернативные настройки шифрования

Как пользователь, так и автор сборки Linux могут указать альтернативные настройки шифрования. При этом не все комбинации алгоритмов и режимов работы совместимы между собой. Впрочем, так или иначе все выбранные настройки шифрования будут прописаны в заголовке LUKS, и для проведения атаки их достаточно будет считать из него. Elcomsoft Distributed Password Recovery автоматически определяет параметры шифрования LUKS.

Слоты ключей

Поддержка нескольких (до восьми) слотов ключей – одна из возможностей LUKS, заметно влияющих на процесс подбора пароля. Каждый из восьми слотов может быть защищён своим собственным уникальным паролем. Соответственно, для доступа к данным достаточно восстановить любой пароль к любому из занятых слотов. В заголовке LUKS прописана информация о том, какие из слотов ключей заняты (т.е. содержат действительные ключи для доступа к данным), а какие пустуют.

При настройке атаки в Elcomsoft Distributed Password Recovery эксперт выбирает слот ключа, на который будет проводиться атака. В списке слотов ключей, которые выводит Distributed Password Recovery, указывается, какие из слотов содержат действительные ключи, а какие – пустуют. Обратите внимание: если пустуют все слоты (такое возможно как при случайном удалении последнего ключа, так и при умышленном уничтожении с целью предотвращения доступа), то восстановить доступ к зашифрованным данным будет невозможно.

Шаг 1: извлечение метаданных шифрования

Как мы уже говорили, для проведения атаки на зашифрованный диск необходимо знать все параметры шифрования и иметь доступ к слотам ключей. Эти данные содержатся в заголовке LUKS, который необходимо извлечь из зашифрованного диска или контейнера. Таким образом, для расшифровки LUKS нужно проделать следующие шаги:

  1. Извлечь метаданные шифрования (заголовок LUKS) из состава контейнера или диска утилитой Elcomsoft Forensic Disk Decryptor или Elcomsoft System Recovery. Данные сохраняются в небольшом файле.
  2. Открыть файл с метаданными шифрования в Elcomsoft Distributed Password Recovery, выбрать слот ключа, настроить и провести атаку.
  3. После того, как пароль будет найден, смонтировать или расшифровать зашифрованный диск.

Для извлечения метаданных шифрования можно воспользоваться одним из двух инструментов. При исследовании непосредственно компьютера подозреваемого его можно загрузить с USB-накопителя, созданного программой Elcomsoft System Recovery. В этом случае метаданные шифрования можно извлечь непосредственно с исследуемого компьютера.

Если же в вашем распоряжении диски или образы дисков, то для извлечения метаданных следует воспользоваться программой Elcomsoft Forensic Disk Decryptor.

Использование Elcomsoft System Recovery

Внимание: используйте Elcomsoft System Recovery версии 7.06 или более новой.

  1. Скачайте Elcomsoft System Recovery и запустите программу установки. Создайте загрузочный USB накопитель.
  2. Загрузите исследуемый компьютер с созданного на предыдущем шаге USB накопителя. Вы попадёте в среду Windows PE. Утилита Elcomsoft System Recovery запустится автоматически.
  3. Просмотрите список дисков.
  4. Выберите диски LUKS и нажмите “Dump” для сохранения метаданных шифрования.
  5. Откройте файл с метаданными шифрования в Elcomsoft Distributed Password Recovery для настройки атаки.

Использование Elcomsoft Forensic Disk Decryptor

Внимание: используйте Elcomsoft Forensic Disk Decryptor версии 2.13 или выше.

  1. Запустите Elcomsoft Forensic Disk Decryptor.
  2. Выберите опцию “Extract/prepare data for further password recovery”.
  3. Выберите диск или образ диска LUKS. В примере ниже выбран физический диск.
  4. EFDD отобразит список зашифрованных томов. Выберите том для извлечения метаданных.
  5. Нажмите Next для сохранения метаданных шифрования в файл.

Шаг 2: восстановление пароля

LUKS обеспечивает стойкую защиту от перебора, но современные инструменты для взлома паролей позволяют значительно ускорить перебор с использованием как аппаратных ускорителей на основе видеокарт, так и многочисленных компьютеров, объединённых в единую вычислительную сеть.

Для настройки атаки выполните следующие действия.

  1. Запустите Elcomsoft Distributed Password Recovery.
  2. Откройте файл с метаданными LUKS, сохранённый при помощи Elcomsoft Forensic Disk Decryptor либо Elcomsoft System Recovery.
  3. Выберите слот ключа.
  4. Настройте и запустите атаку.

Скорость перебора – важный, но не основной параметр, влияющий на время восстановления пароля. Использование «умных» атак может существенно сократить времязатраты – особенно в случаях, когда о пароле хоть что-нибудь известно. К примеру, если вам удалось извлечь список других паролей пользователя из облака Google, iCloud или Microsoft Account или из браузера пользователя (например, Chrome, Microsoft Edge, Firefox и др.), возможно, выяснятся некоторые закономерности, согласно которым пользователь составляет пароли. К примеру, могут использоваться определённые наборы символов:

Elcomsoft Distributed Password Recovery предлагает многочисленные варианты атак по шаблонам (например, таким, по которым создаются пароли вида Password1, password1967 или pa$$w0rd):

Можно использовать маски:


В особо сложных случаях можно подключать до двух словарей и использовать правила генерации паролей на основе скриптов:

Насколько быстро это работает?

Даже если скорость перебора точно известна, на время, необходимое для восстановления пароля LUKS, влияет множество других вещей. Длина пароля и его энтропия, а также то, что вы знаете о пароле или шаблонах, на основе которых пользователь создаёт пароли, будет иметь решающее значение.

При этом скорость перебора для разных дисков LUKS – величина переменная даже на одном и том же оборудовании. Скорость перебора зависит от множества факторов, основные из которых перечислены ниже.

Оборудование для атаки. Использование графических ускорителей на основе видеокарт, объединение компьютеров в единую вычислительную сеть и использование облачных вычислений способны увеличить скорость перебора на несколько порядков.

Выбранная хэш-функция. При создании зашифрованного диска пользователь может выбрать хэш-функцию (или использовать хэш по умолчанию). Из доступных вариантов (RIPEMD160, SHA-1, SHA-256, SHA-512, WHIRLPOOL) самым быстрым является RIPEMD160, а самым медленным –WHIRLPOOL. Скорость атаки будет отличаться в зависимости от того, какой алгоритм хэширования выбран.

Параметры шифрования. Выбор алгоритма и режима шифрования также влияют на скорость перебора, хоть и в значительно меньшей степени, чем выбор хэш-функции.

Количество итераций и, опосредованно, мощность компьютера пользователя. В отличие от других средств шифрования, LUKS варьирует количество итераций хэш-функции в зависимости от мощности компьютера, на котором создаётся зашифрованный диск (при этом количество итераций не изменится после создания, даже если диск установить в другой компьютер). На слабом компьютере используется меньшее количество итераций, на более мощном – большее. Соответственно, скорость атаки для дисков LUKS будет выше, если диск был зашифрован на слабом оборудовании.

Интересный момент: LUKS адаптирует количество итераций не только к мощности компьютера, но и к выбранным пользователем параметрам шифрования. В теории это должно нивелировать различия в скорости между разными хэш-функциями. На практике количество итераций хоть и отличается в зависимости от выбора хэш-функции и параметров шифрования, но разрыв всё-таки сохраняется – хоть и меньше, чем мог бы быть при фиксированном числе итераций. Это хорошо видно на графике измерения производительности:

Важный момент: LUKS сохраняет информацию о числе итераций в заголовке. В то же время, в контейнерах VeraCrypt эта информация не сохраняется, выступая в роли дополнительного секрета, усложняющего атаку.

Заключение

LUKS не только популярная и распространённая, но и очень интересная система шифрования дисков. Поддержка до восьми слотов ключей, предоставляемый выбор хэш-функций, алгоритмов и режимов шифрования, а также адаптивный алгоритм выбора количества итераций при настройке шифрования делают LUKS образцовым вариантом реализации шифрования дисков.


  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

REFERENCES:

Elcomsoft Distributed Password Recovery

Производительное решение для восстановление паролей к десяткам форматов файлов, документов, ключей и сертификатов. Аппаратное ускорение с использованием потребительских видеокарт и лёгкое масштабирование до 10,000 рабочих станций делают решение Элкомсофт оптимальным для исследовательских лабораторий и государственных агентств.

Официальная страница Elcomsoft Distributed Password Recovery »


Elcomsoft Forensic Disk Decryptor

Elcomsoft Forensic Disk Decryptor обеспечивает моментальный доступ к содержимому зашифрованных дисков, созданных BitLocker, FileVault 2, PGP Disk, TrueCrypt и VeraCrypt. Доступны режимы полной расшифровки и оперативного доступа к информации. Ключи для расшифровки содержимого зашифрованных дисков извлекаются из слепка оперативной памяти компьютера, методом атаки через порт FireWire либо анализом файла гибернации. Возможно использования паролей и депонированных ключей.

Официальная страница Elcomsoft Forensic Disk Decryptor »


Elcomsoft System Recovery

Elcomsoft System Recovery поможет восстановить доступ к учётным записям к локальным учётным записям Windows и универсальной учётной записи Microsoft Account и создать образ диска для последующего анализа. Поддерживается как моментальный сброс, так и восстановление оригинального пароля. С помощью Elcomsoft System Recovery можно предоставить административные привилегии любому пользователю. Продукт поставляется вместе с лицензионной загрузочной средой Windows PE.

Официальная страница Elcomsoft System Recovery »

НАШИ НОВОСТИ