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

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

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

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

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

Содержание

  • 1 История и стандартизация
  • 2 Вектор инициализации (IV)
  • 3 Заполнение
  • 4 Общие режимы
    • 4.1 Режимы аутентифицированного шифрования с дополнительными данными (AEAD)
      • 4.1.1 Галуа / счетчик (GCM)
      • 4.1.2 Счетчик с кодом аутентификации сообщения цепочки блоков шифра (CCM)
      • 4.1.3 Синтетический вектор инициализации (SIV)
      • 4.1.4 AES-GCM-SIV
    • 4.2 Режимы только конфиденциальности
      • 4.2.1 Электронный кодовая книга (ECB)
      • 4.2.2 Цепочка блоков шифрования (CBC)
        • 4.2.2.1 Пример
        • 4.2.2.2 Распространение цепочки блоков шифрования (PCBC)
      • 4.2.3 Обратная связь по шифрованию (CFB)
        • 4.2.3.1 Упрощенный CFB
        • 4.2.3.2 CFB-1, CFB-8, CFB-64, CFB-128 и т. Д.
        • 4.2.3.3 CFB по сравнению с другими режимами
      • 4.2.4 Обратная связь по выходу (OFB)
      • 4.2.5 Счетчик (CTR)
  • 5 Распространение
  • 6 Другие режимы и другие криптографические примитивы
  • 7 См. также
  • 8 Ссылки

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

Самые ранние режимы работы, 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 или "аутентификацией". Примеры режимов AE: CCM (SP800-38C ), GCM (SP800-38D ), CWC, EAX, IAPM и OCB.

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

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

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

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

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

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

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

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

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

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

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

Заполнение

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

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

Стандартные режимы

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

Для сочетания секретности, и <184 был разработан ряд процедур работы>аутентификация в единственном криптографическом примитиве. Примерами таких режимов являются расширенная цепочка блоков, шифрование (XCBC), цепочка блоков, шифрование с учетом целостности (IACBC), параллельный режим с учетом целостности (IAPM), OCB, EAX, CWC, CCM и GCM. Аутентифицированное шифрование режимы классифицируются как однопроходные или двухпроходные. Некоторые алгоритмы однопроходного аутентифицированного шифрования, такие как режим OCB, защищены патентами, в то время как другие были специально разработаны и выпущены таким образом, чтобы избежать такого обременения.

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

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

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 бит.

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

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

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

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

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

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

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

AES-GCM-SIV

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

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

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

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

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

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

Сводка режимов
РежимФормулыШифрованный текст
Электронная кодовая книга(ECB)Yi= F (PlainText i, Key)Yi
Цепочка блоков шифрования(CBC)Yi= PlainText i XOR Ciphertext i-1F (Y, ключ); Зашифрованный текст 0 = IV
Распространение CBC(PCBC)Yi= PlainText i XOR (Ciphertext i − 1 XOR PlainText i − 1)F (Y, Key); Шифрованный текст 0 = IV
Шифрованная обратная связь(CFB)Yi= Шифрованный текст i− 1Открытый текст XOR F (Y, Key); зашифрованный текст 0 = IV
Обратная связь по выходу(OFB)Yi= F (Y i − 1, Key); Y 0 = F (IV, Key)Открытый текст XOR Y i
Счетчик(CTR)Yi= F ( IV + g (i), Key); IV = token ()Открытый текст XOR Y i

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

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

ECB
Электронная кодовая книга
Шифрование с возможностью распараллеливанияДа
Распараллеливание дешифрованияДа
Произвольное чтениеДа

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

ECB encryption.svg ECB decryption.svg

Дисадванта GE этого метода - отсутствие диффузии. Поскольку ECB шифрует идентичные блоки открытого текста в идентичные блоки зашифрованного текста, он плохо скрывает шаблоны данных. ECB не рекомендуется использовать в криптографических протоколах.

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

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

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

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

CBC
Цепочка блоков шифрования
Распараллеливание шифрованияNo
Распараллеливание дешифрованияДа
Случайное чтение доступаДа

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

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

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

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

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

P i = DK (С я) ⊕ С я - 1, {\ displaystyle P_ {i} = D_ {K} (C_ {i}) \ oplus C_ {i-1},}{\ displaystyle P_ {i} = D_ {K} (C_ {i}) \ oplus C_ {i-1},}
C 0 = IV. {\ displaystyle C_ {0} = IV.}{\ displaystyle C_ {0} = IV.}
Пример
Пример CBC с игрушечным 2-битным шифром Пример CBC с игрушечным 2-битным шифром

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

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

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

Распространение цепочки блоков шифра (PCBC)
PCBC
Распространение цепочки блоков шифра
Распараллеливание шифрованияNo
Распараллеливание дешифрованияNo
Произвольный доступ для чтенияNo

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

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

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

C i = EK (P i ⊕ P i - 1 ⊕ C i - 1), P 0 ⊕ C 0 = IV, {\ displaystyle C_ {i} = E_ {K } (P_ {i} \ oplus P_ {i-1} \ oplus C_ {i-1}), P_ {0} \ oplus C_ {0} = IV,}{ \ Displaystyle C_ {я} = E_ {K} (P_ {i} \ oplus P_ {i-1} \ oplus C_ {i-1}), P_ {0} \ oplus C_ {0} = IV,}
P i = DK (C i) ⊕ P i - 1 C i - 1, P 0 ⊕ C 0 = IV. {\ displaystyle P_ {i} = D_ {K} (C_ {i}) \ oplus P_ {i-1} \ oplus C_ {i-1}, P_ {0} \ oplus C_ {0} = IV.}{\ displaystyle P_ {i} = D_ {K} (C_ {i}) \ oplus P_ { i-1} \ oplus C_ {i-1}, P_ {0} \ oplus C_ {0} = IV.}

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

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

Упрощенная обратная связь
CFB
Шифрованная обратная связь
Распараллеливание шифрованияNo
Распараллеливание дешифрованияДа
Случайное чтение доступДа

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

C i = {IV, i = 0 EK (C i - 1) ⊕ P i, иначе P i = EK (C i - 1) ⊕ С я, {\ displaystyle {\ begin {выровнено} C_ {i} = {\ begin {case} {\ text {IV}}, i = 0 \\ E_ {K} (C_ {i-1}) \ oplus P_ {i}, {\ text {else}} \ end {case}} \\ P_ {i} = E_ {K} (C_ {i-1}) \ oplus C_ {i}, \ end {выровнено}}}{\ displaystyle {\ begin {align} C_ {i} = {\ begin {cases} {\ text {IV}}, i = 0 \\ E_ {K} (C_ {i- 1}) \ oplus P_ {i}, {\ text {else}} \ end {case}} \\ P_ {i} = E_ {K} (C_ {i-1}) \ oplus C_ {я}, \ конец {выровнено}}}

CFB encryption.svg Расшифровка CFB.svg

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

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

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

I 0 = IV. {\ displaystyle I_ {0} = {\ text {IV}}.}{\ displaystyle I_ {0} = {\ text {IV}}.}
I i = ((I i - 1 ≪ s) + C i) mod 2 b, {\ displaystyle I_ {i} = {\ big (} (I_ {i-1} \ ll s) + C_ {i} {\ big)} {\ bmod {2}} ^ {b},}{\ displaystyle I_ {i} = {\ big (} (I_ {i-1} \ ll s) + C_ {i} {\ big)} {\ bmod {2}} ^ {b},}
C i = MSB s ⁡ (EK (I я - 1)) ⊕ п я, {\ displaystyle C_ {i} = \ operatorname {MSB} _ {s} {\ big (} E_ {K} (I_ {i-1}) {\ big)} \ oplus P_ {i},}{\ displaystyle C_ {i} = \ operatorname {MSB} _ {s} {\ big (} E_ {K} (I_ {i-1}) {\ big)} \ oplus P_ {i},}
P i = MSB s ⁡ (EK (I i - 1)) ⊕ C i, {\ displaystyle P_ {i} = \ operatorname {MSB} _ {s} {\ big (} E_ {K} (I_ {i-1}) {\ big)} \ oplus C_ {i},}{\ displaystyle P_ {i} = \ operatorname {MSB} _ {s} {\ big (} E_ {K} (I_ {i-1}) {\ big)} \ oplus C_ {i},}

CFB-1 считается самосинхронизирующимся и устойчивым к потере зашифрованного текста; «Когда используется 1-битный режим CFB, то синхронизация автоматически восстанавливается на b + 1 позиции после вставленного или удаленного бита. (NIST SP800-38A). Т.е. Потеря 1 бита в 128-битном блочном шифре, таком как AES, приведет к отображению 129 для других значений в режиме CFB и для других конфиденциальных данных.

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

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

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

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

Обратная связь по выходу (OFB)

OFB
Обратная связь по выходу
Распараллеливание с шифрованиемNo
Распараллеливание дешифрованияNo
Доступ для произвольного чтенияNo

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

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

C j = P j ⊕ O j, {\ displaystyle C_ {j} = P_ {j} \ oplus O_ {j},}{\ displaystyle C_ {j} = P_ {j} \ oplus O_ {j},}
п j знак равно C j ⊕ O j, {\ displaystyle P_ {j} = C_ {j} \ oplus O_ {j},}{\ displaystyle P_ {j} = C_ {j} \ oplus O_ {j },}
O j = EK (I j), {\ displaystyle O_ {j } = E_ {K} (I_ {j}),}{\ displaystyle O_ {j} = E_ {K} (I_ {j}),}
I j = O j - 1, {\ displaystyle I_ {j} = O_ {j-1},}{\ displaystyle I_ {j} = O_ {j-1},}
I 0 = IV. {\ displaystyle I_ {0} = {\ text {IV}}.}{\ displaystyle I_ {0} = {\ text {IV}}.}

OFB encryption.svg OFB d ecryption.svg

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

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

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

Счетчик (CTR)

CTR
Счетчик
Шифрование с помощью распараллеливанияДа
Расшифровка параллелизируемыйДа
Произвольный доступ для чтенияДа
Примечание: режим CTR (CM) также известен как режим целочисленного счетчика (ICM) и режим сегментированного целочисленного счетчика (SIC).

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

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

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

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

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

CTR-шифрование 2.svg CTR дешифрования 2.svg

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

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

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

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

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

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

РежимВлияние битовых ошибок в C iВлияние битовых ошибок в IV
ECBСлучайные битовые ошибки в P iНеприменимо
CBCСлучайные битовые ошибки в P i. Специфические битовые ошибки в P i + 1Специфические битовые при дешифровании ошибки C 1
CFBСпецифические битовые ошибки в P i. Случайные битовые ошибки во всех блокахСлучайные битовые ошибки при дешифровании C 1, C 2,.., C j для некоторого j от 1 до b / s
OFBКонкретные битовые ошибки в P iСлучайные битовые ошибки при дешифровании C 1, C 2,.., C n
CTRКонкретные битовые ошибки в P iНеприменимо * (*: битовые ошибки в j -м блоке счетчика, T j, приводят к случайным битовым Ошибкам при дешифровании C j)

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

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

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

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

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

NIST поддерживает список предложенных способов для блочных шифровальных при разработке методов.

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

Многие режимы используют вектор инициализации (IV), который, в зависимости от режима, может иметь такие требования, как использование только один раз (одноразовый номер) или непредсказуемость перед публикацией и т. Д. Повторное использование 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 являются примерами.

См. Также

Ссылки

Последняя правка сделана 2021-05-12 10:42:36
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте