!!§!! Вспомогательный раздел к разделу ((:crypto#криптография_с_открытым_ключом КРИПТОГРАФИЯ)).
----
==Криптоанализ==
~~TOC~~
**Криптоанализом** называется совокупность действий потенциального противника, направленных на достижение какой-либо из следующих целей:
* установления ключа дешифрования;
* дешифрования конкретного пересылаемого сообщения;
* искажения содержания конкретного пересылаемого сообщения.
Будем также считать, что противник (криптоаналитик) не имеет непосредственного
доступа к генератору шифра, но в то же время:
* имеет неограниченный доступ к коммуникациям (т.е. перехватывает любое шифрованное сообщение);
* знает все методы кодирования, шифрования и контроля за целостностью содержания пересылаемых сообщений;
* может иметь частичную информацию о содержании открытого текста пересылаемой шифровки.
Я не буду касаться различных технических аспектов и роли человеческого фактора для криптоанализа (см. по этому поводу весьма перспективные разработки компании ((http://termorect.narod.ru/index.html "Терморектальный криптоанализ")) ). Предметом криптоанализа в настоящем разделе является исключительно ((:crypto#алгоритм_rsa алгоритм RSA)).
===Факторизация модуля==
====Метод Полларда==
Поллард ((#источники [2])) указал еще один неудачный выбор множителей. Каждое из чисел $ p_1-1 $ и $ p_2-1 $ очевидно
составное. Пусть все простые сомножители в каноническом разложении
числа $ p_1-1 $ оказываются меньшими некоторого целого $ B_{} $; тогда все они
содержатся в последовательности
$$
{\mathfrak p}_1=2,{\mathfrak p}_2=3,\dots, {\mathfrak p}_K
$$
всех простых чисел, не превосходящих $ B_{} $. Для любого числа $ {\mathfrak p} $
из этой последовательности определим $ {\mathfrak m}({\mathfrak p}) $ как показатель
максимальной степени числа $ {\mathfrak p} $, умещающейся в $ M_{} $:
$$
{\mathfrak p}^{{\mathfrak m}({\mathfrak p})} \le M <
{\mathfrak p}^{{\mathfrak m}({\mathfrak p})+1} \ ; \ \mbox{ очевидно }, \
{\mathfrak m}({\mathfrak p}) = \lfloor \log_{{\mathfrak p}} M \rfloor \ .
$$
Тогда число
$$
Q = 2^{{\mathfrak m}(2)} 3^{{\mathfrak m}(3)} \times \dots \times {\mathfrak p}_K^{{\mathfrak m}({\mathfrak p}_K)}
$$
очевидно делится на $ p_1-1 $. ((:modular#теорема_ферма Теорема Ферма)) утверждает,
что
$$ A^{p_1-1} \equiv 1 \pmod{p_1} \quad npu \quad \forall A\in \mathbb N,\ \operatorname{HOD} (A,p_1)=1
\ .$$
Поскольку сравнения можно возводить в степень (см. ☞ ((:modular#сравнения ЗДЕСЬ))), тогда будет
$$A^Q \equiv 1 \pmod{p_1} \ . $$
Последнее эквивалентно условию, что число $ A^Q - 1 $ делится на $ p_{1} $.
Следовательно, $ \operatorname{HOD} \left(A^Q - 1,\ M \right) $ равен либо $ M_{} $, либо $ p_1 $.
На этом и основан алгоритм факторизации. Выбираем произвольное простое число
$ A_{} $, $ A1 $, то мы нашли нетривиальный множитель числа $ M=p_1p_2 $,
если $ \operatorname{HOD} (A_j -1,M)=1 $, то при $ j
♦