Скачиваний:
82
Добавлен:
15.06.2014
Размер:
699.64 Кб
Скачать

Победителем признана криптосистема RIJNDAEL, которая имеет архитектуру, получившую название квадрат. Структура криптосистемы

базируется на прямых преобразованиях шифруемого блока, который представляется в виде матрицы байтов. Шифрование состоит из серии однотипных шагов, раундов, однако на каждом раунде блок преобразуется как единое целое и не остается неизменных частей блока. За раунд шифруется

полный блок, следовательно, для обеспечения сопоставимой сложности и

нелинейности преобразования таких шагов требуется вдвое меньше по сравнению с сетью Фейстеля. Схема преобразования данных при шифровании

представлена на рис. 14. Здесь введены следующие обозначения: X - исходный блок; Y - зашифрованный блок; Ki - ключевой элемент раунда; NLT и NLT*- нелинейное преобразование текущего и последнего раундов; r- число раундов

(10,12 или 14).

X

 

 

 

 

 

Y

 

NLT

 

NLT

 

NLT*

 

 

 

 

 

 

 

 

K1

 

K2

Kr

 

Kr+1

Рис. 14

Шифруемый блок представляется в виде матрицы байтов (4 × n), n = 4, 6, 8

в зависимости от размера блока. Функция нелинейного преобразования состоит из следующих трех элементарных преобразований, выполняемых последовательно:

Байтовая подстановка - каждый байт блока заменяется новым

значением, извлекаемым из общего для всех байтов вектора замены по правилу

S( X ) = (x7 + x6 + x2 + x) + X-1 (( x7 + x6 + x5 + x4 + 1) mod (x + 1).

Это преобразование начинается с мультипликативной инверсии заменяемого байта в конечном поле GF(28). Затем полученное значение

подвергается аффинному преобразованию. Полиномы этого преобразования

выбраны таким образом, чтобы у итогового отображения отсутствовали точки неподвижности ( S(X) = X ) и «антинеподвижности» ( S( X ) = -X ).

Побайтовый циклический сдвиг в строках матрицы: первая строка

остается неизменной, вторая строка циклически сдвигается влево на 1 байт,

третья и четвертая строки циклически сдвигаются соответственно на 2 и 3

байта для n = 4 или 6 и на 3 и 4 байта для n = 8.

Матричное умножение – полученная на предыдущем шаге матрица умножается слева на следующую матрицу - циркулянт размера 4×4

41

02

03

 

01

01

01

02

 

03

01

M =

01

 

02

.

01

 

03

 

01

01

 

03

02

Элементы обеих умножаемых матриц

интерпретируются как элементы

конечного поля GF(28) т.е. полиномы степени не выше 7, коэффициенты которых являются битами и складываются и умножаются по модулю 2.

В этом конечном поле сложение байтов выполняется как побитовое суммирование по модулю 2, а умножение производится по модулю неприводимого полинома (x8 + x4 + x3 + x + 1). В последнем раунде алгоритма шифрования отсутствует операция умножения слева на матрицу M. Это сделано, чтобы обеспечить эквивалентность структуры прямого и обратного шифрующих преобразований. Целью этого преобразования является диффузия изменения в одном байте на весь столбец матрицы. При выборе матрицы М помимо требований обратимости и простоты описания были приняты следующие желаемые характеристики:

линейность в поле GF(2);

достаточный уровень диффузии;

скорость реализации на 8-битовых процессорах.

Данный шаг преобразования может быть представлен как умножение столбцов преобразуемой матрицы данных, интерпретируемых как полиномы третьей степени с коэффициентами из поля GF(28), на другой полином с коэффициентами из этого же поля по модулю полинома (x 4 + 1 ). Для

обеспечения быстроты вычислений выбран полином c(x) = 03 x3 + 01 x 2 + 01 x + 02.

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

строк матрицы RRot(X)

S-1(RRot( X )) = RRot(S-1( X )).

Кроме того, согласно правилу матричной алгебры по закону ассоциативности можно поменять порядок побитового прибавления ключа по модулю 2 и умножения на матрицу:

M-1 × ( X Kr ) = ( M-1 × X ) ( M-1 × Kr ).

Таким образом, процедура шифрования имеет только следующие отличия:

1)используется вектор замен, обратный в операционном смысле вектору замен прямого преобразования;

