Режим работы блочного шифрования
В криптографии режим работы блочного шифра — это алгоритм, который использует блочный шифр для обеспечения информационной безопасности, такой как конфиденциальность или подлинность . [1] Сам по себе блочный шифр пригоден только для безопасного криптографического преобразования (шифрования или дешифрования) одной группы битов фиксированной длины, называемой блоком . [2] Режим работы описывает, как многократно применять одноблочную операцию шифра для безопасного преобразования объемов данных, превышающих размер блока. [3] [4] [5]
В большинстве режимов для каждой операции шифрования требуется уникальная двоичная последовательность, часто называемая вектором инициализации (IV). IV должен быть неповторяющимся, а для некоторых режимов еще и случайным. Вектор инициализации используется для обеспечения различных зашифрованных текстов создания , даже если один и тот же открытый текст зашифрован несколько раз независимо с одним и тем же ключом . [6] Блочные шифры могут работать с блоками более чем одного размера , но во время преобразования размер блока всегда фиксирован. Режимы блочного шифрования работают с целыми блоками и требуют, чтобы окончательный фрагмент данных был дополнен до полного блока, если он меньше текущего размера блока. [2] Однако существуют режимы, которые не требуют заполнения, поскольку они эффективно используют блочный шифр в качестве потокового шифра .
Исторически режимы шифрования широко изучались с точки зрения их свойств распространения ошибок при различных сценариях модификации данных. Более поздние разработки рассматривали защиту целостности как совершенно отдельную криптографическую цель. Некоторые современные режимы работы сочетают конфиденциальность и подлинность эффективно шифрования с проверкой подлинности . и известны как режимы [7]
История и стандартизация
[ редактировать ]Самые ранние режимы работы, ECB, CBC, OFB и CFB (все см. ниже), датируются 1981 годом и были указаны в FIPS 81 , режимах работы DES . В 2001 году Национальный институт стандартов и технологий США (NIST) пересмотрел свой список одобренных режимов работы, включив AES в качестве блочного шифра и добавив режим CTR в SP800-38A , «Рекомендации по режимам работы блочного шифрования» . Наконец, в январе 2010 года NIST добавил XTS-AES в SP800-38E , «Рекомендации по режимам работы блочного шифрования: режим XTS-AES для конфиденциальности на устройствах хранения данных» . Существуют и другие режимы конфиденциальности, не одобренные NIST. Например, CTS — это режим кражи зашифрованного текста , доступный во многих популярных криптографических библиотеках.
Режимы блочного шифрования ECB, CBC, OFB, CFB, CTR и XTS обеспечивают конфиденциальность, но не защищают от случайной модификации или злонамеренного вмешательства. Модификацию или подделку можно обнаружить с помощью отдельного кода аутентификации сообщения , такого как CBC-MAC , или цифровой подписи . Криптографическое сообщество осознало необходимость специальных гарантий целостности, и NIST ответил HMAC, CMAC и GMAC. HMAC был утвержден в 2002 году как FIPS 198 , Код аутентификации сообщения с использованием хэш-ключа (HMAC) , CMAC был выпущен в 2005 году под номером SP800-38B , Рекомендации по режимам работы блочного шифрования: режим CMAC для аутентификации , а GMAC был формализован в 2007 году. в SP800-38D , Рекомендации по режимам работы блочного шифрования: режим Галуа/счетчика (GCM) и GMAC .
Криптографическое сообщество заметило, что составление (объединение) режима конфиденциальности с режимом аутентификации может быть трудным и чреват ошибками. Поэтому они начали предлагать режимы, которые объединяли конфиденциальность и целостность данных в один криптографический примитив (алгоритм шифрования). Эти комбинированные режимы называются аутентифицированным шифрованием , AE или «authenc». Примерами режимов AE являются CCM ( SP800-38C ), GCM ( SP800-38D ), CWC , EAX , IAPM и OCB .
Режимы работы определяются рядом национальных и международно признанных органов по стандартизации. Известные организации по стандартизации включают NIST , ISO (с ISO/IEC 10116). [5] ), IEC , IEEE , ANSI и IETF .
Вектор инициализации (IV)
[ редактировать ]Вектор инициализации (IV) или стартовая переменная (SV) [5] представляет собой блок битов, который используется в нескольких режимах для рандомизации шифрования и, следовательно, для создания различных зашифрованных текстов, даже если один и тот же открытый текст зашифрован несколько раз, без необходимости более медленного процесса повторного ввода ключа. [ нужна ссылка ]
Вектор инициализации имеет другие требования безопасности, чем ключ, поэтому IV обычно не обязательно должен быть секретным. Для большинства режимов блочного шифрования важно, чтобы вектор инициализации никогда не использовался повторно под одним и тем же ключом, т. е. он должен быть криптографическим одноразовым номером . Многие режимы блочного шифрования предъявляют более строгие требования, например, IV должен быть случайным или псевдослучайным . Некоторые блочные шифры имеют особые проблемы с определенными векторами инициализации, например, все нулевые значения IV не приводят к шифрованию (для некоторых ключей).
Рекомендуется просмотреть соответствующие требования IV для конкретного режима блочного шифрования в соответствующей спецификации, например SP800-38A .
Для CBC и CFB повторное использование IV приводит к утечке некоторой информации о первом блоке открытого текста и о любом общем префиксе, общем для двух сообщений.
Для OFB и CTR повторное использование IV приводит к повторному использованию потока битов ключа, что нарушает безопасность. [8] Это можно увидеть, поскольку оба режима эффективно создают битовый поток, который подвергается операции XOR с открытым текстом, и этот битовый поток зависит только от ключа и IV.
В режиме CBC IV должен быть непредсказуемым (случайным или псевдослучайным) во время шифрования; в частности, распространенная (ранее) практика повторного использования последнего блока зашифрованного текста сообщения в качестве IV для следующего сообщения небезопасна (например, этот метод использовался SSL 2.0). Если злоумышленник знает IV (или предыдущий блок зашифрованного текста) до того, как будет указан следующий открытый текст, он может проверить свое предположение об открытом тексте некоторого блока, который был зашифрован с тем же ключом ранее (это известно как атака TLS CBC IV). . [9]
Для некоторых ключей вектор инициализации, состоящий из всех нулей, может генерировать некоторые режимы блочного шифрования (CFB-8, OFB-8), чтобы внутреннее состояние фиксировалось на нулевом уровне. Для CFB-8, полностью нулевой IV и весь нулевой открытый текст, приводит к тому, что 1/256 ключей не генерирует шифрование, открытый текст возвращается как зашифрованный текст. [10] Для OFB-8 использование всего нулевого вектора инициализации не приведет к шифрованию 1/256 ключей. [11] Шифрование OFB-8 возвращает незашифрованный открытый текст для затронутых ключей.
Некоторые режимы (например, AES-SIV и AES-GCM-SIV) созданы так, чтобы быть более устойчивыми к неправомерному использованию nonce, то есть устойчивыми к сценариям, в которых генерация случайных чисел ошибочна или находится под контролем злоумышленника.
- Синтетические векторы инициализации (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)
[ редактировать ]Был разработан ряд режимов работы, позволяющих объединить секретность и аутентификацию в одном криптографическом примитиве. Примеры таких режимов: [12] цепочка блоков шифра с учетом целостности (IACBC) [ нужны разъяснения ] , распараллеливаемый режим с учетом целостности (IAPM), [13] OCB , EAX , CWC , CCM и GCM . Режимы шифрования с аутентификацией подразделяются на однопроходные и двухпроходные режимы.
Кроме того, некоторые режимы также допускают аутентификацию незашифрованных связанных данных, и они называются схемами 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)
- Открытый текст
- Ключ аутентификации (К 1 ).
SIV шифрует выходные данные S2V и открытый текст с использованием AES-CTR, используя ключ шифрования (K 2 ).
SIV может поддерживать внешнее аутентифицированное шифрование на основе nonce, и в этом случае для этой цели используется одно из аутентифицированных полей данных. RFC5297 [16] указывает, что в целях совместимости последнее аутентифицированное поле данных должно использовать внешний одноразовый номер.
Из-за использования двух ключей, ключа аутентификации K 1 и ключа шифрования K 2 , схемы именования для SIV AEAD-вариантов могут привести к некоторой путанице; например, AEAD_AES_SIV_CMAC_256 относится к AES-SIV с двумя ключами AES-128, а не к AES-256.
AES-GCM-SIV
[ редактировать ]AES-GCM-SIV — это режим работы расширенного стандарта шифрования, который обеспечивает производительность, аналогичную режиму Галуа/счетчика, а также устойчивость к неправильному использованию в случае повторного использования криптографического одноразового номера. Конструкция определена в RFC 8452. [17]
AES-GCM-SIV синтезирует внутренний IV. Он получает хеш дополнительных аутентифицированных данных и открытого текста с помощью хэш-функции Галуа POLYVAL. Затем хэш шифруется с помощью AES-ключа и используется в качестве тега аутентификации и вектора инициализации AES-CTR.
AES-GCM-SIV является усовершенствованием алгоритма с очень похожим названием GCM-SIV с несколькими очень небольшими изменениями (например, способ инициализации AES-CTR), но которое дает практические преимущества в плане безопасности. «Это дополнение позволяет шифровать до 2 50 сообщения с одним и тем же ключом, по сравнению со значительным ограничением, состоящим только из 2 32 сообщения, которые были разрешены с помощью GCM-SIV». [18]
Режимы только конфиденциальности
[ редактировать ]Определено множество режимов работы. Некоторые из них описаны ниже. Целью режимов шифрования является маскирование шаблонов, существующих в зашифрованных данных, как показано в описании слабости ECB .
Различные режимы шифрования маскируют шаблоны путем каскадирования выходных данных из блока шифрования или других глобально детерминированных переменных в последующий блок шифрования. Входные данные перечисленных режимов сведены в следующую таблицу:
Режим | Формулы | Зашифрованный текст | |
---|---|---|---|
Электронная кодовая книга | (ЕЦБ) | Y i = F(PlainText i , Key) | Да, да |
Цепочка блоков шифра | (CBC) | Y i = Обычный текст i Зашифрованный текст XOR i -1 | F(Y, Ключ); Зашифрованный текст 0 = IV |
Распространение CBC | (ПКБК) | Y i = PlainText i XOR (Зашифрованный текст i -1 XOR PlainText i -1 ) | F(Y, Ключ); Зашифрованный текст 0 = IV |
Шифр обратной связи | (ЦФБ) | Y i = Зашифрованный текст i -1 | Открытый текст XOR F(Y, Ключ); Зашифрованный текст 0 = IV |
Выходная обратная связь | (ОФБ) | Y i = F(Y i -1 , Ключ); Y 0 = F(IV, Ключ) | Открытый текст XOR Y i |
Прилавок | (CTR) | Y i = F(IV + g ( i ), Ключ); IV = токен() | Открытый текст XOR Y i |
Примечание: g ( i ) — любая детерминированная функция, часто тождественная функция .
Электронная кодовая книга (ECB)
[ редактировать ]ЕЦБ | |
---|---|
Электронная кодовая книга | |
Распараллеливаемое шифрование | Да |
Распараллеливание расшифровки | Да |
Произвольный доступ для чтения | Да |
Простейшим из режимов шифрования является режим электронной кодовой книги (ECB) (названный в честь обычных физических кодовых книг) . [19] ). Сообщение делится на блоки, и каждый блок шифруется отдельно. ECB не рекомендуется использовать в криптографических протоколах: недостатком этого метода является отсутствие диффузии , при котором он не может скрыть шаблоны данных при шифровании идентичных блоков открытого текста в идентичные блоки зашифрованного текста . [20] [21] [22]
Яркий пример того, в какой степени ECB может оставлять шаблоны данных открытого текста в зашифрованном тексте, можно увидеть, когда режим ECB используется для шифрования растрового изображения , которое содержит большие области однородного цвета. Хотя цвет каждого отдельного пикселя предположительно зашифрован, общее изображение все равно можно различить, поскольку рисунок пикселей одинакового цвета в оригинале остается видимым в зашифрованной версии.
Режим ECB также может сделать протоколы без защиты целостности еще более восприимчивыми к атакам повторного воспроизведения , поскольку каждый блок расшифровывается одинаково. [ нужна ссылка ]
Цепочка блоков шифра (CBC)
[ редактировать ]Си-Би-Си | |
---|---|
Цепочка блоков шифра | |
Распараллеливаемое шифрование | Нет |
Распараллеливание расшифровки | Да |
Произвольный доступ для чтения | Да |
Эрсам, Мейер, Смит и Тачман изобрели режим работы цепочки блоков шифра (CBC) в 1976 году. [23] В режиме CBC каждый блок открытого текста подвергается операции XOR перед шифрованием с предыдущим блоком зашифрованного текста. Таким образом, каждый блок зашифрованного текста зависит от всех блоков открытого текста, обработанных до этого момента. Чтобы сделать каждое сообщение уникальным, вектор инициализации в первом блоке необходимо использовать .
Если первый блок имеет индекс 1, математическая формула шифрования CBC имеет вид
в то время как математическая формула для расшифровки CBC:
Пример
[ редактировать ]CBC был наиболее часто используемым режимом работы. Его основные недостатки заключаются в том, что шифрование является последовательным (т. е. его нельзя распараллелить) и что сообщение должно быть дополнено до размера, кратного размеру зашифрованного блока. Одним из способов решения этой последней проблемы является метод, известный как кража зашифрованного текста . Обратите внимание, что однобитовое изменение открытого текста или вектора инициализации (IV) влияет на все последующие блоки зашифрованного текста.
Дешифрование с использованием неправильного IV приводит к повреждению первого блока открытого текста, но последующие блоки открытого текста будут правильными. Это связано с тем, что каждый блок подвергается операции XOR с зашифрованным текстом предыдущего блока, а не с открытым текстом, поэтому нет необходимости расшифровывать предыдущий блок перед использованием его в качестве IV для расшифровки текущего. Это означает, что блок открытого текста можно восстановить из двух соседних блоков зашифрованного текста. Как следствие, расшифровку можно распараллелить. Обратите внимание, что изменение на один бит зашифрованного текста приводит к полному повреждению соответствующего блока открытого текста и инвертирует соответствующий бит в следующем блоке открытого текста, но остальные блоки остаются нетронутыми. Эта особенность используется в различных атаках оракулов , таких как POODLE .
Векторы явной инициализации [24] воспользуйтесь этим свойством, добавив к открытому тексту один случайный блок. Шифрование выполняется как обычно, за исключением того, что IV не требуется передавать в программу дешифрования. Что бы ни использовала расшифровка IV, «повреждается» только случайный блок. Его можно безопасно отбросить, а остальная часть расшифровки представляет собой исходный открытый текст.
Распространение цепочки блоков шифра (PCBC)
[ редактировать ]ПКБК | |
---|---|
Распространение цепочки блоков шифрования | |
Распараллеливаемое шифрование | Нет |
Распараллеливание расшифровки | Нет |
Произвольный доступ для чтения | Нет |
Распространяющаяся цепочка блоков шифра [25] или цепочка зашифрованных блоков открытого текста [26] Режим был разработан так, чтобы небольшие изменения в зашифрованном тексте распространялись бесконечно как при расшифровке, так и при шифровании. В режиме PCBC каждый блок открытого текста перед шифрованием подвергается операции XOR как с предыдущим блоком открытого текста, так и с предыдущим блоком зашифрованного текста. Как и в режиме CBC, в первом блоке используется вектор инициализации.В отличие от CBC, расшифровка PCBC с неправильным IV (вектором инициализации) приводит к повреждению всех блоков открытого текста.
Алгоритмы шифрования и дешифрования следующие:
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 и для других режимов конфиденциальности в этой рекомендации синхронизация должны быть восстановлены извне». (НИСТ СП800-38А). То есть потеря 1 бита в блочном шифре шириной 128 бит, таком как AES, приведет к отображению 129 недействительных битов перед выдачей действительных битов.
CFB также может выполнять самосинхронизацию в некоторых особых случаях, кроме указанных. Например, изменение одного бита в CFB-128 с базовым 128-битным блочным шифром приведет к повторной синхронизации после двух блоков. (Однако CFB-128 и т. д. не будет корректно обрабатывать потерю битов; потеря одного бита приведет к потере согласованности дешифратора с шифратором)
CFB по сравнению с другими режимами
[ редактировать ]Как и в режиме CBC, изменения в открытом тексте навсегда распространяются в зашифрованном тексте, и шифрование не может быть распараллелено. Также, как и CBC, расшифровку можно распараллелить.
CFB, OFB и CTR имеют два преимущества по сравнению с режимом CBC: блочный шифр всегда используется только в направлении шифрования, и сообщение не нужно дополнять до кратного размера блока шифра (хотя кражу зашифрованного текста также можно использовать для режим CBC, чтобы сделать заполнение ненужным).
Выход обратной связи (OFB)
[ редактировать ]ОФБ | |
---|---|
Выходная обратная связь | |
Распараллеливаемое шифрование | Нет |
Распараллеливание расшифровки | Нет |
Произвольный доступ для чтения | Нет |
Режим выходной обратной связи (OFB) превращает блочный шифр в синхронный поточный шифр . Он генерирует блоки ключевого потока , которые затем подвергаются операции XOR с блоками открытого текста для получения зашифрованного текста. Как и в случае с другими потоковыми шифрами, небольшой переворот в зашифрованном тексте создает перевернутый бит в открытом тексте в том же месте. Это свойство позволяет многим кодам, исправляющим ошибки , нормально работать, даже если они применяются до шифрования.
Из-за симметрии операции XOR шифрование и дешифрование абсолютно одинаковы:
Каждая операция блочного шифрования с обратной связью зависит от всех предыдущих и поэтому не может выполняться параллельно. Однако, поскольку открытый текст или зашифрованный текст используются только для окончательного XOR, операции блочного шифрования могут выполняться заранее, что позволяет выполнять последний шаг параллельно, как только открытый текст или зашифрованный текст станет доступен.
Можно получить ключевой поток режима OFB, используя режим CBC с постоянной строкой нулей в качестве входных данных. Это может быть полезно, поскольку позволяет использовать быстрые аппаратные реализации режима CBC для шифрования в режиме OFB.
Использование режима OFB с частичной блокировкой в качестве обратной связи, например режима CFB, уменьшает среднюю длину цикла в 2 раза. 32 или больше. Математическая модель, предложенная Дэвисом и Паркином и подтвержденная экспериментальными результатами, показала, что только при полной обратной связи может быть достигнута средняя длина цикла, близкая к достижимому максимуму. По этой причине поддержка усеченной обратной связи была удалена из спецификации OFB. [29]
Счетчик (CTR)
[ редактировать ]CTR | |
---|---|
Прилавок | |
Распараллеливаемое шифрование | Да |
Распараллеливание расшифровки | Да |
Произвольный доступ для чтения | Да |
- Примечание. Режим CTR (CM) также известен как режим целочисленного счетчика (ICM) и режим сегментированного целочисленного счетчика (SIC).
Как и OFB, режим счетчика превращает блочный шифр в поточный шифр . Он генерирует следующий блок потока ключей путем шифрования последовательных значений «счетчика». Счетчиком может быть любая функция, которая создает последовательность, которая гарантированно не будет повторяться в течение длительного времени, хотя фактический счетчик с приращением на единицу является самым простым и популярным. Использование простой детерминированной входной функции раньше вызывало споры; критики утверждали, что «намеренное подвергание криптосистемы воздействию известных систематических входных данных представляет собой ненужный риск». [30] Однако сегодня режим CTR широко распространен, и любые проблемы считаются слабостью базового блочного шифра, который, как ожидается, будет безопасным независимо от системной предвзятости на его входных данных. [31] Наряду с CBC, режим CTR является одним из двух режимов блочного шифрования, рекомендованных Нильсом Фергюсоном и Брюсом Шнайером. [32]
Режим CTR был представлен Уитфилдом Диффи и Мартином Хеллманом в 1979 году. [31]
Режим CTR имеет характеристики, аналогичные OFB, но также допускает возможность произвольного доступа во время расшифровки. Режим CTR хорошо подходит для работы на многопроцессорной машине, где блоки могут шифроваться параллельно. Более того, он не страдает от проблемы короткого цикла, которая может повлиять на OFB. [33]
Если IV/nonce являются случайными, то их можно объединить со счетчиком, используя любую обратимую операцию (конкатенацию, сложение или XOR), чтобы создать фактический уникальный блок счетчика для шифрования. В случае неслучайного nonce (например, счетчика пакетов) nonce и счетчик должны быть объединены (например, сохранение nonce в старших 64 битах, а счетчика в младших 64 битах 128-битного блока счетчиков). . Простое добавление или операция XOR для nonce и счетчика в одно значение во многих случаях может нарушить безопасность при атаке с использованием выбранного открытого текста , поскольку злоумышленник может манипулировать всей парой IV-счетчик, чтобы вызвать коллизию. Как только злоумышленник получит контроль над парой счетчиков IV и открытым текстом, операция XOR зашифрованного текста с известным открытым текстом даст значение, которое при выполнении операции XOR с зашифрованным текстом другого блока, использующего ту же пару счетчиков IV, позволит расшифровать этот блок. [34]
Обратите внимание, что nonce на этой диаграмме эквивалентен вектору инициализации (IV) на других диаграммах. Однако если информация о смещении/местоположении повреждена, частично восстановить такие данные будет невозможно из-за зависимости от смещения байта.
Распространение ошибок
[ редактировать ]Свойства «распространения ошибок» описывают, как ведет себя дешифрование во время битовых ошибок, т.е. как ошибка в одном бите каскадно передается на разные расшифрованные биты.
Битовые ошибки могут возникать намеренно при атаках или случайно из-за ошибок передачи.
- Случайные битовые ошибки возникают независимо в любой битовой позиции с ожидаемой вероятностью ½.
- Конкретные битовые ошибки возникают в той же битовой позиции(ях), что и исходная битовая ошибка(и).
- Конкретные битовые ошибки в режимах потокового шифрования (OFB, CTR и т. д.) тривиальны. Они влияют только на конкретный бит.
- Конкретные битовые ошибки в более сложных режимах, таких как (например, CBC): адаптивная атака с выбранным зашифрованным текстом может разумно комбинировать множество различных конкретных битовых ошибок для взлома режима шифрования. При атаке Padding oracle CBC можно расшифровать, угадав секреты шифрования на основе ошибочных ответов. Вариант атаки Padding Oracle «CBC-R» (CBC Reverse) позволяет злоумышленнику создать любое допустимое сообщение.
Для современного шифрования с проверкой подлинности (AEAD) или протоколов с кодами аутентификации сообщений , связанными в порядке MAC-Then-Encrypt, любая битовая ошибка должна полностью прерывать расшифровку и не должна генерировать какие-либо конкретные битовые ошибки для дешифратора. Т.е. если расшифровка прошла успешно, никакой битовой ошибки быть не должно. Таким образом, распространение ошибок является менее важным вопросом в современных режимах шифрования, чем в традиционных режимах только конфиденциальности.
Режим | Влияние битовых ошибок в C i | Влияние битовых ошибок в IV или nonce |
---|---|---|
ЕЦБ | Случайные битовые ошибки в P i | — |
Си-Би-Си | Случайные битовые ошибки в P i Конкретные битовые ошибки в P i+1 | Конкретные битовые ошибки в P 1 |
ЦФБ | Конкретные битовые ошибки в P i Случайные битовые ошибки в P i+1 , …, пока синхронизация не будет восстановлена. | Случайные битовые ошибки в P1 , …, пока синхронизация не будет восстановлена. |
ОФБ | Конкретные битовые ошибки в P i | Случайные битовые ошибки в P1 , P2 , …, Pn |
CTR | Конкретные битовые ошибки в P i | Случайные битовые ошибки в P i для битовой ошибки в блоке счетчика T i |
(Источник: SP800-38A, Таблица D.2: Сводная информация о влиянии битовых ошибок на дешифрование)
Можно заметить, например, что ошибка в один блок в переданном зашифрованном тексте приведет к ошибке в один блок в восстановленном открытом тексте для шифрования в режиме ECB, тогда как в режиме CBC такая ошибка затронет два блока. Некоторые считали, что такая устойчивость желательна перед лицом случайных ошибок (например, шума в линии), в то время как другие утверждали, что исправление ошибок расширяет возможности злоумышленников по злонамеренному вмешательству в сообщение.
Однако при использовании надлежащей защиты целостности такая ошибка приведет (с высокой вероятностью) к отклонению всего сообщения. Если желательна устойчивость к случайным ошибкам, коды, исправляющие ошибки перед передачей к зашифрованному тексту следует применить .
Другие режимы и другие криптографические примитивы
[ редактировать ]Было предложено множество других режимов работы блочных шифров. Некоторые из них были приняты, полностью описаны (даже стандартизированы) и используются. Другие оказались небезопасными, и их никогда не следует использовать. Третьи не классифицируют конфиденциальность, подлинность или шифрование с проверкой подлинности - например, режим обратной связи по ключу и хеширование Дэвиса-Мейера .
NIST поддерживает список предлагаемых режимов блочных шифров на сайте Modes Development . [28] [35]
В шифровании диска часто используются специальные режимы, специально разработанные для конкретного приложения. Настраиваемые режимы узкоблочного шифрования ( LRW , XEX и XTS ) и режимы широкоблочного шифрования ( CMC и EME ) предназначены для безопасного шифрования секторов диска (см. теорию шифрования диска ).
Во многих режимах используется вектор инициализации (IV), который, в зависимости от режима, может иметь такие требования, как использование только один раз (nonce) или непредсказуемость перед публикацией и т. д. Повторное использование IV с тем же ключом в CTR, GCM или режим OFB приводит к выполнению XOR одного и того же потока ключей с двумя или более открытыми текстами, что является явным неправильным использованием потока с катастрофической потерей безопасности. Режимы детерминированного шифрования с аутентификацией, такие как алгоритм NIST Key Wrap и режим SIV (RFC 5297) AEAD, не требуют ввода IV и возвращают один и тот же зашифрованный текст и тег аутентификации каждый раз для данного открытого текста и ключа. Другие режимы IV, устойчивые к неправильному использованию, такие как AES-GCM-SIV, выигрывают от ввода IV, например, в максимальном объеме данных, которые можно безопасно зашифровать с помощью одного ключа, и при этом не происходит катастрофического сбоя, если один и тот же IV используется несколько раз.
Блочные шифры также могут использоваться в других криптографических протоколах . Обычно они используются в режимах работы, аналогичных описанным здесь режимам блока. Как и в случае со всеми протоколами, для обеспечения криптографической безопасности необходимо позаботиться о правильной разработке этих режимов работы.
Существует несколько схем, в которых для построения криптографической хеш-функции используется блочный шифр . См. функцию одностороннего сжатия для описания нескольких таких методов.
Криптографически безопасные генераторы псевдослучайных чисел (CSPRNG) также могут быть созданы с использованием блочных шифров.
Коды аутентификации сообщений (MAC) часто создаются на основе блочных шифров. Примерами являются CBC-MAC , OMAC и PMAC .
См. также
[ редактировать ]- Шифрование диска
- Код аутентификации сообщения
- Аутентифицированное шифрование
- Функция одностороннего сжатия
Ссылки
[ редактировать ]- ^ Группа технологий безопасности (STG) подразделения компьютерной безопасности (CSD) NIST (2013 г.). «Режимы блочного шифрования» . Криптографический инструментарий . НИСТ. Архивировано из оригинала 6 ноября 2012 года . Проверено 12 апреля 2013 г.
- ^ Перейти обратно: а б Фергюсон, Н.; Шнайер, Б.; Кохно, Т. (2010). Криптографическая инженерия: принципы проектирования и практическое применение . Индианаполис: Wiley Publishing, Inc., стр. 63, 64. ISBN. 978-0-470-47424-2 .
- ^ Группа технологий безопасности (STG) подразделения компьютерной безопасности (CSD) NIST (2013 г.). «Предлагаемые режимы» . Криптографический инструментарий . НИСТ. Архивировано из оригинала 2 апреля 2013 года . Проверено 14 апреля 2013 г.
- ^ Альфред Дж. Менезес; Пол К. ван Оршот; Скотт А. Ванстон (1996). Справочник по прикладной криптографии . ЦРК Пресс. стр. 228–233 . ISBN 0-8493-8523-7 .
- ^ Перейти обратно: а б с «ISO/IEC 10116:2006 – Информационные технологии – Методы обеспечения безопасности – Режимы работы n -битного блочного шифра» . Каталог стандартов ISO . 2006. Архивировано из оригинала 17 марта 2012 г.
- ^ Конрад, Эрик; Мисенар, Сет; Фельдман, Джошуа (01 января 2017 г.), Конрад, Эрик; Мисенар, Сет; Фельдман, Джошуа (ред.), «Глава 3 – Домен 3: Разработка безопасности» , Eleventh Hour CISSP® (Третье издание) , Syngress, стр. 47–93, doi : 10.1016/b978-0-12-811248-9.00003- 6 , ISBN 978-0-12-811248-9 , получено 1 ноября 2020 г.
- ^ Группа технологий безопасности (STG) подразделения компьютерной безопасности (CSD) NIST (2013 г.). «Текущие режимы» . Криптографический инструментарий . НИСТ. Архивировано из оригинала 2 апреля 2013 года . Проверено 12 апреля 2013 г.
- ^ «Повторное использование потокового шифрования: графический пример» . ООО "Криптосмит". 31 мая 2008 г. Архивировано из оригинала 25 января 2015 г. . Проверено 7 января 2015 г.
- ^ Б. Мёллер (20 мая 2004 г.), Безопасность наборов шифров CBC в SSL/TLS: проблемы и меры противодействия , заархивировано из оригинала 30 июня 2012 г.
- ^ Терворт, Том. «Zerologon: компрометация неаутентифицированного контроллера домена путем нарушения криптографии Netlogon (CVE-2020-1472)» . Секура . Проверено 14 октября 2020 г.
- ^ Блауфиш (14 октября 2020 г.). «Netlogon CFB8 считается вредным. OFB8 также» . Гитхаб . Проверено 14 октября 2020 г.
- ^ Глигор, Вирджил Д .; Донеску, Помпилиу (2002). Мацуи, М. (ред.). Быстрое шифрование и аутентификация: режимы шифрования XCBC и аутентификации XECB (PDF) . Быстрое программное шифрование 2001. Конспекты лекций по информатике. Том. 2355. Берлин: Шпрингер. стр. 92–108. дои : 10.1007/3-540-45473-X_8 . ISBN 978-3-540-43869-4 .
- ^ Ютла, Чаранджит С. (май 2001 г.). Режимы шифрования с почти бесплатной целостностью сообщений (PDF) . Eurocrypt 2001. Конспекты лекций по информатике. Том. 2045. Спрингер. дои : 10.1007/3-540-44987-6_32 .
- ^ Дворкин, Моррис (май 2004 г.). Рекомендации по режимам работы блочного шифрования: режим CCM для аутентификации и конфиденциальности (PDF) (технический отчет). Специальные публикации NIST. НИСТ . doi : 10.6028/NIST.SP.800-38C . 800-38С.
- ^ Уайтинг, Д.; Хаусли, Р.; Фергюсон, Н. (сентябрь 2003 г.). Счетчик с CBC-MAC (CCM) . IETF . дои : 10.17487/RFC3610 . РФК 3610 .
- ^ Харкинс, Дэн (октябрь 2008 г.). «Шифрование с проверкой подлинности синтетического вектора инициализации (SIV) с использованием расширенного стандарта шифрования (AES)» . Проверено 21 октября 2020 г.
- ^ Герон, С. (апрель 2019 г.). AES-GCM-SIV: одноразовое шифрование с аутентификацией, устойчивое к неправильному использованию . IETF . дои : 10.17487/RFC8452 . RFC 8452 . Проверено 14 августа 2019 г.
- ^ Герон, Шей; Лэнгли, Адам; Линделл, Иегуда (14 декабря 2018 г.). «AES-GCM-SIV: Спецификация и анализ» . Архив электронной печати по криптологии . Отчет (2017/168) . Проверено 19 октября 2020 г.
- ^ «Рекомендации по режимам работы блочного шифрования» (PDF) . NIST.gov . НИСТ. п. 9. Архивировано (PDF) из оригинала 29 марта 2017 г. Проверено 1 апреля 2017 г.
- ^ Менезес, Альфред Дж.; ван Оршот, Пол К.; Ванстон, Скотт А. (2018). Справочник по прикладной криптографии . ЦРК Пресс. п. 228. ИСБН 9780429881329 .
- ^ Дам, Кеннет В.; Лин, Герберт С. (1996). Роль криптографии в обеспечении безопасности информационного общества . Пресса национальных академий. п. 132. ИСБН 9780309054751 .
- ^ Шнайер, Брюс (2015). Прикладная криптография: протоколы, алгоритмы и исходный код на C. Джон Уайли и сыновья. п. 208. ИСБН 9781119096726 .
- ^ Уильям Ф. Эрсам, Карл Х. Мейер, Джон Л. Смит, Уолтер Л. Тачман, «Проверка сообщений и обнаружение ошибок передачи посредством объединения блоков», патент США 4074066, 1976.
- ^ «Протокол безопасности транспортного уровня (TLS) версии 1.1» . п. 20. Архивировано из оригинала 7 января 2015 г. Проверено 7 января 2015 г.
- ^ «Часто задаваемые вопросы по криптографии: Frage 84: Что такое режимы счетчика и PCBC?» . www.iks-jena.de . Архивировано из оригинала 16 июля 2012 года . Проверено 28 апреля 2018 г.
- ^ Кауфман, К.; Перлман, Р.; Специнер, М. (2002). Сетевая безопасность (2-е изд.). Река Аппер-Седл, Нью-Джерси: Прентис-Холл. п. 319. ИСБН 0130460192 .
- ^ Коль, Дж. (1990). «Использование шифрования в Kerberos для сетевой аутентификации» (PDF) . Труды, Крипто '89 . Берлин: Шпрингер. ISBN 0387973176 . Архивировано из оригинала (PDF) 12 июня 2009 г.
- ^ Перейти обратно: а б (НИСТ), Автор: Моррис Дворкин (2001). «SP 800-38A, Рекомендации по режимам работы блочного шифрования: методы и приемы» (PDF) . csrc.nist.gov . doi : 10.6028/NIST.SP.800-38A . Архивировано (PDF) из оригинала 28 августа 2017 года . Проверено 28 апреля 2018 г.
{{cite journal}}
:|first=
имеет общее имя ( справка ) - ^ Дэвис, Д.В.; Паркин, GIP (1983). «Средний размер цикла ключевого потока при шифровании с обратной связью на выходе». Достижения криптологии, Труды КРИПТО 82 . Нью-Йорк: Пленум Пресс. стр. 263–282. ISBN 0306413663 .
- ^ Джунеман, Роберт Р. (1983). «Анализ некоторых аспектов режима обратной связи по выходу». Достижения криптологии, Труды КРИПТО 82 . Нью-Йорк: Пленум Пресс. стр. 99–127. ISBN 0306413663 .
- ^ Перейти обратно: а б Липмаа, Хельгер; Вагнер, Дэвид; Рогауэй, Филипп (2000). «Комментарии к NIST относительно режимов работы AES: шифрование в режиме CTR» (PDF) . Архивировано (PDF) из оригинала 26 февраля 2015 г.
- ^ Фергюсон, Нильс; Шнайер, Брюс; Коно, Тадаёси (2010). Криптографическая инженерия . п. 71.
- ^ «Основные режимы блочного шифрования» . www.quadibloc.com . Архивировано из оригинала 24 октября 2017 года . Проверено 28 апреля 2018 г.
- ^ «Криптография I» . Курсера . Архивировано из оригинала 23 марта 2018 года . Проверено 28 апреля 2018 г.
- ^ «Разработка режимов — методы блочного шифрования — CSRC» . Отдел компьютерной безопасности, Лаборатория информационных технологий, Национальный институт стандартов и технологий, Министерство торговли США. 4 января 2017 года. Архивировано из оригинала 4 сентября 2017 года . Проверено 28 апреля 2018 г.