Теория шифрования диска

редактировать

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

Содержание
  • 1 Определение проблемы
  • 2 Режимы на основе блочного шифрования
    • 2.1 Объединение шифровальных блоков (CBC)
      • 2.1.1 Зашифрованный вектор инициализации соляного сектора (ESSIV)
      • 2.1.2 Атака гибкости
    • 2.2 Лисков, Ривест и Вагнер (LRW)
    • 2.3 Xor – encrypt – xor (XEX)
      • 2.3.1 Режим настраиваемой кодовой книги на основе XEX с кражей зашифрованного текста (XTS)
      • 2.3.2 Слабые стороны XTS
    • 2.4 CBC – маска – CBC (CMC) и ECB –Mask – ECB (EME)
  • 3 Патенты
  • 4 См. Также
  • 5 Ссылки
  • 6 Дополнительная литература
  • 7 Внешние ссылки
Определение проблемы

Цель методов шифрования диска для обеспечения трех различных свойств:

  1. данные на диске должны оставаться конфиденциальными.
  2. извлечение данных и хранение должны выполняться быстро, независимо от того, где на диске хранятся данные.
  3. Метод шифрования не должен занимать место на диске ( т.е. объем хранилища, используемый для зашифрованных данных, не должен быть значительно больше, чем размер открытого текста ).

. Первое свойство требует определения злоумышленника, от которого данные хранятся конфиденциально. Самые сильные злоумышленники, изученные в области шифрования дисков, обладают следующими способностями:

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

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

Второе свойство требует разделения диска на несколько секторов, обычно длиной 512 байт (4096 бит), которые шифруются и дешифруются независимо друг от друга. В свою очередь, чтобы данные оставались конфиденциальными, метод шифрования необходимо настраивать; никакие два сектора не должны обрабатываться одинаково. В противном случае злоумышленник может расшифровать любой сектор диска, скопировав его в неиспользуемый сектор диска и запросив его расшифровку.

Третье свойство обычно не вызывает споров. Однако он косвенно запрещает использование потоковых шифров , поскольку потоковые шифры требуют для своей безопасности, чтобы одно и то же начальное состояние не использовалось дважды (что могло бы иметь место, если бы сектор обновлялся разными данными) ; таким образом, для этого потребуется метод шифрования для хранения отдельных начальных состояний для каждого сектора на диске - по-видимому, пустая трата места. Альтернатива, блочный шифр , ограничена определенным размером блока (обычно 128 или 256 бит). Из-за этого шифрование диска в основном изучает режимы сцепления, которые увеличивают длину блока шифрования, чтобы покрыть весь сектор диска. Уже перечисленные соображения делают непригодными несколько хорошо известных режимов объединения: режим ECB, который нельзя настроить, и режимы, которые превращают блочные шифры в потоковые шифры, такие как режим CTR.

Эти три свойства не обеспечивают никакой гарантии целостности диска; то есть они не сообщают вам, изменял ли злоумышленник ваш зашифрованный текст. Отчасти это связано с тем, что абсолютная гарантия целостности диска невозможна: несмотря ни на что, злоумышленник всегда может вернуть весь диск в предыдущее состояние, обойдя любые такие проверки. Если желателен некоторый неабсолютный уровень целостности диска, он может быть достигнут внутри зашифрованного диска на основе файла за файлом, используя коды аутентификации сообщений.

режимы на основе блочного шифрования

Как В большинстве схем шифрования, шифрование диска на основе блочного шифра использует режимы работы, которые позволяют шифровать большие объемы данных, чем размер блока шифров (обычно 128 бит). Таким образом, режимы представляют собой правила того, как многократно применять одноблочные операции шифров.

Цепочка блоков шифрования (CBC)

Цепочка блоков шифрования (CBC) - это общий режим объединения, в котором зашифрованный текст предыдущего блока xored с открытым текстом текущего блока до шифрования:

