Оценка вычислительной сложности

Ключи какой длины следует использовать?

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

log10 n Число операций Примечания
1.4*1010 Раскрываем на суперкомпьютерах
2.3*1015 На пределе современных технологий
1.2*1023 За пределами современных технологий
2.7*1034 Требует существенных изменений в технологии
1.3*1051 Не раскрываем

 

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

В конце 1999 года за 8 недель был разложен на множители ключ длиной 768 бит. Для разложения использовалась компьютеры локальной сети Массачусетского Технологического университета. Руководитель проекта заявил, что теперь, используя ИНТЕРНЕТ, возможно такой ключ разложить на множители в среднем за неделю.

Сами авторы RSA рекомендуют использовать следующие размеры модуля n:

· 1024 бит - для частных лиц;

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

· 4096 бит - для особо секретной информации.[3]

Третий немаловажный аспект реализации RSA - вычислительный. Ведь приходится использовать аппарат длинной арифметики. Если используется ключ длиной k бит, то для операций по открытому ключу требуется О(k2) операций, по закрытому ключу - О(k3) операций, а для генерации новых ключей требуется О(k4) операций.

Пример расчёта по алгоритму RSA

P=17, Q=19

N=PQ=17´19=323

M=j(N)=(P-1)´(Q-1)=16´18=288

Проверка НОД(D,M) = 1 по алгоритму Евклида.

D=241.

Расчёт E обратного D в кольце вычетов R288

E=1/D(mod M) => DE=G(mod M) = 241´E = 1(mod 288)

Решение Диафантова ур-ия 1-го порядка: E = (-1)(n-1)´G´P(n-1)(mod M)

Поиск n: Ведётся по следующему алгоритму:

1. n=1, Z1=M, X1=D

2. n=n+1, hn=Zn div Xn, Yn=Zn mod Xn

3. Z(n+1) = Xn, X(n+1) = Yn

4. Если Yn¹0 переход на 2

5. Конец

n Z X Y = Z mod X H = Z div X Pi=Hi´Pi-1+Pi-2(mod M) _
49 – P4 искомый результат
0 – Конец

DIV – делить на цело

E = (-1)(5-1) ´ 49 (mod 288)= 49[4]

Откр. Ключ (D=241, N=323)

Секр. Ключ (E=49, N=323)

Сообщение В=143

D = 241 = 128+64+32+16+1

B1=143

B2=1432(mod 323) = 100

B4=1434(mod 323) = 1002(mod 323) = 310

B8=1438(mod 323) = 3102(mod 323) = 169

B16=14316(mod 323) = 1692(mod 323) = 137

B32=14332(mod 323) = 1372(mod 323) = 35

B64=14364(mod 323) = 352(mod 323) = 256

B128=143128(mod 323) = 2562(mod 323) = 290

Шифрование: С=BD(mod N) = 143241(mod 323) = 143128´14364´14332´14316´143(mod 323) = 290´256´35´137´143(mod 323) = 262

 

Расшифровка: B = CE(mod N) = 26249(mod 323) = 143

 


Исследование работы двухключевых алгоритмов шифрования на примере криптосистемы Эль-Гамаля

Цель работы

Изучить основные принципы шифрования с открытым ключом. Освоить алгоритм Эль-Гамаля. Изучить математические принципы на которых основан этот алгоритм.