![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Глава 36.
Схемы шифрования RSA,
Эль Гамаля, Полига-Хеллмана
В частях 5, 6 пособия с согласия авторов использованы материалы книг и работ:
· Ю.В. Романец, П.А. Тимофеев, В.Ф. Шаньгин. Защита информации в компьютерных системах и сетях. Радио и связь, 1999;
· Грушо А.А., Применко Э.А., Тимонина Е.Е. Криптографические протоколы. Йошкар-Ола, 2001;
· Грушо А.А., Тимонина Е.Е., Применко Э.А. Анализ и синтез криптоалгоритмов, Йошкар-Ола, 2000;
· Лекции Фролова А.Б.;
· Работы Семаева И.А..
Основные понятия модулярной арифметики
Запись
a º b (mod n)
читается так: «a сравнимо с b по модулю n». Это соотношение справедливо для целых значений a,b и n ¹ 0, тогда и только тогда, если a = k∙n+ b для некоторого целого k.
Отсюда, в частности, следует n|(a – b). Это читается как «n делит (a– b)».
Если a º b (mod n), то b называют вычетом числа a по модулю n.
Операцию нахождения вычета числа a по модулю n (mod n)
называют приведением числа a по модулю n или приведением по модулю.
Множество Z/n = {0,1,2,..,,(n –1)} с бинарными операциями сложения по модулю n и умножения по модулю n называют кольцом вычетов по модулю n. Множество {0,1,2,..,,
(n –1)}называют полным набором положительных вычетов по модулю n. Это означает, что для любого целого a (a > 0) его вычет r по модулю n есть некоторое целое число из Z/n, определяемое из соотношения
a= k∙n+ r,
где k – целое число, r остаток от деления a на n. Например, для n=12 полный набор вычетов: {0,1,2,…,11}.
Приведение по модулю n является гомоморфным отображением кольца целых чисел в кольцо целых по модулю n. Поэтому мы можем либо сначала приводить по модулю n, а затем выполнять операции сложения, умножения, либо сначала выполнять операции, а затем приводить по модулю n. Легко проверяется, что
(a + b) mod n = [a (mod n) + b (mod n)] mod n,
(a – b) mod n = [a (mod n) – b (mod n)] mod n,
(a ∙ b) mod n = [a (mod n) ∙ b (mod n)] mod n,
[a ∙ (b + c)] mod n = {[a∙ b (mod n)] + [a∙ c (mod n)]} mod n.
Вычисление степени числа a по модулю n
ax mod n
можно выполнить как ряд умножений и последним действием выполнить деление. Модно вычислить это число быстрее, производя возведение в степень как ряд последовательных умножений совместно с приведением по модулю. Это особенно заметно, если работать с длинными числами (200 бит и более). Например, если нужно вычислить
a8 mod n,
не следует применять примитивный подход с выполнением семи перемножений и одного приведения по модулю громадного числа:
(a ∙ a ∙ a ∙ a ∙ a ∙ a ∙ a ∙ a) mod n.
Вместо этого выполняют три малых умножения и три малых приведения по модулю:
((a2 mod n)2 mod n)2 mod n.
Тем же способом вычисляют
a16 mod n = (((a2 mod n)2 mod n)2 mod n)2 mod n.
Вычисление
ax mod n,
где x не является степенью 2, лишь немного сложнее. Двоичная запись числа x позволяет представить число x как сумму степеней 2:
x = 25(10) ® 1 1 0 0 1(2) – двоичное представление числа 25, поэтому 25 = 24 + 23 + 20.
Тогда
a25 mod n = (a∙a24) mod n = (a∙a8∙a16) mod n =
= a ∙ ((a2)2)2 ∙ (((a2)2)2)2 mod n = ((((a2 ∙ a)2)2)2 ∙ a) mod n.
При разумном накоплении промежуточных результатов потребуется только шесть умножений:
(((((((a2 mod n) ∙a) mod n)2 mod n)2 mod n)2 mod n) ∙ a) mod n.
Поскольку многие алгоритмы шифрования основаны на возведении в степень по модулю n, целесообразно использовать возможности быстрого возведения в степень по модулю n. Справедливо следующее
УТВЕРЖДЕНИЕ. Чтобы вычислить степень mn, где m элемент некоторого кольца вычетов, а n – некоторое натуральное число, достаточно выполнить не более 2[log2n] умножений, где [log2n] – целая часть числа log2n.
ДОКАЗАТЕЛЬСТВО. Пусть 2k-1 n<2k. Тогда [log2n]=k-1. Запишем n в двоичной системе счисления
.
Теперь mn можно представить в виде
mn=
Для получения значений чисел 1,m, m2, m4,…, достаточно выполнить k-1 умножений (возведений в квадрат). Для получения значения mn некоторые из приведенных чисел следует перемножить. Их не более k-1. Следовательно, для получения mn потребуется не более 2(k-1)= 2[log2n] умножений.
Алгоритм Евклида для нахождения наибольшего общего делителя. Целое число a делит без остатка другое целое число b, если, и только если
b = k ∙ a
для некоторого целого числа k (т.е. остаток отделения равен 0). В этом случае a называют делителем числа b или множителем в разложении числа b на множители.
Пусть a – целое число, большее 1. Тогда a является простым числом, если его единственными положительными делителями будут 1 и само a, в противном случае a называется составным.
Любое целое n >1 может быть представлено единственным образом с точностью до порядка сомножителей как произведение простых.
Существенный с точки зрения криптографии факт состоит в том, что не известно никакого эффективного алгоритма разложения чисел на множители.
Наибольший общий делитель чисел a и b, обозначаемый как НОД (a,b) или просто (a,b), – это наибольшее целое, делящее одновременно числа a и b. В эквивалентной форме (a,b) – это то единственное натуральное число, которое делит a и b и делится на любое целое, делящее и a и b. Если НОД (a,b)=1, то целые a и b – взаимно простые.
Наибольший общий делитель может быть вычислен с помощью алгоритма Евклида. Опишем алгоритм Евклида для нахождения НОД(a,b). Введем обозначения: qi – частное;
ri – остаток. Тогда алгоритм можно представить в виде следующей цепочки равенств:
a = b ∙q1 + r1, 0 < r1< b,
b = r1 ∙ q2 + r2, 0 < r2< r1,
r1 = r2 ∙ q3 + r3, 0 < r3< r2,
M M
rk–2 = rk–1 ∙ qk + rk, 0 < rk< rk–1,
rk–1 = rk ∙ qk+1.
Остановка гарантируется, поскольку остатки ri от делений образуют строго убывающую последовательность натуральных чисел. Из этой цепочки немедленно получаем, что rk есть общий делитель чисел a и b и, более того, что любой общий делитель чисел a и b делит и rk. Таким образом, rk = НОД(a, b) или rk = (a, b).
УТВЕРЖДЕНИЕ. Пусть a и b натуральные числа, a<b. Тогда число k операций последовательного деления в алгоритме Евклида, необходимых для отыскания значения НОД (a,b), удовлетворяет неравенству
.
При операции умножения действительных чисел нетрудно вычислить мультипликативную обратную величину a–1 для ненулевого числа a:
a–1 =1/a или a ∙ a–1 =1.
Например, мультипликативная обратная величина от числа 4 равна 1/4, поскольку 4 =1.
При операции умножения по модулю n в кольце Z/n={0,1,2,..,(n –1)} вычисление обратной величины является более сложной задачей. Например, решение сравнения
4∙x º1 (mod 7) эквивалентно нахождению таких значений x и k, что 4∙x º 7∙k +1, где x и k – целые числа.
Общая формулировка этой задачи – нахождение такого целого числа x, что
a∙x (mod n) =1, или a–1 º x (mod n)
Решение этой задачи иногда существует, а иногда его нет. Например, обратная величина для числа 5 по модулю 14 равна 3, поскольку 5∙3=15 º 1 (mod 14). С другой стороны, число 2 не имеет обратной величины по модулю 14. Вообще сравнение a–1 º x (mod n) имеет единственное решение, тогда и только тогда когда a и n – взаимно простые числа.
В этом случае говорят, что элемент a обратим и его обратный элемент a–1 равен x. Часто элемент a–1 обозначают через . Надо всегда понимать, что это целый положительный вычет по модулю n.
Сформулируем основные способы нахождения обратных величин. Пусть aÎ{0,1,2,…,n–1}. Если НОД (a,n) =1, то a∙i (mod n) при i {0,1,2,…,n–1} является перестановкой множества {0,1,2,…,n–1}. Например, если a = 3 и n = 7 (НОД (3,7) =1), то 3∙i (mod 7) при последовательных значенияхi равных 0, 1, 2, …, 6 является последовательностью 0, 3, 6, 2, 5, 1, 4, т.е. перестановкой множества чисел 0, 1, 2, …, 6. Это становится неверным, когда НОД (a, n) ¹ 1. Например, если a = 2 и n = 6, то 2∙i (mod 6) принимает значения 0, 2, 4, 0, 2, 4 при значениях iравных 0, 1, 2, …, 5. Если НОД (a,n) =1, то для a всегда существует обратное число a–1, 0 < a–1 < n, такое, что a∙a–1 º1 (mod n).
Как уже отмечалось, набор целых чисел от 0 до n –1 называют полным набором вычетов по модулю n. Это означает, что для любого целого числа a (a>0) его вычет r = a (mod n) – это некоторое целое число в интервале от 0 до n–1.
Выделим из полного набора вычетов подмножество G вычетов, взаимно простых с n. Такое подмножество называют приведенным набором вычетов, или совместно с операцией умножения по модулю n это множество называют мультипликативной группой G кольца вычетов Z/n. Дело в том, что произведение по модулю n таких вычетов является элементом того же множества G. Например, пусть модуль n=11 – простое число. Полный набор вычетов по модулю 11 есть множество {0, 1, 2, …, 10}. При формировании приведенного набора вычетов из них удаляется только один элемент – 0. Приведенный набор вычетов по модулю 11 имеет 11 – 1 = 10 элементов, G={1, 2, …, 10}. Вообще приведенный набор вычетов по модулю простого числа n имеет n –1 элементов.
Пусть модуль n =10. Полный набор вычетов по модулю n =10 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. Из них только 1, 3, 7, 9 не имеют общего сомножителя с числом 10, то есть обратимы. Поэтому приведенный набор вычетов по модулю 10 равен G={1, 3, 7, 9}. При формировании этого приведенного набора были исключены элементы:
0 (1 элемент),
кратные 2 (4 элемента),
кратные 5 (1 элемент),
т.е. всего шесть элементов. Вычитая их из 10, получаем 10 – 1 – 4 – 1 = 4, т.е. четыре элемента в приведенном наборе (в мультипликативной группе кольца вычетов Z/10).
Для произведения простых чисел p∙q=n приведенный набор вычетов имеет (p –1)
(q –1) элементов. При n=p∙q=2∙5=10 число элементов в приведенном наборе (p – 1)(q – 1) = = (2 – 1) (5 –1) = 4. Например, приведенный набор вычетов по модулю 27=33 имеет 18 элементов:
{1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26}.
Из полного набора вычетов исключены элементы, кратные 3 (всего девять элементов). Для модуля в виде простой степени nr приведенный набор вычетов имеет nr–1 (n –1) элементов. При n = 3, r = 3 получаем 33–1 (3 –1) = 32 ∙ 2 =18.
Функция Эйлера j(n) характеризует число элементов в приведенном наборе вычетов, ее значение совпадает с числом элементов |G| мультипликативной группы вычетов.
Модуль n | Функция j(n) |
n – простое n2 … nr | n –1 n (n –1) … nr–1 (n – 1) |
n= p∙q (p, q – простые)
…
n= ![]() | (p – 1)(q – 1)
…
![]() |
Иначе говоря, значение функция j(n) – это количество положительных целых, меньших n, которые взаимно просты с n.
Любой элемент a из группы G порождает подгруппу H =<a>={a,a2,a3,…,am}
Относительно умножения по модулю n порядок группы =<a>={a,a2,a3,…,am} (число ее элементов), которой совпадает с порядком элемента a – наименьшим натуральным числом m, при котором am º1 (mod n). Для g из G и H={h1,h2,.., hm} положим gH={gh1,gh2,…ghm}. Легко видеть, что |H|=|gH| и при g не принадлежащим H их пересечение пусто. Любая группа имеет разложение по левым (правым) смежным классам по своей подгруппе, G=e (G=
), e – нейтральный элемент (в нашем случае 1). Классы – подмножества
(попарно не пересекаются и в объединении дают G). Из сказанного следует, что k|H|=|G| (теорема Лагранжа) и так как |H| в нашем случае совпадает с порядком элемента a, |H|= m, то m делит |G|=j(n). По этой причине аj(n) =аcm для некоторого с и аj(n) =аcm=
º(1)с(mod n) для любого элемента а из G. Таким образом, справедливы теоремы:
· малая теорема Ферма: если n– простое и НОД (a,n)=1, то an–1 º1 (mod n);
· теорема Эйлера: если НОД (a,n) =1, то aj(n) º1 (mod n).
Основные способы нахождения обратных величин a–1 º 1 (mod n).
1. Проверить поочередно значения 1, 2,..., n–1, пока не будет найден a–1 º1 (mod n), такой, что a∙a–1 (mod n) º 1.
2. Если известна функция Эйлера j(n), то можно вычислить a–1 (mod n) º aj(n)–1 (mod n), используя алгоритм быстрого возведения в степень.
3. Если функция Эйлера j(n) не известна, можно использовать расширенный алгоритм Евклида.
Проиллюстрируем эти способы на числовых примерах.
1. Поочередная проверка значений 1, 2,..., n – 1, пока не будет найден x = a–1 (mod n), такой что a∙x º 1 (mod n).
Пусть n = 7, a = 5. Требуется найти x = a–1 (mod n).
a∙ x º 1 (mod n) или 5∙x º 1 (mod 7).
Получаем x = 5–1 (mod 7) = 3. Результаты проверки сведены в таблицу.
x | 5 * x | 5 * x (mod 7) |
3 | 1 |
2. Нахождение a–1 (mod n), если известна функция Эйлера j(n).
Пусть n=7, a=5. Найти x=a–1 (mod n)=5–1 (mod 7). Модуль n=7 – простое число.
Поэтому функция Эйлера j(n)=j(7)=n–1=6. Обратная величина от 5 по mod 7
a–1 (mod n) = aj(n)–1 (mod n) =
= 56–1 mod 7 = 55 mod 7 = (52 mod 7)(53 mod 7) mod 7 =
= (25 mod 7)(125 mod 7) mod 7 = (4 * 6) mod 7 = 24 mod 7 = 3.
Итак, x = 5–1 (mod 7) = 3.
3. Нахождение обратной величины a–1 (mod n) с помощью расширенного алгоритма Евклида.
Расширенный алгоритм Евклида для нахождения обратных элементов (относительно умножения) кольца вычетов. Алгоритм Евклида обобщают и представляют в нескольких формах, которые имеют большое практическое значение.
Форма1. В этой форме во время вычисления НОД(a,b) попутно вычисляют такие целые числа u1 и u2, что
a∙u1 + b∙u2 = НОД (a,b).
Это обобщение (расширение) алгоритма Евклида удобно описать, используя векторные обозначения. При заданных неотрицательных целых числах a и b этот алгоритм определяет вектор (u1, u2, u3), такой, что
a∙u1 + b∙u2 = u3 = НОД (a, b).
В процессе вычисления используются вспомогательные векторы (v1, v2, v3), (t1, t2, t3). Действия с векторами производятся таким образом, что в течение всего процесса вычисления выполняются соотношения
a∙t1 + b∙t2 = t3, a∙u1 + b∙u2 = u3, a∙v1 + b∙v2 = v3.
Для вычисления обратной величины a–1 (mod n) используется частный режим работы расширенного алгоритма Евклида, при котором b = n, НОД (a,n) = 1, и этот алгоритм определяет вектор (u1, u2, u3), такой, что
u3 =1, a∙u1 + n∙u2 = НОД (a,n) =1,
(a∙u1 + n∙u2) mod n º a∙u1 (mod n) º 1,
a–1 (mod n) º u1 (mod n).
Шаги алгоритма:
1. Начальная установка.
Установить (u1, u2, u3): = (0, 1, n),
(v1, v2, v3): = (1, 0, a).
2. u3 =1?. Если u3 =1, то алгоритм заканчивается.
3. Разделить, вычесть.
Установить q: = [u3/v3].
Затем установить
(t1, t2, t3): = (u1, u2, u3) – (v1, v2, v3)∙q,
(u1, u2, u3): = (v1, v2, v3),
(v1, v2, v3): = (t1, t2, t3).
Возвратиться к шагу 2.
Пусть з аданы модуль n = 23 и число a = 5. Найти обратное число a–1 (mod 23), т.е. x = 5–1 (mod 23).
Используя расширенный алгоритм Евклида, выполним вычисления, записывая результаты отдельных шагов в следующей таблице.
q | u1 | u2 | u3 | v1 | v2 | v3 |
– – | –4 –9 | –1 | n = 23 | –4 –9 | –1 | a = 5 |
При u3 =1, u1 = –9, u2 = 2
(a∙u1 + n∙u2 ) mod n = (5∙(– 9) + 23∙2) mod 23 = 5∙(– 9) mod 23 º 1,
a–1 (mod n) = 5–1 (mod 23) = (– 9) mod 23 = (– 9 + 23) mod 23 = 14.
Итак, x = 5–1 (mod 23) º 14 (mod 23) = 14.
Форма 2. Пусть НОД(а,n)=1, a>0, n>0. Рассматривается задача поиска целочисленного решения (x,y) уравнения a∙x-n∙y=1. Для решения задачи используют сначала алгоритм Евклида:
a = n ∙q0 + r1
n = r1 ∙ q1 + r2
r1 = r2 ∙ q2 + r3
r2 = r3 ∙ q3 + r4
…………………
rk–2 = rk–1 ∙ qk-1 + rk
rk–1 = rk ∙ qk +0
Находят последовательность q0, q1, q2,…,qk. Затем рекуррентно строят P0,Р1,Р2,…,Рk и Q0,Q1,Q2,…,Qk. Полагают
P-2=0, P-1=1 и Pj=qjPj-1+ Pj-2 для j 0,
Q-2=1, Q-1=0 и Qj=qjQj-1+Qj-2 для j 0.
Искомые значения x, y находятся по формулам
.
Обратный элемент а-1= (modn) для числа а есть решение уравнения
Криптосистема шифрования данных RSA
Алгоритм RSA предложили в 1978 г. три автора: Р. Райвест (Rivest), А. Шамир (Shamir) и А. Адлеман (Adleman). Алгоритм получил свое название по первым буквам фамилий его авторов. Алгоритм RSA стал первым полноценным алгоритмом с открытым ключом, который может работать как в режиме шифрования данных, так и в режиме электронной цифровой подписи. Надежность алгоритма основывается на трудности факторизации больших чисел.
В криптосистеме RSA открытый ключ Ко, секретный ключ kс, сообщение М и криптограмма С принадлежат кольцу целых чисел Z/N по модулю N
Z/N = {0, 1, 2,..., N–1},
где N= P∙Q, P и Q – случайные большие простые числа. Открытый ключ Ко выбирают случайным образом так, чтобы выполнялись условия:
1< Ко £ j (N),
НОД (Ко, j (N)) =1,
j (N)=(P –1) (Q –1),
где j (N) – функция Эйлера – количество положительных целых чисел в интервале от 1 до N взаимно простых с N.
В силу НОД (Ко, j(N)) =1 однозначно, используя расширенный алгоритм Евклида, вычисляется секретный ключ kс, такой, что
kс Ко º 1 (mod j(N)).
Это можно осуществить, так как получатель В знает пару простых чисел (P,Q) и может легко найти j (N). Открытый ключ Ко используют для шифрования данных, а секретный ключ kс – для расшифрования. Криптограмма С определяется через пару (открытый ключ Ко, сообщение М) C = (mod N). В качестве алгоритма быстрого вычисления значения C используют ряд последовательных возведений в квадрат целого M и умножений на M с приведением по модулю N.
Обращение функции C= (mod N), то есть определение значения M по известным значениям C, Кв и N, практически не осуществимо при N» 2 512. Однако обратную задачу, т.е. задачу расшифрования криптограммы С, можно решить, используя пару (секретный ключ kс, криптограмма С) по следующей формуле расшифрования: М =
(mod N).
Проведем подробное обоснование справедливости этой формулы. Процесс расшифрования можно записать так:
= M (mod N).
Величина j (N) играет важную роль в теореме Эйлера, которая утверждает, что если НОД(x, N)=1, то xj(N) º 1 (mod N), или в несколько более общей форме
xn×j(N)+1 º x (mod N).
Но как раз из kс∙Ко º 1 (mod j(N)) следует kс∙Ко = n∙j (N)+1 при некотором n. Поэтому для (М, N)=1 вытекает
= М n×j(N)+1=
ºM (mod N).
При (М, N)≠1 следует воспользоваться следующим утверждением: если P и Q – большие простые числа, К0∙kc(modj(N)) = 1, то для любого х, 0£ x<N, N=P∙Q:
(х )
(modN) = x.
ДОКАЗАТЕЛЬСТВО. Пусть НОД(х,N) =1. Тогда
(х )
= х
= x
.
Поэтому по теореме Эйлера
(х )
(modN) = (х(x
(modN)))(modN)= (x×1)(modN) = x.
Если НОД(х,N) ¹ 1, то или х=0(modN), или НОД(х,N) = P, или НОД(х,N) =Q. Если
х =0(modN), то х
=0(modN). Пусть НОД(х,N)=P. Тогда х=х
P, где (х
, N) =1.
х
= x
= Px
P
x
º y(modP∙Q).
Так как (х , N) =1, то x
=1 (modN).
Если x P
x
P=y(mod(P∙Q)), то x
P
x
P=PQc+y, следовательно, y=Py
. Тогда x
P
x
º y
(modQ). Следовательно,
x ((Pх
)
)
º y
(modQ).
По теореме Ферма z
º 1 (modQ). Поэтому x
º y
(modQ) и
x= x P(mod(PQ)) = y (modN) º х
(modN),
что и требовалось доказать.
Открытый и шифрованный тексты эффективно вычисляются, если известны Ко и kc при помощи алгоритма быстрого возведения в степень. Если искать секретный ключ kc по известному открытому ключу Ко, то надо знать j(N).
Таким образом, получатель В, который создает криптосистему, защищает два параметра: 1) секретный ключ kв и 2) пару чисел (P,Q), произведение которых дает значение модуля N. С другой стороны, получатель В открывает значение модуля N и открытый ключ Кв.
Противнику известны лишь значения Кв и N. Если бы он смог разложить число N на множители P и Q, то он узнал бы «потайной ход» – тройку чисел {P,Q,Кв}, вычислил значение функции Эйлера j (N)=(P –1) (Q –1)
и определил значение секретного ключа kв.
Однако, как уже отмечалось, разложение очень большого N на множители вычислительно не осуществимо (при условии, что длины выбранных P и Q составляют не менее 100 десятичных знаков). Для обеспечения максимальной безопасности выбирают P и Q равной длины и хранят в секрете.
Процедуры шифрования и расшифрования в криптосистеме RSA. Предположим, что пользователь А хочет передать пользователю В сообщение в зашифрованном виде, используя криптосистему RSA. В таком случае пользователь А выступает в роли отправителя сообщения, а пользователь В – в роли получателя. Как отмечалось выше, криптосистему RSA должен сформировать получатель сообщения, т.е. пользователь В. Рассмотрим последовательность действий пользователя В и пользователя А.
1. Пользователь В выбирает два произвольных больших простых числа P и Q.
2. Пользователь В вычисляет значение модуля N = P∙Q.
3. Пользователь В вычисляет функцию Эйлера j(N) = (P –1) (Q –1)
и выбирает случайным образом значение открытого ключа Кo с учетом выполнения условий: 1< Кo £ j(N), НОД (Кo, j(N)) =1.
4. Пользователь В вычисляет значение секретного ключа kc, используя расширенный алгоритм Евклида при решении сравнения kс º Ко–1 (mod j(N)).
5. Пользователь В пересылает пользователю А пару чисел (N, Кo) по незащищенному каналу.
Если пользователь А хочет передать пользователю В сообщение М, он выполняет следующие шаги.
6. Пользователь А разбивает исходный открытый текст М на блоки, каждый из которых может быть представлен в виде числа Мi {0, 1, 2,..., N –1}.
7. Пользователь А шифрует текст, представленный в виде последовательности чисел Мi по формуле Ci= (mod N) и отправляет криптограмму С1, С2, С3,..., Ci,... пользователю В.
8. Пользователь В расшифровывает принятую криптограмму С1, С2, С3,..., Ci,...,
используя секретный ключ kc, по формуле Мi = (mod N).
В результате будет получена последовательность чисел Мi, которые представляют собой исходное сообщение М. Чтобы алгоритм RSA имел практическую ценность, необходимо иметь возможность без существенных затрат генерировать большие простые числа, уметь оперативно вычислять значения ключей Кo и kc.
Дата публикования: 2015-02-18; Прочитано: 1156 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!