Блочный шифр

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Общая схема работы блочного шифра

Блочный шифр — разновидность симметричного шифра [1] , оперирующего группами бит фиксированной длины — блоками, характерный размер которых меняется в пределах 64 — 256 бит. Если исходный текст (или его остаток) меньше размера блока, перед шифрованием его дополняют. Фактически, блочный шифр представляет собой подстановку на алфавите блоков, которая, как следствие, может быть моно- или полиалфавитной. [2] Блочный шифр является важной компонентой многих криптографических протоколов и широко используется для защиты данных, передаваемых по сети.

В отличие от шифроблокнота, где длина ключа равна длине сообщения, блочный шифр способен зашифровать одним ключом одно или несколько сообщений, суммарной длиной больше, чем длина ключа. Передача малого по сравнению с сообщением ключа по зашифрованному каналу — задача значительно более простая и быстрая, чем передача самого сообщения или ключа такой же длины, что делает возможным его повседневное использование. Однако, при этом шифр перестает быть невзламываемым. От поточных шифров работа блочного отличается обработкой бит группами, а не потоком. При этом блочные шифры надёжней, но медленее поточных. [3] Симметричные системы обладают преимуществом над асимметричными в скорости шифрования, что позволяет им оставаться актуальными, несмотря на более слабый механизм передачи ключа (получатель должен знать секретный ключ, который необходимо передать по уже налаженному зашифрованному каналу. В то же время, в асимметричных шифрах открытый ключ, необходимый для шифрования, могут знать все, и нет необходимости в передачи ключа шифрования).

К достоинствам блочных шифров относят сходство процедур шифрования и расшифрования, которые, как правило, отличаются лишь порядком действий. Это упрощает создание устройств шифрования, так как позволяет использовать одни и те же блоки в цепях шифрования и расшифрования. Гибкость блочных шифров позволяет использовать их для построения других криптографических примитивов: генератора псевдослучайной последовательности, поточного шифра, имитовставки и криптографических хэшей. [4]

История[править | править вики-текст]

Современная модель блочных шифров основана на идее итеративных блочных шифров, предложенной в публикации 1949 года Клода Шеннона «Теория связи в секретных системах». Данная концепция позволяет достичь определенного уровня безопасности комбинированием простых в исполнении операций подстановки (англ. substitution) и перестановки (англ. permutation). [5]

До 1970-х гг. криптография была уделом военных и разведчиков, в открытой печати практически не существовало каких-либо публикаций. [6] Первопроходцем явился шифр «Люцифер», разработанный в 1970 году компанией IBM и основанный на SP-сети. Идея шифра заключалась в использовании комбинаций простых, а следовательно, быстро вычисляемых как аппаратно, так и программно операций. Однако, схема получилась неудачной: она была слишком громоздкой, что привело к низкой скорости шифрования в программной реализации (около 8 кбайт/с) и в аппаратной (97 кбайт/с). Стали появляться опасения, связанные со стойкостью данного алгоритма. Тем не менее, принципы, выработанные при построении «Люцифера», (SP-сеть и сеть Фейстеля, названная так в честь одного из разработчиков) легли в основу конструирования блочных шифров.

В 1973 году Национальный институт стандартов и технологий (англ. NIST) объявил конкурс с целью разработать стандарт шифрования данных, победителем которого в 1974 году стал шифр DES (Data Encryption Standard), являющийся, фактически, улучшенной версией «Люцифер». Публикация шифра в 1977 году была основополагающей в общественном понимании современной модели блочного шифра. В то же время, она дала начало развитию криптоаналитических атак. После одобрения Американским национальным институтом стандартов в 1981 году, алгоритм долгое время использовался в гражданском секторе и даже вышел за пределы США. Однако шифр имел существенный недостаток — маленькую длину ключа, породившую множество связанных с параллельным перебором атак, и приближающаяся возможность её реализации. Отсутствие достойной защиты от атак шифра DES породило множество алгоритмов, являющихся как более сложной версией DES (3DES), так и совершенно иных схем (NewDES, FEAL, IDEA).