C i = EK (C i - 1 ⊕ P i). {\ displaystyle C_ {i} = E_ {K} (C_ {i-1} \ oplus P_ {i}).}{\ displaystyle C_ {i} = E_ {K} (C_ {i-1} \ oplus P_ {i}).}

Поскольку для первого блока нет «зашифрованного текста предыдущего блока», вектор инициализации (IV) должен использоваться как C - 1 {\ displaystyle C _ {- 1}}{\ displaystyle C _ {- 1}} . Это, в свою очередь, делает CBC в некоторой степени настраиваемым.

CBC страдает некоторыми проблемами. Например, если IV предсказуемы, то злоумышленник может оставить «водяной знак» на диске, то есть сохранить специально созданный файл или комбинацию файлов, идентифицируемых даже после шифрования. Точный метод создания водяного знака зависит от точной функции, обеспечивающей IV, но общий рецепт состоит в создании двух зашифрованных секторов с идентичными первыми блоками b 1 {\ displaystyle b_ {1}}b_ {1} и б 2 {\ displaystyle b_ {2}}b_ {2} ; затем эти два связаны друг с другом соотношением b 1 ⊕ IV 1 = b 2 ⊕ IV 2 {\ displaystyle b_ {1} \ oplus IV_ {1} = b_ {2} \ oplus IV_ {2}}{\ displaystyle b_ {1} \ oplus IV_ {1} = b_ {2} \ oplus IV_ {2}} . Таким образом, шифрование b 1 {\ displaystyle b_ {1}}b_ {1} идентично шифрованию b 2 {\ displaystyle b_ {2}}b_ {2} , оставляя водяной знак на диске. Затем можно изменить точный шаблон «такой же-другой-такой же-другой» на диске, чтобы сделать водяной знак уникальным для данного файла.

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

Зашифрованный вектор инициализации солевого сектора (ESSIV)

ESSIV - это метод генерации векторов инициализации для блочного шифрования для использования при шифровании диска. Обычные методы генерации IV представляют собой предсказуемые последовательности чисел на основе, например, отметки времени или номера сектора, и предотвращают определенные атаки, такие как атака с использованием водяных знаков . ESSIV предотвращает такие атаки, генерируя IV из комбинации номера сектора SN с хешем ключа. Именно комбинация с ключом в виде хэша делает IV непредсказуемым.

I V (SN) = E s (SN), где s = hash (K). {\ displaystyle IV ({\ textrm {SN}}) = E_ {s} ({\ text {SN}}), \ {\ text {where}} \ s = {\ text {hash}} (K). }{\ displaystyle IV ({\ textrm {SN}}) = E_ {s} ({\ text {SN}}), \ {\ text {где}} \ s = {\ text {hash}} (K).}

ESSIV был разработан и был интегрирован в ядро ​​Linux начиная с версии 2.6.10, хотя аналогичная схема использовалась для генерации IV для шифрования подкачки OpenBSD с 2000 года.

ESSIV поддерживается в качестве опции системами шифрования дисков dm-crypt и FreeOTFE.

Атака гибкости

Хотя CBC (с ESSIV или без него) обеспечивает конфиденциальность, он не гарантирует целостность зашифрованных данных. Если открытый текст известен злоумышленнику, можно изменить каждый второй блок открытого текста на значение, выбранное злоумышленником, в то время как блоки между ними изменяются на случайные значения. Это может быть использовано для практических атак на шифрование диска в режиме CBC или CBC-ESSIV.

Лисков, Ривест и Вагнер (LRW)

Для предотвращения таких сложных атак используются различные режимы Были введены операции: настраиваемое узкоблочное шифрование (LRW и XEX) и широкоблочное шифрование (CMC и EME).

