Введение
Нет. Шифрование диска — это частный случай защиты данных в состоянии покоя, когда носителем информации является устройство, адресуемое по секторам (например, жесткий диск). В данной статье рассматриваются криптографические аспекты этой задачи. Общий обзор представлен в статье «Шифрование диска». Обсуждение различных программных и аппаратных средств, предназначенных для решения этой задачи, можно найти в статьях «Программное обеспечение для шифрования диска» и «Аппаратное обеспечение для шифрования диска».
Disk encryption is a special case of data at rest protection when the storage medium is a sector addressable device (e. g., a hard disk). This article presents cryptographic aspects of the problem. For an overview, see disk encryption. For discussion of different software packages and hardware devices devoted to this problem, see disk encryption software and disk encryption hardware.
Узкий и широкий блок
Методы шифрования дисков также различаются на методы "узкого блока" и "широкого блока". Для открытого текста размером с сектор, метод узкого блока шифрует его несколькими блоками, в то время как метод широкого блока выполняет это за один блок. Методы узкого блока, такие как LRW, XES и XTS, позволяют злоумышленнику использовать зернистость блоков для проведения анализа трафика и повторного использования данных.
Моды на основе блокшифровки
Как и большинство схем шифрования, шифрование диска на основе блочных шифров использует режимы работы, позволяющие шифровать объемы данных, превышающие размер блока шифра (обычно 128 бит). Режимы работы, таким образом, определяют правила многократного применения операций шифрования над отдельными блоками данных.
Зашифрованный вектор инициализации сектора солей (ESSIV)
ESSIV — это метод генерации векторов инициализации для блочного шифрования, используемый при шифровании диска. Традиционные методы генерации векторов инициализации представляют собой предсказуемые последовательности чисел, основанные, например, на временной метке или номере сектора, и позволяют проводить определенные атаки, такие как атака с внедрением водяного знака. ESSIV предотвращает подобные атаки, генерируя векторы инициализации из комбинации номера сектора SN и хеша ключа. Именно сочетание с ключом в форме хеша делает вектор инициализации непредсказуемым. ESSIV был разработан Клеменсом Фрухвиртом и интегрирован в ядро Linux начиная с версии 2.6.10, хотя аналогичная схема использовалась для генерации векторов инициализации для шифрования подкачки в OpenBSD с 2000 года. ESSIV поддерживается в качестве опции системами шифрования дисков dm-crypt и FreeOTFE.
Атака на пластичность
Хотя CBC (с ESSIV или без него) обеспечивает конфиденциальность, он не гарантирует целостность зашифрованных данных. Если злоумышленник знает исходный текст, можно изменить каждый второй блок исходного текста на значение, выбранное атакующим, а промежуточные блоки – на случайные значения. Это может быть использовано для осуществления практических атак на шифрование диска в режимах CBC или CBC ESSIV.
Лисков, Ривест и Вагнер (LRW)
Настраиваемое узкоблочное шифрование (LRW) является реализацией режима работы, предложенного Лисковым, Ривестом и Вагнером (см. Теорему 2). Этот режим использует два ключа: ключ для блочного шифра и дополнительный ключ того же размера, что и блок. Например, для AES с 256-битным ключом, является 256-битным числом, а – 128-битным числом. Шифрование блока с логическим индексом (твиком) осуществляется по следующей формуле:
Здесь умножение и сложение выполняются в конечном поле (для AES). При предварительных вычислениях требуется всего одно умножение на сектор (стоит отметить, что сложение в бинарном конечном поле – это простое побитовое сложение, также известное как XOR): , где предварительно вычисляются для всех возможных значений . Этот режим работы требует только одного шифрования на блок и защищает от всех вышеперечисленных атак, за исключением незначительной утечки: если пользователь изменяет один блок открытого текста в секторе, изменяется только один блок зашифрованного текста. (Следует отметить, что это не та же утечка, что и в режиме ECB: в режиме LRW одинаковые блоки открытого текста в разных позициях шифруются в разные блоки зашифрованного текста.) Существуют определенные соображения безопасности относительно LRW, и в настоящее время этот режим работы заменен на XTS. LRW используется BestCrypt и поддерживается как опция в системах шифрования дисков dm-crypt и FreeOTFE.
XEX-модуль с измененным кодовым книжком с кражей шифрованного текста (XTS)
Кража шифротекста обеспечивает поддержку секторов с размером, не кратным размеру блока, например, секторов размером 520 байт и блоков размером 16 байт. XTS AES был стандартизирован 19 декабря 2007 года как IEEE P1619. Стандарт XTS требует использования отдельного ключа для шифрования вектора инициализации (IV), чем для шифрования блока; это отличается от XEX, который использует только один ключ. Следовательно, пользователям, желающим использовать шифрование AES 256 и AES 128, необходимо предоставить ключи длиной 512 и 256 бит соответственно. Два ключа (то есть обе половины ключа XTS) должны быть различными, чтобы XTS был CCA-безопасным, поскольку XTS вычисляет последовательность, начиная с ; это отличается от XEX, который начинается с в финальной форме. SP 800 38E является рекомендацией для режима работы XTS AES, стандартизированного IEEE Std 1619 2007, для криптографических модулей. В публикации режим XTS AES алгоритма AES одобрен со ссылкой на IEEE Std 1619 2007, при условии выполнения одного дополнительного требования, которое ограничивает максимальный размер каждой зашифрованной единицы данных (обычно сектора или блока диска) до 220 блоков AES. Согласно SP 800 38E, "при отсутствии аутентификации или контроля доступа, XTS AES обеспечивает более высокую защиту, чем другие одобренные режимы, ориентированные только на конфиденциальность, от несанкционированных изменений зашифрованных данных". XTS поддерживается BestCrypt, Botan, cgd NetBSD, dm crypt, FreeOTFE, TrueCrypt, VeraCrypt, DiskCryptor, geli FreeBSD, программным обеспечением для шифрования дисков OpenBSD softraid, OpenSSL, FileVault 2 Mac OS X Lion, BitLocker Windows 10 и wolfCrypt.
Слабые стороны XTS
Режим XTS уязвим к манипулированию и подделке данных, поэтому приложения должны использовать меры для обнаружения изменений данных, если манипуляции и подделка представляют собой проблему: "поскольку отсутствуют теги аутентификации, любой шифротекст (исходный или измененный злоумышленником) будет расшифрован как некоторый открытый текст, и нет встроенного механизма для обнаружения изменений. Лучшее, что можно сделать, – это обеспечить, чтобы любое изменение шифротекста полностью рандомизировало открытый текст и полагаться на приложение, использующее это преобразование, для включения достаточной избыточности в свой открытый текст, чтобы обнаруживать и отбрасывать такие случайные открытые тексты". Это потребует поддержания контрольных сумм для всех данных и метаданных на диске, как это реализовано в ZFS или Btrfs. Однако в широко используемых файловых системах, таких как ext4 и NTFS, защищены только метаданные от подделки, в то время как обнаружение подделки данных отсутствует. Режим уязвим к анализу трафика, атакам повторного использования и рандомизации на уровне секторов и 16-байтовых блоков. По мере перезаписи сектора злоумышленники могут собирать детализированные (16-байтовые) шифротексты, которые могут быть использованы для анализа или атак повторного использования (с гранулярностью 16 байт). Было бы возможно определить блочные шифры для всего сектора, но, к сожалению, это привело бы к снижению производительности (см. ниже).
Режимы шифрования потоков
Конструкция HBSH (хеш, блочный шифр, потоковый шифр, хеш), опубликованная сотрудниками Google в 2018 году, позволяет использовать быстрый потоковый шифр в шифровании диска. Схема Adiantum, используемая в Android-устройствах начального уровня, специально выбирает NH, 256-битный стандарт шифрования (AES 256), ChaCha12 и Poly1305. Конструкция допускает настройку и работает с широкими блоками. Она требует трех проходов по данным, но при этом быстрее, чем AES 128 XTS на ARM Cortex A7 (который не имеет аппаратной поддержки AES). В 2023 году Альдо Гансинг, Джоан Деймен и Барт Меннинк представили конструкцию "double decker", которая также использует потоковый шифр. Она также допускает настройку и работает с широкими блоками.