Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Математические основы криптологии и криптографические методы и средс

..pdf
Скачиваний:
50
Добавлен:
15.11.2022
Размер:
14.26 Mб
Скачать

В, b - открытый ключ, доступный каждому, кто хочет передать сек­ ретное сообщение В.

Каждый из абонентов находит свой секретный ключ из сравнений

афа = 1(modcp(/-A)), 0 < а < ф (гА), 6фР = 1(шоёф(гв)), 0 < р < ф (гв).

Итак, Абонент Открытые ключи Секретные ключи

А

гА,

а а

В

гв,

Ь Р

Пусть абонент А решает послать сообщение абоненту В: А: т —» В и пусть 0 < т < гв, иначе текст делят на куски длины меньше гв- Сначала А зашифровывает сообщение открытым ключом абонен­ та В, который есть в телефонной книге, и находит: я», = mA(mod rR), 0 < ni\ < Гв, и отправляет абоненту В. Абонент В расшифровывает это сообщение своим секретным ключом: m2=»i\ •'(mod rB), 0 < т2 < гв,

иполучает т2 = т.

Всамом деле: т2= т\ р=(я«р)А= fliAp(mod гв). Но ЛфР = l(mod ф (гв)), следовательно, т2= ffi(mod гв). Но так как 0 < т < гв, 0< гп2< гв, то т2= т.

Пример 50. Пусть абоненты А и В решили установить между собой скрытую связь с открытым ключом. Абонент А выбрал про­ стые числа />1 = 7643 и р2= 8753, их произведение гА= 66 899 179,

функцию Эйлера ф (rA) = pip2(1 - l//>i)(l - 1 /р2) = 66 882 784.

Затем он выбирает случайное число а = 9467 (открытый ключ) и на­

ходит секретный ключ из решения сравнения: а< а = 1 (mod ф (гА)) =

= 9467фа s l(mod 66 882 784), 0 < а < ф (гА), т.е. а = 30 993 427. Абонент В выбрал простые числа qx= 7481 и q2= 9539, их про­

изведение гв = 71 361 259, функцию Эйлера ф (гв) = гв (1-1/^|)(1- 1 /q2) = 71 344 240. Затем он выбирает случайное число Ь = 74 671 (от­ крытый ключ) и находит секретный ключ из решения сравнения:

Лфр з l(mod ф (гв)) = 74 671фр^1(ш<^ 71 344 240), 0 < р < ф (гв), т.е. р = 33 289 711.

Таким образом, имеется следующая таблица: Абонент Открытые ключи Секретные ключи

А

66

899 179,

946 730 993 427

В

71

361 259,

7 467 133 289 711

Абонент

А решает послать сверхсекретное сообщение абоненту

В т = 95 637.

Тогда он шифрует сообщение открытым ключом або­

нента В:

/и, = ///(mod гв) = 9 563 774 671(mod 71 361 259) = 25 963 634. Абонент В, получив это сообщение, расшифровывает его своим сек­

ретным ключом: /и23 w/(mod р) =2 596 363 433 289 71l(mod 71 361 259) >=

=95 637.

2.Надежность системы RSA

Врассмотренной криптосистеме с открытым ключом для рас­ шифровки сообщения т необходимо найти секретный ключ р. Это возможно в двух случаях:

1)если известно разложение гв на простые множители;

2)если известен модуль ф (гв) сравнения 6фР = l(mod ф (гв)).

Но так как rB

= qi q2, то ф (гв) = ф

(qi) ф (q2) = (Яг-\)(Яг - 1) =

=

(<h+qt) + 1

и (qi-q2f = q 2+ q2 -

2 qx q2= ( qx+ q2f - 4 qx q2.

Следовательно, мы имеем равенства:

ф

(Гв) = ГВ - ( qx + q2) + 1,

 

(qi - Яг)2 = ( q i + q if - 4 qt q2,

 

а значит, зная ф (rB), можно решить эту систему и найти q\ и q2,

а зная qi и q2, легко вычислить ф (гв). Таким образом, оба подхода определения ключа р эквивалентны, т.е. задачи - одной сложности. Таким образом, встает задача разложения на простые множители на­ турального числа.

В теории чисел, несмотря на ее многолетнюю историю и на очень интенсивные поиски в течение последних 30 лет, эффективный алгоритм разложения натуральных чисел на множители так и не най­ ден. Конечно, можно, перебирая все простые числа до (гв)1/2 и деля на них гв, найти требуемое разложение. Но учитывая, что количество

простых чисел в этом промежутке асимптотически равно 2ф (гв)1/2ф (In гву \ находим, что при гв, записываемом 1000 десятичными циф­ рами, найдется не менее 10 497 простых чисел, на которые придется делить гв при разложении его на множители, что при современных воз­ можностях вычислительной техники затянется на долгие годы.

Известны и более эффективные алгоритмы разложения целых чисел на множители, чем простой перебор простых делителей, но и они работают очень медленно. Необходимо также отметить, что система RSA обладает мультипликативным свойством. Поясним сказанное. Пусть т х и т2- 2 различных открытых текста, а сх и с2- соответствующие им шифртексты. Заметим, что (тх т2) а= тхат2а =

= сх с2(mod п).

Другими словами, шифртекст открытого текста т = тх т2 есть с = cxc2(mod п). Это свойство, называемое также гомоморфным свойством RSA, позволяет осуществить атаку по выбранному шифртексту. Его нужно учитывать при совмещении схем шифрования на основе RSA и цифровой подписи RSA.

Кроме того, известно еще несколько атак на RSA. Рассмотрим две из них. Первая из них - «Метод бесключевого чтения RSА». Суть заключается в следующем. Криптоаналитику известны открытый ключ (а, п) и шифротекст С. Тогда он подбирает такое число А, для которого выполняется следующее соотношение: C"*(mod п) = С, т.е. криптоаналитик просто проводит А раз зашифрование на открытом ключе перехваченного шифротекста. Это выглядит так: (((C*)a)fl...)fl =

= С* = Ор(яЬ1 = C(mod /1). Найдя такое к, криптоаналитик вычисляет

С* = так =

= m(mod п), т.е. получает открытый текст т.

Пример

51. Пусть абонент А хочет послать сообщение

т = 193 263

абоненту В. А

знает /1 = 212 887 и открытый ключ

а = 3061. Он

зашифровывает

сообщение открытым ключом, т.е.

та= 193 2633061 = С= 35 947, и посылает это число в открытый канал связи. Таким образом, криптоаналитику становится известно сооб­ щение С, модуль п и а. Далее криптоаналитик вычисляет (^(mod п) = = 35 9473061(mod 212 887). Затем он находит такое А, чтобы выполня­

лось С к= 35 9473061Аг= 35 947 = С. Получили к = 1084. И, наконец, вычисляем С* = 35 9471084 = 193 263.

Следующая атака осуществляется на базе общего модуля. Осч новные предпосылки для ее осуществления заключаются в следукх щем. При реализации RSA можно раздать всем абонентам криптосеч ти одинаковый модуль я, но каждому свои значения я, (открыты^ ключ) и а/ (секретный ключ). При этом наиболее очевидная проблему заключается в том, что если одно и то же сообщение когда-нибудь шифровалось разными а,- и а*, причем НОД(я,-, я*) = 1 (как обычно и бывает), то открытый текст может быть раскрыт даже при неиз. вестных а,- и а*.

Таким образом, пусть заданы: т - сообщение, я и Ь - два открьи тых ключа шифрования, п - модуль. Тогда щифротекстами являются с\ = f?!a(mod я ) и с 2= mb(mod /1). Криптоаналитику известны: я, я, с\ и с2. Далее, так как я и b взаимно-простые числа, то воспользовав­ шись результатами подразд. 1.2, можно найти такие целые числа х ц у, что ах + by = 1. Тогда, возведя С\ в степень л:, а с2- в степень у , получим: сг1 с / = (ma)x(mbY = / и ^ = /я1= /я.

Пример 52. Пусть абонент А хочет послать сообщение т = 237 135 другим абонентам В. Абоненту А даны п = 399 799 и от­ крытый ключ а = 4397. Он зашифровывает сообщение открытым ключом, т.е. /и“ = с\ = 237 1354397 = 268 100(mod 399 799), и посылает это число в открытый канал связи. Абонент В хочет также послать сообщение т = 237 135 другим абонентам. Для В даны « = 399 799 и открытый ключ b = 7517. Он зашифровывает сообщение открытым ключом, т.е. ть= с2 = 237 1357517 = 263 851 (mod 399 799), и также посылает это число в открытый канал связи. Таким образом, крип­ тоаналитику известно: зашифрованные сообщения с\ и с2, модуль и, открытые ключи а и Ь. Далее криптоаналитик решает уравнение ах + by = 1 = 4397л: + 7517у и получает л: = -1607 и у = 940. Затем он возводит ci в степень |х|, т.е. cjW= d\ = 268 1001607 = 12 105(mod 399 799), a c2 в степень \y\, т.е. c2w= d2= 263 851940 = 362 154(mod 399 799).

Поскольку х < 0, то

находится {d\)'x= 12 105"1= 39 501(mod

399 799) (при у < 0 искали

бы (ifc)"1). Далее, перемножая (d\)~]-d2 =

= 39 501-362 154 = 237 135(mod 399 799) = /л, получили открытый текст.

3. Проблемы практической реализации RSA

В настоящее время алгоритм RSA активно реализуется как в ви­ де самостоятельных криптографических продуктов, так и в качестве встроенных средств в популярных приложениях. Важнейшей про­ блемой практической реализации является генерация больших про­ стых чисел. Решение задачи «в лоб» - генерация случайного боль­ шого числа п (нечетного) и проверка его делимости на множители от 3 вплоть до /I 0,5 В случае неуспеха следует взять п + 2 и т.д. В принципе, в качестве р и q можно использовать «почти» простые числа, т.е. числа, для которых вероятность того, что они простые, стремится к 1. Но в случае, если использовано составное число, а не простое, криптостойкость RSA падает. Имеются неплохие алгоритмы, которые позволяют генерировать «почти» простые числа с уровнем

о - 100

доверия 2 Поскольку простые числа должны выбираться таким образом,

чтобы факторизовать их произведение было вычислительно невоз­ можно, рекомендуется брать их очень большими и одинаковой дли­ ны. Так, для п - pq длины 1024 бита, р и q должны быть длиной 512 бит. Разность чисел р и q (p- q) также не должна быть маленькой, поскольку в этом случаеp ~ q и, следовательно,р~{п)т Таким об­ разом, разложение п может быть найдено простым делением на все числа порядка (л)1/2.

Кроме того, числа р и q должны быть также «устойчивыми» простыми числами. Число р является устойчивым {strong), если оно удовлетворяет трем условиям:

1) р - \ имеет большой простой делитель, обозначим его как

г(т.е. р = l(mod г));

2)р + 1 имеет большой простой делитель, обозначим как s (т.е. p = s - l(mods));

3 ) г - 1 имеет большой простой делитель, обозначим его как t (т.е. г = l(mod t)).

Условие 1 не позволит успешно факторизовать п (р - 1) методом Полларда, который позволяет быстро разложить число п на множи­ тели, если его делитель р имеет небольшие (скажем, меньше мил­ лиона) простые делители. Условие 2 позволит избежать р + 1 мето­ дом Ульямса, позволяющего разложить п при условии, что р + 1 име­ ет небольшие делители. Условие 3 позволит избежать метода бесключевого чтения RSA (циклической атаки). Если р выбирается слу­

чайно

и имеет довольно большой размер, то, как правило, р - 1

и р + 1

будут иметь большие простые делители. Однако выбор ус­

тойчивых простых чисел не защищает систему от атаки алгоритмом факторизации на основе эллиптических кривых.

Получить устойчивые простые числа можно следующим способом. Генерируем большие простые числа s и t. Затем получаем такое простое число г, что г - 1 делится на t (для этого рассматриваем не­ четные числа вида r = kt+ 1, где к - последовательные натуральные числа, и проверяем их на простоту, пока не найдем простое). Теперь, имея простые г и s, строим новое простое р. Для этого вычисляем р = ((/-' - г I_1) mod rs) +xrs, где x - некоторое целое число, и, про­

веряя р на простоту, находим устойчивое простое число р. Следующая проблема - какой длины ключи следует испо­

льзовать?

Для практической реализации алгоритмов RSA полезно знать оценки трудоемкости разложения простых чисел различной длины, сделанные Шроппелем (табл. 9).

 

 

Таблица 9

 

Оценки трудоемкости реализации RSA

lg п Число операций Примечания

50

1,4Ю10

Раскрываем на суперкомпьютерах

100

2,3-1015

На пределе современных технологий

200

1,2-1023

За пределами современных технологий

400

2,7-1034

Требует существенных изменений

800

1,3-1051

в технологии

Нераскрываем

В конце 1995 года удалось практически реализовать раскрытие шифра RSA для 500-значного ключа. Для этого с помощью сети Ин­ тернет было задействовано 1600 компьютеров. Сами авторы RSA рекомендуют использовать следующие размеры модуля и:

-768 бит —для частных лиц;

-1024 бит - для коммерческой информации;

-2048 бит - для секретной информации.

Третий немаловажный аспект реализации RSA - вычислитель­ ный, приходится использовать аппарат длинной арифметики. Если используется ключ длиной к бит, то для операций по открытому ключу требуется 0(1?) операций, по закрытому ключу - 0(1?) опера­ ций, а для генерации новых ключей требуется 0(к4) операций. По сравнению с тем же алгоритмом DES, RSA требует в тысячи и десят­ ки тысяч раз большее время.

2.3.3. Криптосистема без передачи ключей

Пусть абоненты А, В, С, условились организовать секретную переписку между собой. Для этой цели они выбирают достаточно большое простое число р и такое, что р - 1 хорошо разлагается на не очень большие простые множители. Если среди множителей такого числа кратных нет, то число р - 1 называют евклидовым. Каждый из абонентов независимо один от другого выбирает случайное число, натуральное, взаимно простое с числом р - 1: А, В, С, ... - абоненты; а, Ъ, с, ... - выбранные ими случайные числа. Далее абонент А нахо­ дит число а из условия:

аа= l(mod <p (р)), 0 < а < р - 1;

(9)

абонент В находит число р из условия:

 

6р= l ( m o d ( p ( p ) ) , 0 < p < p - 1,

(10)

где ф (р) - функция Эйлера, а, а - секретные ключи абонента А; Ь, Р - секретные ключи абонента В и т.д. Пусть абонент А решает по­ слать сообщение т абоненту В. Можно предполагать, что 0 < т <р - 1. Тогда он сначала зашифровывает это сообщение своим первым сек­ ретным ключом, находит:

ttti = ma(modp), 0 < mx <p

(11)

и отправляет абоненту В. Абонент В, в свою очередь, зашифровыва­

ет вновь это сообщение также своим первым

ключом:

 

т2= т\ *(mod р), 0 < т2

(12)

и пересылает его обратно абоненту А. Абонент А, получив обратно свое дважды зашифрованное сообщение, шифрует его же в третий

раз своим вторым ключом:

 

# « з = т2“(modр), 0 < т3 <р

(13)

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

т4= wijP(mod р), 0< т 4<р.

В самом деле, из сравнений (10)—(12) имеем* т4 = ///(mod р),

где к = aa£P(mod р - 1).

В силу (9) и (10) к = l(mod ф (/>)). Поэтому т4= /«(mod р), а так как каждое из них положительно и меньшер, то т4 = т.

Пример 53. Пусть абоненты А и В решили установить между собой скрытую связь без передачи ключей. Они выбрали для этого простое число р = 9551. Тогда р 1= 9550. Абонент А выбирает слу­ чайное число а = 8159, а абонент В - 6 = 7159. Абонент А решает

сравнение: 8159a=l(mod ф (9551)), 0 < a < 9550 и находит a = 6639,

а абонент В решает сравнение: 7159Р == l(mod ф (9551)), 0 < Р < 9550 и находит р = 6139.

Абонент А решает послать секретное сообщение абоненту В т = 7032. Тогда он сначала шифрует сообщение своим первым ключом:

т, = /«“(modр) = 703281593(mod 9551) = 153.

Абонент В, получив это сообщение, шифрует его своим первым ключом: т2 = ////(mod р) = 15371 59(mod 9551) = 4896 и пересылает его абоненту А, который, получив зашифрованное сообщение, шиф­ рует его же в третий раз своим вторым ключом: т2=т2 “(mod р) = = 48966639(mod 9551) = 7577 и отправляет его абоненту В, который расшифровывает эту шифротелеграмму при помощи своего второго ключа: т4=т3p(modр) = 75776l39(mod 9551) = 7032.

2.3.4. Алгоритм Эль-Гамаля

Поиски более эффективных систем открытого шифрования при­ вели к тому, что в 1985 году Т .Эль-Гамаль (США) предложил алго­ ритм на основе возведения в степень по модулю большого простого числа р. Криптоалгоритм не запатентован, но попадал под действие патента на метод ключевого обмена Диффи - Хеллмана.

В отличие от RSA метод Эль-Гамаля основан на проблеме дис­ кретного логарифма. Этим он и похож на алгоритм Диффи - Хел­ лмана. Если возводить число в степень в конечном поле достаточно легко, то восстановить аргумент по значению (т.е. найти логарифм) довольно трудно.

Рассмотрим схему алгоритма. Основу системы составляют па­ раметры р и п - числа, первое из которых - простое, а второе - целое.

Абонент А генерирует секретный ключ а и вычисляет открытый ключ у = «“mod р. Если абонент В хочет послать А сообщение т, то он выбирает случайное число к, меньшее р и вычисляет:

yi - пкmod р и уг ~ т ® ук,

где Ф - побитовое сложение по модулю 2 . Затем В посылает (уиуг) А.

А, получив зашифрованное сообщение, восстанавливает его: т = (yi “ mod р) Ф уг.

Известен вариант схемы, когда операция Ф заменяется на ум­ ножение по модулю р. Это удобнее в том смысле, что в первом слу­ чае текст необходимо разбивать на блоки той же длины, что и число j<*mod р. Во втором случае этого не требуется. Значит, можно обра­ батывать блоки текста заранее заданной фиксированной длины, меньшей, чем число р.

Уравнение расшифровки в этом случае будет иметь вид:

т =уг1у\кmod р.

Пример 54. Пусть абоненты А и В решили установить между собой скрытую связь с открытым ключом на базе алгоритма Эль-

Гамаля. Абонент А выбрал простое число р = 1 125 899 906 842 679 и

целое число п = 745 819 352 812 378.

 

Затем абонент А генерирует секретный

ключ а = 725 391 90б

243 661, и вычисляет открытый

ключ у = п

amod р = 745 819 352

812 378 725 391 906 243 661 mod

1 125 899 906 842 679 = 1 124 5^8

734 648 807, и передает числар, п н у в открытый канал.

Пусть абонент Б хочет послать А сообщение т = 4 567 345. Он выбирает случайное число А = 51 394 216 073 587 меньшее р и вы­ числяет: yi = «*mod р = 440 797 012 227 8 8 8 , ./mod р = 1 124 568 7з 4 648 80751394 216073 587 = 380 488 279 630 195, уг = л*ф / = 380 488 2 $з 459 650 и посылает А пару (уь уг).

Абонент А, получив зашифрованное сообщение, восстанавлива­ ет его: т = (y^modp 0 уг = (440 797 012 227 8 8 8 725 391906243 661 mod 1 125 899 906 842 679 0 380 488 283 459 650) = 380 488 279 630 195 0 3$0 488 283 459 650 = 4 567 345.

При использовании метода Эль-Гамаля в системе открытого шифрования с модулем р из 150 знаков достигается та же степень защиты, что для алгоритма RSA с модулем из 200 знаков. Это позво­ ляет в 5-7 раз увеличить скорость обработки информации. Однако в таком варианте открытого шифрования нет подтверждения под­ линности сообщений. Однако схема Эль-Гамаля не лишена опреде­ ленных недостатков.

Среди них можно выделить следующие.

1. Отсутствие семантической стойкости. Если g - примитивный элемент GF(p), то за полиномиальное время можно определить, яв­ ляется ли некоторое число х квадратичным вычетом или нет. Это де­ лается возведением в степень x^'^m od р. Если результат равен 1, то х - квадратичный вычет, если - 1, то х - квадратичный невычет. За­ тем пассивный противник проверяет, являются ли gk и g' квадратич­ ными вычетами. / ' будет квадратичными вычетом тогда и только

тогда, когда /

и / являются квадратичным вычетами. Если это так, то

у2= »i/mod р

будет квадратичным вычетом тогда и только тогда,

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