В то время как цель обычного блочного шифра EK {\ displaystyle E_ {K}}E_ {K} - имитировать случайную перестановку для любого секретного ключа K {\ displaystyle K }K , цель настраиваемого шифрования EKT {\ displaystyle E_ {K} ^ {T}}{\ displaystyle E_ {K} ^ {T}} - имитировать случайную перестановку для любого секретного ключа K { \ displaystyle K}K и любая известная настройка T {\ displaystyle T}T . Настраиваемое узкоблочное шифрование (LRW) - это реализация режима операций, введенного Лисковым, Ривестом и Вагнером (см. Теорему 2). В этом режиме используются два ключа: K {\ displaystyle K}K - ключ для блочного шифра, а F {\ displaystyle F}F - дополнительный ключ того же размера, что и блок. Например, для AES с 256-битным ключом K {\ displaystyle K}K - это 256-битное число, а F {\ displaystyle F}F - 128-битное число. Блок шифрования P {\ displaystyle P}P с логическим индексом (настройка) I {\ displaystyle I}I использует следующую формулу:

C = EK ( P ⊕ X) ⊕ X, X = F ⊗ I. {\ displaystyle {\ begin {align} C = E_ {K} (P \ oplus X) \ oplus X, \\ X = F \ otimes I. \ end {align}}}{\ displaystyle {\ begin {align} C = E_ {K} (P \ oplus X) \ oplus X, \\ X = F \ otimes I. \ end {align}}}

Здесь умножение ⊗ {\ displaystyle \ otimes}\ otimes и сложение ⊕ {\ displaystyle \ oplus}\ oplus выполняются в конечном поле (GF (2 128) {\ displaystyle {\ text {GF}} \ left (2 ^ {128} \ right)}{\ displaystyle {\ text {GF}} \ left (2 ^ {128} \ right)} для AES). При некоторых предварительных вычислениях требуется только одно умножение на сектор (обратите внимание, что сложение в двоичном конечном поле является простым поразрядным сложением, также известным как xor): F ⊗ I = F ⊗ (I 0 ⊕ δ) = F ⊗ I 0 ⊕ F ⊗ δ {\ displaystyle F \ otimes I = F \ otimes (I_ {0} \ oplus \ delta) = F \ otimes I_ {0} \ oplus F \ otimes \ delta}{\ displaystyle F \ otimes I = F \ otimes (I_ {0} \ oplus \ delta) = F \ otimes I_ {0} \ oplus F \ otimes \ delta} , где F ⊗ δ {\ displaystyle F \ otimes \ delta}{\ displaystyle F \ otimes \ delta} предварительно вычисляются для всех возможных значений δ {\ displaystyle \ delta}\ delta . В этом режиме работы требуется только одно шифрование для каждого блока, и он защищает от всех вышеперечисленных атак, кроме незначительной утечки: если пользователь изменяет один блок открытого текста в секторе, то изменяется только один блок зашифрованного текста. (Обратите внимание, что это не та же утечка, что и в режиме ECB: в режиме LRW равные открытые тексты в разных позициях зашифровываются в разные зашифрованные тексты.)

Некоторые проблемы безопасности существуют с LRW, и это режим работы сейчас заменен на XTS.

LRW используется BestCrypt и поддерживается в качестве опции для систем шифрования дисков dm-crypt и FreeOTFE.

Xor – encrypt – xor (XEX)

Другой настраиваемый режим шифрования, XEX (xor – encrypt – xor ), был разработан Rogaway для обеспечения эффективной обработки последовательных блоки (по отношению к используемому шифру) в одном блоке данных (например, сектор диска). Настройка представлена ​​как комбинация адреса сектора и индекса блока внутри сектора (исходный режим XEX, предложенный Rogaway, допускает несколько индексов). Зашифрованный текст, C {\ displaystyle C}C , получается следующим образом:

X = EK (I) ⊗ α j, C = EK (P ⊕ X) ⊕ X, {\ displaystyle {\ begin {align} X = E_ {K} (I) \ otimes \ alpha ^ {j}, \\ C = E_ {K} (P \ oplus X) \ oplus X, \ end {align}}}{\ displaystyle {\ begin {align} X = E_ {K} (I) \ otimes \ alpha ^ {j}, \\ C = E_ {K} (P \ oplus X) \ oplus X, \ end {align}}}

