Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
асимметричные криптоалгоритмы.doc
Скачиваний:
8
Добавлен:
08.09.2019
Размер:
133.12 Кб
Скачать

Стойкость алгоритма rsa

Очевидно, что стойкость RSA и асимметричных алгоритмов в целом зависит от сложности обращения односторонних функций, лежащих в основе данного типа алгоритмов. В RSA сложность обращения односторонней функции зависит от сложности разложения на множители модуля n.

Среди наиболее известных недостатков алгоритма RSA можно выделить некорректный выбор значений p и q. Числа p и q должны быть простыми и не содержаться ни в одной из известных таблиц простых чисел. Эти числа также не должны быть близкими друг к другу.

Учитывая ряд атак, основанных на неправильном выборе чисел p и q, сформулируем следующие требования к выбору чисел p и q:

  1. Данные числа должны быть большими числами одинаковой длины; например: если n=1024, то длина p и q должна быть равна 512 битам.

  2. Различие между p и q должно быть большим.

  3. Числа p и q должны быть строго простыми. Число называется строго простым, если выполнены условия:

    1. p – 1 должно иметь большой простой делитель (обозначим его через r);

    2. 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