В 1997 году стал годом начала программы по принятию AES (Advanced Encryption Standard). Конкурс состоял из трех этапов, окончательным победителем которого стал алгоритм RIJNDAEL, разработанный бельгийцами J. Daemen и V. Rijmen. AES, как и его предшественники, также построен с использованием SP-сети.

На сегодняшний день существует множество атак, которым вынужден противостоять блочный шифр, начиная с атаки перебором, как самой тривиальной. [7]

Определение[править | править вики-текст]

Блочный шифр состоит из двух парных алгоритмов: шифрования и расшифрования. [8] Оба алгоритма можно представить в виде функций. Функция шифрования E (англ. encryption — шифрование) на вход получает блок данных M (англ. message — сообщение) размером n бит и ключ K (англ. key — ключ) размером k бит и на выходе отдает блок шифротекста C (англ. cipher — шифр) размером n бит:

E_K(M) := E(K,M) : \{0,1\}^k \times \{0,1\}^n \to \{0,1\}^n.

Для любого ключа K, EK является биективной функцией (перестановкой) на множестве n-битных блоков. Функция расшифрования D (англ. decryption — расшифрование) на вход получает шифр C, ключ K и на выходе отдает M:

D_K(C) := D(K,C) : \{0,1\}^k \times \{0,1\}^n \to \{0,1\}^n,

являясь, при этом, обратной к функции шифрования:

D = E^{-1},
\forall K: D_K(E_K(M)) = M и
E_K(D_K(C)) = C.

Заметим, что ключ, необходимый для шифрования и дешифрования, один и тот же — следствие симметричности блочного шифра.

Построение блочного шифра[править | править вики-текст]

"Проектировать блочный шифр нетрудно. Трудность состоит в проектировании блочного шифра, который не только безопасен, но также может быть легко описан и просто реализован."

Брюс Шнайер, криптограф и специалист по компьютерной безопасности.

Первопроходцами в разработке блочных шифров стали сотрудники компании IBM при работе над шифром «Lucifer». [9] Они спроектировали первые основы, которые стали использоваться при разработке последующих схем. При этом следует учитывать, что новый шифр должен быть не только стойким ко всем известным видам атак, но и достаточно прост в реализации.

Итеративные блочные шифры[править | править вики-текст]

Большинство блочных шифров являются итеративными. Это означает, что данный шифр преобразует блоки открытого текста (англ. plaintext) постоянной длины в блоки шифротекста (англ. ciphertext) той же длины посредством циклически повторяющихся обратимых функций, известных как раундовые функциии. [10] Это связано с простотой и скоростью исполнения как программных, так и аппаратных реализаций. Обычно раундовые функции используют различные ключи, полученные из первоначального ключа:

C_i = R_{K_i}(C_{i-1}),

где Ci — значение блока после i-го раунда, C0 = M — открытый текст, Ki — ключ, используемый в i-м раунде и полученный из первоначального ключа K.

Размер блока n — это фиксированный параметр блочного шифра, обычно равный 64 или 128 битам, хотя некоторые шифры допускают несколько различных значений. Длина 64 бита была приемлема до середины 90-х годов, затем использовалась длина 128 бит, что примерно соответствует размеру машинного слова и позволяет эффективную реализацию на большинстве распространённых вычислительных платформ. Различные схемы шифрования позволяют зашифровывать открытый текст произвольной длины. Каждая имеет определенные характеристики: вероятность ошибки, простота доступа, уязвимость к атакам. По состоянию на 2006 год 80-битный ключ способен был предотвратить атаку грубой силой.

SP-сети[править | править вики-текст]

Пример SP-сети с 3 раундами.