где:

P {\ displaystyle P}P - это открытый текст,
I {\ displaystyle I}I - номер сектора,
α { \ displaystyle \ alpha}\ alpha - примитивный элемент GF (2 128) {\ displaystyle {\ text {GF}} (2 ^ {128})}{\ displaystyle {\ text {GF}} (2 ^ {128})} , определяемый многочлен x {\ displaystyle x}x ; т.е. число 2,
j {\ displaystyle j}j - это номер блока в секторе.

Основные операции режима LRW (шифр AES и поле Галуа умножение) такие же, как и в режиме Галуа / Счетчик (GCM), что позволяет компактно реализовать универсальное оборудование LRW / XEX / GCM.

encryption.svg в режиме XEX

У XEX есть слабость.

Режим измененной кодовой книги на основе XEX с кражей зашифрованного текста (XTS)

Кража зашифрованного текста обеспечивает поддержку секторов, размер которых не делится на размер блока, например, 520-байтовые секторы и 16-байтовые блоки. XTS-AES был стандартизирован 19 декабря 2007 г. как IEEE P1619. Стандарт поддерживает использование другого ключа для шифрования IV, чем для блочного шифрования; это противоречит намерениям XEX и, по-видимому, коренится в неправильной интерпретации исходной статьи XEX, но не вредит безопасности. В результате пользователи, которым требуется шифрование AES -256 и AES-128, должны предоставить 512 бит и 256 бит ключа соответственно.

в режиме XTS encryption.svg

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

Режим XTS восприимчив к манипуляциям и подделке данных, и приложения должны применять меры для обнаружения модификаций данных, если манипуляции и подделка вызывают беспокойство: "...поскольку теги аутентификации отсутствуют, любой зашифрованный текст (исходный или измененный злоумышленником) будет расшифрован как некий открытый текст, и нет встроенного механизма для обнаружения изменений. Лучшее, что можно сделать, - это гарантировать, что любое изменение зашифрованный текст будет полностью рандомизировать открытый текст и будет полагаться на приложение, которое использует это преобразование, чтобы включить достаточное количество избыточных данных. y в своем открытом тексте, чтобы обнаруживать и отбрасывать такие случайные открытые тексты ". Это потребует ведения контрольных сумм для всех данных и метаданных на диске, как это сделано в ZFS или Btrfs. Однако в широко используемых файловых системах, таких как ext4 и NTFS, только метаданные защищены от подделки, в то время как обнаружение подделки данных отсутствует.

Режим подвержен атакам анализа трафика, воспроизведения и рандомизации на сектора и 16-байтовые блоки. Когда данный сектор перезаписывается, злоумышленники могут собирать мелкозернистые (16-байтовые) зашифрованные тексты, которые могут использоваться для анализа или повторных атак (с 16-байтовой степенью детализации). Можно было бы определить блочные шифры для всего сектора, к сожалению, с ухудшенной производительностью (см. Ниже).

CBC – маска – CBC (CMC) и ECB – маска – ECB (EME)

CMC и EME защищают даже от незначительной утечки, упомянутой выше для ЖРО. К сожалению, цена заключается в двукратном снижении производительности: каждый блок должен быть дважды зашифрован; многие считают, что это слишком дорого, поскольку такая же утечка на уровне сектора в любом случае неизбежна.

CMC, введенный Халеви и Рогэвэем, означает CBC – mask – CBC: весь сектор, зашифрованный в режиме CBC (с C - 1 = EA (I) {\ displaystyle C _ {- 1} = E_ {A} (I)}{\ displaystyle C _ {- 1} = E_ {A} (I)} ), зашифрованный текст маскируется xoring с помощью 2 (C 0 ′ ⊕ C k - 1 ′) {\ displaystyle 2 (C '_ {0} \ oplus C '_ {k-1})}{\displaystyle 2(C'_{0}\oplus C'_{k-1})}, и повторно зашифрованы в режиме CBC, начиная с последнего блока. Когда базовый блочный шифр представляет собой сильную псевдослучайную перестановку (PRP), тогда на уровне сектора схема представляет собой настраиваемую PRP. Одна из проблем заключается в том, что для расшифровки P 0 {\ displaystyle P_ {0}}P_ {0} необходимо последовательно дважды пройти через все данные.

Чтобы решить эту проблему, Халеви и Рогавей представили вариант с возможностью распараллеливания, названный EME (ECB – mask – ECB). Это работает следующим образом:

  • открытые тексты имеют xor-е L = EK (0) {\ displaystyle L = E_ {K} (0)}{\ displaystyle L = E_ {K} (0)} , сдвинутые на разную величину в слева и зашифрованы: P i ′ = EK (P i ⊕ 2 i L) {\ displaystyle P '_ {i} = E_ {K} (P_ {i} \ oplus 2 ^ {i} L) }{\displaystyle P'_{i}=E_{K}(P_{i}\oplus 2^{i}L)};
  • вычисляется маска: M = MP ⊕ MC {\ displaystyle M = M_ {P} \ oplus M_ {C}}{\ displaystyle M = M_ {P} \ oplus M_ {C}} , где MP = I ⊕ ⨁ P я '{\ Displaystyle M_ {P} = I \ oplus \ bigoplus P' _ {i}}{\displaystyle M_{P}=I\oplus \bigoplus P'_{i}}и MC = EK (MP) {\ displaystyle M_ {C} = E_ {K} (M_ {P})}{\ Displaystyle M_ {C} = E_ {K} (M_ {P})} ;
  • промежуточные шифртексты замаскированы: C i ′ = P i ′ ⊕ 2 i M {\ displaystyle C '_ {i} = P' _ {i} \ oplus 2 ^ { i} M}{\displaystyle C'_{i}=P'_{i}\oplus 2^{i}M}для i = 1,…, k - 1 {\ displaystyle i = 1, \ ldots, k-1}{\ displaystyle i = 1, \ ldots, k-1} и C 0 ′ Знак равно MC ⊕ я ⊕ ⨁ я знак равно 1 К - 1 С я '{\ Displaystyle C' _ {0} = M_ {C} \ oplus I \ oplus \ bigoplus _ {i = 1} ^ {k-1} C ' _ {i}}{\displaystyle C'_{0}=M_{C}\oplus I\oplus \bigoplus _{i=1}^{k-1}C'_{i}};
  • рассчитываются окончательные зашифрованные тексты: C i = EK (C i ′) ⊕ 2 i L {\ displaystyle C_ {i} = E_ {K} (C '_ {i}) \ oplus 2 ^ {i} L}{\displaystyle C_{i}=E_{K}(C'_{i})\oplus 2^{i}L}для i = 0,…, k - 1 {\ displaystyle i = 0, \ ldots, k-1}{\ displaystyle i = 0, \ ldots, k-1} .

Обратите внимание, что в отличие от LRW и CMC существует только один ключ K {\ displaystyle K}K .

CMC и EME рассматривались для стандартизации SISWG. EME запатентован и поэтому не является основным поддерживаемым режимом.

Патенты

Хотя аутентифицированное шифрование схема IAPM обеспечивает шифрование, как а также тег аутентификации, компонент шифрования режима IAPM полностью описывает схемы LRW и XEX, указанные выше, и, следовательно, XTS без аспекта кражи зашифрованного текста. Это подробно описано на рисунках 8 и 5 патента США 6,963,976.

См. Также
Ссылки
Дополнительная литература
Внешние ссылки
  • Безопасность в хранилище Рабочая группа SISWG.
  • «Проект eSTREAM». Проверено 28 марта 2010 г.
Последняя правка сделана 2021-05-17 08:54:51
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте