Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
cryptology-lectures_a4_10pt_2.docx
Скачиваний:
6
Добавлен:
22.12.2018
Размер:
678.28 Кб
Скачать

Глава 12

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

Литература

1. Н. Коблиц, Курс теории чисел и криптографии, Москва, ТВП, 2001 г., 154 с.

2. Введение в криптографию / Под общей ред. В.В. Ященко, СПб, Питер, 2001 г., 288 с.

12.1. Теоретические сведения

Простота чисел

Определение. Говорят, что два целых числа a и b взаимно просты, если НОД (a, b) = 1, т.е. если a и b не имеют

общих делителей, больших 1.

Функция Эйлера

Определение. Для любого целого положительного n функция Эйлера ϕ(n) определяется как число неотрицательных

целых b, меньших n и взаимно простых c n:

def

ϕ(n) = |0 ≤ b < n|НОД(b, n) = 1| .

Легко проверить, что ϕ(1) = 1 и что ϕ(p) = p − 1 для любого простого p. Можно убедиться также, что для любого

простого p

ϕ(pa) = pa − pa−1 = pa 1 −

1

p

.

Для этого достаточно заметить, что числа от 0 до pa − 1 , которые не взаимно просты c pa, – это в точности те

числа, которые делятся на p, а их количество равно pa−1.

Малая теорема Ферма

Теорема. Пусть p – простое число. Любое целое число a удовлетворяет сравнению ap ≡ a(mod p), и любое целое

число a, не делящееся на p, удовлетворяет сравнению ap−1 ≡ 1(mod p).

Доказательство. Предположим сначала, что p a. Покажем, что 0a, 1a, 2a, 3a, . . . , (p − 1)a есть полная система

вычетов по модулю p. В самом деле, если бы какие-либо два из этих чисел, скажем, ia и ja, принадлежали одному

классу вычетов, т.е. ia ≡ ja(mod p), это означало бы, что p | (i − j)a, а так как a не делится на p, мы получили

бы p | (i − j). Так как i и j меньше p, это возможно лишь в случае i = j. Таким образом, числа a, 2a, . . . , (p − 1)a,

рассматриваемые по модулю p, являются перестановкой чисел 1, 2, 3, . . . (p − 1). Отсюда следует, что произведение

всех чисел первого набора сравнимо по модулю p с произведением всех чисел второго набора, т.е. ap−1(p − 1)! ≡

(p − 1)!(mod p). Получаем, что p | (p − 1)!(ap−1 − 1). Так как (p − 1)! не делится на p, получим p | ap−1 − 1, что и

требовалось доказать. Наконец, если умножить обе части сравнения ap−1 ≡ 1(mod p) на a, получится первое сравнение

из утверждения теоремы для случая, когда a не делится на p. Если же a делится на p, то сравнение ap ≡ a(mod p)

является тривиальным, так как обе его части сравнимы с нулём по модулю p. Это завершает доказательство теоремы.

Следствие из малой теоремы Ферма

Следствие. Если a не делится на p и если n ≡ m(mod (p-1)), то an ≡ am(mod p).

Доказательство. Пусть n > m. Так как p − 1 | n − m, то n = m + c(p − 1) для некоторого положительного

целого c. Умножив почленно c сравнений ap−1 ≡ 1(mod p) и сравнение am ≡ am(mod p), получим искомый результат:

an ≡ am(mod p).

Пример. Найти последнюю цифру в семеричной записи числа 21000000.

Решение. Пусть p = 7. Так как 1000000 при делении на p − 1 = 6 даёт остаток 4, получаем 21000000 ≡ 24 = 16 ≡

2(mod 7), и, значит, последняя цифра равна 2.

Китайская теорема об остатках

Теорема. Пусть требуется решить систему сравнений по различным модулям:

12.1. Теоретические сведения

x ≡ a1(mod m1)

x ≡ a2(mod m2)

......

x ≡ ar (mod mr )

причём любые два модуля взаимно просты: НОД(mi, mj ) = 1 для i = j. Тогда эта система разрешима и любые два

решения сравнимы по модулю M = m1m2 · · · mr .

Доказательство. Сначала докажем единственность по модулю M (последнее утверждение теоремы). Пусть x и x

– два решения системы. Положим x = x − x . Тогда x сравним с нулём по любому модулю mi, а значит, и по модулю

M (по пятому свойству сравнений). Теперь покажем, как найти решение x.

Обозначим через Mi = M/mi произведение всех модулей, кроме i-го. Очевидно, что НОД(mi, Mi) = 1 и, следова-

тельно, существует такое целое Ni, что MiNi = 1(mod mi) (число Ni может быть найдено, например, по алгоритму

Евклида). Положим теперь x = i aiMiNi. Тогда для каждого i все слагаемые в этой сумме, за исключением i-го,

делятся на mi, так как mi | Mj для всех i = j. Таким образом, для каждого i имеем x ≡ aiMiNi ≡ ai(mod mi), что и

требовалось доказать.

Мультипликативность функции Эйлера

Следствие. Функция Эйлера обладает свойством мультипликативности , т.е. ϕ(mn) = ϕ(m)ϕ(n), если НОД(m, n) =

1.

Доказательство. Для доказательства необходимо подсчитать количество целых чисел между нулём и mn − 1, не

имеющих общих делителей с mn. Для каждого j из этого множества обозначим за j1 наименьший неотрицательный

вычет по модулю m (т.е. 0 ≤ j1 < m и j ≡ j1(mod m)) и через j2 наименьший неотрицательный вычет по модулю

n(т.е. 0 ≤ j2 < n и j ≡ j2(mod n)). Из китайской теоремы об остатках следует, что каждой паре j1, j2 соответствует

одно и только одно число j в промежутке от 0 до mn − 1, для которого j ≡ j1(mod m) и j ≡ j2(mod n). Заметим,

что число j не имеет общих делителей с mn тогда и только тогда, когда оно не имеет общих делителей с m(это

эквивалентно взаимной простоте j1 и m) и не имеет общих делителей с n(что эквивалентно взаимной простоте j2 и

n). Таким образом, числа j, взаимно простые с mn, находятся во взаимно однозначном соответствии с парами j1, j2,

для которых 0 ≤ j1 < m, НОД(j1, m) = 1, 0 ≤ j2 < n,НОД(j2, n) = 1. Число возможных значений для j1 равно ϕ(m),

а для j2 равно ϕ(n). Итак, число пар равно ϕ(m)ϕ(n). Следствие доказано.

Применение функции Эйлера для факторизации

Пусть известно, что n есть произведение двух простых чисел. Тогда, зная эти числа p и q, можно найти ϕ(n) и

обратно, зная n и ϕ(n), можно найти p и q. Точнее, ϕ(n) можно вычислить по p и q за O(log n) двоичных операций, а

числа p и q можно вычислить по n и ϕ(n) за O(log3 n) двоичных операций.

Применение функции Эйлера для факторизации

Доказательство. Утверждение очевидно, если n чётно, так как в этом случае p = 2, q = n/2 и ϕ(n) = n/2−1; поэтому

предположим, что n нечётно. В силу мультипликативности функции ϕ для n = pq получаем ϕ(n) = (p − 1)(q − 1) =

n + 1 − (p + q). Таким образом, значение ϕ(n) может быть получено из чисел p и q при помощи одного сложения и

одного вычитания. Обратно, предположим, что известны n и ϕ(n), и надо найти p и q. Для неизвестных величин p и

q известны их произведение n и сумма p + q = n + 1 − ϕ(n). Обозначим последнее выражение через 2b (p + q – число

чётное). Но два числа, произведение которых равно n, а сумма 2b, должны быть корнями квадратного уравнения

z2 − 2bz + n = 0. Итак, p и q равны b ± b2 − n. Наибольшее время при вычислении занимает процедура извлечения

квадратного корня: на неё потребуется O(log3 n) двоичных операций. Предложение доказано.

Теорема Эйлера

Теорема. Если НОД(a, m) = 1, то aϕ(m) ≡ 1 (mod m).

Доказательство. Сначала докажем это утверждение в случае, когда m есть степень простого числа: m = pα. Прове-

дём индукцию по α. При α = 1 получается малая теорема Ферма. Пусть α ≥ 2 и формула верна для (α − 1)й степени

α−1

p. Тогда αp −p

= 1 + pα−1b для некоторого целого b. Возводя обе части этого равенства в степень p и используя

тот факт, что все биномиальные коэффициенты в выражении (1 + x)p, кроме первого и последнего, делятся на p,

α

получаем, что αp −p

α

на 1 больше суммы, каждое слагаемое которой делится на pα. Другими словами, αϕ(p ) − 1

делится на pα. Итак, теорема доказана для степеней простых чисел.

Наконец, из мультипликативности функции ϕ следует, что если pα m, то αϕ(m) ≡ 1 (mod pα) (достаточно возвести

α

обе части сравнения αϕ(p ) ≡ 1 (mod pα) в соответствующую степень). Поскольку это верно для любого pα m и

поскольку степени различных простых чисел взаимно просты, из свойств сравнений следует, что αϕ(m) ≡ 1 (mod m).

47

α−2

α−1

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

Следствие из теоремы Эйлера

Следствие. Если НОД(a, m) = 1 и если n – наименьший неотрицательный вычет n по модулю ϕ(m), то an ≡

an (mod m).

Пример. Вычислить 21000000 (mod 77).

Решение. Так как 30 есть наименьшее общее кратное чисел ϕ(7) = 6 и ϕ(11) = 10, на основании приведённого выше

замечания получим 230 ≡ 1 (mod 77). Так как 1000000 = 30 · 33333 + 10, получим 21000000 ≡ 210 ≡ 23 (mod 77). Другой

способ решения заключается в том, чтобы вычислить 21000000 (mod 7) (так как 1000000 = 6 ∗ 166666 + 4, то это 24 ≡ 2),

то же проделать для 21000000 (mod 11) (так как 1000000 делится на 11 − 1, это 1) а затем, используя китайскую теорему

об остатках, в промежутке от 0 до 76 найти такое x, что x ≡ 2 (mod 7) и x ≡ (mod 11).

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

В 1978 г. американцы Р. Ривест, А. Шамир и Л. Адлеман (R.L. Rivest, A. Shamir, L. Adleman) предложили пример

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

шифрования, получившая название по первым буквам имён авторов – система RSA. Эта функция такова, что

· существует достаточно быстрый алгоритм вычисления значений f (x);

· существует достаточно быстрый алгоритм вычисления значений обратной функции f −1(x);

· функция f (x) обладает некоторым секретом , знание которого позволяет быстро вычислять значения f −1(x);

в противном же случае вычисление f −1(x) становится трудно разрешимой в вычислительном отношении зада-

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

перестаёт представлять интерес для лиц, использующих отображение f в качестве шифра.

Однонаправленная функция в RSA

Пусть m и e натуральные числа. Функция f , реализующая схему RSA, устроена следующим образом:

f : x → xe (mod m)

Для дешифрования сообщения a = f (x) достаточно решить сравнение

xe ≡ a (mod m).

(12.1)

(12.2)

При некоторых условиях на m и e это сравнение имеет единственное решение x.

Если показатель степени e в сравнении (12.2) взаимно прост с ϕ(m), то сравнение (12.2) имеет единственное реше-

ние. Для того, чтобы найти его, определим целое число d, удовлетворяющее условиям

de ≡ 1 (mod ϕ(m)),

1 ≤ d < ϕ(m)

(12.3)

Такое число существует, поскольку (e, ϕ(m)) = 1, и притом единственно. Здесь и далее символом (a, b) будет обозна-

чаться наибольший общий делитель чисел a и b.

Классическая теорема Эйлера утверждает, что для каждого числа x, взаимно простого с m, выполняется сравнение

xϕ(m) ≡ 1 (mod m) и, следовательно,

ad ≡ xde ≡ x (mod m)

(12.4)

Таким образом, в предположении (a, m) = 1, единственное решение сравнения (12.2) может быть найдено в виде

x ≡ ad (mod m)

(12.5)

Если дополнительно предположить, что число m состоит из различных простых сомножителей, то сравнение (12.5)

будет выполняться и без предположения (a, m) = 1. Действительно, обозначим r = (a, m) и s = m/r. Тогда ϕ(m)

делится на ϕ(s), а из (12.2) следует, что (x, s) = 1. Подобно (12.4), теперь легко находим x ≡ ad (mod s). А кроме того,

имеем x ≡ 0 ≡ ad (mod r). Получившиеся сравнения в силу (r, s) = 1 дают нам (12.5).

Выбор параметров RSA

Авторы схемы RSA предложили выбирать число m в виде произведения двух простых сомножителей p и q, при-

мерно одинаковых по величине. Так как

ϕ(m) = ϕ(pq) = (p − 1)(q − 1)

то единственное условие на выбор показателя степени e в отображении (12.1) есть

(12.6)

48

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

(e, p − 1) = (e, q − 1) = 1

(12.7)

Итак, лицо, заинтересованное в организации шифрованной переписки с помощью RSA, выбирает два достаточно

больших простых числа p и q. Перемножая их, оно находит число m = pq. Затем выбирается число e, удовлетворяющее

условиям (12.7), вычисляется с помощью (12.6) число ϕ(m) и с помощью (12.3) – число d. Числа m и e публикуются,

число d остаётся секретным. Теперь любой может отправлять зашифрованные с помощью (12.1) сообщения организа-

тору этой системы, а организатор легко сможет дешифровывать их с помощью (12.5).

Практический взлом RSA

Для иллюстрации своего метода Ривест, Шамир и Адлеман зашифровали таким способом некоторую английскую

фразу. Сначала она стандартным образом (a = 01, b = 02, . . . , z = 26, пробел=00) была записана в виде целого числа

x, а затем зашифрована с помощью отображения (12.1) при

m =11438162575788886766932577997614661201021829672124236256256184293

5706935245733897830597123563958705058989075147599290026879543541

и e = 9007. Эти два числа были опубликованы, причём дополнительно сообщалось, что m = pq, где p и q – про-

стые числа, записываемые соответственно 64 и 65 десятичными знаками. Первому, кто дешифрует соответствующее

сообщение

f (x) =9686961375462206147714092225435588290575999112457431987469512093

0816298225145708356931476622883989628013391990551829945157815154

была обещана награда в 100$.

The magic words are squeamish ossifrage

Эта история завершилась спустя 17 лет в 1994 г., когда D. Atkins, M. Graff, A.K. Lenstra и P.C. Leyland сообщили

о дешифровке фразы. Она была вынесена в заголовок статьи, а соответствующие числа p и q оказались равными

p =3490529510847650949147849619903898133417764638493387843990820577,

q =32769132993266709549961988190834461413177642967992942539798288533

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

подготовки примерно 220 дней, на добровольных началах участвовало около 600 человеки и примерно 1600 компью-

теров, объединённых сетью Intranet. Наконец, отметим, что премия в 100$ была передана в Free Software Foundation.

49

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]