2)число байтов, на которые сдвигается каждая строка матрицы данных в операции построчного байта, другое;

42

3) в шаге матричного умножения блок данных умножается слева на матрицу, обратную той, что используется в прямом преобразовании:

0E

0B

0D

09

 

 

09

0E

0B

0D

;

M =

 

09

0E

 

0D

0B

 

 

0B

0D

09

 

 

 

0E

 

4) ключевые элементы используются в обратном порядке, и, кроме того, все элементы, за исключением первого и последнего, должны быть умножены слева на матрицу M-1.

Ключевые элементы генерируются с помощью двух алгоритмов – для ключа размером 128/192 бита и для ключа размером 256 бит. Ключ и ключевая последовательность представляются в виде векторов 4-байтовых слов, которые вырабатываются с использованием достаточно сложных нелинейных и линейных преобразований.

Алгебраический подход, примененный при конструировании шифра, позволил достигнуть, с одной стороны, требуемой сложности алгебраического выражения, описывающего узел в GF(28), а, с другой стороны, - обеспечить минимизацию:

самой большой по величине характеристики корреляции между линейными комбинациями входных и выходных битов (определяет устойчивость к методу линейного криптоанализа);

наибольшего нетривиального значения (определяет устойчивость к методу дифференциального криптоанализа).

Контрольные вопросы и задачи

1.Провести сравнительный анализ расстояний единственности шифра моноалфавитной подстановки для алфавитов английского и русского языков.

2.Зашифровать с помощью системы Вижинера сообщение «Кто боится серого волка?». Ключ: ВИЖИНЕР.

3.Используя метод частотного анализа аффинной криптосистемы, провести дешифровку перехваченного сообщения «ZRIXXYVBMNPO». Предполагается, что открытый текст написан на английском языке, в котором буквы «A-Z,_» имеют цифровые эквиваленты «0 – 26». Диграфы «PK» и «RZ» имеют максимальные частоты повторения в перехваченных шифротекстах, а диграфы «E _» и «S _» наиболее употребительны в открытых текстах.

4.Международный стандарт ISO 10116 использует последовательное двойное и тройное шифрование информации алгоритмом DES с различными ключами. Нарисуйте и поясните преимущества и недостатки двойного и тройного DES.

5.Какие криптосистемы обладают свойством «марковости»? Докажите, что свойством марковости обладает криптосистема DES.

6.Какие отличия имеет криптосистема RIJNDAEL, по сравнению с системой DES?

43

44

3. АСИММЕТРИЧНЫЕ КРИПТОСИСТЕМЫ С ОТКРЫТЫМ КЛЮЧОМ

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

Асимметричные криптосистемы используют методы шифрования с двумя ключами: открытым и секретным. Схема асимметричного шифрования

Сообщение

 

Зашифрованное

 

 

Сообщение

 

 

 

 

 

 

 

 

 

 

Шифрование

 

Расшифрование

 

 

 

 

 

 

 

 

 

 

 

сообщение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Открытый ключ

 

 

 

Секретный

 

 

 

 

 

 

 

ключ

 

Генератор ключей

показана на рис. 15.

Рис. 15 Система с открытым ключом впервые была введена Диффи и Хеллманом

в 1976 году. Суть криптографической системы заключается в следующем. Каждый пользователь U имеет свой собственный алгоритм Eu шифрования

и алгоритм расшифрования Du (или получает его от достоверного источника). Алгоритмы шифрования и расшифрования сообщения x должны обладать следующими свойствами.

Свойство 1. Du(Eu(x)) = x для любого сообщения x и для каждого пользователя U. Каждый пользователь U помещает алгоритм шифрования Eu в отрытой книге. Алгоритм дешифрования Du является секретным и хранится у пользователя U. Если пользователь A хочет послать сообщение x пользователю B, то он пользуется открытым алгоритмом EB пользователя B и выполняет операцию

с = EB(x),

после чего посылает зашифрованное сообщение с пользователю B. Пользователь B дешифрирует принятое сообщение по правилу

DB(с) = DB(EB(x)) = x.

45

Свойство 2. Алгоритмы EU и DU не требуют больших вычислительных затрат и памяти.

Свойство 3. Практически невозможно подобрать алгоритм Du для Eu такой, чтобы Du (Eu(x)) = x для всех возможных x.

Авторы криптосистемы «открытый ключ» предложили для выполнения третьего свойства использовать так называемую одностороннюю функцию. Под односторонней понимается функция f, которую просто вычислить, но найти обратную к ней функцию f-1 крайне затруднительно.

Виды односторонних функций:

1. Экспоненциальный модуль p. Пусть p – простое число, α Zp*,

f: Zp* Zp*, f(x) = αx mod p;

2.RSA - функция. Пусть p и q - нечетные простые числа, n = pq и пусть e – целое число, НОД(e, (p - 1)(q - 1)) = 1, тогда

f: ZnZn, f(x) = x e mod n;

3.Функция Рабина. Пусть n = pq, p и q – взаимно простые числа, каждое из которых конгруэнтно 3 по mod 4, тогда

f : Qn Qn , f(x) = x2 mod n.

Односторонняя функция может с успехом использоваться для аутентификации пользователя. Рассмотрим ситуацию, когда каждый пользователь имеет свой персональный идентификационный (PIN) код xu. В устройстве идентификации (компьютере) хранится функция y = f(xu), которая отождествляется с именем пользователя U. Когда пользователь U хочет получить доступ, он должен передать свое имя и xu. Компьютер вычисляет f(xu) и сравнивает f(xu) = yu. Если эти два значения совпадают, то пользователь получает доступ. В противном случае – нет. Преимуществом такой процедуры является то, что ключ не хранится в компьютере.

Свойство 4. Eu(Du(x)) = x для всех пользователей u и для всех сообщений x. Если пользователь A хочет послать сообщение m пользователю B, сопроводив это сообщение собственной сигнатурой, то он выполняет

преобразование

c = DA(x).

Пользователь B восстанавливает x из c по открытому ключу EA:

EA(c) = EA(DA(x)) = x.

Свойство 5. Практически невозможно подобрать алгоритм DA для Eu, который бы удовлетворял условию Eu (Du (x)) = x для всех возможных x.

46

Пользователь A с большой степенью вероятности может ожидать, что случайная выборка не приведет к ложной идентификации. С другой стороны, любой пользователь может определить x из с, однако только пользователь A знает пару (x, DA(x)).

3.1.Криптосистема RSA

В1978 году Ривест, Шамир и Адлеман опубликовали криптосистему с открытом ключом, которая стала известной как RSA - система. Рассматриваемая система криптографии основывается на следующей теореме.

Теорема Эйлера. Пусть a и n - целые числа. Тогда

НОД(a,n) = 1 aφ(n)

1 mod n ,

 

 

 

где НОД (a, n) – наибольший общий делитель чисел a и n;

 

φ(n) - функция

Эйлера:

 

1

 

 

 

φ(n) = {1i n|НОД(i,n) =1}

= n (1-

p

)

,

 

p|n

 

 

 

 

 

 

 

 

которая определяется для всех целых положительных n и представляет собой число чисел ряда 0, 1, … , n – 1, взаимно простых с n.

Умножим обе части соотношения Эйлера на a, получим aφ(n)+1 a mod n .

Это соотношение используется для доказательства работоспособности

алгоритма RSA.

 

 

 

 

 

 

 

 

 

 

 

Если существует каноническое разложение числа n

 

 

 

 

 

 

 

n = pα1 pα2

,..., pαk ,

 

 

 

тогда

 

 

 

1

2

 

k

 

 

 

 

1

 

1

 

 

 

 

 

 

 

φ(n) = n(1-

1

)(1

)...(1

) =(pα1

pα1

1)(pα2

pα2

1)...(pαk

pαk 1).

 

 

 

 

p1

 

p2

1

 

1

2

2

k

k

 

 

pk

 

 

 

 

 

 

