лаб 15. Лаб раб 15. Лабораторные работы
Скачать 0.6 Mb.
|
Шифрование и дешифрованиеКак шифрование, так и дешифрование в RSA предполагает использование операции возведения целого числа в целую степень по модулю n. Если возведение в степень выполнять непосредственно с целыми числами и только потом проводить сравнение по модулю n, то промежуточные значения окажутся просто огромными. Поэтому воспользуемся свойствами арифметики в классах вычетов: [(a mod n) * (b mod n)] mod n = (а * b) mod n. Таким образом, мы можем рассматривать промежуточные результаты по модулю n. Это делает вычисления практически возможными. Другой проблемой является эффективная реализация операции возведения в степень, так как в случае применения RSA мы должны иметь дело с потенциально большими показателями. Чтобы продемонстрировать, насколько здесь можно увеличить эффективность вычислений, предположим, что необходимо вычислить x16. Прямолинейный подход потребует 15 умножений, как показано ниже. Х16=х*х*х*х*х*х*х*х*х*х*х*х*х*х*х*х Однако такого же конечного результата можно достичь и с помощью всего четырех умножений, если повторно возводить в квадрат промежуточные результаты, получая при этом х2, х4, х8, х16. 2 В общем случае предположим, что нам нужно найти значение am, где а и m являются положительными целыми числами. Если представить m в виде двоичного числа bkbk-1…b0, то i M = , bi0 и поэтому a 2i 2i am = a bi 0 = , bi0 am mod n = bi0 a2i mod n a2i mod n . = bi 0 Таким образом, для вычисления ab mod n можно использовать алгоритм, показанный на рисунке 2. В таблице 2 показан пример последовательности значений, получаемых в результате выполнения этого алгоритма. Обратите внимание на то, что переменная с, вообще говоря, не нужна — она включена в алгоритм только с целью обеспечения наглядности. Конечное значение с будет значением показателя вычисляемой степени. c←0; d←1 for i←k downto 0 do c←2*c d←(d*d) mod n if bi = 1 then c← c+1 d← (d*a) mod n return d Рисунок 2 - Алгоритм вычисления аb mod n Таблица 2 - Результаты выполнения алгоритма быстрого возведения в степень для аb mod n при а = 7, b = 560 = 1000110000, n = 561.
|