Введение
Тип шифра
В криптографии блочный шифр — это детерминированный алгоритм, работающий с группами битов фиксированной длины, называемыми блоками. Блочные шифры являются основными строительными блоками многих криптографических протоколов. Они широко используются при хранении и обмене данными, где эти данные защищаются и аутентифицируются посредством шифрования. Блочный шифр применяет к блокам неизменное преобразование. Даже безопасный блочный шифр подходит для шифрования только одного блока данных за раз с использованием фиксированного ключа. Для обеспечения конфиденциальности и подлинности разработано множество режимов работы, позволяющих многократно и безопасно использовать блочные шифры. Однако блочные шифры также могут выступать в качестве строительных блоков в других криптографических протоколах, таких как универсальные хеш-функции и генераторы псевдослучайных чисел.
История
Современный дизайн блочных шифров основан на концепции итерационного шифра произведения. В своей основополагающей публикации 1949 года «Теория коммуникаций секретных систем» Клод Шеннон проанализировал шифры произведения и предложил их как средство эффективного повышения безопасности путем комбинирования простых операций, таких как подстановки и перестановки. Итерационные шифры произведения выполняют шифрование в несколько раундов, каждый из которых использует различный подключ, полученный из исходного ключа. Одна из распространенных реализаций таких шифров, названная сетью Фейстеля в честь Хорста Фейстеля, в частности реализована в шифре DES. Многие другие реализации блочных шифров, такие как AES, классифицируются как сети подстановок-перестановок. Источник всех криптографических блочных форматов, используемых в стандартах безопасности данных индустрии платежных карт (PCI DSS) и Американского национального института стандартов (ANSI), лежит в ключевом блоке Atalla (AKB), который был ключевым новшеством Atalla Box, первого модуля аппаратной безопасности (HSM). Он был разработан в 1972 году Мохамедом М. Аталлой, основателем корпорации Atalla (ныне Utimaco Atalla), и выпущен в 1973 году. AKB представлял собой ключевой блок, необходимый для безопасного обмена симметричными ключами или PIN-кодами с другими участниками банковской отрасли. Этот безопасный обмен осуществляется с использованием формата AKB. Atalla Box защищал более 90% всех сетей банкоматов, функционирующих с 1998 года, а продукты Atalla по-прежнему обеспечивают безопасность большинства мировых транзакций банкоматов по состоянию на 2014 год. Публикация шифра DES Национальным бюро стандартов США (впоследствии Национальным институтом стандартов и технологий США, NIST) в 1977 году имела фундаментальное значение для общественного понимания современного дизайна блочных шифров. Она также повлияла на академическое развитие криптоаналитических атак. Дифференциальный и линейный криптоанализ возникли в результате исследований дизайна DES. Помимо устойчивости к атакам полным перебором, блочный шифр должен быть защищен от целого ряда техник атак.
Сети замещения и пермутации
Один важный тип итерационного блочного шифра, известный как сеть подстановки и перестановки (SPN), принимает блок открытого текста и ключ в качестве входных данных и применяет несколько чередующихся раундов, состоящих из стадии подстановки, за которой следует стадия перестановки, для получения каждого блока зашифрованного текста. Нелинейная стадия подстановки смешивает биты ключа с битами открытого текста, создавая замешательство по Шеннону. Линейная стадия перестановки затем рассеивает избыточность, создавая диффузию. Блок подстановки (S-блок) заменяет небольшой блок входных битов другим блоком выходных битов. Эта подстановка должна быть взаимно однозначной, чтобы обеспечить обратимость (и, следовательно, расшифровку). Безопасный S-блок будет обладать свойством, что изменение одного входного бита изменит примерно половину выходных битов в среднем, демонстрируя так называемый лавинный эффект – то есть, каждый выходной бит будет зависеть от каждого входного бита. Блок перестановки (P-блок) представляет собой перестановку всех битов: он принимает выходы всех S-блоков одного раунда, переставляет биты и передает их на входы S-блоков следующего раунда. Хороший P-блок обладает свойством, что выходные биты любого S-блока распределяются по максимально возможному числу входов S-блоков. На каждом раунде раундовый ключ (полученный из ключа с помощью некоторых простых операций, например, с использованием S-блоков и P-блоков) комбинируется с использованием некоторой групповой операции, обычно XOR. Расшифровка выполняется путем простого обращения процесса (используя обратные S-блоки и P-блоки и применяя раундовые ключи в обратном порядке).
ARX (addrotateXOR) (добавитьоборотXOR)
Многие современные блочные шифры и хеш-функции являются ARX-алгоритмами — их раундовая функция включает только три операции: (A) модульное сложение, (R) вращение с фиксированным количеством позиций и (X) XOR. Примеры включают ChaCha20, Speck, XXTEA и BLAKE. Многие авторы используют ARX-схему, своего рода диаграмму потока данных, для иллюстрации такой раундовой функции. Эти ARX-операции популярны, поскольку они относительно быстры и эффективны в аппаратном и программном обеспечении, их реализация может быть чрезвычайно простой, а также благодаря тому, что они выполняются за постоянное время и, следовательно, устойчивы к атакам по времени доступа. Техника ротационного криптоанализа направлена на взлом таких раундовых функций.
Другие операции
Другие операции, часто используемые в блочных шифрах, включают ротации, зависящие от данных, как в RC5 и RC6, таблицу подстановки, реализованную как таблица поиска, как в стандарте шифрования данных (DES) и расширенном стандарте шифрования (AES), поле перестановки и умножение, как в IDEA.
Способы работы
Блок-шифр сам по себе позволяет шифровать только один блок данных, равный длине блока шифра. Для сообщения переменной длины данные сначала необходимо разделить на отдельные шифровые блоки. В простейшем случае, известном как режим электронной кодовой книги (ECB), сообщение сначала разбивается на отдельные блоки размером блока шифра (возможно, с добавлением битов дополнения к последнему блоку), а затем каждый блок шифруется и расшифровывается независимо. Однако такой наивный метод обычно небезопасен, поскольку одинаковые блоки открытого текста всегда будут генерировать одинаковые блоки шифротекста (при одном и том же ключе), что делает закономерности в сообщении открытого текста очевидными в выходных данных шифротекста. Для преодоления этого ограничения было разработано несколько так называемых режимов работы блочных шифров и специфицировано в национальных рекомендациях, таких как NIST 800-38A и BSI TR 02102, а также в международных стандартах, таких как ISO/IEC 10116. Общая концепция заключается в использовании рандомизации данных открытого текста на основе дополнительного входного значения, часто называемого вектором инициализации, для создания так называемого вероятностного шифрования. В популярном режиме шифрования блочной цепочки (CBC) для обеспечения безопасности шифрования вектор инициализации, передаваемый вместе с сообщением открытого текста, должен быть случайным или псевдослучайным значением, которое добавляется посредством операции исключающего ИЛИ к первому блоку открытого текста перед его шифрованием. Полученный блок шифротекста затем используется в качестве нового вектора инициализации для следующего блока открытого текста. В режиме обратной связи по шифротексту (CFB), который эмулирует самосинхронизирующийся потоковый шифр, вектор инициализации сначала шифруется, а затем добавляется к блоку открытого текста. Режим обратной связи по выходным данным (OFB) многократно шифрует вектор инициализации для создания ключевого потока, эмулирующего синхронный потоковый шифр. Более новый счетчиковый режим (CTR) аналогичным образом создает ключевой поток, но имеет преимущество в том, что требует только уникальных, а не (псевдо)случайных значений в качестве векторов инициализации; необходимая случайность генерируется внутри, используя вектор инициализации в качестве счетчика блоков и шифруя этот счетчик для каждого блока. Поэтому необходима подходящая схема дополнения, чтобы расширить последний блок открытого текста до размера блока шифра. Хотя многие популярные схемы, описанные в стандартах и литературе, оказались уязвимыми к атакам типа "оракул дополнения", решение, которое добавляет один бит, а затем расширяет последний блок нулевыми битами, стандартизированное как "метод дополнения 2" в ISO/IEC 9797-1, было признано безопасным против этих атак. Более ранние блочные шифры, такие как DES, обычно использовали 64-битный размер блока, в то время как более новые конструкции, такие как AES, поддерживают размеры блоков 128 бит и более, при этом некоторые шифры поддерживают различные размеры блоков.
Линейный криптоанализ
Линейный криптоанализ — это вид криптоанализа, основанный на поиске аффинных аппроксимаций действия шифра. Линейный криптоанализ является одним из двух наиболее распространенных методов атак на блочные шифры; другим является дифференциальный криптоанализ. Открытие этого метода приписывается Мицуру Мацуи, который впервые применил его к шифру FEAL (Matsui and Yamagishi, 1992).
Комплексный криптоанализ
Интегральный криптоанализ — это криптоаналитическая атака, особенно эффективная в отношении блочных шифров, основанных на сетях подстановок и перестановок. В отличие от дифференциального криптоанализа, который использует пары выбранных открытых текстов с фиксированной разностью XOR, интегральный криптоанализ использует множества или даже мультимножества выбранных открытых текстов, в которых часть битов остается постоянной, а другая часть изменяется, принимая все возможные значения. Например, атака может использовать 256 выбранных открытых текстов, у которых все биты, кроме 8, одинаковы, но эти 8 битов различаются. Сумма XOR такого множества обязательно равна 0, а суммы XOR соответствующих множеств шифротекстов предоставляют информацию о работе шифра. Этот контраст между разностями между парами текстов и суммами больших наборов текстов послужил вдохновением для названия "интегральный криптоанализ", заимствуя терминологию из математического анализа.
Другие методы
В дополнение к линейному и дифференциальному криптоанализу, постоянно расширяется перечень атак, включающий усечённый дифференциальный криптоанализ, частичный дифференциальный криптоанализ, интегральный криптоанализ (охватывающий квадратичные и интегральные атаки), атаки скольжением, бумеранговые атаки, атаку XSL, криптоанализ на основе невозможных дифференциалов и алгебраические атаки. Чтобы новый блочный шифр мог считаться надежным, он должен демонстрировать устойчивость к известным методам атак.
Доказуемая безопасность
Когда блочный шифр используется в определенном режиме работы, результирующий алгоритм в идеале должен быть столь же безопасным, как и сам блочный шифр. Режим ECB (описанный выше) явно лишен этого свойства: независимо от надежности используемого блочного шифра, режим ECB легко подвергается атакам. С другой стороны, безопасность режима CBC может быть доказана при условии, что базовый блочный шифр также безопасен. Однако следует отметить, что для подобных утверждений необходимы формальные математические определения понятия "безопасность" для алгоритма шифрования или блочного шифра. В этом разделе описываются два распространенных представления о том, какими свойствами должен обладать блочный шифр. Каждое из них соответствует математической модели, которую можно использовать для доказательства свойств алгоритмов более высокого уровня, таких как CBC. Этот общий подход к криптографии – доказательство безопасности алгоритмов более высокого уровня (таких как CBC) на основе четко сформулированных предположений об их компонентах (таких как блочный шифр) – известен как доказуемая безопасность.
Стандартная модель
Неформально, блочный шифр считается безопасным в стандартной модели, если злоумышленник не может отличить блочный шифр (оснащенный случайным ключом) от случайной перестановки. Чтобы быть точнее, пусть E – это n-битный блочный шифр. Представим следующую игру: ведущий подбрасывает монету. Если выпадает орел, он выбирает случайный ключ K и определяет функцию f = EK. Если выпадает решка, он выбирает случайную перестановку на множестве n-битных строк и определяет функцию f = . Злоумышленник выбирает n-битную строку X, а ведущий сообщает ему значение f(X). Шаг 2 повторяется в общей сложности q раз. (Каждое из этих q взаимодействий является запросом.) Злоумышленник пытается угадать, какой стороной упала монета. Он выигрывает, если его предположение верно. Злоумышленник, которого можно представить как алгоритм, называется противником. Функция f (которую противник может запросить) называется оракулом. Заметьте, что противник может тривиально обеспечить 50% шанс на победу, просто угадывая случайным образом (или, например, всегда угадывая "орел"). Поэтому, пусть PE(A) обозначает вероятность того, что противник A выиграет эту игру против E, и определим преимущество A как 2(PE(A) – 1/2). Следовательно, если A угадывает случайным образом, его преимущество будет равно 0; с другой стороны, если A всегда выигрывает, его преимущество будет равно 1. Блочный шифр E является псевдослучайной перестановкой (PRP), если ни один противник не имеет преимущества, значительно превышающего 0, при заданных ограничениях на q и время работы противника. Если на шаге 2 противникам предоставляется возможность узнать f⁻¹(X) вместо f(X) (но при этом они все равно имеют лишь небольшое преимущество), то E является сильной PRP (SPRP). Противник является неадаптивным, если он выбирает все q значений для X до начала игры (то есть, не использует информацию, полученную из предыдущих запросов, для выбора каждого X по ходу игры). Эти определения оказались полезными для анализа различных режимов работы. Например, можно определить аналогичную игру для измерения безопасности алгоритма блочного шифрования, а затем попытаться показать (с помощью аргумента сведения), что вероятность победы противника в этой новой игре не намного больше, чем PE(A) для некоторого A. (Сведение обычно накладывает ограничения на q и время работы A.) Эквивалентно, если PE(A) мало для всех релевантных A, то ни один злоумышленник не имеет значительной вероятности выиграть новую игру. Это формализует идею о том, что алгоритм более высокого уровня наследует безопасность блочного шифра.
The person running the game flips a coin. If the coin lands on heads, he chooses a random key K and defines the function f = EK. If the coin lands on tails, he chooses a random permutation on the set of n bit strings and defines the function f = The attacker chooses an n bit string X, and the person running the game tells him the value of f(X). Step 2 is repeated a total of q times. (Each of these q interactions is a query.) The attacker guesses how the coin landed. He wins if his guess is correct. The attacker, which we can model as an algorithm, is called an adversary. The function f (which the adversary was able to query) is called an oracle. Note that an adversary can trivially ensure a 50% chance of winning simply by guessing at random (or even by, for example, always guessing "heads"). Therefore, let PE(A) denote the probability that adversary A wins this game against E, and define the advantage of A as 2(PE(A) − 1/2). It follows that if A guesses randomly, its advantage will be 0; on the other hand, if A always wins, then its advantage is 1. The block cipher E is a pseudo random permutation (PRP) if no adversary has an advantage significantly greater than 0, given specified restrictions on q and the adversary's running time. If in Step 2 above adversaries have the option of learning f−1(X) instead of f(X) (but still have only small advantages) then E is a strong PRP (SPRP). An adversary is non adaptive if it chooses all q values for X before the game begins (that is, it does not use any information gleaned from previous queries to choose each X as it goes). These definitions have proven useful for analyzing various modes of operation. For example, one can define a similar game for measuring the security of a block cipher based encryption algorithm, and then try to show (through a reduction argument) that the probability of an adversary winning this new game is not much more than PE(A) for some A. (The reduction typically provides limits on q and the running time of A.) Equivalently, if PE(A) is small for all relevant A, then no attacker has a significant probability of winning the new game. This formalizes the idea that the higher level algorithm inherits the block cipher's security.
Практическая оценка
На практике блок-шифры могут оцениваться по множеству критериев. Важные параметры включают: размер ключа и размер блока, которые определяют верхний предел безопасности шифра. Оценочный уровень безопасности, основанный на уверенности в надежности конструкции блок-шифра, подтвержденной устойчивостью к криптоанализу с течением времени, математической обоснованности конструкции и наличии практических или сертифицированных атак. Сложность шифра и его пригодность для реализации в аппаратном или программном обеспечении. В аппаратных реализациях сложность может измеряться количеством логических элементов или энергопотреблением – важными параметрами для устройств с ограниченными ресурсами. Производительность шифра, определяемая пропускной способностью на различных платформах, а также требования к памяти. Стоимость шифра, связанная с лицензионными требованиями, обусловленными правами интеллектуальной собственности. Гибкость шифра, включая его способность поддерживать различные размеры ключей и длины блоков.
Key parameters, such as its key size and block size, both of which provide an upper bound on the security of the cipher. The estimated security level, which is based on the confidence gained in the block cipher design after it has largely withstood major efforts in cryptanalysis over time, the design's mathematical soundness, and the existence of practical or certificational attacks. The cipher's complexity and its suitability for implementation in hardware or software. Hardware implementations may measure the complexity in terms of gate count or energy consumption, which are important parameters for resource constrained devices. The cipher's performance in terms of processing throughput on various platforms, including its memory requirements. The cost of the cipher refers to licensing requirements that may apply due to intellectual property rights. The flexibility of the cipher includes its ability to support multiple key sizes and block lengths.
Люцифер / ДЭС
Lucifer обычно считается первым гражданским блочным шифром, разработанным в IBM в 1970-х годах на основе работы Хорста Файстеля. Пересмотренная версия алгоритма была принята в качестве федерального стандарта обработки информации правительства США: FIPS PUB 46 Data Encryption Standard (DES). Он был выбран Национальным бюро стандартов США (NBS) после открытого приглашения к представлению предложений и некоторых внутренних изменений, внесенных NBS (и, возможно, NSA). 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-битного уровня безопасности.
Идея
Международный алгоритм шифрования данных (IDEA) — блочный шифр, разработанный Джеймсом Масси из ETH Zurich и Сюэцзя Лай; он был впервые описан в 1991 году как предполагаемая замена DES. IDEA работает с 64-битными блоками, используя 128-битный ключ, и состоит из серии из восьми идентичных преобразований (раундов) и выходного преобразования (полураунда). Процессы шифрования и дешифрования схожи. IDEA обеспечивает значительную безопасность благодаря чередованию операций из различных групп – модульного сложения и умножения, а также побитового исключающего ИЛИ (XOR) – которые в определенном смысле алгебраически "несовместимы". Разработчики проанализировали IDEA для оценки его устойчивости к дифференциальному криптоанализу и пришли к выводу, что он устойчив при определенных предположениях. Успешных линейных или алгебраических уязвимостей обнаружено не было. По состоянию на 2012 год, лучшая атака, применимая ко всем ключам, может взломать полный 8,5 раундов IDEA с использованием атаки на узких бикликах примерно в четыре раза быстрее, чем полный перебор.
РК5
RC5 — это блочный шифр, разработанный Рональдом Ривестом в 1994 году, который, в отличие от многих других шифров, имеет переменный размер блока (32, 64 или 128 бит), размер ключа (от 0 до 2040 бит) и количество раундов (от 0 до 255). Изначально предлагаемый выбор параметров включал размер блока 64 бита, 128-битный ключ и 12 раундов. Ключевой особенностью RC5 является использование вращений, зависящих от данных; одной из целей разработки RC5 было стимулирование изучения и оценки подобных операций в качестве криптографических примитивов. RC5 также состоит из ряда модульных сложений и операций XOR. Общая структура алгоритма напоминает сеть Фейстеля. Процедуры шифрования и расшифровки могут быть реализованы в нескольких строках кода. Однако схема генерации ключей более сложна, расширяя ключ с помощью, по сути, односторонней функции, использующей двоичные представления числа *e* и золотого сечения в качестве источников "чисел, взятых из ниоткуда". Заманчивая простота алгоритма в сочетании с новизной вращений, зависящих от данных, сделала RC5 привлекательным объектом для изучения криптоаналитиков. RC5 с 12 раундами (и блоками по 64 бита) уязвим к дифференциальной атаке, использующей 2<sup>44</sup> выбранных открытых текстов. Для обеспечения достаточной защиты рекомендуется использовать 18–20 раундов.
Rijndael / AES
Шифр Рийндаль, разработанный бельгийскими криптографами Джоан Деймен и Винсентом Рийменом, был одним из претендентов на замену DES. Он победил в пятилетнем открытом конкурсе и стал AES (Advanced Encryption Standard). Принятый NIST в 2001 году, AES имеет фиксированный размер блока 128 бит и размер ключа 128, 192 или 256 бит, в то время как для Rijndael можно задавать размеры блока и ключа, кратные 32 битам, но не менее 128 бит. Максимальный размер блока составляет 256 бит, а для размера ключа теоретического предела не существует. AES оперирует с матрицей байтов размером 4x4, организованной в столбцовом порядке, которая называется состоянием (версии Rijndael с большим размером блока имеют дополнительные столбцы в состоянии).
Рыба-дуб
Blowfish — это блочный шифр, разработанный Брюсом Шнайером в 1993 году и включенный в большое количество наборов шифров и продуктов для шифрования. Blowfish имеет размер блока 64 бита и переменную длину ключа от 1 до 448 бит. Это 16-раундовый шифр Фейстеля, использующий большие S-блоки, зависящие от ключа. Заметными особенностями конструкции являются S-блоки, зависящие от ключа, и высокосложная схема формирования ключа. Он был разработан как алгоритм общего назначения, предназначенный в качестве альтернативы устаревающему DES и свободный от проблем и ограничений, связанных с другими алгоритмами. К моменту выпуска Blowfish многие другие разработки были проприетарными, обременены патентами или являлись коммерческой тайной/государственной тайной. Шнайер заявил: «Blowfish не запатентован и останется таковым во всех странах. Алгоритм переходит в общественное достояние и может свободно использоваться кем угодно». То же самое относится и к Twofish — алгоритму-преемнику от Шнайера.
Улаживаемые блокшифры
М. Лисков, Р. Ривест и Д. Вагнер описали обобщенную версию блочных шифров, называемую "изменяемыми" блочными шифрами. Изменяемый блочный шифр принимает второй вход, называемый "твиком", вместе с обычным входом в виде открытого или зашифрованного текста. Твик, вместе с ключом, определяет перестановку, вычисляемую шифром. Если изменение твика достаточно эффективно (по сравнению с обычно довольно затратной операцией установки ключа), то становятся возможными некоторые интересные новые режимы работы. В статье о теории шифрования дисков описываются некоторые из этих режимов.
Шифрование с сохранением формата
Блок-шифры традиционно работают с двоичным алфавитом. То есть, и входные, и выходные данные являются двоичными строками, состоящими из n нулей и единиц. Однако в некоторых случаях может потребоваться блок-шифр, работающий с другим алфавитом; например, шифрование 16-значных номеров кредитных карт таким образом, чтобы шифротекст также был 16-значным числом, может упростить добавление уровня шифрования к устаревшему программному обеспечению. Это пример шифрования с сохранением формата. В более общем смысле, шифрование с сохранением формата требует ключевую перестановку на некотором конечном языке. Это делает схемы шифрования с сохранением формата естественным обобщением (настраиваемых) блочных шифров. В отличие от этого, традиционные схемы шифрования, такие как CBC, не являются перестановками, поскольку один и тот же открытый текст может быть зашифрован в несколько различных шифротекстов, даже при использовании фиксированного ключа.
Связь с другими криптографическими примитивами
Блок-шифры могут использоваться для создания других криптографических примитивов, таких как следующие. Для обеспечения криптографической безопасности этих примитивов необходимо тщательно продумывать их реализацию. Потоковые шифры могут быть построены на основе блок-шифров. Режимы OFB и CTR – это режимы работы, преобразующие блок-шифр в потоковый шифр. Криптографические хеш-функции также могут быть построены с использованием блок-шифров. Подробное описание нескольких таких методов приведено в разделе, посвященном функциям одностороннего сжатия. Эти методы похожи на режимы работы блок-шифров, обычно используемые для шифрования. Криптографически стойкие генераторы псевдослучайных чисел (CSPRNG) могут быть построены на основе блок-шифров. С помощью блок-шифров можно создавать безопасные псевдослучайные перестановки конечных множеств произвольного размера; подробности см. в разделе «Шифрование с сохранением формата». Для построения блок-шифра, например, шифра Even–Mansour с одним ключом (возможно, самого простого из доказуемо безопасных блок-шифров), достаточно общеизвестной непредсказуемой перестановки в сочетании с отбеливанием ключа. Коды аутентификации сообщений (MAC) часто строятся на основе блок-шифров. Примеры таких MAC – CBC MAC, OMAC и PMAC. Аутентифицированное шифрование также строится на основе блок-шифров, обеспечивая одновременно конфиденциальность и аутентичность, то есть шифрование и вычисление MAC. Примеры режимов аутентифицированного шифрования – CCM, EAX, GCM и OCB. Так же, как блок-шифры могут использоваться для построения хеш-функций (например, SHA-1 и SHA-2 основаны на блок-шифрах, которые также используются независимо, как SHACAL), хеш-функции могут использоваться для построения блок-шифров. Примеры таких блок-шифров – BEAR и LION.