Алгоритм RSA. Каждый пользователь U выбирает два простых числа pu и qu, произведение которых образует число nu = pu qu.. Для простых множителей функция Эйлера определяется как

ц(nu ) = (pu 1)(qu 1).

Далее пользователь U определяет целое число e, 1 < eu < φ(nu) , для которого НОД(eu, φ(nu)) = 1. С помощью алгоритма Евклида пользователь U вычисляет за (2log 2 φ(nu)) шагов целое число du, удовлетворяющее сравнению

eudu 1 modφ(nu ),

1< du <φ(nu ).

Пользователь U публикует числа eu и nu в открытой книге, но держит du в секрете. Числа pu и qu не публикуются.

47

Шифрование сообщения. Если пользователь A хочет передать сообщение x пользователю B (0 < x < nB), то A выбирает из открытой книги число eB и вычисляет зашифрованный текст:

c xeB mod nB .

Расшифрование сообщения. Пользователь B восстанавливает сообщение x из c, вычисляя

D cd B xeB d B x1+lφ(nB ) x mod nB , l – любое целое,

где НОД(x, nB)=1.

Пример 1. Пусть p = 211, q = 223, n = p q = 47053, φ(n) = (p-1)(q-1) = 46620,

открытый ключ e = 16813, секретный ключ d = 19837. Пользователь хочет передать английский текст RSA. Буквам соответствуют следующие номера их положения в английском алфавите: R = 18, S = 19, A = 1. Тогда представление текста будет иметь следующий вид:

x =((1 32) + 19) 32 + 18 = 1650.

После шифрования получаем

c x e mod n = 165016813 mod 47053 = 3071.

Получатель расшифровывает сообщение с помощью секретного ключа:

D c d mod n = 307119837 mod 47053 = 1650.

Пример 2. Рассмотрим случай, когда используется N - значный алфавит и известны положительные числа k и l, k < l, причем значения N k и N l охватывают диапазон около 200 - значного числа. Используется английский алфавит из N = 26 букв, k = 3, l = 4. Шифруемое слово “YES”.

Формирование ключей пользователя А :

а) определяется величина модуля N k < nA <N l. Для этого выбираются простые числа pA=281, qA= 167, nA= pA qA = 281 167 =46927;

б) используя генератор случайных чисел, определяется секретный ключ eA = 39423, удовлетворяющий условиям НОД(eA, pA- 1) = НОД(eA, qA - 1) = 1;

в) вычисляется открытый ключ d A = eA1 mod( pA 1)(qA 1) = 26767 ;

г) числа pA, qA, dA являются секретными.

Шифрование

Пользователь А использует для шифрования ключ (nA, eA) =(46927, 39423). Сообщение представляется в цифровом виде как триграф следующим образом:

24 26 2 +4 26 + 18 = 16346.

После шифрования алгоритмом RSA получаем

1634639423 mod 46927,

что дает число 21166.

Расшифрование

48

Пользователю В известен открытый ключ (nA, dA) = (46927, 26767), и для расшифрования полученного сообщения В использует преобразование

2116626767 mod 46927 = 16346 = “YES”.

Наиболее сложным шагом с вычислительной точки зрения в проделанных выше действиях является операция вычисления модулярной экспоненты 1634639423 mod 46927. Если использовать метод последовательного возведения числа в квадрат, то алгоритмическая сложность может быть оценена величиной O(t3), где t – количество бит в числе.

Система RSA

Открытый ключ

eu , nu для всех пользователей U

Секретный ключ

 

 

du

 

 

Свойства

eu du 1 mod φ(nu)

Сообщение от A к B

0< x < nB

 

Шифрование сообщения

c x

eB

mod nB

пользователем A

 

 

 

 

 

 

 

 

Расшифровка сообщения

D CdB xeB dB

 

 

пользователем B

x1+lφ(nB ) x

 

mod n

B

, (l-любое).

 

 

 

 

 

 

Проблема RSA.Пусть заданы: положительное целое n = p q, положительное целое e такое, что НОД (e, (p-1)(q-1)) = 1, целое число c. Найти целое m такое, что xm = с mod n. Проблема состоит в нахождении e -го корня по модулю составного числа n, при условии, что эквивалентная функция

f : ZnZn f(m) = x e mod n

является подстановкой.

Алгоритм вероятностной атаки на криптосистему RSA.Из алгоритма

RSA следует, что число n определяется как произведение двух чисел (p q), и знание функции Эйлера φ(n) эквивалентно знанию сомножителей факторизации n. Предположим, что ставится задача «взломать» систему RSA, т.е. определить положительное число d, удовлетворяющее условию

aed a mod n

для всех a простых с n. Это эквивалентно тому, что (e d - 1) становится кратным НОК чисел (p - 1), (q - 1).

Предположим, что известно n (являющееся произведением двух простых

чисел) и также некое целое число x, удовлетворяющее сравнению a x 1mod n для всех a , взаимно простых с n. Заметим, что в этом случае x должно быть четным числом, поэтому, не меняя существа задачи, можно вместо x в дальнейшем использовать число x/2. Отсюда следует, что выражение

a x2 1mod n справедливо, по крайней мере, для 50% a из (Z/nZ). Таким образом, если осуществляется тестирование множества случайно выбранных

{ai } и определяется, что во всех случаях выполняется сравнение a x2 1mod n ,

49

тогда с большой степенью вероятности можно утверждать, что все a и n взаимно просты. При этом возможны следующие варианты:

a) x/2 кратно одному из двух чисел (p-1) или (q-1) ( для определенности положим, что оно кратно p), но не кратно обоим этим числам. В этом случае

всегда выполняется сравнение a x2 1mod p , но в 50% попытки сравнения по

модулю q будут приводить к (-1);

б) x/2 не кратно любому из двух чисел (p-1) или (q-1). В этом случае сравнения a x2 1mod p или q (и следовательно, n) выполняются в 25%

попыток; сравнение a x2 ≡ −1mod p или q выполняется в 25% попыток и в

оставшиеся 50% выполняются сравнения a по модулю других простых чисел. Адаптивная атака. Предположим, пользователь А расшифровывает текст не только для себя, но и для противника. Тогда противник может выбрать

случайное число w и присоединить его к шифротексту с: с` = с xe mod n. Пользователь А вычисляет x`=(с`)d mod n = сd(we)d = wx mod n. Противник (зная обратное число w-1) может вычислить сообщение w = x`w-1 mod n.

Циклическая атака. Пусть зашифрованное сообщение имеет вид

с = x e mod n,

K-положительное целое, такое,

что

ceK

= c mod n . Так

как

процедура RSA

эквивалентна подстановке, то

такое

K

существует.

По

этой

причине

ceK 1 = x mod n . Следовательно,

противнику для

раскрытия

системы

достаточно вычислить ce mod n ,

ce2 mod n ,

ce3 mod n и т.д., до тех пор, пока

ceK mod n =C и ceK 1 = x mod n .

Обобщенная циклическая атака. Найти такое наименьшее положительное целое β, чтобы h = НОД(ceβ c,n) >1. Если ceβ = c mod p и ceβ c mod q ,

тогда β = p. Аналогично, если ceβ = c mod q и ceβ c mod p , тогда β = q.

В этом случае число n может быть факторизовано и противник может восстановить сначала d, а затем сообщение x.

Некорректное сообщение. Открытый ключ RSA называется некорректным, если x e = x mod n (например, x = 0, x = 1, x = n - 1). Число некорректных сообщений определяется величиной [1 + НОД(e - 1, p - 1)][1 + НОД(e - 1, q-1)]. Так как (e - 1), (p - 1), (q - 1) –четные числа, то некорректных сообщений будет как минимум девять.

Алгоритм RSA можно использовать для формирования псевдослучайных чисел. Для этого достаточно ответить на вопрос: может ли для заданного шифротекста Y дополнительное знание произвольного количества расшифрований по mod n при различных секретных ключах di = ei mod ϕ(n) помочь дешифрованию по mod n при особом секретном ключе d = 1/e mod ϕ(n). Пусть e1, e2, . . . , el - такая фиксированная последовательность экспонент открытого ключа, что все ei попарно взаимно просты. Выберем RSA-модуль n =

50