Эта статья предлагается к удалению. |
Шифрование диска является частным случаем защиты данных в состоянии покоя[en][1], когда носитель данных является устройством с секторной адресацией (например, жёсткий диск). В данной статье представлены криптографические аспекты проблемы. Для обсуждения различных пакетов программного обеспечения и аппаратных устройств, посвящённых этой проблеме, см. программное обеспечение для шифрования диска и аппаратное обеспечение для шифрования диска.
Методы шифрования диска направлены на обеспечение трёх различных свойств:
Первое свойство требует определения злоумышленника, от которого охраняются данные. Злоумышленники обладают следующими возможностями:
Метод обеспечивает хорошую конфиденциальность, если единственная информация, которую такой злоумышленник может определить с течением времени, это то, изменились ли данные в секторе с момента их последнего просмотра.
Второе свойство требует разделения диска на несколько секторов, обычно длиной 512 байт (4096 бит), которые шифруются и дешифруются независимо друг от друга. В свою очередь, если данные должны оставаться конфиденциальными, метод шифрования должен быть настраиваемым; никакие два сектора не должны обрабатываться одинаково. В противном случае злоумышленник может расшифровать любой сектор диска, скопировав его в неиспользуемый сектор диска и запросив его расшифровку.
Третье свойство, как правило, не вызывает сомнений. Однако это косвенно запрещает использование потоковых шифров, поскольку потоковые шифры для своей безопасности требуют, чтобы одно и то же исходное состояние не использовалось дважды (что было бы в случае записи в сектор других данных); таким образом, для этого потребуется метод шифрования для хранения отдельных начальных состояний для каждого сектора на диске — по-видимому, пустая трата места. Альтернатива в виде блочного шифра ограничена определённым размером блока (обычно 128 или 256 бит). Из-за этого шифрование диска в основном изучает цепные режимы шифрования, которые расширяют длину блока шифрования, чтобы охватить весь сектор диска. Уже перечисленные соображения делают неподходящими несколько известных режимов цепочки: режим ECB, который нельзя настроить, и режимы, которые превращают блочные шифры в потоковые шифры, такие как режим CTR.
Эти три свойства не дают никакой гарантии целостности диска; то есть они не сообщают вам, изменил ли ваш злоумышленник ваш шифротекст. Отчасти это происходит потому, что абсолютная гарантия целостности диска невозможна: несмотря ни на что, злоумышленник всегда может вернуть весь диск в прежнее состояние, обходя любые такие проверки. Если требуется некоторый не абсолютный уровень целостности диска, он может быть достигнут на зашифрованном диске для каждого файла отдельно, используя коды аутентификации сообщений.
Как и большинство схем шифрования, шифрование диска на основе блочного шифра использует режимы работы, которые позволяют шифровать большие объёмы данных, чем размер блока шифра (обычно 128 бит). Поэтому режимы — это правила повторного применения одноблочных операций шифров.
Cipher-block chaining (CBC) — это обычный режим цепочки, в котором перед шифрованием текущего блока к нему применяется операция исключающего ИЛИ с шифротекстом предыдущего блока:
Поскольку для первого блока не существует «зашифрованного текста предыдущего блока», то в качестве должен использоваться вектор инициализации (IV). Это, в свою очередь, делает CBC настраиваемым в некоторых отношениях.
CBC страдает от некоторых проблем. Например, если IV являются предсказуемыми, то злоумышленник может оставить «водяной знак» на диске, то есть сохранить специально созданный файл или комбинацию файлов, которые можно идентифицировать даже после шифрования. Точный метод построения водяного знака зависит от точной функции, обеспечивающей IV, но общий рецепт состоит в создании двух зашифрованных секторов, которые имеют идентичные первые блоки и ; эти два затем связаны друг с другом с помощью . Таким образом, шифрование идентично шифрованию , что оставляет «водяной знак» на диске.
Для защиты от атаки "водяными знаками "используется шифр или хеш-функция для генерации IV из ключа и текущего номера сектора, так что злоумышленник не может предсказать IV. В частности, подход ESSIV использует блочный шифр в режиме CTR для генерации IV.
ESSIV[2] является методом генерации векторов инициализации для блочного шифра. Типичные методы используют предсказуемые последовательности чисел, основанные, например, на номере сектора или же отметки времени, и позволяют проводить такие атаки как атака «водяными знаками». ESSIV упреждает подобные атаки генерированием векторов инициализации из комбинации номера сектора SN с хэшом ключа, что делает такие векторы непредсказуемыми.
Разработчиком ESSIV является Clemens Fruhwirth. Метод был интегрирован в ядро Linux начиная с версии 2.6.10, хотя аналогичная схема использовалась для генерации IV для шифрования подкачки OpenBSD с 2000 года.[3]
ESSIV поддерживается в качестве опции системами шифрования дисков dm-crypt[4] и FreeOTFE.
Хотя CBC (с или без ESSIV) обеспечивает конфиденциальность, он не гарантирует целостность зашифрованных данных. Если открытый текст известен злоумышленнику, можно изменить каждый второй блок открытого текста на значение, выбранное атакующим, в то время как промежуточные блоки заменяются случайными значениями. Это может быть использовано для практических атак на шифрование диска в режиме CBC или CBC-ESSIV.[5]
Чтобы предотвратить такие сложные атаки, были введены различные режимы работы: настраиваемое узкоблочное шифрование (LRW и XEX) и широкоблочное шифрование (CMC и EME).
В то время как цель обычного блочного шифра состоит в том, чтобы имитировать случайную перестановку для любого секретного ключа , цель настраиваемого шифрования состоит в том, чтобы имитировать случайную перестановку для любого секретного ключа и любой известной настройки . Настраиваемое узкоблочное шифрование (LRW)[6] представляет собой экземпляр режима операций, введенного Лисковым, Ривестом и Вагнером[7] (see Theorem 2). В этом режиме используются два ключа: это ключ для блочного шифра, а — это дополнительный ключ того же размера, что и блок. Например, для AES с 256-битным ключом, — это 256-битное число, а — это 128-битное число. Шифрование блока с логическим индексом (настройка) использует следующую формулу:
Здесь умножение и сложение выполняются в конечном поле ( для AES). С некоторыми предварительными вычислениями требуется только одно умножение на сектор (обратите внимание, что сложение в двоичном конечном поле является простым побитовым сложением, также известным как xor): , где предварительно вычисляется для всех возможных значений . Этот режим работы требует только одного шифрования на блок и защищает от всех вышеуказанных атак, за исключением незначительной утечки: если пользователь изменяет один блок открытого текста в секторе, то изменяется только один блок шифрованного текста. (Обратите внимание, что это не та же утечка, которую имеет режим ECB: в режиме LRW одинаковые открытые тексты в разных позициях шифруются в разные шифротексты.)
Существуют некоторые проблемы безопасности LRW, и этот режим работы теперь заменен XTS.
LRW используется в BestCrypt и поддерживается в качестве опции для систем шифрования дисков dm-crypt и FreeOTFE.
Основная статья Xor-encrypt-xor
Другой настраиваемый режим шифрования, XEX (xor-encrypt-xor), был разработан Rogaway[8] для обеспечения эффективной обработки последовательных блоков (по отношению к используемому шифру) в пределах одного блока данных (например, сектора диска). Подстройка представляется в виде комбинации адреса сектора и индекса блока внутри сектора (оригинальный режим XEX, предложенный Rogaway[8] допускает несколько индексов). Зашифрованный текст, , получается с использованием:
где:
Основные операции режима LRW (шифрование AES и умножение в поле Галуа) такие же, как и в Galois/Counter Mode (GCM), что позволяет компактно реализовать универсальное аппаратное обеспечение LRW / XEX / GCM.
Заимствование шифротекста обеспечивает поддержку секторов с размером, не делимым на размер блока, например, 520-байтовые сектора и 16-байтовые блоки. XTS-AES был стандартизирован 2007-12-19[9] как IEEE P1619.[10] Стандарт поддерживает использование другого ключа для шифрования IV, чем для блочного шифрования; это противоречит намерениям XEX и, кажется, коренится в неправильном толковании оригинальной статьи XEX, но не наносит ущерба безопасности.[11][8] В результате пользователи, которым требуется шифрование AES-256 и AES-128, должны предоставить 512 бит и 256 бит ключа соответственно.
27 января 2010 года Национальный институт стандартов и технологий выпустил специальную публикацию (SP) 800-38E[12] в окончательном виде. SP 800-38E является рекомендацией для режима работы XTS-AES, стандартизированного IEEE Std 1619—2007, для криптографических модулей. Публикация утверждает режим XTS-AES алгоритма AES со ссылкой на стандарт IEEE 1619—2007, при условии соблюдения одного дополнительного требования, которое ограничивает максимальный размер каждого зашифрованного блока данных (обычно сектора или блока диска) значением блоков AES. Согласно SP 800-38E: «В отсутствие аутентификации или контроля доступа XTS-AES обеспечивает большую защиту, чем другие утвержденные режимы только для конфиденциальности, от несанкционированного манипулирования зашифрованными данными».
XTS поддерживается BestCrypt, Botan, dm-crypt, FreeOTFE, TrueCrypt, VeraCrypt,[13] DiskCryptor, FreeBSD's geli, OpenSSL, OS X Lion's FileVault 2, Windows 10's BitLocker и wolfCrypt.[14]
Режим XTS подвержен манипулированию данными и фальсификации данных, и приложения должны применять меры для обнаружения изменений данных, если манипулирование и фальсификация являются проблемой: "… поскольку нет тегов аутентификации, тогда любой зашифрованный текст (оригинальный или изменённый злоумышленником) будет расшифровывается как некоторый открытый текст, и нет встроенного механизма для обнаружения изменений. Лучшее, что можно сделать, — это обеспечить, чтобы любое изменение зашифрованного текста полностью рандомизировало открытый текст, и полагаться на приложение, которое использует это преобразование для включения достаточной избыточности. в его открытом тексте, чтобы обнаружить и отбросить такие случайные открытые тексты ". Это потребует сохранения контрольных сумм для всех данных и метаданных на диске, как это делается в ZFS или Btrfs. Однако в широко используемых файловых системах, таких как ext4 и NTFS, только метаданные защищены от подделки, а обнаружение подделки данных отсутствует.[15]
Режим чувствителен к анализу трафика, атакам воспроизведения и рандомизации на секторах и 16-байтовых блоках. Поскольку данный сектор перезаписывается, злоумышленники могут собирать мелкозернистые (16-байтовые) шифротексты, которые можно использовать для анализа или повторных атак (с 16-байтовой гранулярностью). Было бы возможно определить блочные шифры для всего сектора, к сожалению, с ухудшенной производительностью (см. ниже).[16]
CMC и EME защищают даже от незначительной утечки, указанной выше для LRW. К сожалению, цена представляет собой двукратное снижение производительности: каждый блок должен быть зашифрован дважды; многие считают, что это слишком дорого, поскольку в любом случае такая же утечка на уровне сектора неизбежна.
CMC, представленный Halevi и Rogaway, расшифровывается как CBC — mask — CBC: весь сектор зашифрован в режиме CBC (с помощью ), зашифрованный текст маскируется путем операции XOR с , и повторно зашифровывается в режиме CBC, начиная с последнего блока. Когда базовый блочный шифр является сильной псевдослучайной перестановкой (PRP) тогда на уровне секторов схема представляет собой настраиваемый PRP. Одна проблема состоит в том, что для расшифровки необходимо последовательно пройти все данные дважды.
Чтобы решить эту проблему, Halevi и Rogaway представили распараллеливаемый вариант, названный EME (ECB — mask — ECB). Это работает следующим образом:
Обратите внимание, что в отличие от LRW и CMC, существует только один ключ .
CMC и EME были рассмотрены для стандартизации SISWG. EME запатентован, и поэтому не рекомендуется использовать его в качестве основного поддерживаемого режима.[17]
Режимы шифрования с аутентификацией могут предоставить в некоторой степени целостность зашифрованных данных. MGM представляет из себя быстрый блочный режим шифрования с аутентификацией и возможностью распараллеливания[18]. Режим основывается на двух счетчиках и одноразовом векторе с требованием уникальности. Для того, чтобы защититься от атак, использующих значения счетчиков, применяется инкрементирование левой или правой половины счетчика. то есть , а . Для избавления от предсказывания стартового значения счетчика начальное значение шифруется перед использованием. Защита от атак, использующих дополнение блока, достигается добавлением длины дополнительных данных и длины шифротекста. Также шифрование тега обеспечивает защиту от атак, использующих свойства линейности. Данный режим требует на вход открытый текст, ключ шифрования, аутентификационные данные и начальное значение счетчика. На эти данные накладываются некоторые ограничения:
Один из счетчиков используется для получения шифротекста, а другой для данных аутентификации. Из схемы шифра видно, что шифрование наряду с выработкой тега может быть практически полностью распараллелено. Согласно докладу на конференции РусКрипто 2018[19], режим имеет следующие функциональные возможности:
Хотя схема аутентифицированного шифрования IAPM обеспечивает шифрование, а также тег аутентификации, компонент шифрования режима IAPM полностью описывает схемы LRW и XEX, приведенные выше, и, следовательно, XTS без аспекта кражи зашифрованного текста. Это описано в подробно на рисунках 8 и 5 патента США 6,963,976[20].
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .