В криптографии блочный шифр — это детерминированный алгоритм , который работает с группами битов фиксированной длины , называемыми блоками . Блочные шифры являются элементарными строительными блоками многих криптографических протоколов . Они повсеместно используются при хранении и обмене данными, где такие данные защищаются и аутентифицируются с помощью шифрования .
Блочный шифр использует блоки в качестве неизменного преобразования. Даже безопасный блочный шифр пригоден для одновременного шифрования только одного блока данных с использованием фиксированного ключа. Было разработано множество режимов работы , позволяющих их многократное использование безопасным способом для достижения целей безопасности, таких как конфиденциальность и подлинность . Однако блочные шифры могут также использоваться в качестве строительных блоков в других криптографических протоколах, таких как универсальные хеш-функции и генераторы псевдослучайных чисел .
Блочный шифр состоит из двух парных алгоритмов : один для шифрования E , а другой для дешифрования D. [1] Оба алгоритма принимают два входных параметра: входной блок размером n бит и ключ размером k бит; и оба дают n -битный выходной блок. Алгоритм дешифрования D определяется как обратная функция шифрования, т.е. D = E -1 . Более формально, [2] [3] блочный шифр задается функцией шифрования.
который принимает на вход ключ K длиной в битах k (называемый размером ключа ) и битовую строку P длиной n (называемую размером блока ) и возвращает строку C из n бит. P называется открытым текстом , а C называется зашифрованным текстом . Для каждого K функция E K ( P ) должна быть обратимым отображением на {0,1} n . Обратная для E определяется как функция
взяв ключ K и зашифрованный текст C , чтобы вернуть значение открытого текста P , такое, что
Например, алгоритм блочного шифрования может принимать на входе 128-битный блок открытого текста и выводить соответствующий 128-битный блок зашифрованного текста. Точное преобразование контролируется с помощью второго входа — секретного ключа. Дешифрование аналогично: в этом примере алгоритм дешифрования берет 128-битный блок зашифрованного текста вместе с секретным ключом и дает исходный 128-битный блок открытого текста. [4]
Для каждого ключа K E K является перестановкой ( биективным отображением) набора входных блоков. Каждая клавиша выбирает одну перестановку из множества возможных перестановок. [5]
Современный дизайн блочных шифров основан на концепции итеративного шифра произведения . В своей основополагающей публикации 1949 года «Коммуникационная теория секретных систем » Клод Шеннон проанализировал продуктовые шифры и предложил их как средство эффективного повышения безопасности путем объединения простых операций, таких как замены и перестановки . [6] Итерированные шифры продукта выполняют шифрование в несколько раундов , каждый из которых использует отдельный подключ, полученный из исходного ключа. Одна широко распространенная реализация таких шифров, названная сетью Фейстеля в честь Хорста Фейстеля, особенно реализована в шифре DES . [7] Многие другие реализации блочных шифров, такие как AES , классифицируются как сети замены-перестановки . [8]
Корень всех форматов криптографических блоков, используемых в стандарте безопасности данных индустрии платежных карт (PCI DSS) и стандартах Американского национального института стандартов (ANSI), лежит в блоке ключей Atalla (AKB), который был ключевым нововведением Atalla Box , первый аппаратный модуль безопасности (HSM). Он был разработан в 1972 году Мохамедом М. Аталлой , основателем корпорации Atalla (ныне Utimaco Atalla ), и выпущен в 1973 году. AKB представлял собой ключевой блок, который необходим для безопасного обмена симметричными ключами или ПИН-кодами с другими участниками банковской отрасли . . Этот безопасный обмен осуществляется с использованием формата AKB. [9] Atalla Box защищал более 90% всех действующих сетей банкоматов по состоянию на 1998 год, [10] и продукты Atalla по-прежнему обеспечивают безопасность большинства транзакций банкоматов в мире по состоянию на 2014 год. [11]
Публикация шифра DES Национальным бюро стандартов США (впоследствии Национальным институтом стандартов и технологий США , NIST) в 1977 году сыграла фундаментальную роль в общественном понимании конструкции современного блочного шифра. Это также повлияло на академическое развитие криптоаналитических атак . И дифференциальный , и линейный криптоанализ возникли в результате исследований по разработке DES. По состоянию на 2016 год [обновлять]существует целый ряд методов атак, против которых блочный шифр должен быть защищен, а также устойчив к атакам методом перебора .
Большинство алгоритмов блочного шифрования классифицируются как итерационные блочные шифры , что означает, что они преобразуют блоки открытого текста фиксированного размера в блоки зашифрованного текста идентичного размера посредством многократного применения обратимого преобразования, известного как функция раунда , причем каждая итерация называется раундом . . [12]
Обычно функция раунда R принимает в качестве второго входа разные ключи раунда K i , которые являются производными от исходного ключа :
где — открытый текст и зашифрованный текст, где r — количество раундов.
Часто в дополнение к этому используется отбеливание ключей . В начале и в конце данные модифицируются с помощью ключевого материала (часто с помощью XOR , но также используются простые арифметические операции, такие как сложение и вычитание ) :
Учитывая одну из стандартных схем построения итерированных блочных шифров, довольно легко построить криптографически безопасный блочный шифр, просто используя большое количество раундов. Однако это сделает шифр неэффективным. Таким образом, эффективность является важнейшим дополнительным критерием проектирования профессиональных шифров. Кроме того, хороший блочный шифр предназначен для предотвращения атак по побочным каналам, таких как предсказание ветвей и доступ к памяти в зависимости от ввода, которые могут привести к утечке секретных данных через состояние кэша или время выполнения. Кроме того, шифр должен быть кратким для небольших аппаратных и программных реализаций. Наконец, шифр должен быть легко анализируемым, чтобы можно было показать, до какого количества раундов шифр необходимо сократить, чтобы существующие криптографические атаки сработали, и, наоборот, чтобы можно было показать, что количество фактических раундов достаточно велик, чтобы защититься от них. [ нужна цитата ]
Один важный тип итерированного блочного шифра, известный как сеть замены-перестановки (SPN), принимает блок открытого текста и ключ в качестве входных данных и применяет несколько чередующихся раундов, состоящих из этапа замены, за которым следует этап перестановки , - для создания каждого блока зашифрованного текста. выход. [13] На этапе нелинейной замены ключевые биты смешиваются с битами открытого текста, что приводит Шеннона в замешательство . Затем на этапе линейной перестановки избыточность рассеивается, создавая диффузию . [14] [15]
Блок замены (S-box) заменяет небольшой блок входных битов другим блоком выходных битов. Эта замена должна быть взаимно однозначной , чтобы обеспечить обратимость (следовательно, расшифровку). Защищенный S-блок будет обладать свойством, заключающимся в том, что изменение одного входного бита приведет к изменению в среднем около половины выходных битов, демонстрируя так называемый лавинный эффект , то есть он обладает свойством, согласно которому каждый выходной бит будет зависеть от каждого входного бита. [16]
Блок перестановок (P-box) — это перестановка всех битов: он принимает выходные данные всех S-блоков одного раунда, переставляет биты и передает их в S-блоки следующего раунда. Хороший P-блок обладает тем свойством, что выходные биты любого S-блока распределяются по как можно большему количеству входов S-блока. [ нужна цитата ]
В каждом раунде ключ раунда (полученный из ключа с помощью некоторых простых операций, например, с использованием S-блоков и P-блоков) объединяется с помощью некоторой групповой операции, обычно XOR . [ нужна цитата ]
Дешифрование выполняется путем простого обратного процесса (с использованием инверсий S-блоков и P-блоков и применения раундовых ключей в обратном порядке). [17]
В шифре Фейстеля блок открытого текста, подлежащего шифрованию, разделяется на две половины одинакового размера. Функция округления применяется к одной половине с использованием подраздела, а затем выполняется операция XOR с другой половиной. Затем две половинки меняются местами. [18]
Пусть это функция раунда и пусть это дополнительные клавиши для раундов соответственно.
Тогда основная операция выглядит следующим образом: [18]
Разделите блок открытого текста на две равные части ( , )
Для каждого раунда вычислите
Тогда зашифрованный текст .
Дешифрование зашифрованного текста осуществляется путем вычисления
Затем снова открытый текст.
Одним из преимуществ модели Фейстеля по сравнению с сетью подстановки-перестановки является то, что функция округления не обязательно должна быть обратимой. [19]
Схема Лая-Месси предлагает свойства безопасности, аналогичные свойствам структуры Фейстеля . У него также есть то преимущество, что функция округления не обязательно должна быть обратимой. Еще одно сходство заключается в том, что он также разбивает входной блок на две равные части. Однако к разнице между ними применяется функция округления, а затем результат добавляется к обоим полублокам.
Пусть это функция раунда и функция полураунда, а также дополнительные клавиши для раундов соответственно.
Тогда основная операция выглядит следующим образом:
Разделите блок открытого текста на две равные части ( , )
Для каждого раунда вычислите
где и
Тогда зашифрованный текст .
Дешифрование зашифрованного текста осуществляется путем вычисления
где и
Затем снова открытый текст.
Многие современные блочные шифры и хэши представляют собой алгоритмы ARX — их функция округления включает только три операции: (A) модульное сложение, (R) вращение с фиксированной величиной вращения и (X) XOR . Примеры включают ChaCha20 , Speck , XXTEA и BLAKE . Многие авторы рисуют сеть ARX, своего рода диаграмму потока данных , чтобы проиллюстрировать такую круглую функцию. [20]
Эти ARX-операции популярны, поскольку они относительно быстры и дешевы в аппаратном и программном обеспечении, их реализация может быть сделана чрезвычайно простой, а также потому, что они выполняются в постоянном времени и, следовательно, невосприимчивы к атакам по времени . Техника ротационного криптоанализа пытается атаковать такие круговые функции.
Другие операции, часто используемые в блочных шифрах, включают зависящее от данных вращение, как в RC5 и RC6 , поле подстановки, реализованное в виде таблицы поиска , как в Data Encryption Standard и Advanced Encryption Standard , поле перестановки и умножение, как в IDEA .
Блочный шифр сам по себе позволяет шифровать только один блок данных с длиной блока шифра. Для сообщения переменной длины данные сначала должны быть разделены на отдельные блоки шифрования. В простейшем случае, известном как режим электронной кодовой книги (ECB), сообщение сначала разбивается на отдельные блоки размера блока шифра (возможно, с расширением последнего блока битами заполнения ), а затем каждый блок шифруется и расшифровывается независимо. Однако такой наивный метод, как правило, небезопасен, поскольку равные блоки открытого текста всегда будут генерировать равные блоки зашифрованного текста (для одного и того же ключа), поэтому шаблоны в сообщении открытого текста становятся очевидными в выводе зашифрованного текста. [21]
Чтобы преодолеть это ограничение, было разработано несколько так называемых режимов работы блочного шифрования [22] [23] и указано в национальных рекомендациях, таких как NIST 800-38A [24] и BSI TR-02102 [25], а также в международных стандартах, таких как ИСО/МЭК 10116 . [26] Общая концепция заключается в использовании рандомизации данных открытого текста на основе дополнительного входного значения, часто называемого вектором инициализации , для создания так называемого вероятностного шифрования . [27] В популярном режиме цепочки блоков шифра (CBC) для обеспечения безопасности шифрования вектор инициализации, передаваемый вместе с открытым текстовым сообщением, должен быть случайным или псевдослучайным значением, которое добавляется методом « исключающее или» к первому значению. блок открытого текста до его шифрования. Результирующий блок зашифрованного текста затем используется в качестве нового вектора инициализации для следующего блока открытого текста. В режиме обратной связи шифрования (CFB), который эмулирует самосинхронизирующийся потоковый шифр , вектор инициализации сначала шифруется, а затем добавляется в блок открытого текста. Режим выходной обратной связи (OFB) многократно шифрует вектор инициализации для создания потока ключей для эмуляции синхронного потокового шифра . Новый режим счетчика (CTR) аналогичным образом создает поток ключей, но имеет то преимущество, что в качестве векторов инициализации требуются только уникальные, а не (псевдо)случайные значения; необходимая случайность определяется внутренним образом путем использования вектора инициализации в качестве счетчика блоков и шифрования этого счетчика для каждого блока. [24]
С точки зрения теории безопасности , режимы работы должны обеспечивать так называемую семантическую безопасность . [28] Неофициально это означает, что, имея некоторый зашифрованный текст с неизвестным ключом, практически невозможно получить из зашифрованного текста какую-либо информацию (кроме длины сообщения) сверх той, которую можно было бы знать, не видя зашифрованный текст. Было показано, что все рассмотренные выше режимы, за исключением режима ECB, обеспечивают это свойство при так называемых атаках с выбранным открытым текстом .
Некоторые режимы, такие как режим CBC, работают только с полными блоками открытого текста. Простого расширения последнего блока сообщения нулевыми битами недостаточно, поскольку это не позволяет получателю легко различать сообщения, которые отличаются только количеством битов заполнения. Что еще более важно, такое простое решение приводит к очень эффективным атакам оракулов с заполнением . [29] Поэтому необходима подходящая схема заполнения , чтобы расширить последний блок открытого текста до размера блока шифра. Хотя многие популярные схемы, описанные в стандартах и литературе, оказались уязвимыми для атак оракула заполнения, [29] [30] решение, которое добавляет один бит, а затем расширяет последний блок нулевыми битами, стандартизируется как « Метод заполнения 2" в ISO/IEC 9797-1, [31] доказал свою безопасность против этих атак. [30]
Это свойство приводит к квадратичному ухудшению безопасности шифра, и его необходимо учитывать при выборе размера блока. Однако существует компромисс, поскольку большие размеры блоков могут привести к тому, что алгоритм станет неэффективным в работе. [32] Более ранние блочные шифры, такие как DES , обычно выбирали размер блока 64 бита, в то время как новые конструкции, такие как AES , поддерживают размеры блоков 128 бит или более, при этом некоторые шифры поддерживают диапазон различных размеров блоков. [33]
Линейный криптоанализ — это форма криптоанализа, основанная на поиске аффинных приближений к действию шифра . Линейный криптоанализ — одна из двух наиболее широко используемых атак на блочные шифры; другой — дифференциальный криптоанализ . [34]
Открытие приписывается Мицуру Мацуи , который первым применил эту технику к шифру FEAL (Мацуи и Ямагиши, 1992). [35]
Интегральный криптоанализ — это криптоаналитическая атака, которая особенно применима к блочным шифрам, основанным на сетях замены-перестановки. В отличие от дифференциального криптоанализа, который использует пары выбранных открытых текстов с фиксированной разницей XOR, интегральный криптоанализ использует наборы или даже мультинаборы выбранных открытых текстов, часть которых остается постоянной, а другая часть варьируется во всех возможностях. Например, атака может использовать 256 выбранных открытых текстов, у которых все бита, кроме 8, одинаковы, но все они различаются по этим 8 битам. Такой набор обязательно имеет сумму XOR, равную 0, а суммы XOR соответствующих наборов зашифрованных текстов предоставляют информацию о работе шифра. Этот контраст между различиями между парами текстов и суммами более крупных наборов текстов вдохновил на название «интегральный криптоанализ», заимствовав терминологию исчисления. [ нужна цитата ]
В дополнение к линейному и дифференциальному криптоанализу существует растущий каталог атак: усеченный дифференциальный криптоанализ , частичный дифференциальный криптоанализ, интегральный криптоанализ , который включает в себя квадратичные и интегральные атаки, атаки слайдом , атаки бумеранга , атаку XSL , невозможный дифференциальный криптоанализ и алгебраический атаки. Чтобы новая конструкция блочного шифра вызывала доверие, она должна продемонстрировать доказательства защиты от известных атак. [ нужна цитата ]
Когда в заданном режиме работы используется блочный шифр , результирующий алгоритм в идеале должен быть примерно таким же безопасным, как и сам блочный шифр. ECB (обсуждаемому выше) категорически не хватает этого свойства: независимо от того, насколько безопасен базовый блочный шифр, режим ECB можно легко атаковать. С другой стороны, можно доказать, что режим CBC безопасен, если предположить, что лежащий в его основе блочный шифр также безопасен. Однако обратите внимание, что подобные утверждения требуют формальных математических определений того, что означает «безопасность» алгоритма шифрования или блочного шифра. В этом разделе описываются два общих понятия о том, какими свойствами должен обладать блочный шифр. Каждый соответствует математической модели, которую можно использовать для доказательства свойств алгоритмов более высокого уровня, таких как CBC.
Этот общий подход к криптографии – доказательство безопасности алгоритмов более высокого уровня (таких как CBC) при явно сформулированных предположениях относительно их компонентов (таких как блочный шифр) – известен как доказуемая безопасность .
Неформально, блочный шифр в стандартной модели безопасен, если злоумышленник не может отличить блочный шифр (оснащенный случайным ключом) от случайной перестановки.
Точнее, пусть E — n -битный блочный шифр. Представим себе следующую игру:
Злоумышленник, которого мы можем смоделировать как алгоритм, называется противником . Функция f (которую злоумышленник смог запросить) называется оракулом .
Обратите внимание, что противник может тривиально обеспечить 50% шанс на победу, просто угадывая наугад (или даже, например, всегда угадывая «орёл»). Поэтому пусть P E ( A ) обозначает вероятность того, что противник A выиграет эту игру против E , и определим преимущество A как 2 ( P E ( A ) − 1/2). Отсюда следует, что если А угадает случайным образом, его преимущество будет равно 0; с другой стороны, если A всегда побеждает, то его преимущество равно 1. Блочный шифр E представляет собой псевдослучайную перестановку (PRP), если ни один противник не имеет преимущества, значительно большего, чем 0, с учетом заданных ограничений на q и время работы противника. . Если на шаге 2 выше у противников есть возможность изучить f −1 ( X ) вместо f ( X ) (но при этом они имеют лишь небольшие преимущества), то E является сильной PRP (SPRP). Противник является неадаптивным, если он выбирает все значения q для X до начала игры (то есть он не использует никакой информации, полученной из предыдущих запросов, для выбора каждого X в ходе игры).
Эти определения оказались полезными для анализа различных режимов работы. Например, можно определить аналогичную игру для измерения безопасности алгоритма шифрования на основе блочного шифра, а затем попытаться показать (посредством аргумента сокращения ), что вероятность победы противника в этой новой игре ненамного больше, чем P E ( A ) для некоторого A. (Сокращение обычно обеспечивает ограничения на q и время работы A .) Аналогично, если P E ( A ) мало для всех соответствующих A , то ни один злоумышленник не имеет значительной вероятности выиграть новую игру. Это формализует идею о том, что алгоритм более высокого уровня наследует безопасность блочного шифра.
На практике блочные шифры можно оценивать по множеству критериев. Общие факторы включают: [36] [37]
Люцифер обычно считается первым гражданским блочным шифром, разработанным в IBM в 1970-х годах на основе работы Хорста Фейстеля . Пересмотренная версия алгоритма была принята в качестве федерального стандарта обработки информации правительства США : FIPS PUB 46 Data Encryption Standard (DES). [39] Он был выбран Национальным бюро стандартов США (NBS) после публичного приглашения к участию и некоторых внутренних изменений со стороны NBS (и, возможно, АНБ ). DES был публично выпущен в 1976 году и широко использовался. [ нужна цитата ]
DES был разработан, среди прочего, для противодействия определенной криптоаналитической атаке, известной АНБ и вновь открытой IBM, хотя и неизвестной публично, пока она не была вновь открыта заново и опубликована Эли Бихамом и Ади Шамиром в конце 1980-х годов. Этот метод называется дифференциальным криптоанализом и остается одной из немногих универсальных атак на блочные шифры; линейный криптоанализ — еще один метод, который, возможно, был неизвестен даже АНБ до его публикации Мицуру Мацуи . DES послужил толчком к большому количеству других работ и публикаций в области криптографии и криптоанализа в открытом сообществе и вдохновил множество новых разработок шифров. [ нужна цитата ]
DES имеет размер блока 64 бита и размер ключа 56 бит. 64-битные блоки стали обычным явлением в конструкциях блочных шифров после DES. Длина ключа зависела от нескольких факторов, включая государственное регулирование. Многие наблюдатели [ кто? ] в 1970-х заметил, что 56-битная длина ключа, используемая для DES, слишком коротка. Со временем его неадекватность стала очевидна, особенно после того, как в 1998 году Electronic Frontier Foundation продемонстрировала специальную машину, предназначенную для взлома DES . Расширение DES, Triple DES , осуществляет тройное шифрование каждого блока либо с помощью двух независимых ключей (112-битный ключ и 80-битная безопасность), либо трех независимых ключей (168-битный ключ и 112-битная безопасность). Он получил широкое распространение в качестве замены. По состоянию на 2011 год версия с тремя ключами по-прежнему считается безопасной, хотя стандарты Национального института стандартов и технологий (NIST) больше не разрешают использование версии с двумя ключами в новых приложениях из-за ее 80-битного уровня безопасности. [40]
Международный алгоритм шифрования данных ( IDEA ) — это блочный шифр, разработанный Джеймсом Мэсси из ETH Zurich и Сюэцзя Лаем ; Впервые он был описан в 1991 году как предполагаемая замена DES.
IDEA оперирует 64-битными блоками с использованием 128-битного ключа и состоит из серии из восьми одинаковых преобразований (раунд ) и выходного преобразования (полураунд ) . Процессы шифрования и дешифрования аналогичны. IDEA обеспечивает большую часть своей безопасности за счет чередования операций из разных групп — модульного сложения и умножения, а также побитового исключающего или (XOR) , — которые в некотором смысле алгебраически «несовместимы».
Разработчики проанализировали IDEA, чтобы измерить его устойчивость к дифференциальному криптоанализу , и пришли к выводу, что при определенных предположениях он неуязвим. Об успешных линейных или алгебраических слабостях не сообщалось. По состоянию на 2012 год [update]лучшая атака, применимая ко всем ключам, может сломать полную 8,5-раундовую IDEA с использованием атаки с узкими бикликами примерно в четыре раза быстрее, чем грубая сила.
RC5 — это блочный шифр, разработанный Рональдом Ривестом в 1994 году, который, в отличие от многих других шифров, имеет переменный размер блока (32, 64 или 128 бит), размер ключа (от 0 до 2040 бит) и количество раундов (от 0 до 2040 бит). 255). Первоначально предложенный выбор параметров предусматривал размер блока 64 бита, 128-битный ключ и 12 раундов.
Ключевой особенностью RC5 является использование ротации в зависимости от данных; одной из целей RC5 было стимулировать изучение и оценку таких операций как криптографических примитивов. RC5 также состоит из ряда модульных дополнений и XOR. Общая структура алгоритма представляет собой сеть типа Фейстеля . Процедуры шифрования и дешифрования можно указать в нескольких строках кода. Расписание ключей, однако, более сложное: расширение ключа осуществляется с использованием, по сути, односторонней функции с двоичными разложениями как e , так и золотого сечения в качестве источников « ничего в запасе ». Дразнящая простота алгоритма вместе с новизной вращения, зависящего от данных, сделали RC5 привлекательным объектом изучения для криптоаналитиков.
12-раундовый RC5 (с 64-битными блоками) подвержен дифференциальной атаке с использованием 244 выбранных открытых текстов. [41] В качестве достаточной защиты предлагается 18–20 патронов.
Шифр Rijndael , разработанный бельгийскими криптографами Джоан Демен и Винсентом Рейменом , был одним из конкурирующих проектов, призванных заменить DES. Он выиграл пятилетний публичный конкурс на звание AES (расширенный стандарт шифрования).
Принятый NIST в 2001 году, AES имеет фиксированный размер блока 128 бит и размер ключа 128, 192 или 256 бит, тогда как Rijndael может быть указан с размерами блока и ключа, кратными 32 битам, но не менее 128 бит. биты. Размер блока составляет максимум 256 бит, но размер ключа не имеет теоретического максимума. AES работает с матрицей порядка байтов по столбцам 4 × 4, называемой состоянием (версии Rijndael с большим размером блока имеют дополнительные столбцы в состоянии).
Blowfish — это блочный шифр, разработанный в 1993 году Брюсом Шнайером и включенный в большое количество наборов шифров и продуктов шифрования. Blowfish имеет размер блока 64 бита и переменную длину ключа от 1 до 448 бит. [42] Это 16-раундовый шифр Фейстеля , в котором используются большие зависящие от ключа S-блоки . Примечательные особенности конструкции включают зависящие от ключа S-блоки и очень сложную схему клавиш .
Он был разработан как алгоритм общего назначения, задуманный как альтернатива устаревшему DES и свободный от проблем и ограничений, связанных с другими алгоритмами. На момент выпуска Blowfish многие другие разработки были запатентованы, обременены патентами или составляли коммерческую/правительственную тайну. Шнайер заявил, что «Blowfish не имеет патента и останется таковым во всех странах. Алгоритм настоящим размещен в общественном достоянии и может свободно использоваться кем угодно». То же самое относится и к Twofish , алгоритму-преемнику от Schneier.
М. Лисков, Р. Ривест и Д. Вагнер описали обобщенную версию блочных шифров, названную «настраиваемыми» блочными шифрами. [43] Настраиваемый блочный шифр принимает второй ввод, называемый настройкой, вместе с обычным вводом открытого текста или зашифрованного текста. Твик вместе с ключом выбирает перестановку, вычисленную шифром. Если изменение настроек достаточно легкое (по сравнению с обычно довольно дорогостоящей операцией настройки клавиш), то становятся возможными некоторые интересные новые режимы работы. В статье по теории шифрования диска описаны некоторые из этих режимов.
Блочные шифры традиционно работают на основе двоичного алфавита . То есть и входные, и выходные данные представляют собой двоичные строки, состоящие из n нулей и единиц. Однако в некоторых ситуациях может потребоваться иметь блочный шифр, работающий с другим алфавитом; например, шифрование 16-значных номеров кредитных карт таким образом, чтобы зашифрованный текст также представлял собой 16-значный номер, может облегчить добавление уровня шифрования в устаревшее программное обеспечение. Это пример шифрования с сохранением формата . В более общем смысле, шифрование с сохранением формата требует перестановки ключей на некотором конечном языке . Это делает схемы шифрования, сохраняющие формат, естественным обобщением (настраиваемых) блочных шифров. Напротив, традиционные схемы шифрования, такие как CBC, не являются перестановками, поскольку один и тот же открытый текст может зашифровать несколько разных зашифрованных текстов, даже при использовании фиксированного ключа.
Блочные шифры можно использовать для создания других криптографических примитивов, например приведенных ниже. Чтобы эти другие примитивы были криптографически безопасными, необходимо позаботиться о их правильном построении.
Точно так же, как блочные шифры могут использоваться для построения хеш-функций, например, SHA-1 и SHA-2 основаны на блочных шифрах, которые также используются независимо как SHACAL , хеш-функции могут использоваться для построения блочных шифров. Примерами таких блочных шифров являются BEAR и LION .
{{cite journal}}
: Требуется цитировать журнал |journal=
( помощь )