Шифрование по стандарту 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 (от 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, но в процессе создания зашифрованного диска или контейнера пользователь может указать другой алгоритм. В наших продуктах поддерживаются алгоритмы AES, Serpent и Twofish как наиболее распространённые.
Режимы шифрования
В LUKS можно использовать один из следующих режимов шифрования:
В различных дистрибутивах Linux могут использоваться различные настройки по умолчанию. К примеру, в Red Hat Linux используется комбинация параметров cbc-essiv:sha256 с шифрованием AES и 256-битным ключом. Эти настройки встречаются чаще всего.
Хэш-функции
Хэш-функции, или функции одностороннего криптографического преобразования, используются для преобразования пароля в двоичный ключ в составе Key Derivation Function (KDF). LUKS поддерживает следующие варианты:
По умолчанию используется SHA-256. При этом Whirlpool – отличный пример хэш-функции, которая не является частью спецификации, но присутствует и используется в реальной жизни. В наших продуктах поддерживаются все перечисленные хэш-функции.
Настройки шифрования по умолчанию
Чаще всего при создании зашифрованного диска используются настройки по умолчанию: aes-cbc-essiv:sha256 с ключом шифрования длиной 256 бит. Ниже приводится расшифровка параметров шифрования:
Альтернативные настройки шифрования
Как пользователь, так и автор сборки Linux могут указать альтернативные настройки шифрования. При этом не все комбинации алгоритмов и режимов работы совместимы между собой. Впрочем, так или иначе все выбранные настройки шифрования будут прописаны в заголовке LUKS, и для проведения атаки их достаточно будет считать из него. Elcomsoft Distributed Password Recovery автоматически определяет параметры шифрования LUKS.
Слоты ключей
Поддержка нескольких (до восьми) слотов ключей – одна из возможностей LUKS, заметно влияющих на процесс подбора пароля. Каждый из восьми слотов может быть защищён своим собственным уникальным паролем. Соответственно, для доступа к данным достаточно восстановить любой пароль к любому из занятых слотов. В заголовке LUKS прописана информация о том, какие из слотов ключей заняты (т.е. содержат действительные ключи для доступа к данным), а какие пустуют.
При настройке атаки в Elcomsoft Distributed Password Recovery эксперт выбирает слот ключа, на который будет проводиться атака. В списке слотов ключей, которые выводит Distributed Password Recovery, указывается, какие из слотов содержат действительные ключи, а какие – пустуют. Обратите внимание: если пустуют все слоты (такое возможно как при случайном удалении последнего ключа, так и при умышленном уничтожении с целью предотвращения доступа), то восстановить доступ к зашифрованным данным будет невозможно.
Как мы уже говорили, для проведения атаки на зашифрованный диск необходимо знать все параметры шифрования и иметь доступ к слотам ключей. Эти данные содержатся в заголовке LUKS, который необходимо извлечь из зашифрованного диска или контейнера. Таким образом, для расшифровки LUKS нужно проделать следующие шаги:
Для извлечения метаданных шифрования можно воспользоваться одним из двух инструментов. При исследовании непосредственно компьютера подозреваемого его можно загрузить с USB-накопителя, созданного программой Elcomsoft System Recovery. В этом случае метаданные шифрования можно извлечь непосредственно с исследуемого компьютера.
Если же в вашем распоряжении диски или образы дисков, то для извлечения метаданных следует воспользоваться программой Elcomsoft Forensic Disk Decryptor.
Использование Elcomsoft System Recovery
Внимание: используйте Elcomsoft System Recovery версии 7.06 или более новой.
Использование Elcomsoft Forensic Disk Decryptor
Внимание: используйте Elcomsoft Forensic Disk Decryptor версии 2.13 или выше.
LUKS обеспечивает стойкую защиту от перебора, но современные инструменты для взлома паролей позволяют значительно ускорить перебор с использованием как аппаратных ускорителей на основе видеокарт, так и многочисленных компьютеров, объединённых в единую вычислительную сеть.
Для настройки атаки выполните следующие действия.
Скорость перебора – важный, но не основной параметр, влияющий на время восстановления пароля. Использование «умных» атак может существенно сократить времязатраты – особенно в случаях, когда о пароле хоть что-нибудь известно. К примеру, если вам удалось извлечь список других паролей пользователя из облака 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 образцовым вариантом реализации шифрования дисков.
Производительное решение для восстановление паролей к десяткам форматов файлов, документов, ключей и сертификатов. Аппаратное ускорение с использованием потребительских видеокарт и лёгкое масштабирование до 10,000 рабочих станций делают решение Элкомсофт оптимальным для исследовательских лабораторий и государственных агентств.
Официальная страница Elcomsoft Distributed Password Recovery »
Elcomsoft Forensic Disk Decryptor обеспечивает моментальный доступ к содержимому зашифрованных дисков, созданных BitLocker, FileVault 2, PGP Disk, TrueCrypt и VeraCrypt. Доступны режимы полной расшифровки и оперативного доступа к информации. Ключи для расшифровки содержимого зашифрованных дисков извлекаются из слепка оперативной памяти компьютера, методом атаки через порт FireWire либо анализом файла гибернации. Возможно использования паролей и депонированных ключей.
Elcomsoft System Recovery поможет восстановить доступ к учётным записям к локальным учётным записям Windows и универсальной учётной записи Microsoft Account и создать образ диска для последующего анализа. Поддерживается как моментальный сброс, так и восстановление оригинального пароля. С помощью Elcomsoft System Recovery можно предоставить административные привилегии любому пользователю. Продукт поставляется вместе с лицензионной загрузочной средой Windows PE.