36
35
).(mod1
1
pb
p
=
−
(16)
Наприклад, ).5(mod12
4
= Якщо треба визначити, чи є ціле число
простим, можна вибрати будь-яке
додатне ціле число b, менше за
, і перевірити, чи справедлива рівність
).(mod1
1
rb
r
=
−
(17)
Якщо рівність не справджується, то виходячи з теореми Ферма можна бути цілком впевненим, що
–
не просте число. Якщо ж рівність справджується, то можна лише припускати, що
– просте число, і тому
назвати його псевдопростим за основою b. Виявляється, що якщо
– складене число, воно є псевдопростим
лише для менш ніж половини (в дійсності значно менше за половину) можливих основ b. Отже, якщо
–
досить велике, а t різних основ b вибрані незалежно і зовсім випадково, складове число
витримає тести
Ферма (17) за всіма основами b з ймовірністю не більшою за
t−
2 . Якщо, скажімо, t=100, і число
витримує всі
t незалежних тестів Ферма, то можна бути майже впевненим, що воно просте. Такі “ймовірнісні тести” вперше
запропонували американці Р.Соловей і Ф.Штрасен, пізніше їх розвинув М.Рабін. Ці тести використовуються
для пошуку простих чисел серед випадкових непарних цілих чисел і знаходження у такий спосіб пар простих
чисел, необхідних
для односторонньої функції RSA, або, точніше, для знаходження пар чисел, які можна з
достатньою впевненістю вважати простими.
Крім “ймовірнісних тестів” існують також “детерміновані” (кращий з них – метод еліптичних кривих) і
гіпотетичні тести (які гарантують простоту чисел при виконанні деякої гіпотези (Рімана, Баха)).
Найекономічнішими за числом операцій є ймовірнісні тести. Потім ідуть
гіпотетичні, а детерміновані
потребують найбільшого числа операцій.
Існують надвеликі інтегральні схеми (НВІС), що виконують шифрування і розшифрування за
алгоритмом RSA з швидкістю кілька кілобайтів на секунду. Ці НВІС можна використовувати для виконання
тестів Ферма і знаходження необхідних великих простих чисел p і q. Для більшості застосувань криптографії
такі швидкості надто малі. У
цьому разі все ж бажано використовувати криптосистему RSA для
розповсюдження секретних ключів, які потім будуть використані у високошвидкісних шифрах з секретними
ключами, таких як SKIPJACK DES або деякі поточні шифри. Крім того, бажано використовувати алгоритми
RSA в режимі “цифрових підписів” для автентифікації.
Опишемо систему Т.Ель-Гамаля в полі GF(q), де q – основа або
степінь основи (тут
n
q 2= ). Нехай
–
первісний елемент поля. Відправник має: a – особистий ключ і
a−
α
– відкритий ключ; аналогічно одержувач
має b і
b−
α
. Для того щоб надіслати одержувачу секретне повідомлення М, відправник обирає випадкове ціле
число
і надсилає пару
m
brr
⋅
−
αα
, . Тут m – це М в розрядному поданні. Одержувач обчислює m
brbr
⋅⋅
−
αα
)( ,
відновлюючи m. Якщо М є ключем, обраним відправником, це можна розглядати як механізм ключового обміну
(це неавтентифікований ключовий обмін, оскільки третя особа може замаскуватися під “відправника до
одержувача”, але протокол може бути модифіковано). Надсилаючи підписане повідомлення М одержувачу,
відправник знову вибирає випадкове ціле число
і обчислює
r
α
. Нехай R буде цілим представленням
r
α
з
.10 −≤≤ qR Відправник також обчислює )1(mod)(
1
−+=
−
qrRMS
α
і посилає повідомлення М разом з
підписом ).,( S
r
α
Одержувач перевіряє підпис, обчислюючи
SrRa
)()(
αα
−
, а також визначає, чи дорівнює він
.
M
α
Для передачі секретного підписаного повідомлення для кожного підпису потрібно вибрати нову величину
r. Кожного разу, уникаючи обчислення
,
1−
r можна змінити протокол так: відправник обчислює
)1(mod)(
1
−−−=
−
qrRMS
α
і одержувач перевіряє, чи
SaRr
)()(
−
αα
дорівнює
.
M
α