В криптографии, режим работы блочного шифра - это алгоритм, который использует блочный шифр для обеспечения информационной безопасности, такой как конфиденциальность или подлинность. Блочный шифр сам по себе подходит для безопасного криптографического преобразования (шифрования или дешифрования) одной группы фиксированной длины из бит, называемой блоком. Режим работы, как многократно использовать одноблочную операцию шифра для безопасного измерения объема данных, превышающего блок.
Для каждого режима требуется уникальная двоичная последовательность, часто называемая вектором инициализации (IV) каждой операции шифрования. IV должен быть неповторяющимся, а в некоторых режимах - случайным. Вектор инициализации используется для обеспечения создания различных зашифрованных текстов, даже если один и тот же одним открытым текстом зашифрован несколько раз независимо с и тем же ключом . Блочные шифры могут работать с более чем одним размером блока, но во время преобразования размер блока всегда фиксирован. Режимы блочного шифрования работают с целыми блоками и требуют, чтобы последняя часть данных была дополнена до полного блока, если она меньше, чем текущий размер блока. Существуют режимы, которые не требуют заполнения, потому что они используют блочный шифр в потокового шифра.
Исторически режимы шифрования широко изучались в их отношении распространения ошибок при различных сценариях модификации данных. Более поздние разработки рассматривали защиту целостности как совершенно отдельную криптографическую цель. Некоторые современные режимы работы эффективно сочетают конфиденциальность и аутентичность и известные как режимы аутентифицированного шифрования.
Самые ранние режимы работы, 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) или начальная переменная (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) созданы для большей устойчивости к несанкционированному использованию, есть устойчивые сценарии, в которых генерация случайности ошибочна или находится под контролем злоумышленника.
A блочным шифром работает с единицами фиксированного размера (известный как размер блока), но сообщения бывают длину. Поэтому некоторые режимы (а именно ECB и CBC ) требуют, чтобы последний блок был дополнен перед шифрованием. Существует несколько схем заполнения. Самый простой - это добавить нулевых байтов к незашифрованному тексту, чтобы увеличить его длину, кратную размеру блока, но следует позаботиться о том, чтобы исходная длина открытого текста могла быть восстановлена; это тривиально, например, если открытый текст является строкой стиля C , который не содержит нулевых байтов, кроме как в конце. Чуть более сложным является исходный метод DES, который заключается в добавлении единственного бита, за которым следует достаточное количество нулевых битов для заполнения блока; если сообщение заканчивается на границе блока, будет добавлен целый блок заполнения. Наиболее сложными являются специфические схемы CBC, такие как кража зашифрованного текста или остаточного блока, которые не вызывают дополнительного зашифрованного текста за счет некоторой дополнительной сложности. Шнайер и Фергюсон дают две возможности, обе простые: добавить байт со значением 128 (шестнадцатеричный 80), бай за которым следует столько нулевыхтов, сколько для заполнения последнего блока, или заполнить последний блок с n байтами, все со значением n.
Режимы CFB, OFB и CTR не требуют каких-либо специальных мер для обработки сообщений, длина которых не кратна размеру блока, так как эти режимы с помощью XORing открытого текста с выходом блочный шифр. Последний частичный блок открытого текста подвергается операции XOR с первыми блокированными байтами последнего блока ключевого потока, создавая окончательный блок зашифрованного текста того же размера, что и последний частичный блок открытого текста. Эти параметры потоковых шифрованных данных делают их подходящими для приложений, чтобы зашифрованные данные зашифрованного текста были того же размера, что и исходные данные открытого текста, а также для приложений, которые передают данные в потоковой форме, где неудобно добавляет байты заполнения.
Для сочетания секретности, и <184 был разработан ряд процедур работы>аутентификация в единственном криптографическом примитиве. Примерами таких режимов являются расширенная цепочка блоков, шифрование (XCBC), цепочка блоков, шифрование с учетом целостности (IACBC), параллельный режим с учетом целостности (IAPM), 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, зашифрованный текст и тег аутентификации.
Счетчик с кодом аутентификации сообщений цепочки шифровальных блоков (счетчик с CBC-MAC; CCM) - это аутентифицированное шифрование алгоритм, предназначенный для обеспечения как аутентификации, так и конфиденциальности. Режим CCM определен только для блочных шифров с длиной блока 128 бит.
Синтетический вектор инициализации (SIV) - это режим блочного шифра, устойчивый к ненадлежащему использованию.
SIV синтезирует внутренний IV, используя псевдослучайную функцию S2V. S2V - это хэш с ключом, основанный на CMAC, и входными данными для функций являются:
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 - это режим работы для 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-1 | F (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) (названный в честь обычных физических кодовых книг ). Сообщение делится на блоки, и каждый блок шифруется отдельно.
Дисадванта GE этого метода - отсутствие диффузии. Поскольку ECB шифрует идентичные блоки открытого текста в идентичные блоки зашифрованного текста, он плохо скрывает шаблоны данных. ECB не рекомендуется использовать в криптографических протоколах.
Яркий пример степени, в которой ECB может оставлять шаблоны данных открытого текста в зашифрованном тексте, можно увидеть, когда режим ECB используется для шифрования растрового изображения, в котором используются большие области однородного цвета. Хотя цвет каждого отдельного пикселя зашифрован, все изображение все еще может быть различимо, поскольку образец идентично окрашенных пикселей в оригинале остается в зашифрованной версии.
Исходное изображение Зашифровано с использованием режима ECB Режимы, отличные от ECB, приводят к псевдослучайности Третье изображение показывает, как изображение может выглядеть зашифрованным сС помощью CBC, CTR или любого другого безопасного режима - неотличимы от случайного шума. Обратите внимание, что случайное появление третьего изображения не гарантирует, что изображение было надежно зашифровано; было разработано множество видов небезопасного шифрования, которые производили бы выходные данные так же "произвольно выглядящие".Режим защиты ECB также может сделать протокол без целостности еще более уязвимыми для атак с повторением, поскольку каждый блок расшифровывается точно так же.
CBC | |
---|---|
Цепочка блоков шифрования | |
Распараллеливание шифрования | No |
Распараллеливание дешифрования | Да |
Случайное чтение доступа | Да |
Эрсам, Мейер, Смит и Тухман изобрели режим работы цепочки блоков шифрования (CBC) в 1976 году. В режиме CBC каждый блок открытого текста XORed с предыдущий блок зашифрованного текста перед шифрованием. Таким образом, каждый блок зашифрованного текста зависит от всех блоков открытого текста, обработанных до этого момента. Чтобы сделать каждое сообщение уникальным, в первом блоке Русский вектор инициализации .
Если первый блок имеет индекс 1, математическая формула для шифрования CBC:
, математическая формула для расшифровки CBC -
CBC был наиболее часто используемым режимом работы. Его основные недостатки заключаются в том, что шифрование является последовательным (т.е. его нельзя распараллеливать), и что сообщение должно быть дополнено до кратного размера блока шифрования. Один из способов решения этой проблемы - метод, известный как кража зашифрованного текста. Обратите внимание, что однобитальное изменение открытого текста или инициализации (IV) влияет на все последующие блоки зашифрованного текста.
Расшифровка с неправильным IV приводит к повреждению первого блока открытого текста, но последующие блоки открытого текста будут правильными. Это связано с тем, что каждый блок подвергается операции XOR с зашифрованным текстом предыдущего блока, а не с открытым текстом, поэтому нет необходимости расшифровывать предыдущий блок перед использованием его в качестве IV для дешифрования текущего блока. Это означает, что блок открытого текста может быть восстановлен из двух блоков зашифрованного текста. Как следствие, расшифровку можно распараллелить. Обратите внимание, что однобитное изменение зашифрованного текста полное изменение соответствующего блока открытого текста и инвертирует соответствующие биты в блоке открытого текста, но остальные блоки остаются нетронутыми. Эта особенность используется в различных атаках оракула с заполнением, таких как POODLE.
Явные системы инициализации используют это свойство, добавляя один случайный блок к открытому тексту. Шифрование выполняется как обычно, за исключением того, что IV не требуется выполнение дешифрования. Независимо от того, что используется для дешифрования IV, «поврежден» только случайный блок. Его можно безопасно отбросить, а остальная часть дешифровки будет исходным открытым текстом.
PCBC | |
---|---|
Распространение цепочки блоков шифра | |
Распараллеливание шифрования | No |
Распараллеливание дешифрования | No |
Произвольный доступ для чтения | No |
Распространение цепочки блоков шифра или открытый Текст Режим цепочки блоков шифрования разработан для того, чтобы небольшие изменения в зашифрованном тексте бесконечно при расшифровке, а также при шифровании. В режиме PCBC каждый блок открытого текста подвергается XOR как с предыдущим блоком открытого текста, так и с предыдущим блоком зашифрованного текста перед шифрованием. Как и в режиме CBC, в первом блоке используется вектор инициализации.
Алгоритмы шифрования и дешифрования следующих:
PCBC используется, в первую очередь, в Kerberos v4 и WASTE, но в остальном встречается редко. В сообщении, зашифрованным в режиме PCBC, обмен двумя блоками зашифрованного текста не влияет на расшифровку сайта. По этой причине PCBC не используется в Kerberos v5.
CFB | |
---|---|
Шифрованная обратная связь | |
Распараллеливание шифрования | No |
Распараллеливание дешифрования | Да |
Случайное чтение доступ | Да |
Режим обратной связи по шифрованию (CFB), в его простейшем варианте используется весь вывод блочного шифра. В этом варианте он очень похож на CBC, превращает блочный шифр в самосинхронизирующийся потоковый шифр . Расшифровка CFB в этом варианте практически идентична шифрованию CBC, выполняемому в обратном порядке:
NIST SP800-38A определяет CFB с разрядностью. Для режима CFB также требуется целочисленный параметр, обозначенный s, такой, что 1 ≤ s ≤ b. В спецификации режима CFB ниже каждый сегмент открытого текста (Pj) и сегмент зашифрованного текста (Cj) состоит из s битов. Значение иногда включается в название режима, например, 1-битный режим CFB, 8-битный режим CFB, 64-битный режим CFB или 128-битный режим CFB.
Эти режимы усекают вывод базового блочного шифра.
CFB-1 считается самосинхронизирующимся и устойчивым к потере зашифрованного текста; «Когда используется 1-битный режим CFB, то синхронизация автоматически восстанавливается на b + 1 позиции после вставленного или удаленного бита. (NIST SP800-38A). Т.е. Потеря 1 бита в 128-битном блочном шифре, таком как AES, приведет к отображению 129 для других значений в режиме CFB и для других конфиденциальных данных.
CFB может также самосинхронизироваться в некоторых случаях, отличных от указанных. Например, изменение одного бита в CFB-128 с базовым 128-битным блочным шифром будет повторно синхронизироваться после двух блоков. Однако CFB-128 и т. Д. Не будут корректно обрабатывать потерю битов; потеря одного бита к потере согласования дешифратора шифровальщиком)
Как режим CBC, изменения в открытом тексте навсегда сохраняются в зашифрованном тексте, и шифрование нельзя распараллелить.
CFB, OFB и CTR имеют два общих преимущества перед режимом CBC: блочн ый шифр всегда используется только в шифрования, и сообщение не нужно дополнять до кратного размера блока шифрования (хотя похищение зашифрованного текста также может сделать сообщение ненужным).
OFB | |
---|---|
Обратная связь по выходу | |
Распараллеливание с шифрованием | No |
Распараллеливание дешифрования | No |
Доступ для произвольного чтения | No |
Режим обратной связи по выходу (OFB) создает блочный шифр в синхронный потоковый шифр . Он генерирует блоки ключевого потока, которые подвергаются XOR с блоками открытого текста для получения зашифрованного текста. Как и в других потоковых шифрах, изменение бита в зашифрованном тексте приводит к изменению бита в открытом тексте в том же месте. Это позволяет даже многим кодам с исправлением ошибок нормально функционировать, если они были применены до шифрования.
Из-за симметрии операции XOR шифрование и дешифрование абсолютно одинаковы:
Каждая операция блочного шифрования обратной связи зависит от всех предыдущих операций. Однако, открытый текст или зашифрованный текст используется только для окончательного XOR, операции блочного шифрования могут заранее, позволяя выполнять последний шаг, как только открытый текст или зашифрованный текст станет доступным.
Можно получить поток ключей режима OFB, используя режим CBC с постоянной строкой нулей в качестве входных данных. Это может быть полезно, поскольку позволяет использовать быстрые аппаратные реализации режима CBC для шифрования в режиме OFB.
Использование режима OFB с частичным блоком в качестве обратной связи, как в режиме CFB, сокращает среднюю длину цикла в 2 или более раз. Математическая модель, предложенная Дэвисом и Паркиным и подтвержденная экспериментальными результатами, показала, что только при обратной связи может быть достигнута средняя длина цикла, близкая к достижимому максимуму. По этой причине поддержка усеченной обратной связи была удалена из спецификации OFB.
CTR | |
---|---|
Счетчик | |
Шифрование с помощью распараллеливания | Да |
Расшифровка параллелизируемый | Да |
Произвольный доступ для чтения | Да |
Подобно 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) на других диаграммах. Однако, если информация о смещении / восстановлении повреждена, невозможно частично восстановить такие данные из-за зависимости от байтового смещения.
Свойства «распространения» ошибки, как расшифровка ведет себя во время битовых ошибок, что есть ошибка в одном бите, каскадируется на разные дешифрованные биты.
Битовые ошибки возникли случайным образом из-за ошибок передачи.
Битовые ошибки могут возникать намеренно при атаках.
Для современного аутентифицированного шифрования (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 являются примерами.