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

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Министерство образования и науки Российской Федерации
Государственное образовательное учреждение
высшего профессионального образования
Уфимский государственный авиационный технический университет
СЕМЕЙСТВО КРИПТОГРАФИЧЕСКИХ
АЛГОРИТМОВ RC
Методические указания
к выполнению лабораторной работы по дисциплине
«Криптографические методы и средства обеспечения информационной безопасности»
Уфа 2011
Составители: Ю. Г. Строкина, Т. А. Иванова
УДК 004.43(07)
ББК 32.973-018.1(я7)
Методические указания к выполнению лабораторной работы по дисциплине «Криптографические методы и средства обеспечения информационной безопасности» / Уфимск. гос. авиац. техн. ун-т; Сост. Ю.Г. Строкина, Т. А. Иванова– Уфа, 2011. – 28 c.
Методические указания включают лабораторную работу по дисциплине «Криптографические методы и средства обеспечения информационной безопасности», в которой рассматриваются основные механизмы работы криптографических алгоритмов RC2, RC4, RC5 и RC6.
Предназначены для студентов специальности 090104 «Комплексная защита объектов информатизации».
Табл. 2. Ил. 22. Библиогр.: 9 назв.
Рецензенты : канд. техн. наук, доц. М.В. Селиванова ;
канд. техн. наук, доц. Ю.О. Уразбахтина
© Уфимский государственный
авиационный технический университет, 2011
Содержание
[1] [2] ЛАБОРАТОРНАЯ РАБОТА № 1 [3] СЕМЕЙСТВО АЛГОРИТМОВ RC [4] 1. Цель работы [5] 2. Краткие теоретические сведения [5.1] 2.1 Алгоритм RC2 [5.1.1] 2.1.1 Структура алгоритма [5.1.2] 2.1.2 Процедура расширения ключа [5.1.3] 2.1.3 Расшифровывание [5.1.4] 2.1.4 Криптостойкость алгоритма [5.2] 2.2 Алгоритм RC4 [5.3] 2.3Алгоритм RC5 [5.3.1] 2.3.1 Структура алгоритма [5.3.2] 2.3.2 Процедура расширения ключа [5.3.3] 2.3.3 Криптоанализ алгоритма [5.3.4] 2.3.4 Варианты RC5 [5.4] 2.4 Алгоритм RC6 [5.4.1] 2.4.1 Структура алгоритма [5.4.2] 2.4.2 Процедура расширения ключа [6] 3. Примеры [7] 4. Содержание работы [8] 5. Контрольные вопросы [9] Список литературы |
Для современной криптографии характерно использование открытых алгоритмов шифрования, предполагающих использование вычислительных средств. Известно более десятка проверенных алгоритмов шифрования, которые при использовании ключа достаточной длины и корректной реализации алгоритма криптографически стойки. К распространенным алгоритмам относятся: симметричные DES, AES, ГОСТ 28147-89, Camellia, Twofish, Blowfish, IDEA, RC4 и др.; асимметричные RSA и Elgamal (Эль-Гамаль), хэш-функции MD4, MD5, MD6, SHA-1, SHA-2, ГОСТ Р 34.11-94.
Встречается несколько версий алгоритма RC: RC2, RC4, RC5, RC6. Они имеют некоторые различия в работе, но принцип действия схож. В основе алгоритма лежит сеть Фейстеля. Наиболее часто используемым является алгоритм RC6. В данном случае более подробно изучается RC2 и RC4.
Студентам необходимо иметь соответствующие знания в области криптографии, в особенности работы тех алгоритмов, которые применяется на практике на сегодняшний день.
Целью лабораторной работы является изучение принципа работы и различий в версиях алгоритма RC, приобретение практических навыков шифрования данных при помощи данных алгоритма в программном пакете CrypTool 1.4.30.
Алгоритм шифрования был разработан в конце 1980-х гг. Рональдом Ривестом, который, в частности, разработал алгоритм RC5.
Алгоритм RC2 шифрует данные блоками по 64 бита с использованием ключей переменного размера: от 8 до 1024 битов исключительно; рекомендуемым размером ключа является 64 бита.
Алгоритм является сетью Фейстеля, в нем выполняется 18 раундов преобразований. Причем раунды алгоритма делятся на 2 типа: смешивающие (mix) раунды и объединяющие (mesh) раунды. Общая структура алгоритма такова:
Структура смешивающего раунда приведена на рис.1. Предполагается, что шифруемый блок данных разделен на 4 16-битных слова , над которыми смешивающий раунд в цикле по i от 0 до 3 выполняет следующие операции (составляющие показанную на рис.1 функцию f()):
,
j=j+1, (2)
, (3)
где – фрагмент расширенного ключа, определяемый глобальной переменной j; данная переменная изначально равна нулю и увеличивается на 1 (как показано выше) в каждом смешивающем раунде; процедура расширения ключа подробно описана далее,
& - побитовая логическая операция «и»,
~x – побитовый комплемент к x,
« - циклический сдвиг влево на число битов, определяемое значением (табл. 1).
Рис. 1. Смешивающий раунд алгоритма RC2
Таблица 1
i |
0 |
1 |
2 |
3 |
1 |
2 |
3 |
5 |
Таким образом, в каждой i-й итерации смешивающего раунда выполняется описанное выше преобразование f() (рис.2), которое модифицирует на основе текущих значений трех остальных слов шифруемого блока и фрагмента расширенного ключа.
Рис. 2. Функция f() алгоритма RC2
Аналогично смешивающему раунду, в объединяющем раунде выполняется цикл по i от 0 до 3; в каждой итерации цикла выполняется следующая операция:
, (4)
где . (5)
Таким образом, итерация объединяющего раунда представляет собой наложение операцией сложения по модулю фрагмента расширенного ключа, индекс которого определяется 6 младшими битами текущего значения слова .
Как было сказано выше, алгоритм RC2 использует ключи шифрования размером от 8 до 1024 битов, т.е. от 1 до 128 байтов.
Расширение ключа подразумевает получение из ключа шифрования 16-битных фрагментов расширенного ключа , используемых в смешивающих раундах – по одному в каждой из 4 итераций каждого из 16 смешивающих раундов. Данная процедура выполняется в несколько шагов:
, (6)
…
, (7)
где – исходный ключ шифрования, имеющий размер T байтов.
Остальные байты массива L обнуляются.
T8=(T1+7)/8, (8)
, (9)
где T1 – размер ключа в битах,
T8 – эффективный размер ключа в байтах,
TM – битовая маска, учитывающая остаточные биты ключа, если его размер в битах не кратен 8.
, (10)
где P – табличная замена, приведенная в табл.2.
Таблица 2
Таким образом, значение 0 заменяется на D9, 1 – на 78 и т.д.
Псевдослучайная таблица P сформирована на основе шестнадцатеричной записи дробной части числа π.
. (11)
. (12)
. (13)
Расшифровывание выполняется по той же общей схеме, что и зашифровывание. Однако при расшифровывании используются другие операции, выполняемые в смешивающем и объединяющем раундах.
Смешивающий раунд расшифровывания в цикле по i от 3 до 0 выполняет следующие операции:
, (14)
,
j=j-1, (16)
где » - циклический сдвиг вправо на число битов, определяемое значением (табл. 2),
начальное значение j устанавливается не в 0, а в 63.
Аналогичным образом изменен и объединяющий раунд при расшифровывании по сравнению с зашифровыванием. В нем в цикле по i от 3 до 0 выполняется следующая операция:
, (17)
где . (18)
Почти сразу после опубликования RC2 вышла работа ряда известных криптологов: Рональда Ривеста, Ларса Кнудсена, Винсента Риджмена и Мэта Робшоу, - в которой исследовалось воздействие дифференциального и линейного криптоанализа на алгоритм RC2. Результаты оказались таковы:
Не более практичной является атак на связанных ключах, для успешного проведения которой требуется наличие выбранных открытых текстов и соответствующих им шифртекстов, причем зашифровывание должно выполняться на ключе, связанном с искомым определенным простым соотношением. Данная атака изобретена не менее известными криптологами: Джоном Келси, Брюсом Шнайером и Дэвидом Вагнером.
Других методов вскрытия алгоритма RC2 на настоящий момент не известно.
RC4 представляет собой потоковый шифр с переменной длиной ключа, разработанный в 1987 г. Роном Ривестом для компании RSA Data Security, Inc.
Описывается шифр очень просто. Алгоритм работает в режиме OFB. Ключевая последовательность не зависит от исходного текста. Структура алгоритма включает блок замены размерностью 8х8: . Блок замены представляет собой зависимую от ключа переменной длины перестановку чисел 0,…, 255. Имеется два счетчика i и j, первоначально равные 0. Для генерирования псевдослучайного байта выполняются следующие действия:
, (19)
переставить и
, (21)
. (22)
Затем байт k складывается по модулю 2 с байтом исходного текста для получения шифрованного.
Инициализация блока замены также проста. Вначале он заполняется линейно: . Затем заполняется еще один 256-байтный массив ключом, при этом ключ может повторяться необходимое число раз для заполнения всего массива: . Счетчик j устанавливается в 0. После чего производятся следующие действия:
for i=0 to 255
переставить и .
Возможно обобщение алгоритма на большие длину слова и размер блока замены. Так, можно построить шифр с блоком замены размерностью 16х16 (потребуется 128 Кбайт памяти) и длиной слова 16 бит. Этап инициализации будет значительно медленнее, необходим цикл до 65535, если мы хотим в точности следовать конструкции, но получившийся в результате алгоритм будет более быстрым.
Алгоритм разработан известнейшим криптологом Рональдом Ривестом – одним из разработчиков асимметричной системы RSA. Аналогично предыдущим алгоритмам шифрования Рона Ривеста RC2 и RC4 (является потоковым шифром), алгоритм RC5 получил весьма широкое распространение.
На преобразованиях, используемых в RC5, основана последующая разработка компании RSA – алгоритм RC6, который стал финалистом конкурса AES по выбору нового стандарта шифрования США.
Часть основных параметров алгоритма RC5 являются переменными. Помимо секретного ключа, параметрами алгоритма являются следующие:
Наиболее часто для уточнения параметров алгоритма, используемых в его конкретной реализации, применяется обозначение RC5-w/R/b; например, RC5-32/12/16 обозначает RC5 с 64-битным блоком, 12 раундами и 128-битным (16-байтным) ключом.
Переменные параметры расширяют сферу использования алгоритма, а также позволяют сильно сократить издержки при необходимости перехода на более сильный вариант алгоритма, в программной или аппаратной реализации RC5, поддерживающей переменные параметры, легко было бы заменить ключ более длинным, таким образом, устранив проблему.
Предусмотрена в алгоритме и проблема совместимости реализаций RC5 с различными параметрами – каждое зашифрованное сообщение рекомендуется предварять заголовком, содержащим список значений основных параметров алгоритма – предполагается, что в этом случае для расшифровывания сообщения следует установить параметры из заголовка, после чего (при наличии корректного ключа) сообщение легко будет расшифровано.
Рис. 3. Структура алгоритма RC5
Структура алгоритма представлена на рис. 3. Алгоритм представляет собой сеть Фейстеля, в каждом раунде которой выполняются следующие операции:
, (24)
, (25)
где r – номер текущего раунда, начиная с 1,
– фрагмент расширенного ключа,
– операция циклического сдвига на x битов влево, где x – значение младших битов n.
Перед первым раундом выполняются операции наложения двух первых фрагментов расширенного ключа на шифруемые данные:
, (26)
. (27)
Под словом «раунд» в описании алгоритма понимаются преобразования, соответствующие двум раундам обычных алгоритмов, структура которых является сетью Фейстеля (рис.3).
То есть раунд алгоритма RC5 обрабатывает блок целиком, тогда как типичный раунд сети Фейстеля обрабатывает только один субблок – обычно половину блока.
Алгоритм поразительно прост – в нем используются только операции сложения по модулю 2 и по модулю , а также сдвиги на переменное число битов. Сдвиг на переменное число битов является весьма просто реализуемой операцией, которая, однако, существенно усложняет дифференциальный и линейный криптоанализ алгоритма. Простота алгоритма может рассматриваться как его важное достоинство – простой алгоритм легче реализовать и легче анализировать на предмет возможных уязвимостей.
Расшифровывание выполняется применением обратных операций в обратной последовательности, т.е. в каждом раунде r (с обратной последовательностью раундов) выполняются следующие операции:
, (28)
, (29)
где »n – аналогичная описанной выше («n)операция побитового циклического сдвига вправо.
Соответственно, после R раундов выполняются следующие операции:
, (30)
. (31)
Алгоритм RC5 и некоторые его варианты являются запатентованными.
Процедура расширения ключа незначительно сложнее собственно шифрования. Опишем эту процедуру:
, (32)
, (33)
где и – псевдослучайные константы, образованные путем умножения на дробной части и последующего округления до ближайшего нечетного целого двух математических констант (e и φ соответственно). В спецификации алгоритма приведены вычисленные константы для возможных значений w (указаны шестнадцатеричные значения):
;
;
;
;
;
.
, (34)
, (35)
, (37)
где i, j, A и B – временные переменные, их начальные значения равны нулю,
KC – выровненный на этапе 1 ключ шифрования.
Количество итераций цикла N определяется как N=3*m, где m – максимальное из двух значений: c или (2*R+1).
Считается, что именно сдвиги на переменное число битов привлекли внимание криптоаналитиков к алгоритму RC5 – RC5 стал одним из наиболее изученных алгоритмов на предмет возможных уязвимостей.
Начало криптоанализу алгоритма RC5 было положено сотрудниками RSA Laboratories Бертоном Калиски и Икван Лайзой Ин. В период с 1995 по 1998 гг. они опубликовали ряд отчетов, в которых подробно проанализировали криптостойкость алгоритма RC5. Выводы таковы.
Алгоритм RC5 почти невозможно вскрыть методом линейного криптоанализа. Это свойство алгоритма предопределило наличие операции циклического сдвига на переменное число битов. Однако дальнейшие исследования показали, что существует класс ключей, при использовании которых алгоритм может быть вскрыт линейным криптоанализом.
Дифференциальный криптоанализ существенно более эффективен при атаках на алгоритм RC5. Калиски и Ин предложили атаку на алгоритм RC5-32/12/16, для которой требовалось наличие пар выбранных открытых текстов и соответствующих им шифртекстов. Этот результат улучшили Ларс Кнудсен и Уилли Мейер, для атаки которых требовалось выбранных открытых текстов. Они же нашли несколько классов слабых ключей, использование которых упрощает дифференциальный криптоанализ. А наилучшим результатом является криптоаналитический метод, предложенный Алексом Бирюковым и Эйялом Кушилевицем, которым необходимо выбранных открытых текстов для успешной атаки. Тем не менее, все описанные выше атаки являются непрактичными – для их выполнения требуется наличие огромного количества выбранных открытых текстов. Бирюков и Кушилевиц считают, что для обеспечения полной невскрываемости алгоритма дифференциальным криптоанализом достаточно выполнения 18-20 раундов вместо 12.
Таким образом, наиболее реальным методом взлома алгоритма RC5 (не считая варианты с небольшим количеством раундов и с коротким ключом) является полный перебор возможных вариантов ключа шифрования. Что означает, что у алгоритма RC5 практически отсутствуют недостатки с точки зрения его стойкости. Это косвенно подтверждается тем, что достаточно много исследований стойкости алгоритма было направлено против вариантов с усеченным количеством раундов: такие варианты обычно исследуются в случае отсутствия серьезных уязвимостей у полноценных вариантов исследуемого алгоритма.
Было немало и других исследований данного алгоритма. Причем их подавляющее большинство применялось к 64-битной версии алгоритма (т.е. для w=32). Это не означает, что RC5 со 128-битным блоком шифруемых данных является существенно менее изученным – результаты исследований показывают, что 128-битный вариант RC5 с достаточным количеством раундов вскрыть существенно сложнее 64-битного.
Структура алгоритма RC5, несмотря на свою простоту, представлялась многим криптологам как поле для возможных усовершенствований. Соответственно, появилось множество известных вариантов алгоритма RC5, в которых преобразования в «пол-раундах» классического RC5 несколько изменены:
. (38)
Данный алгоритм оказался менее стоек, чем RC5, как к линейному, так и к дифференциальному криптоанализу.
. (39)
Алгоритм оказался так же стоек, как и RC5, против линейного криптоанализа, но значительно слабее против дифференциального.
Рис.4. Раунды алгоритмов RC5XOR и RC5P
, (40)
где – число битов циклического сдвига, которое может быть различным в различных раундах алгоритма; в этом случае последовательность является дополнительным параметром алгоритма.
Данный вариант алгоритма RC5 не является хорошо изученным, однако эксперты предполагают, что алгоритм RC5PFR нестоек против дифференциального криптоанализа.
, (41)
Алгоритм RC5KFR также не является хорошо изученным алгоритмом, однако считается, что во многих случаях (особенно при недостаточно большом количестве раундов) криптоанализ данного варианта алгоритма RC5 сводится к анализу алгоритма RC5PFR, что не внушает уверенности в его стойкости.
Рис. 5. Раунды алгоритмов RC5PFR и RC5KFR
Алгоритм RC5RA, в котором выполняется циклический сдвиг на переменное число битов, определяемое не значением младших битов другого субблока, а некоей функцией f(), обрабатывающей в качестве входного значения все биты другого субблока:
. (42)
И этот вариант алгоритма еще недостаточно изучен, но существует мнение, что алгоритм RC5RA может быть еще сильнее, чем RC5, против известных методов криптоанализа.
На основе алгоритма RC5 в 1998 г. был разработан алгоритм RC6, который также основан на циклических сдвигах на переменное число битов. Подавляющее большинство криптоаналитических исследований алгоритма RC5 могут быть в различной мере применены и к RC6.
Алгоритм RC6 был разработан в 1998 г. рядом специалистов научного подразделения известнейшей фирмы RSA Data Security – RSA Laboratories: Рональдом Ривестом, Мэтом Робшоу, Рэем Сидни и Икван Лайзой Ин специально для участия в конкурсе AES. Алгоритм во многом унаследовал черты предыдущего алгоритма Рональда Ривеста – 64-битного блочного шифра RC5. Фактически алгоритм претерпел два принципиальных изменения:
Как и RC5, алгоритм RC6 имеет гибкую структуру: помимо секретного ключа, параметрами являются:
Аналогично RC5, для уточнения параметров алгоритма, используемых в его конкретной реализации, применяется обозначение RC6-w/R/b. Поскольку в конкурсе AES 128-битный блок являлся обязательным, значение w фиксировано и равно 32. В спецификации алгоритма зафиксировано также количество раундов: R=20. Поскольку конкурс AES допускал использование ключей трех фиксированных размеров, рассмотрим три следующие варианты алгоритма: RC6-32/20/16, RC6-32/20/24 и RC6-32/30/32, совокупность которых мы и будем иметь далее в виду, говоря об «RC6».
Структура алгоритма приведена на рис.6. В алгоритме используется 20 раундов преобразований, перед которыми выполняется частичное входное отбеливание:
, (43)
, (44)
где B и D – текущие значения двух из четырех (A, B, C, D) обрабатываемых 32-битных субблоков,
и – первые два из используемых в алгоритме фрагментов расширенного ключа .
Рис.6. Структура алгоритма RC6
Аналогичным образом выполняется частичное выходное отбеливание:
, (45)
. (46)
В каждом i-м раунде алгоритма выполняются следующие действия:
, (47)
, (48)
, (49)
, (50)
где и – временные переменные,
количество битов вращения на переменное число битов определяется значением 5 младших битов параметра ( и ),
функция f() выполняет следующее квадратичное преобразование:
. (51)
В конце каждого раунда выполняется сдвиг субблоков – рис.6.
При расшифровывании подключи используются в обратном порядке, наложение подключей вместо сложения по модулю выполняется вычитанием, а также сдвиг субблоков выполняется в начале раунда и в обратную сторону. Преобразование f() не претерпело изменений (рис.7).
Рис.7. Расшифровывание алгоритмом RC6
Процедура расширения ключа алгоритма RC6 аналогична RC5, за исключением того, что алгоритму RC6 требуется несколько больше сгенерированных подключей, а именно 2R+4, т.е. для 20 раундов. Рассмотрим данную процедуру для алгоритма RC6 в варианте для конкурса AES, т.е. с указанными выше фиксированными параметрами.
Расширение ключа выполняется в два этапа.
, (52)
, (53)
где и – псевдослучайные константы, образованные путем умножения на дробной части и последующего округления до ближайшего нечетного целого двух математических констант (e и φ соответственно):
;
.
, (54)
, (55)
, (56)
, (57)
где i, j, A и B – временные переменные, их начальные значения равны нулю,
KI – исходный ключ шифрования, представленный в виде c 32-битных слов.
Выполняются 3c итераций цикла.
1. Введем данные, которые необходимо зашифровать, и посмотрим, как данные преобразуются под действием алгоритма RC2 (рис.8-9).
Рис. 8. Входные данные
Рис. 9. Преобразование данных под действием алгоритма RC2
2. Создадим документ и зашифруем его на 8-битном ключе с помощью алгоритма RC2(рис.10-12).
Рис. 10. Создание документа с конфиденциальной информацией
Рис. 11. Ввод ключевых данных
Рис. 12. Зашифрованная информация
3. Проведем анализ зашифрованного сообщения (рис. 13-14).
Рис.13. Криптоанализ зашифрованного сообщения
Рис. 14. Подбор возможных вариантов ключей для расшифровки сообщения
4. Расшифруем зашифрованное сообщение с помощью правильного и неправильного ключа (рис. 15-17).
Рис. 15. Результат расшифровывания с помощью правильного ключа
Рис. 16. Ввод неправильного ключа
Рис. 17. Окно ошибки
5. Этот же документ зашифруем на 24-битном простом ключе с помощью алгоритма RC4 (рис. 18 - 19).
Рис. 18. Ввод простого ключа
Рис. 19. Зашифрованная информация
6. Проведем анализ зашифрованного сообщения (рис. 20-22).
Рис. 20. Криптоанализ зашифрованного сообщения
Рис. 21. Время, требующееся для расшифровки данного сообщения без знания ключа
Рис. 22. Текст сообщения раскрыт
В ходе выполнения работы студенты должны выполнить следующие задания:
1. Создать документ (File – New) c произвольной информацией и зашифровать его с помощью ключа алгоритмом RC2 (Encrypt/Decrypt – Symmetric (modern) –RC2), посмотреть, как выглядит зашифрованная информация в шестнадцатеричной системе счисления и в виде текста. Сохранить документ в зашифрованном виде, удалив при этом исходный.
4. Провести анализ зашифрованного документа, посмотреть параметры анализа алгоритма, оценить, сколько времени займет анализ и результаты анализа(Analysis – Symmetric Encryption (modern) –RC2)). Попробовать провести анализ алгоритма с помощью ключа другой длины, с помощью частично известного ключа и оценить результаты анализа.
5. Попробовать расшифровать сохраненный документ с помощью правильного и неправильного ключа, с помощью ключа другой длины ((Encrypt/Decrypt – Symmetric (modern) –RC2).
6. Создать новый документ и зашифровать его с помощью простого ключа (например, 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00). Провести анализ данного документа, оценить результаты анализа.
7. Повторить выполненные операции для алгоритма RC4.
8. Попробовать расшифровать сообщение, зашифрованное с помощью алгоритма RC4, алгоритмом RC2, провести анализ зашифрованного сообщения алгоритмом RC2 и наоборот. Сравнить результаты и сделать выводы об отличиях в работе алгоритмов RC2 и RC4.
1. Что такое сеть Фейстеля? Какие действия выполняются в ходе данного алгоритма?
2. В чем состоит отличие работы алгоритмов RC2, RC4, RC5, RC6? Пояснить отличия работы алгоритмов RC2 и RC4 на примере отчета.
3. Объясните, как работают варианты алгоритма RC5, чем они отличаются от самого алгоритма RC5?
4. Как выполняется процедура расширения ключа во всех вышеперечисленных алгоритмах?
1. Аграновский А.В, Хади Р.А. Практическая криптография: алгоритмы и их программирование – СПб.: Солон-пресс, 2009. - 256 с.
2. Бернет С., Пэйн С. Криптография. Официальное руководство RSA Security – М.: Бином, 2009. - 384 с.
3. Гашков С.Б., Применко Э.А., Черепнев М.А. Криптографические методы защиты информации: Учебное пособие – М.: Изд. центр «Академия», 2010. - 304 с.
4. Громкович Ю. Теоретическая информатика. Введение в теорию автоматов, теорию вычислимости, теорию сложности, теорию алгоритмов, рандомизацию, теорию связи и криптографию: Учебное пособие – СПб.: БХВ-Петербург, 2010. - 334 с.
5. Музыкантский А.И., Фурин В.В. Лекции по криптографии – М.: МЦНМО, 2010. - 64 с.
6. Панасенко С.П. Алгоритмы шифрования: специальный справочник – СПб.: БХВ-Петербург, 2009. - 576 с.
7. Рябко Б.Я., Фионов А.Н. Основы современной криптографии и стеганографии – М.: Горячая Линия – Телеком, 2010. - 232 с.
8. Фороузан Б.А. Криптография и безопасность сетей – М.: Бином, 2010. - 784 с.
9. Черемушкин А.В. Криптографические протоколы. Основные свойства и уязвимости: Учебное пособие – М.: Изд. центр «Академия», 2009. - 272 с.