Из Википедии, бесплатной энциклопедии
  (Перенаправлено из Электронной кодовой книги )
Перейти к навигации Перейти к поиску

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

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

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

История и стандартизация [ править ]

Самые ранние режимы работы, ECB, CBC, OFB и CFB (все см. Ниже), относятся к 1981 году и были указаны в FIPS 81 , DES Modes of Operation . В 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) построены так, чтобы быть более устойчивыми к несанкционированному использованию, т. Е. Устойчивыми к сценариям, в которых генерация случайности ошибочна или находится под контролем злоумышленника.

  • Синтетический вектор инициализации (SIV) синтезирует внутренний IV путем запуска конструкции псевдослучайной функции (PRF), называемой S2V, на входе (дополнительные данные и открытый текст), предотвращая непосредственное управление IV какими-либо внешними данными. Внешние одноразовые номера / IV могут подаваться в S2V как дополнительное поле данных.
  • AES-GCM-SIV синтезирует внутренний IV, запустив режим аутентификации POLYVAL Galois на входе (дополнительные данные и открытый текст), за которым следует операция AES.

Заполнение [ править ]

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

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

Общие режимы [ править ]

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

Было разработано несколько режимов работы для объединения секретности и аутентификации в одном криптографическом примитиве. Примерами таких режимов являются расширенная цепочка блоков шифров (XCBC) [ требуется пояснение ] , [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.

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

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

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

Синтетический вектор инициализации (SIV) [ править ]

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

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

  • Дополнительные аутентифицированные данные (поддерживаются ноль, одно или несколько полей AAD)
  • Простой текст
  • Ключ аутентификации (K 1 ).

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

SIV может поддерживать внешнее аутентифицированное шифрование на основе одноразовых номеров, и в этом случае для этой цели используется одно из полей аутентифицированных данных. 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 Galois. Затем хэш шифруется AES-ключом и используется в качестве тега аутентификации и вектора инициализации AES-CTR.

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

Только режимы конфиденциальности [ править ]

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

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

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

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

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

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

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

Зашифровано с использованием режима ECB
Режимы, отличные от ECB, приводят к псевдослучайности
Третье изображение - это то, как изображение может выглядеть зашифрованным с помощью CBC, CTR или любого другого более безопасного режима, неотличимого от случайного шума. Обратите внимание, что случайное появление третьего изображения не гарантирует, что изображение было надежно зашифровано; было разработано множество видов небезопасного шифрования, которые давали бы такой же "случайный" результат. [ необходима цитата ]

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

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

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

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

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

Пример [ править ]

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

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

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

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

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

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

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

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

Полноблочный CFB [ править ]

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

CFB-1, CFB-8, CFB-64, CFB-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 и для других режимов конфиденциальности в этой рекомендации синхронизация необходимо восстановить внешне ". (NIST SP800-38A). Т.е. потеря 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), чтобы создать фактический уникальный блок счетчика для шифрования. В случае неслучайного одноразового номера (например, счетчика пакетов), одноразовый номер и счетчик должны быть объединены (например, сохранение одноразового номера в старших 64 битах и ​​счетчика в нижних 64 битах 128-битного блока счетчика) . Простое добавление или XOR одноразового номера и счетчика к одному значению нарушит безопасность при атаке с выбранным открытым текстом.во многих случаях, поскольку злоумышленник может манипулировать всей парой IV-счетчик, чтобы вызвать коллизию. Как только злоумышленник контролирует пару IV-счетчик и открытый текст, XOR зашифрованного текста с известным открытым текстом даст значение, которое при выполнении XOR с зашифрованным текстом другого блока, использующего ту же пару IV-counter, расшифрует этот блок. [34]

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

Распространение ошибки [ править ]

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

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

Битовые ошибки могут возникать намеренно при атаках.

  • Конкретные битовые ошибки в режимах потокового шифрования (OFB, CTR и т. Д.) Тривиально влияют только на конкретный предназначенный бит.
  • Специфические битовые ошибки в более сложных режимах, таких как (например, CBC): адаптивная атака с выбранным зашифрованным текстом может разумно комбинировать множество различных специфических битовых ошибок, чтобы нарушить режим шифрования. В атаке оракула Padding CBC можно расшифровать в атаке, угадав секреты шифрования на основе ответов об ошибках. Вариант атаки Padding Oracle "CBC-R" (CBC Reverse) позволяет злоумышленнику создать любое допустимое сообщение.

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

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


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

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

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

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

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

Шифрование диска часто использует специальные режимы, специально разработанные для приложения. Оттиск и режимы шифрования узкого блока ( ЖРО , хех , и XTS ) и режимы шифрования широкого блока ( CMC и EME ) предназначены для безопасных секторов шифровать диск (см теории шифрования диска ).

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

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

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

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

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

См. Также [ править ]

Ссылки [ править ]

  1. Перейти ↑ NIST Computer Security Division (CSD) Security Technology Group (STG) (2013). «Режимы блочного шифрования» . Набор средств криптографии . NIST. Архивировано 6 ноября 2012 года . Проверено 12 апреля 2013 года .
  2. ^ a b Ferguson, N .; Schneier, B .; Коно, Т. (2010). Криптографическая инженерия: принципы проектирования и практическое применение . Индианаполис: Wiley Publishing, Inc., стр. 63, 64. ISBN 978-0-470-47424-2.
  3. Перейти ↑ NIST Computer Security Division (CSD) Security Technology Group (STG) (2013). «Предлагаемые режимы» . Набор средств криптографии . NIST. Архивировано 2 апреля 2013 года . Проверено 14 апреля 2013 года .
  4. ^ Альфред Дж. Менезес; Пол К. ван Оршот; Скотт А. Ванстон (1996). Справочник по прикладной криптографии . CRC Press. С.  228–233 . ISBN 0-8493-8523-7.
  5. ^ a b c «ISO / IEC 10116: 2006 - Информационные технологии. Методы безопасности. Режимы работы n- битного блочного шифра» . Каталог стандартов ISO . 2006. Архивировано 17 марта 2012 года.
  6. ^ Конрад, Эрик; Мисенар, Сет; Фельдман, Джошуа (01.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, получено 01.11.2020
  7. Перейти ↑ NIST Computer Security Division (CSD) Security Technology Group (STG) (2013). «Текущие режимы» . Набор средств криптографии . NIST. Архивировано 2 апреля 2013 года . Проверено 12 апреля 2013 года .
  8. ^ «Повторное использование потокового шифра: графический пример» . ООО "Криптосмит". 31 мая 2008. Архивировано 25 января 2015 года . Проверено 7 января 2015 года .
  9. ^ Б. Мёллер (20 мая 2004 г.), Безопасность CBC Ciphersuites в SSL / TLS: проблемы и меры противодействия , заархивировано из оригинала 30 июня 2012 г.
  10. ^ Тервоорт, Том. «Zerologon: взлом контроллера домена без проверки подлинности путем подрыва криптографии Netlogon (CVE-2020-1472)» . Секура . Проверено 14 октября 2020 года .
  11. ^ Blaufish. «Netlogon CFB8 считается вредным. OFB8 тоже» . Проверено 14 октября 2020 года .
  12. ^ Глигор, Вирджил Д .; Донеску, Помпилиу (2002). Мацуи, М. (ред.). Быстрое шифрование и аутентификация: режимы шифрования XCBC и аутентификации XECB (PDF) . Быстрое шифрование программного обеспечения 2001. Конспект лекций по информатике. 2355 . Берлин: Springer. С. 92–108. DOI : 10.1007 / 3-540-45473-X_8 . ISBN  978-3-540-43869-4.
  13. ^ Jutla, Charanjit С. (май 2001). Режимы шифрования с почти свободной целостностью сообщений (PDF) . Eurocrypt 2001. Конспект лекций по информатике. 2045 . Springer. DOI : 10.1007 / 3-540-44987-6_32 .
  14. ^ Дворкин, Моррис (май 2004 г.). Рекомендации по режимам работы блочного шифра: режим CCM для аутентификации и конфиденциальности (PDF) (Технический отчет). Специальные публикации NIST. NIST . DOI : 10.6028 / NIST.SP.800-38C . 800-38С.
  15. ^ Whiting, D .; Housley, R .; Фергюсон, Н. (сентябрь 2003 г.). Счетчик с CBC-MAC (CCM) . IETF . DOI : 10,17487 / RFC3610 . RFC 3610 .
  16. ^ Харкинс, Дэн. «Шифрование с аутентификацией синтетическим вектором инициализации (SIV) с использованием расширенного стандарта шифрования (AES)» . Проверено 21 октября 2020 года .
  17. ^ Герон, С. (апрель 2019). AES-GCM-SIV: аутентифицированное шифрование, устойчивое к ненадлежащему использованию . IETF . DOI : 10,17487 / RFC8452 . RFC 8452 . Проверено 14 августа 2019 года .
  18. ^ Герон, Шэй; Лэнгли, Адам; Линделл, Иегуда (14 декабря 2018 г.). «AES-GCM-SIV: Спецификация и анализ» . Cryptology ePrint Archive . Отчет (2017/168) . Проверено 19 октября 2020 года .
  19. ^ «Рекомендации по режимам работы блочного шифра» (PDF) . NIST.gov . NIST. п. 9. Архивировано (PDF) из оригинала 29 марта 2017 года . Проверено 1 апреля 2017 года .
  20. ^ Менезес, Альфред Дж .; van Oorschot, Paul C .; Ванстон, Скотт А. (2018). Справочник по прикладной криптографии . п. 228.
  21. ^ Dam, Kenneth W .; Лин, Герберт С. (1996). Роль криптографии в защите информационного общества . п. 132.
  22. ^ Шнайер, Брюс (2015). Прикладная криптография: протоколы, алгоритмы и исходный код в C . п. 208.
  23. ^ Уильям Ф. Эрсам, Карл Х. У. Мейер, Джон Л. Смит, Уолтер Л. Тухман, «Проверка сообщений и обнаружение ошибок передачи с помощью цепочки блоков», Патент США 4074066, 1976.
  24. ^ "Протокол безопасности транспортного уровня (TLS) Версия 1.1" . п. 20. Архивировано из оригинала на 2015-01-07 . Проверено 7 января 2015 года .
  25. ^ "Часто задаваемые вопросы о криптографии: Frage 84: Что такое режимы счетчика и PCBC?" . www.iks-jena.de . Архивировано 16 июля 2012 года . Проверено 28 апреля 2018 .
  26. ^ Кауфман, C .; Perlman, R .; Специнер, М. (2002). Сетевая безопасность (2-е изд.). Река Аппер Сэдл, штат Нью-Джерси: Prentice Hall. п. 319. ISBN 0130460192.
  27. ^ Коль, Дж. (1990). «Использование шифрования в Kerberos для сетевой аутентификации» (PDF) . Труды, Crypto '89 . Берлин: Springer. ISBN  0387973176. Архивировано из оригинального (PDF) 12 июня 2009 года.
  28. ^ a b (NIST), Автор: Моррис Дворкин (2001). «SP 800-38A, Рекомендации по режимам работы блочного шифра: методы и методы» (PDF) . csrc.nist.gov . DOI : 10,6028 / NIST.SP.800-38A . Архивировано (PDF) из оригинала 28 августа 2017 года . Проверено 28 апреля 2018 .
  29. ^ Дэвис, DW; Паркин, ГИП (1983). «Средний размер цикла ключевого потока при шифровании с обратной связью на выходе». Достижения в криптологии, Труды CRYPTO 82 . Нью-Йорк: Пленум Пресс. С. 263–282. ISBN 0306413663.
  30. ^ Jueneman, Роберт Р. (1983). «Анализ некоторых аспектов режима обратной связи по выходу». Достижения в криптологии, Труды CRYPTO 82 . Нью-Йорк: Пленум Пресс. С. 99–127. ISBN 0306413663.
  31. ^ a b Липмаа, Хельгер; Вагнер, Давид; Rogaway, Филипп (2000). «Комментарии к NIST относительно режимов работы AES: шифрование в режиме CTR» (PDF) . Архивировано (PDF) из оригинала 26 февраля 2015 года.
  32. ^ Фергюсон, Нильс; Шнайер, Брюс; Коно, Тадаёши (2010). Инженерия криптографии . п. 71.
  33. ^ «Основные режимы блочного шифра» . www.quadibloc.com . Архивировано 24 октября 2017 года . Проверено 28 апреля 2018 .
  34. ^ «Криптография I» . Coursera . Архивировано 23 марта 2018 года . Проверено 28 апреля 2018 .
  35. ^ «Разработка режимов - методы блочного шифрования - CSRC» . Отдел компьютерной безопасности, Лаборатория информационных технологий, Национальный институт стандартов и технологий, Министерство торговли США. 4 января 2017 года. Архивировано 4 сентября 2017 года . Проверено 28 апреля 2018 .