Стойкость алгоритма rsa
Очевидно, что стойкость RSA и асимметричных алгоритмов в целом зависит от сложности обращения односторонних функций, лежащих в основе данного типа алгоритмов. В RSA сложность обращения односторонней функции зависит от сложности разложения на множители модуля n.
Среди наиболее известных недостатков алгоритма RSA можно выделить некорректный выбор значений p и q. Числа p и q должны быть простыми и не содержаться ни в одной из известных таблиц простых чисел. Эти числа также не должны быть близкими друг к другу.
Учитывая ряд атак, основанных на неправильном выборе чисел p и q, сформулируем следующие требования к выбору чисел p и q:
Данные числа должны быть большими числами одинаковой длины; например: если n=1024, то длина p и q должна быть равна 512 битам.
Различие между p и q должно быть большим.
Числа p и q должны быть строго простыми. Число называется строго простым, если выполнены условия:
p – 1 должно иметь большой простой делитель (обозначим его через r);
p + 1 должно иметь большой простой делитель;
1.2Криптосистема Эль-Гамаля
Система Эль-Гамаля — это криптосистема с открытым ключом, основанная на проблеме логарифма. Система включает как алгоритм шифрования, так и алгоритм цифровой подписи.
Множество параметров системы включает простое число p и целое число g, степени которого по модулю р порождают большое число элементов Zp. У пользователя А есть секретный ключ а и открытый ключ у, где у = ga (mod p). Предположим, что пользователь В желает послать сообщение т пользователю А. Сначала В выбирает случайное число k, меньшее p. Затем он вычисляет
где обозначает побитовое «исключающее ИЛИ». В посылает А пару (y1, y2).
После получения шифрованного текста пользователь А вычисляет
Известен вариант этой схемы, когда операция заменяется на умножение по модулю p. Это удобнее в том смысле, что в первом случае текст необходимо разбивать на блоки той же длины, что и число yk (mod p). Во втором случае этого не требуется и можно обрабатывать блоки текста заранее заданной фиксированной длины (меньшей, чем длина числа p). Уравнение расшифрования в этом случае будет таким:
.
Шнорром и Якобссоном было предложено объединить схему шифрования Эль-Еамаля с цифровой подписью Шнорра, что позволяет не только шифровать сообщение, но и аутентифицировать его.
Зашифрование осуществляется следующим образом. Автор сообщения выбирает случайные k, s Zq. Далее он вычисляет gk mod p, myk mod p, с = h(gs, gk, myk) и z = s + ck mod q. Шифрованный текст представляет собой четверку (gk, myk, с, z).
Получив сообщение (h, f, c, z), приемная сторона вначале верифицирует его, проверяя выполнение равенства h(gzh-c, h, f) = с . В случае успешной верификации открытый текст получается по формуле т = f / hx mod p. Расшифрование корректно, поскольку h = gk, f = myk mod p, так что f / hx = mgkx g-kx mod p = т.
Заметим, что вторая половина шифрованного текста (с, z) зависит от исходного сообщения только через хэш-функцию h, которая статистически независима от т, и, следовательно, не содержит никакой информации об т.
Пример Зашифруем сообщение “ШИФР”.
Ш25, И9, Ф21, Р17. Тогда сообщение принимает вид (25, 9, 17), а в двоичном представлении:
011001 001001 010101 010001
Выберем p=17 и g=7.
Для простоты будем использовать маленькие числа (на практике применяются гораздо большие).
У пользователя A есть секретный ключ а=5 и открытый ключ у = ga (mod p)
Y=75(mod 17)= 16807 mod 17 = 11
Сначала пользователь В выбирает случайное число k, меньшее p.
Например, k=13.
Затем он вычисляет
где обозначает побитовое «исключающее ИЛИ».
Y1 = 713 (mod 17) = 96889010407 mod 17 = 6
Y2 = m (1113mod 17) = m 7
011001 001001 010101 010001
000000 000000 000000 000111
011001 001001 010101 010110
Что в десятичном представлении = 6591830.
В посылает А пару (y1, y2), то есть (6, 6591830)
После получения шифрованного текста пользователь А вычисляет
m=(65mod 17) y2=7 6591830
011001 001001 010101 010110
000000 000000 000000 000111
011001 001001 010101 010001