Министерство образования Российской Федерации
САМАРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра прикладной математики и информатики К У Р С О В А Я Р А Б О Т А
Современные криптографические методы Студент IV-ИЭ-8 Альперт В. В. Научный руководитель Пономарев В. П.
С а м а р а 2000 С О Д Е Р Ж А Н И Е Стр. Введение в криптографию 3 4 Симметричные криптосистемы 5 Стандарт шифрования данных ГОСТ 28147-89 6 Международный алгоритм шифрования данных IDEA 10 Алгоритм RSA 12 Оценка надежности криптосистем 14 ЗАКЛЮЧЕНИЕ 19 ЛИТЕРАТУРА 20
Введение в криптографию Бурное развитие криптографические системы получили в годы первой и второй мировых войн. Начиная с послевоенного времени и по нынешний день, появление вычислительных средств ускорило разработку и совершенствование криптографических методов. Проблема использования криптографических методов в информационных системах стала в настоящий момент особо актуальна потому, что с одной стороны, расширилось использование компьютерных сетей, в частности глобальной сети Интернет, по которым передаются большие объемы информации государственного, военного, коммерческого и частного характера, не допускающего возможность доступа к ней посторонних лиц. С другой стороны, появление новых мощных компьютеров, технологий сетевых и нейронных вычислений сделало возможным дискредитацию криптографических систем еще недавно считавшихся практически не раскрываемыми. Проблемой защиты информации путем ее преобразования занимается криптология (kryptos - тайный, logos - наука). Криптология разделяется на два направления - криптографию и криптоанализ. Цели этих направлений прямо противоположны. Криптография занимается поиском и исследованием математических методов преобразования информации. Сфера интересов криптоанализа - исследование возможности расшифровывания информации без знания ключей. Шифрование - преобразовательный процесс: исходный текст, который носит также название открытого текста, заменяется шифрованным текстом.
Криптографическая система
Дешифрование - обратный шифрованию процесс. На основе ключа шифрованный текст преобразуется в исходный.
Ключ - информация, необходимая для беспрепятственного шифрования и дешифрования текстов. Криптосистемы разделяются на симметричные и системы с открытым ключом. В симметричных криптосистемах и для шифрования, и для дешифрования используется один и тот же ключ. В системах с открытым ключом используются два ключа - открытый и закрытый, которые математически связаны друг с другом. Информация шифруется с помощью открытого ключа, который доступен всем желающим, а расшифровывается с помощью закрытого ключа, известного только получателю сообщения. Электронной (цифровой) подписью называется присоединяемое к тексту его криптографическое преобразование, которое позволяет при получении текста другим пользователем проверить авторство и подлинность сообщения. Криптостойкостью называется характеристика шифра, определяющая его стойкость к дешифрованию без знания ключа (т.е. криптоанализу). Имеется несколько показателей криптостойкости, среди которых: Криптография в прошлом использовалась лишь в военных целях. Однако сейчас, с становлением информационного общества, она становится центральным инструментом для обеспечения конфиденциальности. По мере образования информационного общества, крупным государствам становятся доступны технологические средства тотального надзора за миллионами людей. Поэтому криптография становится одним из основных инструментов обеспечивающих конфиденциальность, доверие, авторизацию, электронные платежи, корпоративную безопасность и бесчисленное множество других важных вещей. Симметричные криптосистемы Все многообразие существующих криптографических методов можно свести к следующим классам преобразований:
Симметричные криптосистемы
Моно- и полиалфавитные подстановки. Наиболее простой вид преобразований, заключающийся в замене символов исходного текста на другие (того же алфавита) по более или менее сложному правилу. Для обеспечения высокой криптостойкости требуется использование больших ключей. Перестановки. Также несложный метод криптографического преобразования. Используется, как правило, в сочетании с другими методами. Гаммирование. Этот метод заключается в наложении на исходный текст некоторой псевдослучайной последовательности, генерируемой на основе ключа. Блочные шифры. Представляют собой последовательность (с возможным повторением и чередованием) основных методов преобразования, применяемую к блоку (части) шифруемого текста. Блочные шифры на практике встречаются чаще, чем “чистые” преобразования того или иного класса в силу их более высокой криптостойкости. Российский и американский стандарты шифрования основаны именно на этом классе шифров. Стандарт шифрования данных ГОСТ 28147-89 Российский стандарт шифрования является блочным, т. е. преобразование ведется по блокам. Он включает в себя режим замены и два режима гаммирования. Стандарт ГОСТ 28147-89 формировался с учетом мирового опыта, и в частности, были приняты во внимание недостатки и нереализованные возможности алгоритма DES, поэтому использование стандарта ГОСТ предпочтительнее. Эффективность данного стандарта достаточно высока. Системы, основанные на ГОСТ 28147-89, позволяют зашифровать в секунду до нескольких десятков Кбайт данных. В него заложен метод, с помощью которого можно зафиксировать необнаруженную случайную или умышленную модификацию зашифрованной информации. Введем ассоциативную операцию конкатенации. Если L и R – последовательность бит, то LR обозначает конкатенацию последовательностей, то есть LR - последовательность бит с размерностью равной сумме размерностей L и R, причем биты R следуют за битами L. Кроме того, будем использовать следующие операции сложения: если A+B=>2, то A^B=А+B-2 если A+B<2 , то A^B=А+B, где A и B 1-битные числа. если A+B=>232, то A[+]B=A+B-232 если A+B<232 , то A[+]B=A+В, где A и B 32-битные числа. если A+B=>232-1, то A{+}B=A+B-232+1 если A+B<232-1 , то A{+}B=A+B, где A и B 32-битные числа. Алгоритм криптографического преобразования предусматривает три режима работы. В стандарте ГОСТ используется ключ W длиной 256 бит, представляемый в виде восьми 32-разрядных чисел x(i). W=X(7)X(6)X(5)X(4)X(3)X(2)X(1)X(0) Самый простой из возможных режимов - замена. Пусть открытые блоки разбиты на блоки по 64 бит в каждом, которые обозначим как T(j). Очередная последовательность бит T(j) разделяется на две последовательности B(0) и A(0) по 32 бита (правый и левый блоки). Далее выполняется итеративный процесс шифрования, описываемый следующими формулами, вид который зависит от i. Для i=1, 2, ..., 24, j=(i-1) (mod 8); A(i) = f(A(i-1) [+] X(j)) ^ B(i-1) B(i) = A(i-1) Для i=25, 26, ..., 31, j=32-i; A(i) = f(A(i-1) [+] X(j)) ^ B(i-1) B(i) = A(i-1) A(32) = A(31) B(32) = f(A(31) [+] X(0)) ^ B(31). Для дешифрования используется тот же ключ, но процесс дешифрования является инверсным по отношению к исходному. A(31) = A(32) B(31) = f(A(32) [+] X(0)) ^ B(32). Для i=31, 30, ..., 25, j=32-i; A(i-1) = B(i) B(i-1) = f(B(i) [+] X(j)) ^ A(i) Для i=24, 23, ..., 1, j=(i-1) (mod 8); A(i-1) = B(i) B(i-1) = f(B(i) [+] X(j)) ^ A(i) Полученные A(0), B(0) – расшифрованный текст. Здесь i обозначает номер итерации. Функция f – функция шифрования. Функция шифрования состоит из операции подстановки К применяемой к 32-разрядному аргументу. 64-разрядный аргумент разбивается на два 32-разрядных вектора. Блок подстановки K состоит из 8 узлов замены К(1).....К(8) с памятью 64 бит каждый. Поступающий на блок подстановки 4-разрядный вектор разбивается на 8 последовательно идущих 4-разрядных векторов, каждый из которых преобразуется в 4-разрядный вектор соответствующим узлом замены, представляющим таблицу из 16 целых чисел в диапазоне 0...15. Входной вектор определяет адрес строки в таблице, число из которой является выходным вектором. Затем 4-разрядные векторы последовательно объединяются в 32-разрядный выходной. Остальные блоки открытых данных в режиме простой замены зашифровываются аналогично. Следует учитывать, что данный режим шифрования обладает ограниченной криптостойкостью. Другой режим шифрования называется режимом гаммирования. Открытые данные, разбитые на 64-разрядные блоки T(i) (i=1,2,...,m) (m определяется объемом шифруемых данных), зашифровываются в режиме гаммирования путем поразрядного сложения по модулю 2 с гаммой шифра Гш, которая вырабатывается блоками по 64 бит, т.е. Гш = (Г(1),Г(2),....,Г(m)). Уравнение шифрования данных в режиме гаммирования может быть представлено в следующем виде: Ш(i) = (f(Y(i) , f(Z(i)) ^ T(i)=Г(i) ^ T(i) В этом уравнении Ш(i) обозначает 64-разрядный блок зашифрованного текста, f - функцию шифрования в режиме простой замены (аргументами этой функции являются два 32-разрядных числа). C1 и C2 - константы, заданные в ГОСТ 28147-89. Величины Y(i) и Z(i) определяются итерационно по мере формирования гаммы следующим образом: (Z(0), Y(0)) = f(S), где S - 64-разрядная двоичная последовательность Y(i) =Y(i-1) [+] C1, Z(i) = Z(i-1) {+} C2, i=1, 2, ..., m. 64-разрядная последовательность, называемая синхропосылкой, не является секретным элементом шифра, но ее наличие необходимо как на передающей стороне, так и на приемной. Режим гаммирования с обратной связью очень похож на режим гаммирования. Как и в режиме гаммирования открытые данные, разбитые на 64-разрядные блоки T(i), зашифровываются путем поразрядного сложения по модулю 2 с гаммой шифра Гш, которая вырабатывается блоками по 64 бит: Гш=(Г(1), Г(2), ..., Г(m)). Уравнение шифрования данных в режиме гаммирования с обратной связью выглядят следующим образом: Ш(1) = f(S) ^ T(1) = Г(1) ^ T(1), Ш(i) = f(Ш(i-1)) ^ T(i) = Г(i)^T(i), i=2, 3, ..., m. В ГОСТ 28147-89 определяется процесс выработки имитовставки, который единообразен для всех режимов шифрования. Имитовставка - это блок из р бит (имитовставка Ир), который вырабатывается либо перед шифрованием всего сообщения либо параллельно с шифрованием по блокам. Параметр р выбирается в соответствии с необходимым уровнем имитозащищенности. Для получения имитовставки открытые данные представляются также в виде блоков по 64 бит. Первый блок открытых данных Т(1) подвергается преобразованию, соответствующему первым 16 циклам алгоритма режима простой замены. В качестве ключа используется тот же ключ, что и для шифрования данных. Полученное 64-разрядное число суммируется побитно с открытым блоком Т(2) и сумма вновь подвергается 16 циклам шифрования для режима
если A+B=> если A+B=>
если A* B=>
p1 (*) s1 --> d1 p2 (+) s2 --> d2 p3 (+) s3 --> d3 p4 (*) s4 --> d1 ^ d3 --> d5 d2 ^ d4 --> d5 (*) s5 --> d7 d6 (+) d7 --> d8 d8 (*) s6 --> d9 d7 (+) d9 --> d1 ^ d9 --> d11 d3 ^ d9 --> d12 d2 ^ d10 --> d13 d4 ^ d10 -->
|