Шифрование диска - это особый случай защиты данных в состоянии покоя, когда носитель данных является устройство с секторной адресацией (например, жесткий диск). В этой статье представлены криптографические аспекты проблемы. Для обзора см. шифрование диска. Для обсуждения различных программных пакетов и аппаратных устройств, посвященных этой проблеме, см. программное обеспечение для шифрования диска и оборудование для шифрования диска.
Цель методов шифрования диска для обеспечения трех различных свойств:
. Первое свойство требует определения злоумышленника, от которого данные хранятся конфиденциально. Самые сильные злоумышленники, изученные в области шифрования дисков, обладают следующими способностями:
Метод обеспечивает хорошую конфиденциальность, если единственная информация, которую такой злоумышленник может определить с течением времени, - это данные в секторе или не изменилось с момента последнего просмотра.
Второе свойство требует разделения диска на несколько секторов, обычно длиной 512 байт (4096 бит), которые шифруются и дешифруются независимо друг от друга. В свою очередь, чтобы данные оставались конфиденциальными, метод шифрования необходимо настраивать; никакие два сектора не должны обрабатываться одинаково. В противном случае злоумышленник может расшифровать любой сектор диска, скопировав его в неиспользуемый сектор диска и запросив его расшифровку.
Третье свойство обычно не вызывает споров. Однако он косвенно запрещает использование потоковых шифров , поскольку потоковые шифры требуют для своей безопасности, чтобы одно и то же начальное состояние не использовалось дважды (что могло бы иметь место, если бы сектор обновлялся разными данными) ; таким образом, для этого потребуется метод шифрования для хранения отдельных начальных состояний для каждого сектора на диске - по-видимому, пустая трата места. Альтернатива, блочный шифр , ограничена определенным размером блока (обычно 128 или 256 бит). Из-за этого шифрование диска в основном изучает режимы сцепления, которые увеличивают длину блока шифрования, чтобы покрыть весь сектор диска. Уже перечисленные соображения делают непригодными несколько хорошо известных режимов объединения: режим ECB, который нельзя настроить, и режимы, которые превращают блочные шифры в потоковые шифры, такие как режим CTR.
Эти три свойства не обеспечивают никакой гарантии целостности диска; то есть они не сообщают вам, изменял ли злоумышленник ваш зашифрованный текст. Отчасти это связано с тем, что абсолютная гарантия целостности диска невозможна: несмотря ни на что, злоумышленник всегда может вернуть весь диск в предыдущее состояние, обойдя любые такие проверки. Если желателен некоторый неабсолютный уровень целостности диска, он может быть достигнут внутри зашифрованного диска на основе файла за файлом, используя коды аутентификации сообщений.
Как В большинстве схем шифрования, шифрование диска на основе блочного шифра использует режимы работы, которые позволяют шифровать большие объемы данных, чем размер блока шифров (обычно 128 бит). Таким образом, режимы представляют собой правила того, как многократно применять одноблочные операции шифров.
Цепочка блоков шифрования (CBC) - это общий режим объединения, в котором зашифрованный текст предыдущего блока xored с открытым текстом текущего блока до шифрования:
Поскольку для первого блока нет «зашифрованного текста предыдущего блока», вектор инициализации (IV) должен использоваться как . Это, в свою очередь, делает CBC в некоторой степени настраиваемым.
CBC страдает некоторыми проблемами. Например, если IV предсказуемы, то злоумышленник может оставить «водяной знак» на диске, то есть сохранить специально созданный файл или комбинацию файлов, идентифицируемых даже после шифрования. Точный метод создания водяного знака зависит от точной функции, обеспечивающей IV, но общий рецепт состоит в создании двух зашифрованных секторов с идентичными первыми блоками и ; затем эти два связаны друг с другом соотношением . Таким образом, шифрование идентично шифрованию , оставляя водяной знак на диске. Затем можно изменить точный шаблон «такой же-другой-такой же-другой» на диске, чтобы сделать водяной знак уникальным для данного файла.
Для защиты от атаки с использованием водяных знаков используется шифр или хеш-функция для генерации IV из ключа и текущего номера сектора, так что злоумышленник не может предсказать IV. В частности, подход ESSIV использует блочный шифр в режиме CTR для генерации IV.
ESSIV - это метод генерации векторов инициализации для блочного шифрования для использования при шифровании диска. Обычные методы генерации IV представляют собой предсказуемые последовательности чисел на основе, например, отметки времени или номера сектора, и предотвращают определенные атаки, такие как атака с использованием водяных знаков . ESSIV предотвращает такие атаки, генерируя IV из комбинации номера сектора SN с хешем ключа. Именно комбинация с ключом в виде хэша делает IV непредсказуемым.
ESSIV был разработан и был интегрирован в ядро Linux начиная с версии 2.6.10, хотя аналогичная схема использовалась для генерации IV для шифрования подкачки OpenBSD с 2000 года.
ESSIV поддерживается в качестве опции системами шифрования дисков dm-crypt и FreeOTFE.
Хотя CBC (с ESSIV или без него) обеспечивает конфиденциальность, он не гарантирует целостность зашифрованных данных. Если открытый текст известен злоумышленнику, можно изменить каждый второй блок открытого текста на значение, выбранное злоумышленником, в то время как блоки между ними изменяются на случайные значения. Это может быть использовано для практических атак на шифрование диска в режиме CBC или CBC-ESSIV.
Для предотвращения таких сложных атак используются различные режимы Были введены операции: настраиваемое узкоблочное шифрование (LRW и XEX) и широкоблочное шифрование (CMC и EME).
В то время как цель обычного блочного шифра - имитировать случайную перестановку для любого секретного ключа , цель настраиваемого шифрования - имитировать случайную перестановку для любого секретного ключа и любая известная настройка . Настраиваемое узкоблочное шифрование (LRW) - это реализация режима операций, введенного Лисковым, Ривестом и Вагнером (см. Теорему 2). В этом режиме используются два ключа: - ключ для блочного шифра, а - дополнительный ключ того же размера, что и блок. Например, для AES с 256-битным ключом - это 256-битное число, а - 128-битное число. Блок шифрования с логическим индексом (настройка) использует следующую формулу:
Здесь умножение и сложение выполняются в конечном поле (для AES). При некоторых предварительных вычислениях требуется только одно умножение на сектор (обратите внимание, что сложение в двоичном конечном поле является простым поразрядным сложением, также известным как xor): , где предварительно вычисляются для всех возможных значений . В этом режиме работы требуется только одно шифрование для каждого блока, и он защищает от всех вышеперечисленных атак, кроме незначительной утечки: если пользователь изменяет один блок открытого текста в секторе, то изменяется только один блок зашифрованного текста. (Обратите внимание, что это не та же утечка, что и в режиме ECB: в режиме LRW равные открытые тексты в разных позициях зашифровываются в разные зашифрованные тексты.)
Некоторые проблемы безопасности существуют с LRW, и это режим работы сейчас заменен на XTS.
LRW используется BestCrypt и поддерживается в качестве опции для систем шифрования дисков dm-crypt и FreeOTFE.
Другой настраиваемый режим шифрования, XEX (xor – encrypt – xor ), был разработан Rogaway для обеспечения эффективной обработки последовательных блоки (по отношению к используемому шифру) в одном блоке данных (например, сектор диска). Настройка представлена как комбинация адреса сектора и индекса блока внутри сектора (исходный режим XEX, предложенный Rogaway, допускает несколько индексов). Зашифрованный текст, , получается следующим образом:
где:
Основные операции режима LRW (шифр AES и поле Галуа умножение) такие же, как и в режиме Галуа / Счетчик (GCM), что позволяет компактно реализовать универсальное оборудование LRW / XEX / GCM.
У XEX есть слабость.
Кража зашифрованного текста обеспечивает поддержку секторов, размер которых не делится на размер блока, например, 520-байтовые секторы и 16-байтовые блоки. XTS-AES был стандартизирован 19 декабря 2007 г. как IEEE P1619. Стандарт поддерживает использование другого ключа для шифрования IV, чем для блочного шифрования; это противоречит намерениям XEX и, по-видимому, коренится в неправильной интерпретации исходной статьи XEX, но не вредит безопасности. В результате пользователи, которым требуется шифрование AES -256 и AES-128, должны предоставить 512 бит и 256 бит ключа соответственно.
27 января 2010 г. NIST выпустил специальную публикацию (SP) 800-38E в окончательной форме. SP 800-38E - это рекомендация для режима работы XTS-AES, стандартизованного IEEE Std 1619-2007, для криптографических модулей. Публикация утверждает режим XTS-AES алгоритма AES со ссылкой на IEEE Std 1619-2007 с учетом одного дополнительного требования, которое ограничивает максимальный размер каждой зашифрованной единицы данных (обычно сектор или блок диска ) на 2 блока AES. Согласно SP 800-38E, «В отсутствие аутентификации или контроля доступа XTS-AES обеспечивает большую защиту от несанкционированного манипулирования зашифрованными данными, чем другие одобренные режимы только с соблюдением конфиденциальности».
XTS поддерживается BestCrypt, Botan, NetBSD cgd, dm-crypt, FreeOTFE, TrueCrypt, VeraCrypt, DiskCryptor, FreeBSD 's geli, OpenBSD программное обеспечение для шифрования дисков softraid, OpenSSL, Mac OS X Lion FileVault 2, Windows 10 BitLocker и wolfCrypt.
Режим XTS восприимчив к манипуляциям и подделке данных, и приложения должны применять меры для обнаружения модификаций данных, если манипуляции и подделка вызывают беспокойство: "...поскольку теги аутентификации отсутствуют, любой зашифрованный текст (исходный или измененный злоумышленником) будет расшифрован как некий открытый текст, и нет встроенного механизма для обнаружения изменений. Лучшее, что можно сделать, - это гарантировать, что любое изменение зашифрованный текст будет полностью рандомизировать открытый текст и будет полагаться на приложение, которое использует это преобразование, чтобы включить достаточное количество избыточных данных. y в своем открытом тексте, чтобы обнаруживать и отбрасывать такие случайные открытые тексты ". Это потребует ведения контрольных сумм для всех данных и метаданных на диске, как это сделано в ZFS или Btrfs. Однако в широко используемых файловых системах, таких как ext4 и NTFS, только метаданные защищены от подделки, в то время как обнаружение подделки данных отсутствует.
Режим подвержен атакам анализа трафика, воспроизведения и рандомизации на сектора и 16-байтовые блоки. Когда данный сектор перезаписывается, злоумышленники могут собирать мелкозернистые (16-байтовые) зашифрованные тексты, которые могут использоваться для анализа или повторных атак (с 16-байтовой степенью детализации). Можно было бы определить блочные шифры для всего сектора, к сожалению, с ухудшенной производительностью (см. Ниже).
CMC и EME защищают даже от незначительной утечки, упомянутой выше для ЖРО. К сожалению, цена заключается в двукратном снижении производительности: каждый блок должен быть дважды зашифрован; многие считают, что это слишком дорого, поскольку такая же утечка на уровне сектора в любом случае неизбежна.
CMC, введенный Халеви и Рогэвэем, означает CBC – mask – CBC: весь сектор, зашифрованный в режиме CBC (с ), зашифрованный текст маскируется xoring с помощью , и повторно зашифрованы в режиме CBC, начиная с последнего блока. Когда базовый блочный шифр представляет собой сильную псевдослучайную перестановку (PRP), тогда на уровне сектора схема представляет собой настраиваемую PRP. Одна из проблем заключается в том, что для расшифровки необходимо последовательно дважды пройти через все данные.
Чтобы решить эту проблему, Халеви и Рогавей представили вариант с возможностью распараллеливания, названный EME (ECB – mask – ECB). Это работает следующим образом:
Обратите внимание, что в отличие от LRW и CMC существует только один ключ .
CMC и EME рассматривались для стандартизации SISWG. EME запатентован и поэтому не является основным поддерживаемым режимом.
Хотя аутентифицированное шифрование схема IAPM обеспечивает шифрование, как а также тег аутентификации, компонент шифрования режима IAPM полностью описывает схемы LRW и XEX, указанные выше, и, следовательно, XTS без аспекта кражи зашифрованного текста. Это подробно описано на рисунках 8 и 5 патента США 6,963,976.
| journal =
() CS1 maint: multiple names: Список авторов (ссылка )| journal =
()