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

Математические основы криптологии.-2

.pdf
Скачиваний:
11
Добавлен:
05.02.2023
Размер:
8.1 Mб
Скачать

341

3.Вычисление корней алгебраических уравнений.

Факторизация

В качестве первого примера однонаправленной функции рассмотрим целочисленное умножение. Прямая задача — вычисление произведения двух очень больших целых чисел р и q, т.е. нахождение значения n=p·q, является относительно несложной задачей.

Обратная задача, называемая задачей факторизации, - разложение на множители большого целого числа, т.е. нахождение делителей p и q большого целого числа

n = p·q,

является практически неразрешимой задачей при достаточно больших значениях n. По современным оценкам теории чисел при целом n2664 и p q для разложения числа n по-

требуется около 1023 операций, т.е. задача практически неразрешима на современных ЭВМ.

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

р+1 являются «гладкими», т. е. имеют только малые простые делители.

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

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

Дискретный логарифм

Другой пример однонаправленной функции — это модульная экспонента с фиксированными основанием и модулем. Пусть а и n - целые числа, такие, что 1 a n.

Тогда модульная экспонента с основанием a по модулю n представляет собой функцию y = ax mod n,

где х – целое число. Естественно записать х = loga (у).

Задачу обращения этой функции в множестве целых чисел называют задачей нахождения дискретного логарифма.

Определение. Число х называют дискретным логарифмом числа y по основанию a и

модулю n, если для всех а Zn найдется такое целое y, что y = ax mod n.

Вычисление дискретных логарифмов (когда заданы a, y и n) примерно такая же труднорешаемая задача, как и разложение на множители.

Определение. Односторонняя функция f: X Y называется односторонней функцией с ловушкой, если f -1(у) можно вычислить за полиномиальное время, имея некоторую

342

дополнительную информацию, т. е. существует функция g(у,t), вычислимая за полиномиальное время и такая, что g(y,t) = f -1(у) для некоторой ловушки t.

Эффективное вычисление обратной функции возможно, если известен "потайной ход" (секретное число, строка или другая информация, ассоциирующаяся с данной функцией). В

качестве примера однонаправленной функции с "потайным ходом" можно привести использование функции Эйлера в криптосистеме RSA.

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

Алгоритм RSA стал первым полноценным алгоритмом с открытым ключом, который может работать как в режиме шифрования данных, так и в режиме электронной цифровой подписи. Основанная на этом алгоритме популяpная криптосистема RSA pазpаботана в 1977

году и получила название в честь ее создателей: Рональда Ривеста (в настоящее вpемя он воз-

главляет компанию RSA Data Security), Ади Шамира и Леонарда Эйдельмана.

В настоящее время RSA является наиболее распространенной криптосистемой с открытым ключом — стандартом де-факто для многих криптографических прложений.

Статус де-факто послужил причиной включения криптосистемы RSA в принятые ранее криптографические стандарты, например в финансовые стандарты США и Франции,

австралийский стандарт управления ключами и многие другие. Криптосистема RSA

применяется в различных протоколах Internet. В криптографические стандарты,

действующие на территории России, RSA не входит, что осложняет ее применение с точки зрения правовых норм. Тем не менее, выбор этой криптосистемы признается оправданным отечественными авторами [8].

Основные определения и теоремы

Надежность алгоритма основывается на трудновычислимых задачах факторизации

(разложения на множители) больших чисел и вычисления дискретных логарифмов.

Определения и теоремы из алгебры, использованные при создании данной криптосистемы рассмотрены в приложении. Приведем здесь только основные утверждения.

1.Криптографические системы являются стойкими, если определенные их параметры являются простыми числами. Число а называется простым, если оно не имеет целых делителей, кроме единицы. Числа а и b называются взаимно простыми, если их наибольший общий делитель НОД(а, b)=1.

2.Функцией Эйлера φ(n) называется число положительных целых чисел меньших n и

взаимно простых с n.

343

Вычисление функции Эйлера φ(n) для больших n в общем случае представляет собой трудоемкую процедуру перебора всех чисел меньших n и проверки для каждого взаимной простоты с n. Однако, эта функция обладает следующими свойствами:

φ(p) = p - 1 p – простого числа.

φ(a, b) = φ(а) φ(b) для любых натуральных взаимно простых а и b,

которые позволяют легко вычислить значение функции Эйлера φ(n) с помощью трех арифметических действий, если известно разложение числа n на простые сомножители p и q:

φ(n)=(p-1)(q-1).

3. В RSA используется теорема, которая носит название китайской теоремы об остатках, так как этот результат был известен еще в древнем Китае, где теорема была предложена китайским математиком первого века Сун Це. Она утверждает, что любое неотрицательное целое число, не превосходящее произведения модулей, можно однозначно восстановить, если известны его вычеты по этим модулям, и названа так потому, что результатом приведения числа а по модулю n является остаток от деления а на n.

Фактически в RSA используется следствие из этой теоремы, утверждающее, что если известно разложение числа n на простые множители n=n1n2...nk, где все ni попарно взаимно просты, и результат приведения числа x по модулю ni i=1,…,k одинаков, то результатом приведения числа x по модулю n будет то же число. То есть x,a – целых чисел

x a mod n x a mod ni i=1,…,k.

4. Теорема Эйлера. Если n>1, то х Zn* (х взаимно простого с n), выполняется сравнение

xφ(n) 1 mod n.

Следствие. х < n и взаимно простого с n можно легко вычислить обратный элемент x-1 в

кольце вычетов Zn из сравнения

x-1 xφ(n)-1 mod n.

Малая теорема Ферма. x GF(p), х 0, выполняется сравнение

хр-1 1 mod p.

Малая теорема Ферма является следствием из теоремы Эйлера, хотя исторически она была доказана раньше, затем Эйлер еѐ обобщил.

Следствие 1: Если p — простое число, то х, взаимно простого с p: xp = х mod p.

Следствие 2: если НОД(е,φ(n))=1 (е - простое относительно φ(n) )

то d-целое, такое, что ed = 1 mod n.

344

На этих математических фактах основан алгоритм RSA.

Алгоpитм RSA

В криптосистеме RSA сообщение m, криптограмма c, открытый ключ Kо, и секретный ключ Кс, принадлежат множеству целых чисел Zn={0, 1, 2,..., n-1}. Множество Zn с

операциями сложения и умножения по модулю n образует кольцо.

Модуль n определяется как составное число равное произведению n=p·q двух больших простых чисел p·и q. Модуль n является открытым параметром алгоритма, а чисела p·и q

секретными параметрами. То есть множители p и q хранят в секрете, а их произведение n

известно всем, кто пользуется данной криптосистемой. Здесь используется односторонняя функция с ловушкой. Зная секретные параметры алгоритма p и q можно легко вычислить функцию Эйлера (n) по формуле

(n)=(p-l)(q-1),

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

задачей.

Функция Эйлера используется в RSA при вычислении ключей.

Открытый ключ Кo = е выбирают случайным образом из множества Z* (n) — чисел меньших (n) и взаимно простых с (n).

Иначе условие еZ* (n) раносильно выполнению двух условий

1<Kо(n), и НОД(Ко, (n))=1,

которым должено удовлетворять случайно выбранное число Кo = е, чтобы оно могло служить открытым ключом в RSA.

Секретный ключ Kc = d вычисляют так, чтобы выполнялось условие

Kc · Ко = е · d 1 mod (n). (*)

То есть, секретный ключ d является обратным элементом к открытому ключу е в

множестве Z (n): d = е -1 mod (n). Решение сравнения (*) можно найти с помощью расширенного алгоритма Евклида.

Заметим, что d и n также взаимно простые числа. Вычисление секретного ключа по открытому является трудновычислимой задачей, если неизвестны секретные параметры алгоритма p и q, так как при этом трудно вычислить значение функции Эйлера, то есть модуля, по которому приводятся результаты операций при вычислении ключей.

При выполнении шифрования и дешифрования вычисления приводятся по модулю n.

Открытый ключ Ко и модуль n сообщают всем, с кем предполагают обмениваться

345

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

Преобразование шифрования определяет криптограмму c через пару (открытый ключ Ко,

сообщение m) в соответствии со следующей формулой:

с Ко (m) = mКо mod n.

В качестве алгоритма быстрого вычисления значения c используют ряд последовательных возведений в квадрат целого m и умножений на m с приведением по модулю n.

Обращение функции с = mКо mod n, т.е. определение значения m по известным значениям

с, Кo и n, является задачей дискретного логарифмирования и практически неосуществимо при n2512.

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

m = DKc (с) = сKc mod n.

Докажем, что в результате возведения криптограммы с в степень секретного ключа Кc

получается исходный текст m. Процесс расшифрования можно записать так:

DKc(E(m)) = DKc(me) mod n= (me)d mod n= med mod n.

По условию выбора ключей

e · d 1 mod (n) (*)

мы можем написать, что k такое что, с учетом свойств (n) : e·d = k ·(n) +1 = k (p-1)(q-1) +1.

Подставим это выражение в показатель степени:

med m (m (p-1)) k (q-1) = (m(q-1))k (p-1).

По малой теореме Ферма (хр-1 1 mod p, p – простое): med mod p m (1) k (q-1) mod p = m mod p.

Аналогично, заменив p на q, получим: med mod q m (1) k (p-1) mod q = m mod q.

Далее, по следствию из китайской теоремы об остатках так как n=pq: med mod n = m mod n, ч.т.д.

Таким образом, если криптограмму с возвести в степень Кс:

сmod n = m,

то в результате восстанавливается исходный открытый текст m.

Именно поэтому для вычисления секретного ключа Кc используют соотношение (*).

346

Процедуры шифрования и расшифрования в криптосистеме RSA

В реальных системах алгоритм RSA реализуется следующим образом. Предположим, что пользователь А хочет передать пользователю В сообщение в зашифрованном виде,

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

пользователя В и пользователя А.

Формирование критпосистемы ( на строне получателя информации) состоит в выборе

параметров алгоритма и вычислении пары ключей:

1. Пользователь В выбирает два больших простых числа p и q. Это секретные

параметры алгоритма, они хранятся в секрете на стороне получатателя.

2. Пользователь В вычисляет значение модуля n криптосистемы как результат умножения первых двух чисел:

n = р·q.

Это общедоступный параметр криптосистемы. Иногда его включают в открытый ключ.

3. Пользователь В, зная секретные параметры алгоритма p и q, вычисляет функцию Эйлера:

(n)=(p-1)(q-1)

и выбирает случайным образом простое число e как значение открытого ключа Ко с

учетом выполнения условий:

Ко< (n) и НОД(Ко, (n))=1.

4. Пользователь В вычисляет значение секретного ключа Кс = d при решении сравнения

Кс Ко-1 mod (n).

Для вычисления обратного элемента в кольце Z (n) используют частный режим работы расширенного алгоритма Евклида для определения НОД. Это можно осуществить, так как получатель В знает пару простых чисел (p,q) и может легко найти (n). Заметим, что Kc и n

должны быть взаимно простыми.

(В принципе открытый и закрытый ключи можно поменять местами, главное, чтобы выполнялось соотношение e·d 1 mod (n) ).

5. Пользователь В пересылает пользователю А пару чисел {e,n} по незащищенному каналу.

Шифрование информации ( на строне отправителя). Если пользователь А хочет передать пользователю В сообщение m, он выполняет следующие шаги.

347

6.Пользователь А разбивает исходный открытый текст m на блоки mi, i=1,…,N, каждый из которых может быть представлен в виде числа меньшего n

mi {0, 1, 2, ... , n-1}.

7.Пользователь А шифрует текст, представленный в виде последовательности чисел mi с

помощью ключа Ko = е по формуле ci = miе mod n

и отправляет криптограмму c1, … ,ci . пользователю В.

Дешифрование информации (на строне получателя):

8. Пользователь В расшифровывает принятую криптограмму c1, ,ci, используя секретный ключ Кc=d, по формуле

mi = cid mod n.

В результате будет получена последовательность чисел, которые представляют собой исходное сообщение m.

Таким образом, когда получатель В, который создает криптосистему, он защищает следующие параметры:

1.секретный ключ Кс;

2.пару чисел (p, q);

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

После шифрования сообщение невозможно раскрыть с помощью открытого ключа. Владелец же закрытого ключа без труда может расшифровать принятое сообщение. Противнику же длятого, чтобы определить значение секретного ключа Кc нужно суметь разложить число n

на множители р и q, чтобы узнать бы "потайной ход" и вычислить значение функции Эйлера как (n) = (p-1) (q-1).

Пример. Рассмотрим небольшой пример, иллюстрирующий применение алгоритма RSA.

Зашифруем сообщение "САВ". Для простоты будем использовать маленькие числа (на практике применяются гораздо большие).

1.Выберем p=3 и q=11.

2.Определим n=3·11=33.

3.Найдем (n) = (p-1)(q-1)= 2·10 = 20.

4.Выберем в качестве секретного ключа d произвольное число взаимно простое с

(n)=20, например, d=3.

5. Выберем открытый ключ е = 7. В качестве такого числа может быть взято

любое число, для которого удовлетворяется соотношение

348

е· d mod (n) = 7·3 mod 20 = 1.

6. Представим шифруемое сообщение как последовательность целых чисел с помощью отображения: А=1, В=2, С=3. Тогда сообщение принимает вид (3,1,2).

Зашифруем сообщение с помощью ключа {е=7, n=33}:

ШТ1 = (37) mod 33 = 2187 mod 33 = 9,

ШТ2 = (17) mod 33 = 1 mod 33 = 1,

ШТ3 = (27) mod 33 = 128 mod 33 = 29.

7. Расшифруем полученное зашифрованное сообщение (9, 1, 29) на основе закрытого ключа { d=3, n=33}:

ИТ1 = (93) mod 33 = 729 mod 33 = 3,

ИТ2= (13) mod 33 = 1 mod 33 = 1,

ИТ3 = (293) mod 33 = 24389 mod 33 = 2.

Надежность RSA. RSA многие годы противостоит интенсивному криптоанализу.

Доказано, что раскрытие шифра RSA эквивалентно решению задачи факторизации больших

(100-200 двоичных разрядов) чисел. Важно, что в этой задаче для любой длины ключа можно дать нижнюю оценку числа операций для раскрытия шифра, а с учетом производительности современных компьютеров оценить и необходимое на это время.

Возможность гарантированно оценить защищенность алгоритма RSA стала одной из причин популярности этой СОК на фоне десятков других схем. Поэтому алгоритм RSA

используется в банковских компьютерных сетях, особенно для работы с удаленными клиентами (обслуживание кредитных карточек). В настоящее время алгоритм RSA активно реализуется как в виде самостоятельных криптографических продуктов, так и в качестве встроенных средств в популярных приложениях, а также используется во многих стандартах.

Криптосистема Эль-Гамаля

Данная система является альтернативой RSA и при равном значении ключа обеспечивает ту же криптостойкость. Однако общего мнения по поводу предпочтительности того или иного метода нет.

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

Основу системы составляют параметры p и g - числа, первое из которых p — простое, а

второе (g Zp) — целое. Данные параметры не являются секретными и могут быть общими для группы пользователей. В реальных схемах шифрования необходимо использовать в

349

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

512...1024 бит.

Cекретный ключ x Zp-1 генерируетcя случайным образом, а открытый ключ y

вычисляется по формуле y = gx mod p.

Для шифрования сообщения m сначала выбирается случайное число k, взаимно простое с p-1, которое называют также сеансовым ключом.

Шифртекстом является пара чисел (a,b), вычисляемая по формулам: a = gk mod p и

b = yk m mod p.

Таким образом, шифртекст в два раза длиннее открытого текста.

Для дешифрования вычисляется

m =

b

mod p.

a x

 

 

Преобразование обратимо, так как

аx= gkx mod p

и

b

 

yk m

 

g xk m

m

mod p.

ax

ax

ax

 

 

 

 

 

 

Число k называют также рандомизатором. Его использование означает, что здесь реализован мнозначный шифр замены. При этом для зашифрования различных блоков

(чисел) открытого текста необходимо использовать различные значения рандомизатора. При использовании одного и того же значения соответсвующие шифртексты (a, b) и (a´, b´),

полученные для блоков открытых текстов m и m´, связаны соотношением b( b´) –1= m(m´) –1

и текст m´можно вычислить, если известен текст m.

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

помимо рассмотренной Z*p, чаще всего используется мультипликативная группа конечного поля GF(2m) и группа точек на эллиптической кривой над конечным полем (см. приложение П.8).

Алгоритм не запатентован, но попадает под действие патента на метод экспо-

ненциального ключевого обмена Диффи-Хеллмана, рассмотренный ниже. Преобразование шифрования/дешифрования Эль Гамаля по сути то же самое, что ключевой обмен по Диффи-

350

Хеллману, за исключением того, что y – это часть ключа, а при шифровании сообщение умножается на yk. Алгоритм цифровой подписи DSA, разработанный NIST (National Institute of Standard and Technology USA) и являющийся частью стандарта DSS частично опирается на рассмотренный метод.

Комбинированный метод шифрования

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

Однако алгоритмы, лежащие в основе криптосистем с открытым ключом, имеют следующие недостатки:

генерация секретных и открытых ключей основана на генерации больших простых чисел, а проверка простоты чисел занимает много процессорного времени;

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

Поэтому быстродействие (скорость шифрования и дешифрования) в криптосистемах с открытым ключом обычно в сотни и тысячи раз меньше быстродействия симметричных криптосистем с секретным ключом.

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

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

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

Пользователи А и В, использующие комбинированный метод шифрования, имеют каждый по паре асимметричных ключей шифрования

(КАо, КАс) и (КВо, КВс).

Если пользователь А хочет передать зашифрованное комбинированым методом сообщение m пользователю В, то порядок его действий будет таков.

1.Создать (например, сгенерировать случайным образом) симметричный ключ,

называемый в этом методе сеансовым ключом Ks.