logo
Лекции_Информационная безопасность

13.3Атака 1. Расшифровка ранее полученного сообщения при помощи специально подобранного текста.

Тип атаки - «Атака с заданным текстом».

Злоумышленник перехватывает сообщение, адресованное А, зашифрованное открытым ключом А. Для того чтобы расшифровать его, злоумышленник составляет другое сообщение, зависящее от перехваченного, и передает составленное сообщение на подпись А (то есть А применяет свой закрытый ключ для этого сообщения!). Затем, произведя несложные вычисления, получает расшифрованный текст.

Рассмотрим следующий пример. Все расчеты будем вести с небольшими числами для наглядности. А открытым способом распространяет криптографическую пару: открытый ключ и модуль – (e=7, n=33). Пусть В передает А число, например 2, зашифрованное открытым ключом А, то есть передает ss = 2^7 mod 33 = 29. С перехватывает это число (29), кроме того, С, как и всем остальным известна криптографическая пара (7, 33). Цель C – расшифровать перехваченное сообщение 29.

С сначала подбирает два числа t и r, меньшие n, такие что t = (1/r) mod n. В нашем примере n = 33, поэтому возьмем r = 17, t = 2 (17*2 Mod 33 =1).

А затем вычисляет x = r^e mod n = 17^7 mod 33 = 8. Теперь берет перехваченное число ss и вычисляет y = ss*x mod n = 29*8 mod 33 = 1.

Настал важный момент. Если С имеет возможность попросить А зашифровать произвольный текст своим закрытым ключом, то есть фактически подписать какой-то документ, то полученный y передается А на подпись. А подписывает y и передает С, то есть С получает u = y ^ d mod n. В нашем примере А вычисляет u = 1 ^ 3 mod 33 = 1 (d=3 – закрытый ключ А) и отдает C.

Теперь С, наконец, расшифровывает ранее перехваченное сообщение следующим образом: s = t*u mod n = 2*1 mod 33 = 2. Как видите, это и отправлял В.

t*u mod n = u/r mod n = y^d/r mod n = (x^d * ss^d)/r mod n =

= ss^d mod n = s

Преобразуем t*u mod n, заменив t на 1/r, получим u/r mod n. Подставим выражение для y, получим (x^d * ss^d)/r mod n. А так как x = r^e mod n, то r = x^d mod n по основному соотношению между открытым и закрытым ключом. Сокращаем одинаковые выражения в числителе и знаменателе, получаем ss^d mod n. А это по основному соотношению между открытым и закрытым ключом равно исходному сообщению.

Замечание 1. В нашем примере можно было А и не передавать y на подпись, так как 1 в любой степени останется 1. Но это – счастливая случайность, практически невероятная.

Замечание 2. Важно, что передается сообщение, а не его хэш. Так как расшифровка хэш ничего не дает узнать о сообщении (если оно закрыто) и не дает возможности подделать документ, даже если он открыт, в случае если нет возможности полностью модифицировать трафик.