АЛГОРИТМ ШИФРОВАНИЯ RSA

advertisement
1
RSA АЛГОРИТМ АСИММЕТРИЧНОГО КОДИРОВАНИЯ
Алгоритм
RSA
предполагает,
что
посланное
закодированное
сообщение может быть прочитано адресатом и только им. В этом алгоритме
используется два ключа – открытый и секретный. Данный алгоритм
привлекателен также в случае, когда большое число субъектов (N) должно
общаться по схеме все-со-всеми. В случае симметричной схемы шифрования
каждый из субъектов каким-то образом должен доставить свои ключи всем
остальным участникам обмена, при этом суммарное число используемых
ключей будет достаточно велико при большом значении N. Применение
асимметричного алгоритма требует лишь рассылки открытых ключей всеми
участниками, суммарное число ключей равно N.
Сообщение
представляется
в
виде
числа
M.
Шифрование
осуществляется с помощью общедоступной функции f(M), и только адресату
известно, как выполнить операцию f-1. Адресат выбирает два больших
простых (prime) числа p и q, которые делает секретными. Он объявляет n=pq
и число d, c (d,p-1)=(d,q-1)=1 (один из возможных способов выполнить это
условие, выбрать d больше чем p/2 и q/2). Шифрование производится по
формуле:
f(M)  Md mod n,
где M и f(M) оба  n-1. Как было показано, может быть вычислено за
разумное время, даже если M, d и n содержит весьма большое число знаков.
Адресат вычисляет M на основе Md, используя свое знание p и q. В
соответствие со следствием 6, если
dc (p-1)1, тогда (Md)e p1.
Исходный текст M получается адресатом из зашифрованного F(M)
путем преобразования: M = (F(M))e (mod pq). Здесь как исходный текст, так и
зашифрованный рассматриваются как длинные двоичные числа.
2
Аналогично (Md)e  qM, если dc 
двум условиям, если cd 
(p-1) (q-1)1.
(q-1)1.
e удовлетворяет этим
Теорема 1 гласит, что мы можем
позволить e=x, когда x является решением уравнения dx + (p-1)(q-1)y = 1.
Так как (Md)e – M делимо на p и q, оно делимо и на pq, следовательно,
мы можем определить M, зная Md, вычислив его значение в степени e и
определив остаток от деления на pq. Для соблюдения секретности важно,
чтобы, зная n, было нельзя вычислить p и q. Если n содержит 100 цифр,
подбор шифра связан с перебором ~1050 комбинаций. Данная проблема
изучается уже около 100 лет. RSA-алгоритм запатентован (20 сентября 1983,
действует до 2000 года).
Теоретически можно предположить, что возможно выполнение
операции f-1, не вычисляя p и q. Но в любом случае задача эта не проста и
разработчики считают ее трудно факторизуемой.
Предположим, что мы имеем зашифрованный текст f(M) и исходный
текст M, и мы хотим найти значения p и q. Нетрудно показать, что таких
исходных данных для решения задачи недостаточно – надо знать все
возможные значения Mi.
Проясним использование алгоритма RSA на конкретном примере.
Выбираем два простые числа p=7; q=17 (на практике эти числа во много раз
длиннее). В этом случае n = p*q будет равно 119. Теперь необходимо
выбрать e, выбираем e=5. Следующий шаг связан с формированием числа d
так, чтобы d*e=1 mod [(p-1)(q-1)]. d=77 (использован расширенный алгоритм
Эвклида). d – секретный ключ, а e и n характеризуют открытый ключ. Пусть
текст, который нам нужно зашифровать представляется M=19. С = Memod n.
Получаем зашифрованный текст C=66. Этот “текст” может быть послан
соответствующему адресату. Получатель дешифрует полученное сообщение,
используя М= Cdmod n и C=66. В результате получается M=19.
На практике общедоступные ключи могут помещаться в специальную
базу данных. При необходимости послать партнеру зашифрованное
сообщение можно сделать сначала запрос его открытого ключа. Получив его,
3
можно запустить программу шифрации, а результат ее работы послать
адресату. На использовании общедоступных ключей базируется и так
называемая
электронная
подпись,
которая
позволяет
однозначно
идентифицировать отправителя. Сходные средства могут применяться для
предотвращения внесения каких-либо корректив в сообщение на пути от
отправителя к получателю. Быстродействующие аппаратные 512-битовые
модули могут обеспечить скорость шифрования на уровне 64 кбит в сек.
Готовятся ИС, способные выполнять такие операции со скоростью 1
Мбайт/сек. Разумный выбор параметра e позволяет заметно ускорить
реализацию алгоритма.
Электронная подпись
В конце любого письма мы привыкли ставить подпись с тем, чтобы
уведомить получателя о том, кто является отправителем данного документа.
Кроме того, подпись ответственного лица придает документу юридическую
силу. По мере внедрения электронных средств доставки документов (факс и
электронная
почта)
проблема
их
достоверности
обрела
крайнюю
актуальность. Ведь копирование любой последовательности битов или
пикселей
не
представляет
никакой
трудности.
Современные
телекоммуникационные каналы уязвимы для перехвата и искажения
пересылаемых документов.
Рассмотрим сначала то, от каких действий злоумышленника должна
защищать система идентификации.

