(0, 1), (6, 19), (3, 13), (13, 16), (18, 3).
Вычисляем Q – jmP для j = 0, 1, 2, 3 и получаем
(11, 20), (9, 7), (19, 18), (3, 13).
Останавливаемся, так как четвертая точка соответствует 3P. Поскольку j = 3, имеем
(11, 20) = (5+3·6)P = 21P.
Поэтому k = 21.
Недостатком метода «Baby-step Giant-step» является то, что для его реализации требуются значительные затраты памяти. ρ- и O-методы Полларда выполняются приблизительно за то же самое время, что и метод «Baby-step Giant-step», но требуют в отличии от него небольших затрат памяти.
13.4. ρ-метод Полларда
ρ-алгоритм Полларда на данный момент считается лучшим из известных алгоритмов для вычисления дискретного логарифма на эллиптической кривой и является рандомизированной версией алгоритма «baby-step giant-step». Сложность алгоритма
оценивается как O N12 , где N порядок генератора.
Пусть Q – точка с неизвестным индексом и P – генератор группы точек на эллиптической кривой порядка N. Полагаем, что Q = xP. Требуется найти x.
ρ-алгоритм Полларда имеет следующий вид:
1)разбиваем группу на три множества S0, S1 и S2 приблизительно одинаковой мощности;
2)случайным образом выбираем 1 ≤ а0, b0 ≤ N – 1;
3)устанавливаем Х0 = a0P + b0Q – начальную точку для случайного блуждания;
4)определяем последовательность {Xi} следующим образом:
|
P Xi 1, если Xi 1 S0 ; |
Xi |
° |
|
®2Xi 1, если Xi 1 S1; |
|
|
° |
; |
|
¯Q Xi 1, если Xi 1 S2 |
это дополнительно определяет две последовательности {ai}, {bi}: