stringtranslate.com

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

В криптографии режим работы блочного шифра — это алгоритм, который использует блочный шифр для обеспечения информационной безопасности , такой как конфиденциальность или подлинность . [1] Блочный шифр сам по себе пригоден только для безопасного криптографического преобразования (шифрования или дешифрования) одной группы битов фиксированной длины , называемой блоком . [2] Режим работы описывает, как многократно применять одноблочную операцию шифра для безопасного преобразования объемов данных, превышающих размер блока. [3] [4] [5]

В большинстве режимов для каждой операции шифрования требуется уникальная двоичная последовательность, часто называемая вектором инициализации (IV). IV должен быть неповторяющимся, а для некоторых режимов также случайным. Вектор инициализации используется для обеспечения создания различных зашифрованных текстов , даже если один и тот же открытый текст зашифрован несколько раз независимо с одним и тем же ключом . [6] Блочные шифры могут работать с более чем одним размером блока , но во время преобразования размер блока всегда фиксирован. Режимы блочного шифрования работают с целыми блоками и требуют, чтобы последняя часть данных была дополнена до полного блока, если она меньше текущего размера блока. [2] Однако существуют режимы, которые не требуют заполнения, поскольку они эффективно используют блочный шифр в качестве потокового шифра .

Исторически режимы шифрования широко изучались с точки зрения их свойств распространения ошибок при различных сценариях модификации данных. Более поздние разработки рассматривали защиту целостности как совершенно отдельную криптографическую цель. Некоторые современные режимы работы эффективно сочетают конфиденциальность и подлинность и известны как режимы шифрования с проверкой подлинности . [7]

История и стандартизация

Самые ранние режимы работы, ECB, CBC, OFB и CFB (все см. ниже), датируются 1981 годом и были указаны в FIPS 81, режимы работы DES . В 2001 году Национальный институт стандартов и технологий США (NIST) пересмотрел свой список утвержденных режимов работы, включив AES в качестве блочного шифра и добавив режим CTR в SP800-38A, Рекомендации по режимам работы блочного шифрования . Наконец, в январе 2010 года NIST добавил XTS-AES в SP800-38E, Рекомендации по режимам работы блочного шифрования: режим XTS-AES для конфиденциальности на устройствах хранения данных . Существуют и другие режимы конфиденциальности, не одобренные NIST. Например, CTS — это режим кражи зашифрованного текста , доступный во многих популярных криптографических библиотеках.

Режимы блочного шифрования ECB, CBC, OFB, CFB, CTR и XTS обеспечивают конфиденциальность, но не защищают от случайной модификации или злонамеренного вмешательства. Модификацию или подделку можно обнаружить с помощью отдельного кода аутентификации сообщения, такого как CBC-MAC , или цифровой подписи . Криптографическое сообщество осознало необходимость специальных гарантий целостности, и NIST ответил HMAC, CMAC и GMAC. HMAC был утвержден в 2002 году как FIPS 198, Код аутентификации сообщения с использованием хэш-ключа (HMAC) , CMAC был выпущен в 2005 году под SP800-38B, Рекомендации по режимам работы блочного шифрования: режим CMAC для аутентификации , а GMAC был официально утвержден в 2007 году. в SP800-38D, Рекомендации по режимам работы блочного шифрования: режим Галуа/счетчика (GCM) и GMAC .

Криптографическое сообщество заметило, что составление (объединение) режима конфиденциальности с режимом аутентификации может быть трудным и чревато ошибками. Поэтому они начали предлагать режимы, которые объединяли конфиденциальность и целостность данных в один криптографический примитив (алгоритм шифрования). Эти комбинированные режимы называются аутентифицированным шифрованием , AE или «authenc». Примерами режимов AE являются CCM (SP800-38C), GCM (SP800-38D), CWC , EAX , IAPM и OCB .

Режимы работы определяются рядом национальных и международно признанных органов по стандартизации. Известные организации по стандартизации включают NIST , ISO (с ISO/IEC 10116 [5] ), IEC , IEEE , ANSI и IETF .

Вектор инициализации (IV)

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

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

Рекомендуется просмотреть соответствующие требования IV для конкретного режима блочного шифрования в соответствующей спецификации, например SP800-38A.

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

Для OFB и CTR повторное использование IV приводит к повторному использованию потока битов ключа, что нарушает безопасность. [8] Это можно увидеть, поскольку оба режима эффективно создают битовый поток, который подвергается операции XOR с открытым текстом, и этот битовый поток зависит только от ключа и IV.

В режиме CBC IV должен быть непредсказуемым (случайным или псевдослучайным) во время шифрования; в частности, распространенная (ранее) практика повторного использования последнего блока зашифрованного текста сообщения в качестве IV для следующего сообщения небезопасна (например, этот метод использовался SSL 2.0). Если злоумышленник знает IV (или предыдущий блок зашифрованного текста) до того, как будет указан следующий открытый текст, он может проверить свое предположение об открытом тексте некоторого блока, который был зашифрован с тем же ключом ранее (это известно как атака TLS CBC IV). . [9]

Для некоторых ключей вектор инициализации, состоящий из всех нулей, может генерировать некоторые режимы блочного шифрования (CFB-8, OFB-8), чтобы внутреннее состояние фиксировалось на нулевом уровне. Для CFB-8, полностью нулевой IV и весь нулевой открытый текст, приводит к тому, что 1/256 ключей не генерирует шифрование, открытый текст возвращается как зашифрованный текст. [10] Для OFB-8 использование всего нулевого вектора инициализации не приведет к шифрованию для 1/256 ключей. [11] Шифрование OFB-8 возвращает незашифрованный открытый текст для затронутых ключей.

Некоторые режимы (например, AES-SIV и AES-GCM-SIV) созданы так, чтобы быть более устойчивыми к неправомерному использованию nonce, то есть устойчивыми к сценариям, в которых генерация случайных чисел ошибочна или находится под контролем злоумышленника.

Заполнение

Блочный шифр работает с единицами фиксированного размера (известного как размер блока ), но сообщения могут иметь разную длину. Поэтому некоторые режимы (а именно ECB и CBC ) требуют, чтобы последний блок был дополнен перед шифрованием. Существует несколько схем заполнения . Самый простой способ — добавить к открытому тексту нулевые байты , чтобы увеличить его длину до кратного размера блока, но необходимо позаботиться о том, чтобы можно было восстановить исходную длину открытого текста; это тривиально, например, если открытый текст представляет собой строку в стиле C , которая не содержит нулевых байтов, кроме конца. Немного более сложным является исходный метод DES , который заключается в добавлении одного бита , за которым следует достаточное количество нулевых битов для заполнения блока; если сообщение заканчивается на границе блока, будет добавлен целый блок заполнения. Наиболее сложными являются схемы, специфичные для CBC, такие как кража зашифрованного текста или завершение остаточного блока , которые не вызывают дополнительного зашифрованного текста за счет некоторой дополнительной сложности. Шнайер и Фергюсон предлагают две возможности, обе простые: добавить байт со значением 128 (шестнадцатеричное 80), а затем столько нулевых байтов, сколько необходимо для заполнения последнего блока, или дополнить последний блок n байтами со значением n .

Режимы CFB, OFB и CTR не требуют каких-либо специальных мер для обработки сообщений, длина которых не кратна размеру блока, поскольку эти режимы работают путем XOR открытого текста с выходными данными блочного шифра. Последний частичный блок открытого текста подвергается операции XOR с первыми несколькими байтами последнего блока ключевого потока , в результате чего получается окончательный блок зашифрованного текста того же размера, что и последний частичный блок открытого текста. Эта характеристика потоковых шифров делает их подходящими для приложений, требующих, чтобы зашифрованные данные зашифрованного текста были того же размера, что и исходные данные открытого текста, а также для приложений, которые передают данные в потоковой форме, где неудобно добавлять байты заполнения.

Общие режимы

Аутентифицированное шифрование с режимами дополнительных данных (AEAD)

Был разработан ряд режимов работы, позволяющих объединить секретность и аутентификацию в одном криптографическом примитиве. Примерами таких режимов являются, [12] цепочка блоков шифра с учетом целостности (IACBC) [ необходимы пояснения ] , распараллеливаемый режим с учетом целостности (IAPM), [13] OCB , EAX , CWC , CCM и GCM . Режимы шифрования с аутентификацией подразделяются на однопроходные и двухпроходные режимы. Некоторые алгоритмы однопроходного шифрования с аутентификацией, такие как режим OCB, обременены патентами, в то время как другие были специально разработаны и выпущены таким образом, чтобы избежать такого обременения.

Кроме того, некоторые режимы также допускают аутентификацию незашифрованных связанных данных, и они называются схемами AEAD (шифрование с проверкой подлинности со связанными данными). Например, режим EAX представляет собой двухпроходную схему AEAD, а режим OCB — однопроходную.

Галуа/счетчик (GCM)

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

GCM определяется для блочных шифров с размером блока 128 бит. Код аутентификации сообщения Галуа (GMAC) — это вариант GCM, предназначенный только для аутентификации, который может формировать инкрементный код аутентификации сообщения. И GCM, и GMAC могут принимать векторы инициализации произвольной длины. GCM может в полной мере воспользоваться преимуществами параллельной обработки, а реализация GCM может эффективно использовать конвейер инструкций или аппаратный конвейер. Режим работы CBC приводит к остановке трубопровода , что снижает его эффективность и производительность.

Как и в CTR, блоки нумеруются последовательно, а затем этот номер блока объединяется с IV и шифруется блочным шифром E , обычно AES. Результат этого шифрования затем подвергается операции XOR с открытым текстом для получения зашифрованного текста. Как и все режимы счетчика, это по существу потоковый шифр, поэтому важно, чтобы для каждого зашифрованного потока использовался отдельный IV.

Операция шифрования GCM

Блоки зашифрованного текста считаются коэффициентами многочлена , который затем оценивается в зависящей от ключа точке H с использованием арифметики конечных полей . Затем результат шифруется, создавая тег аутентификации , который можно использовать для проверки целостности данных. Зашифрованный текст затем содержит IV, зашифрованный текст и тег аутентификации.

Счетчик с кодом аутентификации сообщения цепочки блоков шифрования (CCM)

Счетчик с кодом аутентификации сообщения цепочки шифров (счетчик с CBC-MAC; CCM) — это аутентифицированный алгоритм шифрования , предназначенный для обеспечения как аутентификации, так и конфиденциальности. Режим CCM определен только для блочных шифров с длиной блока 128 бит. [14] [15]

Вектор синтетической инициализации (SIV)

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

SIV синтезирует внутренний IV, используя псевдослучайную функцию S2V. S2V — это хэш с ключом, основанный на CMAC, и входные данные для функции:

SIV шифрует выходные данные S2V и открытый текст с использованием AES-CTR, используя ключ шифрования (K 2 ).

SIV может поддерживать внешнее аутентифицированное шифрование на основе nonce, и в этом случае для этой цели используется одно из аутентифицированных полей данных. RFC5297 [16] указывает, что в целях совместимости последнее аутентифицированное поле данных должно использовать внешний одноразовый номер.

Из-за использования двух ключей, ключа аутентификации K 1 и ключа шифрования K 2 , схемы именования для SIV AEAD-вариантов могут привести к некоторой путанице; например, AEAD_AES_SIV_CMAC_256 относится к AES-SIV с двумя ключами AES-128, а не к AES-256.

AES-GCM-SIV

AES-GCM-SIV — это режим работы расширенного стандарта шифрования, который обеспечивает производительность, аналогичную режиму Галуа/счетчика, а также устойчивость к неправильному использованию в случае повторного использования криптографического одноразового номера. Конструкция определена в RFC 8452. [17]

AES-GCM-SIV синтезирует внутренний IV. Он получает хеш дополнительных аутентифицированных данных и открытого текста с помощью хэш-функции Галуа POLYVAL. Затем хэш шифруется с помощью AES-ключа и используется в качестве тега аутентификации и вектора инициализации AES-CTR.

AES-GCM-SIV является усовершенствованием алгоритма с очень похожим названием GCM-SIV с несколькими очень небольшими изменениями (например, способ инициализации AES-CTR), но которое дает практические преимущества в плане безопасности. «Это дополнение позволяет шифровать до 250 сообщений с одним и тем же ключом, по сравнению со значительным ограничением в 232 сообщения , которое было разрешено с помощью GCM-SIV» . [18]

Режимы только конфиденциальности

Определено множество режимов работы. Некоторые из них описаны ниже. Целью режимов шифрования является маскирование шаблонов, существующих в зашифрованных данных, как показано в описании слабости ECB.

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

Примечание: g ( i ) — любая детерминированная функция, часто тождественная функция .

Электронная кодовая книга (ECB)

Самый простой (и больше не используемый) режим шифрования — это режим электронной кодовой книги (ECB) (названный в честь обычных физических кодовых книг [19] ). Сообщение делится на блоки, и каждый блок шифруется отдельно.

Недостатком этого метода является отсутствие диффузии . Поскольку ECB шифрует идентичные блоки открытого текста в идентичные блоки зашифрованного текста , он плохо скрывает шаблоны данных. ECB не рекомендуется использовать в криптографических протоколах. [20] [21] [22]

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

Режим ECB также может сделать протоколы без защиты целостности еще более восприимчивыми к атакам повторного воспроизведения , поскольку каждый блок расшифровывается одинаково. [ нужна цитата ]

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

Эрсам, Мейер, Смит и Тачман изобрели режим работы цепочки зашифрованных блоков (CBC) в 1976 году. [23] В режиме CBC каждый блок открытого текста подвергается операции XOR с предыдущим блоком зашифрованного текста перед шифрованием. Таким образом, каждый блок зашифрованного текста зависит от всех блоков открытого текста, обработанных до этого момента. Чтобы сделать каждое сообщение уникальным, в первом блоке необходимо использовать вектор инициализации .

Шифрование в режиме цепочки блоков шифра (CBC)
Шифрование в режиме цепочки блоков шифра (CBC)
Дешифрование в режиме цепочки блоков шифрования (CBC)
Дешифрование в режиме цепочки блоков шифрования (CBC)

Если первый блок имеет индекс 1, математическая формула шифрования CBC имеет вид

в то время как математическая формула для расшифровки CBC:

Пример
Пример CBC с игрушечным 2-битным шифром
Пример CBC с игрушечным 2-битным шифром
Пример CBC с игрушечным 2-битным шифром
Пример CBC с игрушечным 2-битным шифром

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

Дешифрование с использованием неправильного IV приводит к повреждению первого блока открытого текста, но последующие блоки открытого текста будут правильными. Это связано с тем, что каждый блок подвергается операции XOR с зашифрованным текстом предыдущего блока, а не с открытым текстом, поэтому нет необходимости расшифровывать предыдущий блок перед использованием его в качестве IV для расшифровки текущего. Это означает, что блок открытого текста можно восстановить из двух соседних блоков зашифрованного текста. Как следствие, расшифровку можно распараллелить. Обратите внимание, что однобитовое изменение зашифрованного текста приводит к полному повреждению соответствующего блока открытого текста и инвертирует соответствующий бит в следующем блоке открытого текста, но остальные блоки остаются нетронутыми. Эта особенность используется в различных атаках оракулов , таких как POODLE .

Векторы явной инициализации [24] используют это свойство, добавляя один случайный блок к открытому тексту. Шифрование выполняется как обычно, за исключением того, что IV не требуется передавать в программу дешифрования. Что бы ни использовала расшифровка IV, «повреждается» только случайный блок. Его можно безопасно отбросить, а остальная часть расшифровки представляет собой исходный открытый текст.

Распространение цепочки блоков шифра (PCBC)

Режим цепочки распространяющихся зашифрованных блоков [25] или цепочки зашифрованных блоков открытого текста [26] был разработан для того, чтобы небольшие изменения в зашифрованном тексте распространялись бесконечно как при расшифровке, так и при шифровании. В режиме PCBC каждый блок открытого текста перед шифрованием подвергается операции XOR как с предыдущим блоком открытого текста, так и с предыдущим блоком зашифрованного текста. Как и в режиме CBC, в первом блоке используется вектор инициализации. В отличие от CBC, расшифровка PCBC с неправильным IV (вектором инициализации) приводит к повреждению всех блоков открытого текста.

Шифрование в режиме цепочки блоков шифра (PCBC)
Шифрование в режиме цепочки блоков шифра (PCBC)
Расшифровка в режиме цепочки блоков шифрования (PCBC)
Расшифровка в режиме цепочки блоков шифрования (PCBC)

Алгоритмы шифрования и дешифрования следующие:

PCBC используется, в первую очередь, в Kerberos v4 и WASTE , но в остальном он встречается нечасто. В сообщении, зашифрованном в режиме PCBC, если происходит обмен двумя соседними блоками зашифрованного текста, это не влияет на расшифровку последующих блоков. [27] По этой причине PCBC не используется в Kerberos v5.

Это можно доказать очень легко. Если у нас есть следующие зашифрованные тексты именно в таком порядке: c1, c2, c3. Тогда открытый текст, связанный с c3 (обозначенный как p3), имеет следующее значение:

p3 = DecAlg(c1) xor iv xor c1 xor DecAlg(c2) xor c2 xor DecAlg(c3).

Если мы поменяем местами два соседних блока зашифрованного текста: c1 и c2, мы получим следующие зашифрованные тексты именно в этом порядке: c2, c1, c3. Тогда открытый текст, связанный с c3 (обозначенный как p3), имеет следующее значение:

p3 = DecAlg(c2) xor iv xor c2 xor DecAlg(c1) xor c1 xor DecAlg(c3).

Мы можем очень легко увидеть, что два значения p3 ИДЕНТИЧНЫ, потому что xor — это коммутативная операция/оператор.

Доказательство готово.

Шифр обратной связи (CFB)

Полноблочный CFB

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

ЦФБ-1, ЦФБ-8, ЦФБ-64, ЦФБ-128 и т. д.

NIST SP800-38A определяет CFB с разрядностью. [28] Режим CFB также требует целочисленного параметра, обозначаемого s, такого, что 1 ≤ s ≤ b. В приведенной ниже спецификации режима CFB каждый сегмент открытого текста (Pj) и сегмент зашифрованного текста (Cj) состоят из s битов. Значение s иногда включается в название режима, например, 1-битный режим CFB, 8-битный режим CFB, 64-битный режим CFB или 128-битный режим CFB.

Эти режимы будут усекать выходные данные базового блочного шифра.

CFB-1 считается самосинхронизирующимся и устойчивым к потере зашифрованного текста; «При использовании 1-битного режима CFB синхронизация автоматически восстанавливается в позиции b+1 после вставленного или удаленного бита. Для других значений s в режиме CFB и для других режимов конфиденциальности в этой рекомендации синхронизация должны быть восстановлены извне». (НИСТ СП800-38А). То есть потеря 1 бита в блочном шифре шириной 128 бит, таком как AES, приведет к отображению 129 недействительных битов перед выдачей действительных битов.

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

CFB по сравнению с другими режимами

Как и в режиме CBC, изменения в открытом тексте навсегда распространяются в зашифрованном тексте, и шифрование не может быть распараллелено. Также, как и CBC, расшифровку можно распараллелить.

CFB, OFB и CTR имеют два преимущества по сравнению с режимом CBC: блочный шифр всегда используется только в направлении шифрования, и сообщение не нужно дополнять до кратного размера блока шифра (хотя кражу зашифрованного текста также можно использовать для режим CBC, чтобы сделать заполнение ненужным).

Выход обратной связи (OFB)

Режим выходной обратной связи (OFB) превращает блочный шифр в синхронный поточный шифр . Он генерирует блоки ключевого потока , которые затем подвергаются операции XOR с блоками открытого текста для получения зашифрованного текста. Как и в случае с другими потоковыми шифрами, небольшой переворот в зашифрованном тексте создает перевернутый бит в открытом тексте в том же месте. Это свойство позволяет многим кодам, исправляющим ошибки, нормально работать, даже если они применяются до шифрования.

Из-за симметрии операции XOR шифрование и дешифрование абсолютно одинаковы:

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

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

Использование режима OFB с частичной блокировкой в ​​качестве обратной связи, например режима CFB, уменьшает среднюю длину цикла в 2,32 раза или более. Математическая модель, предложенная Дэвисом и Паркином и подтвержденная экспериментальными результатами, показала, что только при полной обратной связи может быть достигнута средняя длина цикла, близкая к достижимому максимуму. По этой причине поддержка усеченной обратной связи была удалена из спецификации OFB. [29]

Счетчик (CTR)

Примечание. Режим CTR (CM) также известен как режим целочисленного счетчика (ICM) и режим сегментированного целочисленного счетчика (SIC).

Как и OFB, режим счетчика превращает блочный шифр в поточный шифр . Он генерирует следующий блок потока ключей путем шифрования последовательных значений «счетчика». Счетчиком может быть любая функция, которая создает последовательность, которая гарантированно не будет повторяться в течение длительного времени, хотя фактический счетчик с приращением на единицу является самым простым и популярным. Использование простой детерминированной входной функции раньше вызывало споры; критики утверждали, что «намеренное подвергание криптосистемы воздействию известных систематических входных данных представляет собой ненужный риск». [30] Однако сегодня режим CTR широко распространен, и любые проблемы считаются слабостью базового блочного шифра, который, как ожидается, будет безопасным независимо от системной предвзятости на его входных данных. [31] Наряду с CBC, режим CTR является одним из двух режимов блочного шифрования, рекомендованных Нильсом Фергюсоном и Брюсом Шнайером. [32]

Режим CTR был представлен Уитфилдом Диффи и Мартином Хеллманом в 1979 году. [31]

Режим CTR имеет характеристики, аналогичные OFB, но также допускает возможность произвольного доступа во время расшифровки. Режим CTR хорошо подходит для работы на многопроцессорной машине, где блоки могут шифроваться параллельно. Более того, он не страдает от проблемы короткого цикла, которая может повлиять на OFB. [33]

Если IV/nonce являются случайными, то их можно объединить со счетчиком, используя любую обратимую операцию (конкатенацию, сложение или XOR), чтобы создать фактический уникальный блок счетчика для шифрования. В случае неслучайного nonce (например, счетчика пакетов) nonce и счетчик должны быть объединены (например, сохранение nonce в старших 64 битах, а счетчика в младших 64 битах 128-битного блока счетчиков). . Простое добавление или операция XOR nonce и счетчика в одно значение во многих случаях может нарушить безопасность при атаке с использованием выбранного открытого текста , поскольку злоумышленник может манипулировать всей парой IV-счетчик, чтобы вызвать коллизию. Как только злоумышленник получит контроль над парой счетчиков IV и открытым текстом, операция XOR зашифрованного текста с известным открытым текстом даст значение, которое при выполнении операции XOR с зашифрованным текстом другого блока, использующего ту же пару счетчиков IV, позволит расшифровать этот блок. [34]

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

Распространение ошибок

Свойства «распространения ошибок» описывают, как ведет себя дешифрование во время битовых ошибок, т.е. как ошибка в одном бите каскадно передается на разные расшифрованные биты.

Битовые ошибки могут возникать намеренно при атаках или случайно из-за ошибок передачи.

Для современного шифрования с проверкой подлинности (AEAD) или протоколов с кодами аутентификации сообщений , связанными в порядке MAC-Then-Encrypt, любая битовая ошибка должна полностью прерывать расшифровку и не должна генерировать какие-либо конкретные битовые ошибки для дешифратора. Т.е. если расшифровка прошла успешно, никакой битовой ошибки быть не должно. Таким образом, распространение ошибок является менее важным вопросом в современных режимах шифрования, чем в традиционных режимах только конфиденциальности.

(Источник: SP800-38A, Таблица D.2: Сводная информация о влиянии битовых ошибок на дешифрование)

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

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

Другие режимы и другие криптографические примитивы

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

NIST поддерживает список предлагаемых режимов блочных шифров на сайте Modes Development . [28] [35]

При шифровании диска часто используются специальные режимы, специально разработанные для конкретного приложения. Настраиваемые режимы узкоблочного шифрования ( LRW , XEX и XTS ) и режимы широкоблочного шифрования ( CMC и EME ) предназначены для безопасного шифрования секторов диска (см. теорию шифрования диска ).

Во многих режимах используется вектор инициализации (IV), который, в зависимости от режима, может иметь такие требования, как использование только один раз (nonce) или непредсказуемость перед публикацией и т. д. Повторное использование IV с тем же ключом в CTR, GCM или режим OFB приводит к выполнению XOR одного и того же потока ключей с двумя или более открытыми текстами, что является явным неправильным использованием потока с катастрофической потерей безопасности. Режимы детерминированного шифрования с аутентификацией, такие как алгоритм NIST Key Wrap и режим SIV (RFC 5297) AEAD, не требуют ввода IV и каждый раз возвращают один и тот же зашифрованный текст и тег аутентификации для данного открытого текста и ключа. Другие режимы IV, устойчивые к неправильному использованию, такие как AES-GCM-SIV, выигрывают от ввода IV, например, в максимальном объеме данных, которые можно безопасно зашифровать с помощью одного ключа, и при этом не происходит катастрофического сбоя, если один и тот же IV используется несколько раз.

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

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

Криптографически безопасные генераторы псевдослучайных чисел (CSPRNG) также могут быть созданы с использованием блочных шифров.

Коды аутентификации сообщений (MAC) часто создаются на основе блочных шифров. Примерами являются CBC-MAC , OMAC и PMAC .

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

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

  1. ^ Группа технологий безопасности (STG) подразделения компьютерной безопасности (CSD) NIST (2013). «Режимы блочного шифрования». Криптографический инструментарий . НИСТ. Архивировано из оригинала 6 ноября 2012 года . Проверено 12 апреля 2013 г.
  2. ^ аб Фергюсон, Н.; Шнайер, Б.; Кохно, Т. (2010). Криптографическая инженерия: принципы проектирования и практическое применение . Индианаполис: Wiley Publishing, Inc., стр. 63, 64. ISBN. 978-0-470-47424-2.
  3. ^ Группа технологий безопасности (STG) подразделения компьютерной безопасности (CSD) NIST (2013). «Предлагаемые режимы». Криптографический инструментарий . НИСТ. Архивировано из оригинала 2 апреля 2013 года . Проверено 14 апреля 2013 г.
  4. ^ Альфред Дж. Менезес; Пол К. ван Оршот; Скотт А. Ванстон (1996). Справочник по прикладной криптографии . ЦРК Пресс. стр. 228–233. ISBN 0-8493-8523-7.
  5. ^ abc «ISO/IEC 10116:2006 – Информационные технологии – Методы обеспечения безопасности – Режимы работы n-битного блочного шифра». Каталог стандартов ISO . 2006. Архивировано из оригинала 17 марта 2012 г.
  6. ^ Конрад, Эрик; Мисенар, Сет; Фельдман, Джошуа (01 января 2017 г.), Конрад, Эрик; Мисенар, Сет; Фельдман, Джошуа (ред.), «Глава 3 – Домен 3: Разработка безопасности», Eleventh Hour CISSP® (Третье издание) , Syngress, стр. 47–93, doi :10.1016/b978-0-12-811248-9.00003- 6, ISBN 978-0-12-811248-9, получено 1 ноября 2020 г.
  7. ^ Группа технологий безопасности (STG) подразделения компьютерной безопасности (CSD) NIST (2013). «Текущие режимы». Криптографический инструментарий . НИСТ. Архивировано из оригинала 2 апреля 2013 года . Проверено 12 апреля 2013 г.
  8. ^ «Повторное использование потокового шифрования: графический пример» . ООО "Криптосмит". 31 мая 2008 г. Архивировано из оригинала 25 января 2015 г. . Проверено 7 января 2015 г.
  9. ^ Б. Мёллер (20 мая 2004 г.), Безопасность наборов шифров CBC в SSL/TLS: проблемы и меры противодействия, заархивировано из оригинала 30 июня 2012 г.
  10. ^ Терворт, Том. «Zerologon: компрометация контроллера домена без аутентификации путем нарушения криптографии Netlogon (CVE-2020-1472)». Секура . Проверено 14 октября 2020 г.
  11. ^ Blaufish (14 октября 2020 г.). «Netlogon CFB8 считается вредным. OFB8 также». Гитхаб . Проверено 14 октября 2020 г. .
  12. ^ Глигор, Вирджил Д .; Донеску, Помпилиу (2002). Мацуи, М. (ред.). Быстрое шифрование и аутентификация: режимы шифрования XCBC и аутентификации XECB (PDF) . Быстрое программное шифрование 2001. Конспекты лекций по информатике. Том. 2355. Берлин: Шпрингер. стр. 92–108. дои : 10.1007/3-540-45473-X_8 . ISBN 978-3-540-43869-4.
  13. ^ Ютла, Чаранджит С. (май 2001 г.). Режимы шифрования с почти бесплатной целостностью сообщений (PDF) . Eurocrypt 2001. Конспекты лекций по информатике. Том. 2045. Спрингер. дои : 10.1007/3-540-44987-6_32 .
  14. ^ Дворкин, Моррис (май 2004 г.). Рекомендации по режимам работы блочного шифрования: режим CCM для аутентификации и конфиденциальности (PDF) (технический отчет). Специальные публикации NIST. НИСТ . doi : 10.6028/NIST.SP.800-38C . 800-38С.
  15. ^ Уайтинг, Д.; Хаусли, Р.; Фергюсон, Н. (сентябрь 2003 г.). Счетчик с CBC-MAC (CCM). IETF . дои : 10.17487/RFC3610 . РФК 3610.
  16. ^ Харкинс, Дэн (октябрь 2008 г.). «Шифрование с проверкой подлинности синтетического вектора инициализации (SIV) с использованием расширенного стандарта шифрования (AES)» . Проверено 21 октября 2020 г.
  17. ^ Герон, С. (апрель 2019 г.). AES-GCM-SIV: шифрование с проверкой подлинности, устойчивое к неправильному использованию. IETF . дои : 10.17487/RFC8452 . RFC 8452 . Проверено 14 августа 2019 г.
  18. ^ Герон, Шей; Лэнгли, Адам; Линделл, Иегуда (14 декабря 2018 г.). «AES-GCM-SIV: Спецификация и анализ». Архив электронной печати по криптологии . Отчет (2017/168) . Проверено 19 октября 2020 г.
  19. ^ «Рекомендации по режимам работы блочного шифрования» (PDF) . NIST.gov . НИСТ. п. 9. Архивировано (PDF) из оригинала 29 марта 2017 г. Проверено 1 апреля 2017 г.
  20. ^ Менезес, Альфред Дж.; ван Оршот, Пол К.; Ванстон, Скотт А. (2018). Справочник по прикладной криптографии. ЦРК Пресс. п. 228. ИСБН 9780429881329.
  21. ^ Дам, Кеннет В.; Лин, Герберт С. (1996). Роль криптографии в обеспечении безопасности информационного общества. Пресса национальных академий. п. 132. ИСБН 9780309054751.
  22. ^ Шнайер, Брюс (2015). Прикладная криптография: протоколы, алгоритмы и исходный код в C. John Wiley & Sons. п. 208. ИСБН 9781119096726.
  23. ^ Уильям Ф. Эрсам, Карл Х. Мейер, Джон Л. Смит, Уолтер Л. Тачман, «Проверка сообщения и обнаружение ошибок передачи посредством объединения блоков», патент США 4074066, 1976.
  24. ^ «Протокол безопасности транспортного уровня (TLS) версии 1.1» . п. 20. Архивировано из оригинала 7 января 2015 г. Проверено 7 января 2015 г.
  25. ^ «Часто задаваемые вопросы по криптографии: Frage 84: Что такое режимы счетчика и PCBC?». www.iks-jena.de . Архивировано из оригинала 16 июля 2012 года . Проверено 28 апреля 2018 г.
  26. ^ Кауфман, К.; Перлман, Р.; Специнер, М. (2002). Сетевая безопасность (2-е изд.). Река Аппер-Седл, Нью-Джерси: Прентис-Холл. п. 319. ИСБН 0130460192.
  27. ^ Коль, Дж. (1990). «Использование шифрования в Kerberos для сетевой аутентификации» (PDF) . Труды, Крипто '89 . Берлин: Шпрингер. ISBN 0387973176. Архивировано из оригинала (PDF) 12 июня 2009 г.
  28. ^ ab (NIST), Автор: Моррис Дворкин (2001). «SP 800-38A, Рекомендации по режимам работы блочного шифрования: методы и приемы» (PDF) . csrc.nist.gov . doi : 10.6028/NIST.SP.800-38A . Архивировано (PDF) из оригинала 28 августа 2017 года . Проверено 28 апреля 2018 г. {{cite journal}}: |first=имеет общее имя ( справка )
  29. ^ Дэвис, Д.В.; Паркин, GIP (1983). «Средний размер цикла ключевого потока при шифровании с обратной связью на выходе». Достижения криптологии, Труды КРИПТО 82 . Нью-Йорк: Пленум Пресс. стр. 263–282. ISBN 0306413663.
  30. ^ Джунеман, Роберт Р. (1983). «Анализ некоторых аспектов режима обратной связи по выходу». Достижения криптологии, Труды КРИПТО 82 . Нью-Йорк: Пленум Пресс. стр. 99–127. ISBN 0306413663.
  31. ^ аб Липмаа, Хельгер; Вагнер, Дэвид; Рогауэй, Филипп (2000). «Комментарии к NIST относительно режимов работы AES: шифрование в режиме CTR» (PDF) . Архивировано (PDF) из оригинала 26 февраля 2015 г.
  32. ^ Фергюсон, Нильс; Шнайер, Брюс; Коно, Тадаёси (2010). Криптографическая инженерия . п. 71.
  33. ^ «Базовые режимы блочного шифрования». www.quadibloc.com . Архивировано из оригинала 24 октября 2017 года . Проверено 28 апреля 2018 г.
  34. ^ «Криптография I». Курсера . Архивировано из оригинала 23 марта 2018 года . Проверено 28 апреля 2018 г.
  35. ^ «Разработка режимов - Методы блочного шифрования - CSRC» . Отдел компьютерной безопасности, Лаборатория информационных технологий, Национальный институт стандартов и технологий, Министерство торговли США. 4 января 2017 года. Архивировано из оригинала 4 сентября 2017 года . Проверено 28 апреля 2018 г.