stringtranslate.com

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

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

Определение проблемы

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

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

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

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

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

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

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

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

Узкий и широкий блок

Методы шифрования диска также различают на «узкоблочные» и «широкоблочные». Для открытого текста размером с сектор узкоблочный метод шифрует его в нескольких блоках, тогда как широкоблочный метод делает это только в одном. Методы узкой блокировки, такие как LRW, XES и XTS, позволяют злоумышленнику использовать степень детализации блоков для анализа и воспроизведения трафика. [1] Широкоблочный шифр в идеале делает весь зашифрованный текст нераспознаваемым при изменении любого места в открытом тексте. [2]

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

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

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

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

Поскольку для первого блока не существует «зашифрованного текста предыдущего блока», в качестве . Это, в свою очередь, делает CBC в некотором смысле настраиваемым.

CBC страдает от некоторых проблем. Например, если IV предсказуемы, то злоумышленник может оставить на диске «водяной знак», то есть сохранить специально созданный файл или комбинацию файлов, которые можно идентифицировать даже после шифрования. Точный метод создания водяного знака зависит от конкретной функции, предоставляющей IV, но общий рецепт состоит в том, чтобы создать два зашифрованных сектора с идентичными первыми блоками и ; эти два затем связаны друг с другом посредством . Таким образом, шифрование идентично шифрованию , оставляя водяной знак на диске. Точный шаблон «тот же-разный-то же-разный» на диске затем можно изменить, чтобы сделать водяной знак уникальным для данного файла.

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

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

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

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

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

Атака податливости

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

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

Настраиваемое узкоблочное шифрование (LRW) [7] представляет собой реализацию режима операций, введенного Лисковым, Ривестом и Вагнером [8] (см. теорему 2). В этом режиме используются два ключа: ключ для блочного шифра и дополнительный ключ того же размера, что и блок. Например, для AES с 256-битным ключом — это 256-битное число, а — 128-битное число. Блок шифрования с логическим индексом (настройкой) использует следующую формулу:

Здесь умножение и сложение выполняются в конечном поле ( для AES). При некоторых предварительных вычислениях требуется только одно умножение на сектор (обратите внимание, что сложение в двоичном конечном поле представляет собой простое побитовое сложение, также известное как xor): , где предварительно вычисляются для всех возможных значений . Этот режим работы требует только одного шифрования для каждого блока и защищает от всех вышеперечисленных атак, за исключением незначительной утечки: если пользователь меняет один блок открытого текста в секторе, изменяется только один блок зашифрованного текста. (Обратите внимание, что это не та же утечка, что и в режиме ECB: в режиме LRW одинаковые открытые тексты в разных позициях шифруются разными зашифрованными текстами.)

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

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

Xor-encrypt-xor (XEX)

Другой настраиваемый режим шифрования, XEX ( xor-encrypt-xor ), был разработан Рогавеем [9] для обеспечения эффективной обработки последовательных блоков (относительно используемого шифра) в пределах одного блока данных (например, сектора диска). Твик представлен как комбинация адреса сектора и индекса блока внутри сектора (исходный режим XEX, предложенный Рогавеем [9], допускает несколько индексов). Зашифрованный текст получается с помощью:

где:

это открытый текст,
номер сектора,
является примитивным элементом, определяемым полиномом ; то есть число 2 ,
— номер блока внутри сектора. XEX использует ; XTS использует .

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

У оригинального XEX есть слабость. [10]

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

Кража зашифрованного текста обеспечивает поддержку секторов, размер которых не делится на размер блока, например секторов по 520 байт и блоков по 16 байт. XTS-AES был стандартизирован 19 декабря 2007 года [11] как IEEE P1619 . [12] Стандарт XTS требует использования другого ключа для IV-шифрования, чем для блочного шифрования; это отличается от XEX, который использует только один ключ. [9] [13] : 1–4.  В результате пользователи, которым требуется шифрование AES -256 и AES-128, должны предоставить 512 бит и 256 бит ключа соответственно. Два ключа (т. е. обе половины ключа XTS) должны быть разными, чтобы XTS был CCA-безопасным, поскольку XTS вычисляет последовательность, начиная с ; это отличается от XEX, который начинается с . [9] : 7  [13] : 6 

27 января 2010 г. NIST выпустил специальную публикацию (SP) 800-38E [14] в окончательной форме. SP 800-38E — это рекомендация для режима работы XTS-AES, стандартизированного стандартом IEEE Std 1619-2007, для криптографических модулей. Публикация утверждает режим XTS-AES алгоритма AES со ссылкой на стандарт IEEE Std 1619-2007 с учетом одного дополнительного требования, которое ограничивает максимальный размер каждой зашифрованной единицы данных (обычно сектора или блока диска ) до 2 20 AES. блоки. Согласно SP 800-38E: «При отсутствии аутентификации или контроля доступа XTS-AES обеспечивает большую защиту, чем другие утвержденные режимы только конфиденциальности, от несанкционированного манипулирования зашифрованными данными».

XTS поддерживается BestCrypt , Botan , cgd NetBSD, [ 15] dm-crypt , FreeOTFE , TrueCrypt , VeraCrypt , [16] DiskCryptor, geli FreeBSD , программным обеспечением для шифрования дисков OpenBSD softraid, OpenSSL , Mac OS X Lion 's FileVault 2, BitLocker для Windows 10 [17] и wolfCrypt .

Слабые стороны XTS

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

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

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

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

CMC, введенный Халеви и Рогауэем, означает CBC-mask-CBC: весь сектор шифруется в режиме CBC (с помощью ), зашифрованный текст маскируется путем xoring с помощью , и повторно шифруется в режиме CBC, начиная с последнего блока. Если базовый блочный шифр представляет собой стойкую псевдослучайную перестановку (PRP), то на уровне сектора схема представляет собой настраиваемую PRP. Одна из проблем заключается в том, что для расшифровки необходимо дважды последовательно пройти все данные.

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

Обратите внимание, что в отличие от LRW и CMC здесь имеется только один ключ .

CMC и EME рассматривались SISWG для стандартизации . EME запатентован, поэтому его не рекомендуют использовать в качестве основного поддерживаемого режима. [19]

Режимы потокового шифрования

Конструкция HBSH (хеш, блочный шифр, потоковый шифр, хеш), опубликованная сотрудниками Google в 2018 году, позволяет использовать быстрый потоковый шифр при шифровании дисков. Схема Adiantum , используемая в младших устройствах Android, специально выбирает NH , 256-битный расширенный стандарт шифрования (AES-256), ChaCha12 и Poly1305 . Конструкция сборная и широкоблочная. Для этого требуется три прохода данных, но он все равно быстрее, чем AES-128-XTS на ARM Cortex-A7 (который не имеет набора инструкций AES ). [20]

В 2023 году Альдо Гансинг, Джоан Дэмен и Барт Меннинк представили «двухэтажную» конструкцию, в которой также используется поточный шифр. Он снова настраиваемый и широкоблочный. [2]

Патенты

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

Смотрите также

Рекомендации

  1. ^ аб Томас Птачек; Эрин Птачек (30 апреля 2014 г.). «Вы не хотите XTS».
  2. ^ аб Альдо Гансинг; Джоан Дэмен; Барт Меннинк. Режимы палубного широкоблочного шифрования (PDF) . Третий семинар NIST по режимам работы блочных шифров, 2023 г.
  3. Клеменс Фрувирт (18 июля 2005 г.). «Новые методы шифрования жесткого диска» (PDF) . Институт компьютерных языков: группа теории и логики (PDF) . Венский технологический университет.
  4. ^ «Шифрование виртуальной памяти» (Постскриптум). {{cite journal}}: Требуется цитировать журнал |journal=( помощь )
  5. ^ Милан Броз. «DMCrypt dm-crypt: криптографическая цель устройства сопоставления устройств ядра Linux». gitlab.com . Проверено 5 апреля 2015 г.
  6. ^ Якоб Лелль (22 декабря 2013 г.). «Практическая гибкая атака на разделы LUKS, зашифрованные CBC».
  7. ^ Последние проекты SISWG и IEEE P1619, а также информация о собраниях находятся на домашней странице P1619 [1].
  8. ^ М. Лисков, Р. Ривест и Д. Вагнер. Настраиваемые блочные шифры [2]. Архивировано 5 декабря 2008 г. в Wayback Machine , CRYPTO '02 (LNCS, том 2442), 2002 г.
  9. ^ abcd Рогауэй, Филипп (24 сентября 2004 г.). «Эффективное создание настраиваемых блочных шифров и уточнения режимов OCB и PMAC» (PDF) . Кафедра компьютерных наук (PDF) . Калифорнийский университет в Дэвисе.
  10. ^ Минемацу, Кадзухико (2007). «Улучшенный анализ безопасности режимов XEX и LRW» (PDF) . Избранные области криптографии . Конспекты лекций по информатике. Том. 4356. стр. 96–113. дои : 10.1007/978-3-540-74462-7_8. ISBN 978-3-540-74461-0.
  11. ^ Карен МакКейб (19 декабря 2007 г.). «IEEE утверждает стандарты шифрования данных». Ассоциация стандартов IEEE. Архивировано из оригинала 06 марта 2008 г.
  12. ^ Стандарт IEEE для криптографической защиты данных на блочно-ориентированных устройствах хранения. 18 апреля 2008 г. стр. 1–40. doi : 10.1109/IEESTD.2008.4493450. ISBN 978-0-7381-5363-6. {{cite book}}: |journal=игнорируется ( помощь )
  13. ^ аб Лисков, Моисей; Минемацу, Кадзухико (2 сентября 2008 г.). «Комментарии к XTS-AES» (PDF) .
  14. ^ Моррис Дворкин (январь 2010 г.). «Рекомендации по режимам работы блочного шифрования: режим XTS-AES для конфиденциальности на устройствах хранения» (PDF) . Специальная публикация NIST 800-38E. Национальный институт стандартов и технологий . doi :10.6028/NIST.SP.800-38E. {{cite journal}}: Требуется цитировать журнал |journal=( помощь )
  15. ^ «Драйвер криптографического диска NetBSD» . Архивировано из оригинала 08 января 2019 г. Проверено 7 января 2019 г.
  16. ^ «Режимы работы». Документация VeraCrypt . ИДРИКС . Проверено 13 октября 2017 г.
  17. ^ «Что нового в BitLocker?». 12 ноября 2015 года . Проверено 15 ноября 2015 г.
  18. ^ Стандарт криптографической защиты данных на блочно-ориентированных устройствах хранения данных (PDF) , IEEE P1619/D16, 2007, стр. 34, заархивировано из оригинала (PDF) 14 апреля 2016 г. , получено 14 сентября 2012 г.
  19. ^ П. Рогауэй, Режим работы блочного шифра для построения блочного шифра с широким блоком из обычного блочного шифра, заявка на патент США 20040131182 A1.
  20. ^ Кроули, Пол; Биггерс, Эрик (13 декабря 2018 г.). «Адиантум: шифрование с сохранением длины для процессоров начального уровня». Транзакции IACR по симметричной криптологии : 39–61. дои : 10.13154/tosc.v2018.i4.39-61 .
  21. ^ * Патент США № 6,963,976, «Схемы шифрования с аутентификацией симметричным ключом» (подана в ноябре 2000 г., выдана в ноябре 2005 г., срок действия истекает 25 ноября 2022 г.) [3]. Архивировано 11 августа 2018 г. в Wayback Machine [4].

дальнейшее чтение

Внешние ссылки