SP-сеть (англ. substitution-permutation network, SPN) — один из важнейших типов итеративных блочных шифров. Шифр на основе SP-сети получает на вход блок и ключ и совершает несколько чередующихся раундов, состоящих из чередующихся стадий подстановки (англ. substitution stage) и стадий перестановки (англ. permutation stage). [11] Для достижения безопасности достаточно одного S-блока, но такой блок будет требовать большого объёма памяти. Поэтому используются маленькие S-блоки, смешанные с P-блоками. [6] Нелинейная стадия подстановки перемешивает биты ключа с битами открытого текста, создавая конфузию Шеннона. Линейная стадия перестановки распределяет избыточность по всей структуре данных, порождая диффузию. [12][13]

S-блок (англ. substitution box or S-box) замещает маленький блок входных бит на другой блок выходных бит. Эта замена должна быть взаимно однозначной, чтобы гарантировать обратимость. Назначение S-блока заключается в нелинейном преобразовании, что препятствует проведению линейного криптоанализа. Одним из свойств S-блока является лавинный эффект, т.е. изменение одного бита на входе приводит к изменению всех бит на выходе. [14]

P-блок (англ. permutation box or P-box) — перестановка всех бит: блок получает на вход вывод S-блока, меняет местами все биты и подает результат S-блоку следующего раунда. Важным качеством P-блока является возможность распределить вывод одного S-блока между входами как можно больших S-блоков.

Для каждого раунда используется свой, получаемый из первоначального, ключ. Подобный ключ называется раундовым. Он может быть получен делением первоначально ключа на равные части, так и каким-либо преобразование всего ключа.

Сеть Фейстеля[править | править вики-текст]

Сеть Фейстеля — это общий метод преобразования произвольной функции F в перестановку на множестве блоков. [15] Она состоит из циклически повторяющихся ячеек — раундов. Внутри каждого раунда блок открытого текста разделяется на две равные части. Раундовая функция

F = F(K_i,R_{i-1})
Шифрование в ячейке Фейстеля

берет одну половину (на рис. правую), преобразует её с использованием ключа Ki и объединяет результат с второй половиной посредством операции исключающее ИЛИ (XOR). Этот ключ задаётся первоначальным ключом K и различен для каждого раунда. Далее половинки меняются местами (иначе будет преобразовываться только одна половина блока) и подаются на следующий раунд. Преобразование сети Фейстеля является обратимой операцией.

Для функции F существуют определенные требования:

  • её работа должна приводить к лавинному эффекту
  • должна быть нелинейна по отношению к операции XOR

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

Подобная конструкция обладает ощутимым преимуществом: процедуры шифрования/расшифрования совпадают, только производные от первоначального ключи используются в обратном порядке. Это значит, что одни и те же блоки могут использоваться как для шифрования, так и для расшифрования, что, безусловно, упрощает реализацию шифра. Недостаток схемы заключается в том, что в каждом раунде обрабатывается только половина блока, что приводит к необходимости увеличивать число раундов. [2]

Формирование группы[править | править вики-текст]

При построении алгоритма учитывают формирование группы, в которой элементами являются множество блоков шифротекста при всех ключах, а групповой операцией — композиция раундов шифрования. Если данный шифр образует практически полную группу, не имеет смысла применять кратное шифрование. [6]

Режимы работы блочного шифра[править | править вики-текст]

оригинальное изображение
криптограмма в режиме ECB
псевдослучайная последовательность

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

Шифрование независимыми блоками[править | править вики-текст]

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

Шифрование, зависящее от предыдущих блоков[править | править вики-текст]

Шифрование в режиме сцепления блоков шифротекста

Чтобы преодолеть эти проблемы, были разработаны иные режимы работы, [16][17] установленные международным стандартом ISO/IEC 10116 [18] и определеные национальными рекомендациями, такие, как NIST 800-38A [19] и BSI TR-02102 [20] Общая идея заключается в использовании случайного числа, часто называемого вектором инициализации (англ. initialization vector, IV). В популярном режиме сцепления блоков (англ. Cipher Block Chaining, CBC) для безопасности IV должен быть случайным или псевдослучайным. После его определения, он складывается при помощи операции исключающее ИЛИ с первым блоком открытого текста. Следующим шагом шифруется результат и получается первый шифроблок, который используем как IV для второго блока и так далее. В режиме обратной связи по шифротексту (англ. Cipher Feedback, CFB) непосредственному шифрованию подвергается IV, после чего складывается по модулю два (XOR, исключающее ИЛИ) с первым блоком. Полученный шифроблок используется как IV для дальнейшего шифрования. У режима нет особых преимуществ по сравнению с остальными. В отличие от предыдущих режимов, режим обратной связи вывода (англ. Output Feedback, OFB) циклически шифрует IV, формируя поток ключей, складывающихся с блоками сообщения. Преимуществом режима является полное совпадение операций шифрования и расшифрования. Режим счетчика (англ. Counter, CTR) похож на OFB, но позволяет вести параллельное вычисление шифра: IV объединяется с номером блока без единицы и результат шифруется. Полученный блок складывается с соответствующим блоком сообщения.

Следует помнить, что вектор инициализации должен быть разным в разных сеансах. В противном случае приходим к проблеме режима ECB. Можно использовать случайное число, но для этого требуется достаточно хороший генератор случайных чисел. Поэтому обычно задают некоторое число — метку, известную обеим сторонам (например, номер сеанса) и называемое nonce (англ. Number Used Once — однократно используемое число). Секретность этого числа обычно не требуется. Далее IV — результат шифрования nonce. В случае режима счетчика, nonce используется для формирования раундого ключа Ki [3]:

K_i = E_K(nonce||i-1),  i = 1,..,n , где i — номер раунда.

Дополнение до целого блока[править | править вики-текст]

Как уже упоминалось выше, в случае, если длина самого сообщения, либо последнего блока, меньше длины блока, то он нуждается в дополнении (англ. padding). Простое дополнение нулевыми битами не решает проблемы, так как получатель не сможет найти конец полезных данных. К тому же, такой вариант приводит к атакам Оракула дополнения (англ. padding oracle attack). [21]

Поэтому на практике применимо решение, стандартизованное как «Метод дополнения 2» (англ. padding method 2) в ISO/IEC 9797-1, добавляющее единичный бит в конец сообщения и заполняющее оставшееся место нулями. [22] В этом случае была доказана стойкость к подобным атакам. [23]

Криптоанализ[править | править вики-текст]

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

Атака полным перебором[править | править вики-текст]

англ. Вrute force attack. Благодаря такой характеристике блочного шифра, как обратимость функции, его вывод становится отличимым от истинной случайной последовательности вследствие парадокса дней рождения. Эта особенность приводит к снижению безопасности шифра и необходимости брать во внимание размер блока. Таким образом, существует компромисс между большими, снижающими производительность шифра, и ненадежными маленькими блоками. [24]

Не менее важную роль играет размер ключа. Ранний шифр DES характеризовался размером ключа в 56 бит, что, как показала практика, явно не достаточно для надежной пересылки данных. Именно атакой полным перебором впервые был вскрыт DES. Более современные алгоритмы, такие как AES и ГОСТ 28147-89 имеют размер ключа в 128 бит и 256 бит соответственно, что делает бессмысленным подобные атаки. [25]

Дифференциальный криптоанализ[править | править вики-текст]

Рис.1 Схема взлома дифференциальным криптоанализом

англ. Differential cryptanalysis. В 1990 году Эли Бихам (Eli Biham) и Ади Шамир (Adi Shamir) определили идею дифференциального криптоанализа. С помощью этого метода удалось взломать шифр DES. Подобной атаке подвержены шифры с постоянным S-блоком и шифрование в режиме кодовой электронной книги. Данный метод работает с парами шифротекстов, для которых известно различие соответствующих открытых текстов, и рассматривает эволюцию этих различий. Наряду с линейным является самым распространенным при атаках на блочный шифр. [6]

Линейный криптоанализ[править | править вики-текст]

англ. Linear cryptanalysis. Линейный криптоанализ — метод вскрытия шифра, основанный на поиске аффинных приближений для работы алгоритма. Разработан японским математиком Мицуру Мацуи (Mitsuru Matsui), первым применивший эту технику для атаки на DES и FEAL. Метод основан на применении операции исключающему ИЛИ (XOR) к блокам открытого текста, шифротекста и к их результату, что позволяет получить результат применения XOR для битов ключа. Структура S-блока оказывает сильное влияние на стойкость к линейным атакам. Когда метод был разработан, оказалось, что DES имеет слабость к нему, так как никто не предполагал подобных атак при его разработке. [6]

Интегральный криптоанализ[править | править вики-текст]

англ. Intergal cryptanalysis. Интегральный криптоанализ — вид атак, особенно применимый к блочный шифрам, построенным на SP-сети. В отличие от дифференциального криптоанализа, использующего пару выбранного открытого текста с фиксированным разницей, вычисленной при помощи операции XOR, интегральный криптоанализ использует множества открытых текстов, в которых одни части удерживаются постоянными, в то время как другие варьируются среди всевозможных значений. Подобное множество с необходимостью имеет сумму по модулю 2 (XOR), равной 0, в то время, как соответствующая сумма шифротекста содержит информацию об операциях шифра.

Другие типы атак[править | править вики-текст]

Помимо описанных выше, существуют другие типы атак: усеченный дифференциальный криптоанализ(англ. truncated differential cryptanalysis), атака скольжением, или сдвигом (англ. slide attack), атака бумерангом (англ. boomerang attack), XSL-атака (англ. eXtended Sparse Linearization, алгебраическая атака), невозможный дифференциальный криптоанализ (англ. impossible differential cryptanalysis) и так далее. Любой новый шифр должен продемонстрировать стойкость ко всем известным видам атак.

Практическая оценка[править | править вики-текст]

На практике блочный шифр оценивают по множеству критериев [26][27]:

  • Параметры ключа: его длина и длина блока, обеспечивающие верхнюю границу безопасности шифра.
  • Оценка уровня безопасности, основанная на достигнутой в блочном шифре конфиденциальности и полученная после того, как шифр выдержит значительное число попыток криптоанализа на протяжении времени; стойкость математической модели и существования практических способов атак.
  • Сложность шифра и пригодности к программной или аппаратной реализации. В случае аппаратной реализации сложность шифра может быть оценена в числе использованных вентилей или энергопотреблении. Эти параметры важны для устройств, ограниченных в ресурсах.
  • Производительность шифра, выраженная в пропускной способности шифра на различных платформах и потребляемой памяти.
  • Стоимость шифра, которая может быть обусловлена лицензионными требованиями в соответствии с интеллектуальной собственностью.
  • Гибкость шифра, связанная со способностью поддерживать множество длин ключей и блоков.

Национальные стандарты шифрования[править | править вики-текст]

Lucifer / DES[править | править вики-текст]

Шифр Lucifer в целом рассматривается в качестве первого блочного шифра. Алгоритм разработан компанией IBM в 1970-х годах для собственных нужд и основан на работе Хорста Фейстеля (англ. Horst Feistel). Доработанная версия была принята как американский правительственный федеральный стандарт обработки информации: FIPS PUB 46 Data Encryption Standard (DES) — стандарт шифрования данных.

DES имеет размер блока 64 бит и ключ 56 бит. Впоследствии 64-битные блоки стали общепринятыми при построении шифра. Длина ключа зависела от нескольких факторов, в том числе от правительственных ограничений, и в результате стала очевидным недостатком алгоритма — её оказалось недостаточно, чтобы противостоять атакам полным перебором. В 1993 году Майкл Винер спроектировал машину стоимостью 1 миллион долларов, способную взломать DES за 3,5 часа грубой силой, и в 1998 году машина, способная к взлому, была построена. К тому же, для ключей алгоритма существует ряд значений, считающимися слабыми. [6]

Существует улучшенная версия алгоритма, называемая Triple DES или 3DES. Скорость алгоритма снизилась трижды, но система оказалась значительно более устойчива к полному перебору за счет утроенной длины ключа (168 бит и 112 секретных бит). Опционально можно выбрать удвоенный ключ (112 бит и 80 секретных бит). По состоянию на 2011 год трехключевая система сохраняет свою безопасность, однако двуключевая версия с 80-битным уровнем безопасности больше не удовлетворяет современным требованиям. [28]

ГОСТ 28147-89[править | править вики-текст]

Вид функции, используемой в сети Фейстеля алгоритма шифрования ГОСТ 28147-89.

ГОСТ 28147-89 — российский стандарт шифрования, введенный в 1990 году, также является стандартом СНГ. Шифр основан на 32-раундовой сети Фейстеля c 256-битным ключом. В мае 2011 года краптоаналитиком Николя Куртуа была предпринята попытка атаки, снижающая время взлома в 28 (256) раз, но требующая 264 пар открытого/шифрованного текста, что не может рассматриваться как успешная атака, так как при наличии такого количества открытого текста нет необходимости в знании шифротекста.

[29][30]

Из-за наличия большого количества раундов, атаки на основе дифференциального и линейного криптоанализа не состоятельны, так как последние чувствительны к числу раундов. Полный перебор при такой длине ключа полностью лишен смысла. Для достижения лавинного эффекта ГОСТу требуется 8 раундов, что может быть слабостью алгоритма, но при 32 раундах это не имеет столь сильного значения. Вопрос о безопасности ГОСТа остается открытым.

[6]

AES / Rijndael[править | править вики-текст]

AES, принятый NIST в 2001 году после 5-летнего общественного конкурса, заменил собой шифр DES как федеральный стандарт соединенных штатов. Шифр разработан двумя бельгийскими криптографами Дайменом Йоаном и Рэйменом Винсентом. Размер блока составляет 128 бит и размер ключа 128, 192 и 256 бит, несмотря на то, что размер блока может быть определен любым числом бит, кратным 32, с минимальным значением 128 бит. Максимальный размер блока равен 256 бит, при этом размер ключа не имеет теоретического предела. Поддержка данного шифра введена компанией Intel в семейство процессоров x86.

Связь с другими криптографическими примитивами[править | править вики-текст]

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

См. также[править | править вики-текст]

Примечания[править | править вики-текст]

  1. Брюс Шнайер, Типы алгоритмов и криптографические режимы
  2. 1 2 С. Г. Баричев, В. В. Гончаров, Р. Е. Серов
  3. 1 2 3 Э. М. Габидулин, А. С. Кшевецкий, А. И. Колыбельников
  4. Block Ciphers - Introduction and overview - http://cacr.uwaterloo.ca/hac/about/chap7.pdf
  5. (1949) «Communication Theory of Secrecy Systems». Bell System Technical Journal 28 (4): 656–715.
  6. 1 2 3 4 5 6 7 Брюс Шнайер
  7. Фомичев
  8. Cryptographic Boolean functions and applications. — Academic Press, 2009. — P. 158–159. — ISBN 9780123748904.
  9. Брюс Шнайер, Стандарт ширования DES
  10. Junod, Pascal & Canteaut, Anne Advanced Linear Cryptanalysis of Block and Stream Ciphers. — IOS Press, 2011. — P. 2. — ISBN 9781607508441.
  11. Modeling Linear Characteristics of Substitution-Permutation Networks // Selected areas in cryptography: 6th annual international workshop, SAC'99, Kingston, Ontario, Canada, August 9-10, 1999 : proceedings. — Springer, 2000. — P. 79. — ISBN 9783540671855.
  12. Dial 'C' for Cipher // Selected areas in cryptography: 13th international workshop, SAC 2006, Montreal, Canada, August 17-18, 2006 : revised selected papers. — Springer, 2007. — P. 77. — ISBN 9783540744610.
  13. Cryptographic Boolean functions and applications. — Academic Press, 2009. — P. 164. — ISBN 9780123748904.
  14. Introduction to modern cryptography. — CRC Press, 2008. — ISBN 9781584885511., pages 166-167.
  15. С.Г.Баричев, Р.Е.Серов "Основы современной криптографии. - стр 21"
  16. Block Cipher Modes. NIST Computer Security Resource Center. Архивировано из первоисточника 20 ноября 2012.
  17. Menezes, van Oorschot, pp. 228–233
  18. ISO/IEC 10116:2006 Information technology — Security techniques — Modes of operation for an n-bit block cipher
  19. Morris Dworkin (December 2001), "«Recommendation for Block Cipher Modes of Operation – Methods and Techniques»", Special Publication 800-38A (National Institute of Standards and Technology (NIST)), <http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf> 
  20. "«Kryptographische Verfahren: Empfehlungen und Schlüssellängen»", BSI TR-02102 (no. Version 1.0), June 20, 2008 
  21. Serge Vaudenay (2002). «Security Flaws Induced by CBC Padding Applications to SSL, IPSEC, WTLS...». Advances in Cryptology – EUROCRYPT 2002, Proc. International Conference on the Theory and Applications of Cryptographic Techniques (Springer Verlag) (2332): 534–545.
  22. «ISO/IEC 9797-1: Information technology – Security techniques – Message Authentication Codes (MACs) – Part 1: Mechanisms using a block cipher», ISO/IEC, 2011, <http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?csnumber=50375> 
  23. (2008) «Immunising CBC Mode Against Padding Oracle Attacks: A Formal Security Treatment». Security and Cryptography for Networks – SCN 2008, Lecture Notes in Computer Science (Springer Verlag) (5229): 340–357.
  24. Martin, Keith M. Everyday Cryptography: Fundamental Principles and Applications. — Oxford University Press, 2012. — P. 114. — ISBN 9780199695591.
  25. Understanding Cryptography: A Textbook for Students and Practitioners. — Springer, 2010. — P. 30. — ISBN 9783642041006.
  26. Menezes, van Oorschot, p. 227
  27. James Nechvatal, Elaine Barker, Lawrence Bassham, William Burr, Morris Dworkin, James Foti, Edward Roback (October 2000), «Report on the Development of the Advanced Encryption Standard (AES)», National Institute of Standards and Technology (NIST), <http://csrc.nist.gov/archive/aes/round2/r2report.pdf> 
  28. NIST Special Publication 800-57 Recommendation for Key Management — Part 1: General (Revised), March, 2007
  29. Nicolas T. Courtois. Security Evaluation of GOST 28147-89 In View Of International Standardisation. Cryptology ePrint Archive: Report 2011/211
  30. SecurityLab: Взломан блочный шифр ГОСТ 28147-89
  31. ISO/IEC 10118-2:2010 Information technology — Security techniques — Hash-functions — Part 2: Hash-functions using an n-bit block cipher
  32. Menezes, van Oorschot, Chapter 9: Hash Functions and Data Integrity
  33. NIST Special Publication 800-90A Recommendation for Random Number Generation Using Deterministic Random Bit Generators
  34. Menezes, van Oorschot, Chapter 5: Pseudorandom Bits and Sequences

Литература[править | править вики-текст]

  • Брюс Шнайер "Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си". — М.: Триумф, 2002. — ISBN 5-89392-055-4.
  • Э. М. Габидулин, А. С. Кшевецкий, А. И. Колыбельников "Защита информации: учебное пособие". — М.: МФТИ, 2011. — 262 с. — ISBN 5-7417-0377-9.
  • В. М. Фомичев "Дискретная математика и криптология. Курс лекций". — М.: ДИАЛОГ-МИФИ, 2003. — 400 с. — ISBN 5-86404-185-8.
  • С. Г. Баричев, В. В. Гончаров, Р. Е. Серов "Основы современной криптографии". — М.: ДИАЛОГ-МИФИ, 2011. — 175 с. — ISBN 978-5-9912-0182-7.
  • А. П. Алферов, А. Ю. Зубов, А. С. Кузьмин, А. В. Черемушкин "Основы криптографии". — М.: Гелиос АРВ, 2002. — 480 с. — ISBN 5-85438-025-0.