Отказ от выполненных действий. Субъект утверждает, что он не
посылал некоторый документ, хотя на самом деле он его послал.

Модификация
документа.
Получатель
модифицирует
полученный документ и утверждает, что именно такую версию
документа он и получил.
4

Подделка. Субъект фабрикует сообщение и утверждает,
что оно ему прислано.

Перехват.
Злоумышленник
С
перехватывает
сообщение,
посланное А к В с целью модификации.

Маскировка. Посылка сообщения от чужого имени.

Повтор. Злоумышленник С посылает повторно сообщение от А к
Б, перехваченное им ранее.
Решение практически всех этих проблем может быть реализовано с
помощью
электронной
подписи,
базирующейся
на
алгоритме
RSA.
Рассмотрим принципы, на которых базируется электронная подпись.
Пусть имеются секретные коды d, p и q, а также открытые e и n=pq.
Пусть также А передает сообщение DATA адресату Б. Электронная подпись
отправителя А базируется на его секретном ключе и открытом ключе
получателя Б. Сначала отправитель с помощью хэш-функции (SHS - Secure
Hash Standard) генерирует дайджест своего сообщения длиной 160 бит (5
слов). Затем с помощью своего секретного ключа он формирует электронную
подпись. При этом А не может отказаться от того, что именно он послал
сообщение, так как только он знает свой секретный ключ. Электронную
подпись нельзя использовать повторно и подписанный документ нельзя
модифицировать, так как любые модификации неизбежно изменят его
дайджест, а, следовательно, и электронную подпись. Получатель с помощью
открытого ключа дешифрует код электронной подписи, а затем с
использованием дайджеста проверяет ее корректность.
Национальный институт стандартов США принял стандарт DSS
(Digital Signature Standard), в основу которого легли алгоритмы Эль-Гамаля и
RSA.
Рассмотрим
алгоритмы
вычисления
дайджеста
сообщения,
электронной подписи и идентификации отправителя. Начнем с алгоритма
SHA (Secure Hash Algorithm).
5
Сначала сообщение разбивается на блоки длиной 512 бит. Если
длина сообщения не кратна 512, к последнему блоку приписывается справа 1,
после чего он дополняется нулями до 512 бит. В конец последнего блока
записывается код длины сообщения. В результате сообщение приобретает
вид n 16-разрядных двоичных слов M1,M2,…,Mn. M1 содержит первый
символ.
Алгоритм SHA использует 80 логических функций f0,f1,…,f79, которые
производят операции над тремя 32-разрядными словами (B,C,D):
ft(B,C,D) = (B AND C) OR ((NOT B) AND D)
для 0 t 19
ft(B,C,D) = B XOR C XOR D
для 20  t  39
ft(B,C,D) = (B AND C) OR (B AND D) OR (C AND D)
для 40  t  59
ft(B,C,D) = B XOR C XOR D
для 60  t  79
В алгоритме используется также 80 констант K1,K2,…, K79:
Kt = 5A827999
для 0  t  19
Kt = 6ED9EBA1
для 20  t  39
Kt = 8F1BBCDC
для 40  t  59
Kt = CA62C1D6
для 60  t  79
Вводится 5 переменных Hi инициализируемых как:
H0 = 67452301
H1 = EFCDAB89
H2 = 98BADCFE
H3 = 10325476
H4 = C3D2E1F0
Делим массив M на группы из 16 слов W0, W1,…,W15 (W0 самое левое
слово).
Для t = 16 - 79 wt = S1(Wt-3 XOR Wt-8 XOR Wt-14 XOR Wt-16)
Ak означает операцию циклического сдвига влево на k разрядов.
Пусть теперь A = H0, B = H1, C = H2, D = H3, E = H4.
6
for t = 0 to 79 do
TEMP = S5(A) + ft(B,C,D) + E + Wt + Kt. (TEMP – временная переменная).
E = D; D = C; C = S30(B); B = A; A = TEMP;
Пусть H0 = H0 + A; H1 = H1 + B; H2 = H2 + C; H3 = H3 + D; H4 = H4 + E.
В результате обработки массива М будет получено 5 слов H0, H1, H2,
H3, H4 с общей длиной 160 бит, которые и образуют дайджест сообщения.
Полученная кодовая последовательность с высокой степенью уникальности
характеризует сообщение. Любое редактирование сообщения практически
неизбежно
приведет
к
изменению
дайджеста.
Поскольку
алгоритм
вычисления дайджеста общеизвестен, он не может рассматриваться как
гарантия предотвращения модификации сообщения. Смысл вычисления
дайджеста заключается в уменьшении объема данных, подлежащих
шифрованию. Для того чтобы превратить дайджест в электронную подпись
надо воспользоваться секретным ключом. Схема реализации алгоритма DSA
(Digital Signature Standard) показана на рис.
Рис. Схема вычисления и верификации электронной подписи (DSA)
DSA использует следующие параметры:
7
p – простое число, которое при 512 L  1024 удовлетворяет условию
2L-1 < p < 2L, L кратно 64.
q – простой делитель p-1, где 2159 < q < 2160.
g = h(p-1)/q mod p, где h любое целое, для которого 1 < h < p-1 и h(p-1)/q mod p >
1.
x равно случайному или псевдослучайному целому числу, для которого 0 < x
< q.
y = gx mod p.
k равно случайному или псевдослучайному целому числу, для которого 0 < k
< q.
Целые p, q и g могут быть общедоступными и использоваться группой
пользователей. Секретным и открытым ключами являются х и у,
соответственно. Параметры х и k используются только для формирования
электронной цифровой подписи и должны храниться в секрете. Параметр k
генерируется для каждой подписи.
Подпись сообщения M представляет собой два числа r и s,
вычисленные согласно формулам:
r = (gk mod p) mod q
s = (k-1(SHA(M) + xr)) mod q. (здесь k-1 величина обратная k).
SHA(M) – представляет собой дайджест сообщения M (160-битовая
строка). После вычисления r и s следует проверить, не равно ли одно из них
нулю.
Для верификации электронной подписи проверяющая сторона должна
иметь параметры p, q и g, а также открытый ключ отправителя (подписанта)
y.
Пусть M`, r` и s` представляют собой полученное сообщение и
электронную подпись. Получатель начинает верификацию с проверки
условия 0 < r` < q и 0 < s` < q. Если хотя бы одно из условий не выполнено,
электронная подпись некорректна. Далее производится вычисление:
8
w = (s`)-1 mod q
u1 = ((SHA(M`)w) mod q
u2 = ((r`)w) mod q
v = (((g)u1 (y)u2) mod p) mod q.
Если v = r`, верификация подписи завершилась успешно и получатель
может с высокой вероятностью быть уверен, что он получил сообщение от
партнера, владеющего секретным ключом х, соответствующим открытому
ключу у. Если же v не равно r`, то сообщение было модифицировано или
подписано самозванцем. В ссылке 3 на предыдущей странице можно найти
описание алгоритма нахождения (проверки) простых чисел и генерации
псевдослучайных чисел.
DES – АЛГОРИТМ СИММЕТРИЧНОГО КОДИРОВАНИЯ
1. Введение в DES
DES (Data Encryption Standard - Стандарт Шифрования Данных) название Федерального Стандарта Обработки информации (FIPS) 46-3,
который описывает алгоритм шифрования данных (Data Encryption Algorithm
-
DEA).
В терминах
ANSI DEA
определен как стандарт X9.32.
DEA - развитие алгоритма Lucifer, который был разработан в начале 1970-ых
годов компанией IBM; на заключительных стадиях разработки активное
участие принимало NSA и NBS (теперь NIST). С момента опубликования
DEA (более известный как DES), широко изучался и известен как один из
лучших симметричных алгоритмов.
Схема алгоритма:
9
где:
Text
исходный текст (блок 64 бита)
Crypt
зашифрованный блок
Key
64-х разрядный ключ
числа
разрядность на данной ветке алгоритма
P, Pk
перестановки
S
подстановка 6 бит -> 4 бита
L(i)
сдвиг (i -- номер итерации)
xor
сложение по модулю 2
конкатенация битовых строк, причем верхняя спереди
разбиение строки на две, причем первая - наверху
ограниченный точками участок повторяется 16 раз
Перестановки выполняются по обычной формуле D[i]=S[P[i]], где
S
D
исходная строка (массив символов, нумерация с единицы)
результат перестановки (массив символов, нумерация с
единицы)
10
таблица перестановок (массив индексов в строке S)
P
S - подстановка 6->4. В соответствие шести битам ставится четыре.
Подстановка производится по следующему правилу: пусть исходная битовая
строка - /abcdef/, тогда /af/ - номер строки, а /bcde/ - номер столбца. Строка и
столбец определяют местонахождение результата в S-таблице. Например,
при использовании таблицу S6, число 58 (111010) переводится в 13 (1101).
Помимо обычного его применения, этот алгоритм можно использовать
для создания "односторонних" функций; Для этого ключ и исходный текст
меняются местами: в формуле Crypt=DES(Text,Key) исходный текст может
быть несекретным и фиксированным. А Crypt рассматривается как функция
ключа - Key.
DEA оперирует блоками 64-битного размера и использует 56-битный
ключ (8 четных битов полного 64-битного ключа не используются). DEA симметричная криптосистема, определенная как 16-раундовый шифр
Фейстеля (Feistel) была первоначально предназначена для аппаратной
реализации. Когда DEA используется для передачи информации, то чтобы
зашифровать и расшифровать сообщение или чтобы создать и проверить код
подлинности сообщения (MAC) отправитель и получатель должны знать
секретный ключ. DEA может также использоваться одним пользователем,
например
для
шифрования
файлов
на
жестком
диске.
В
многопользовательской среде организовать защищенное распределение
ключа сложно; идеальное решение этой проблемы предлагает криптография
общего ключа.
NIST сертифицирует DES (FIPS 46-1, 46-2, 46-3) каждые пять лет; так,
FIPS 46-3 вновь сертифицировал использование DES в октябре 1999, но в
настоящее время DES одинарной длины разрешен только для устаревших
систем. FIPS 46-3 содержит также определение Triple DES (DES тройной
длины) (TDEA, соответственно X9.52). В ближайшее время DES и Triple DES
11
будут заменены алгоритмом AES (Advanced Encryption Standard Расширенный Стандарт Шифрования).
Алгоритм
DES
широко
применяется
для
защиты
финансовой
информации: так, модуль THALES (Racal) HSM RG7000 полностью
поддерживает операции TripleDES для эмиссии и обработки кредитных карт
VISA, EuroPay и проч. Канальные шифраторы THALES (Racal) DataDryptor
2000
используют
TripleDES
для
прозрачного
шифрования
потоков
информации. Также алгогритм DES используется во многих других
устройствах и решениях THALES-eSECURITY.
2. Способы взлома DES
Несмотря на многолетние усилия исследователей, эффективных атак на
DES не обнаружено. Очевидный метод атаки - полный перебор всех
возможных ключей; этот процесс выполняется в среднем 2**55 шагов.
Вначале предполагалось, что богатый и опытный нападающий может
построить специализированную ЭВМ, способную взломать DES, перебрав
все ключи в течении разумного времени. Позже Hellman [Hel80] нашел
способ усовершенствования полного перебора ключей при условии
достаточного объема памяти. Кроме того выдвигались обвинения, что NSA
намеренно сделало DES уязвимым. Эти соображения позволяли усомниться в
надежости DES, но несмотря на все это, никакого метода взлома DES
обнаружено не было за исключением полного поиска ключа. Стоимость
специализированного компьютера для выполнения такого полного поиска
(при условии нахождения ключа в среднем за 3.5 часа) по оценке Wiener
составляет один миллион долларов [Wie94].
Недавно Wiener уточнил, что теперь равный по стоимости компьютер
найдет ключ за 35 минут. Первую атаку на DES, более эффективная чем
полный поиск, заявили Biham и Shamir [BS93a]; в ней использовался новый
метод известный как дифференциальный криптоанализ. Эта атака требует
12
шифрования 2**47 открытых текстов выбранных нападающим.
Теоретически являясь точкой разрыва, эта атака непрактична из-за
чрезмерных требований к подбору данных и сложности организации атаки по
выбранному открытому текста. Сами авторы этой атаки Biham и Shamir
заявили,
что
считают
DES
защищенным.
Ранее Matsui [Mat94] разработал другую атака, известную как линейный
криптоанализ Этот метод позволяет восстановить ключ DES с помощью
анализа 2**43 известных открытых текстов. Первый экспериментальный
криптоанализ DES, основанный на открытии Matsui, был успешно выполнен
в течении 50 дней на автоматизированных рабочих местах 12 HP 9735.
Разумеется,
при
таких
затратах
атака
по-прежнему
считается
непрактичной. В одном из недавних экспериментов по взлому DES ключ был
найден за 22 часа. По общему мнению криптографов алгоритм DES
одинарной длины уже не является защищенным поскольку на современном
уровне развития вычислительной техники 56-битный ключ стал уязвим для
полного поиска. Фактически DES уже запрещен для использования в
правительственных структурах США и в настоящее время в качестве
стандарта используется Triple DES (DES тройной длины), который будет
заменен новым стандартом AES в ближайшее время.
3. Надежное использование DES
Приведем несколько практических рекомендаций, обеспечивающих
безопасность зашифрованных данных. Ключи DES нужно менять достаточно
часто, чтобы предотвратить атаки, требующие анализа достаточно большого
количества данных. Если говорить о защите передаваемых данных, то
необходимо найти защищенный способ передачи DES ключа от отправителя
к получателю. Обе эти проблемы решаются с помощью алгоритма RSA или
какой-либо другой асимметричной криптосистемы: для каждого сеанса связи
создается новый DES ключ, который зашифровывается общим ключом
13
получателя и в таком виде передается получателю. В таких
обстоятельствах криптосистема RSA выступает как инструмент повышения
защищенности DES (или любого другого секретно-ключевого шифра).
Если вы используете DES для шифрования файлов на жестком диске,
то часто менять ключи малореально, так как для этого необходимо
расшифровать а затем зашифровать все файлы новым ключом. Вместо этого
можно создать главный ключ DES, которым будет зашифрован список
ключей DES, используемых для шифрования файлов; в этом случае главный
ключ можно изменять так часто как это требуется. Но так как главный ключ
более привлекателен для атаки чем отдельные DES ключи, то его разумно
шифровать алгоритмом Triple DES.
На практике используются несколько официально определенных
режимов шифрования DES; каждый из этих режимов имеет разные свойства.
Режим ECB (электронная кодовая книга) последовательно шифрует каждый
64-битный блок открытого текста одним и тем же 56-битным ключом DES. В
режиме CBC (формирование цепочки блока шифра) каждый 64-битный блок
открытого текста перед шифрованием DES ключом логически суммируется
(XOR) с предыдущим блоком зашифрованного текста. Таким образом,
шифрование каждого следующего блока зависит от предыдущих блоков и
потому один и тот же 64-битный блок открытого текста может быть
представлен различными блокам зашифрованного текста в зависимости от
его размещения в исходном сообщении. CBC позволяет защититься от
некоторых атак, но не от полного поиска или дифференциального
криптоанализа. Режим CFB (шифрование с обратной связью) позволяет
использовать DES блоками длиной менее 64 бит. Подробные описания
различных режимов DES приведены в [NIS80]. Режим OFB по существу
позволяет использовать DES как потоковый шифр. Из перечисленных
режимов DES наиболее широко на практике используется режим CBC,
являющийся частью нескольких стандартов. Для повышения защиты можно
использовать режим CBC с тройным шифрованием.
14
4. Стойкость ключа DES
Для шифра DES существуют четыре слабых ключа k при которых Ek
(Ek (m)) = m; также существуют двенадцать частично слабых ключей,
которые составляют пары k1 и k2 такие что Ek1 (Ek2 (m)) = m. Так как
количество всех возможных ключей DES составляет 2**56, то шанс случайно
выбрать слабый или частично слабый ключ составляет 1/(2**52). Поскольку
пользователь выбирает ключ наугад, то слабые ключи можно игнорировать.
Несмотря на это, некоторые пользователи предпочитают проверять, является
ли используемый ключ DES слабым ключом. Такое испытание не отнимет
много времени и не влияет на скорость шифрования.
5. Надежность ключей DES
Вопрос заключается в том, что для двух произвольных ключей k1 и k2
может существовать третий ключ k такой что шифрование двумя первыми
ключами эквивалентно шифрованию третьим ключом то есть Ek (m) = Ek1
(Ek2 (m)) для всех сообщений m. Если это так, то множество всех ключей
образует абстрактную группу, где закон сочетания k1 и k2 замещается
законом k., что весьма понижает защищенность DES, поскольку допускает
атаку “встреча посередине”, при которой ключ DES может быть найден в
приблизительно за 2**28 шагов вместо обычных 2**56. Также при этом
становится бесполезным множественное (двойное и тройное) шифрование
двумя различными ключами поскольку оно будет эквивалентно одинарному
шифрованию некоторым третьим ключом. Однако, ключи
DES не
группируются. Эта проблема, очевидная поначалу, была в конце концов
решена в 1993 году. [CW93]. В результате было установлено, что методы
подобные тройному шифрованию действительно увеличивают защищенность
DES. Проблема может быть сформулирована следующим образом: пусть М
обозначает набор всех возможных сообщений и пусть K обозначает набор
15
всех возможных ключей. Шифрование ключом k принадлежащим K
выполняется перестановкой Ek: М -> М. Набор EK = {Ek: k принадлежит K}
таких перестановок является под-набором группы SМ всех перестановок М > М. Тот факт, что EK (то есть DES) - не группа, есть только факт того, что
EK создает подгруппу СМ, которая является большей чем набор EK.
Фактически, размер этой подгруппы - по крайней мере 2**8300 [CW93]. В
частности многократное шифрование задает большее пространство ключей.
Download