Фіксованою точкою в криптосистемі завжди є генератор або базова точка криптосистеми порядку
. Такі точки - це відкриті ключі користувачів. Якщо в системі є резерв пам'яті, його можна використати для зберігання заздалегідь розрахованих точок. Наприклад, якщо обчислити й записати в пам'яті точки
, то для визначення скалярного добутку
залишиться лише обчислити суми точок відповідно до двійкового подання
. У середньому для цього буде потрібно лише
операцій. Їхнє число можна зменшити до
операцій додавання й віднімання, якщо скористатися трійковим поданням
.
Другим досить витонченим підходом є підхід на основі вікон з фіксованою базою. Замість двійкового подання числа використовується
-е із передобчислюванням точок
. Дійсно, нехай
-е подання числа
має вигляд

Тоді

де 
Ці обчислення здійснюються за допомогою наступного алгоритму.
Алгоритм 6.
Вхід: ширина вікна
,
, 
Вихід: 
1. Передрозрахунки: 
2. 
3. 
3.1 
3.2 
4. 
Середня обчислювальна складність алгоритму оцінюється кількістю додавань:
.
Метод вікон у цьому випадку більше продуктивний, ніж при невідомій точці, тому що передрозрахунки не входять в алгоритм експоненціювання. Якщо використати поряд з додаванням подвоєння точки, реалізувати алгоритм можна інакше. Два вікна точки
шириною
кожне можна подати у вигляді:
;

Всі можливі точки
й
обчислюються на етапі передрозрахунків і записуються на згадку. Загальна кількість цих точок
зростає експоненційно зі збільшенням ширини вікна
. Двійкове подання точки
розбивається далі на
фрагментів шириною
. У кожному такому фрагменті відбираються старші розряди й розряди зі зрушенням вправо на
(тобто на половину фрагмента).
Їхні двійкові подання дають першу пару точок
й
, які складаються, після чого їхня сума подвоюється.
Далі реалізується алгоритм послідовних додавань і подвоєнь праворуч із двома вікнами, описаний нижче.
Алгоритм 7.
Вхід: ширина вікна
,
,
, 
Вихід: 
1. Передрозрахунки: обчислити всі точки
й
, 
2. Подати число
у вигляді конкатенації фрагментів шириною 
Нехай
означає
й біт фрагмента 
3. 
4. 
4.1 
4.2 
5. 
Обчислювальна складність цього алгоритму оцінюється числом групових операцій

Обмінюючи час обчислень на пам'ять, можна й далі підвищувати продуктивність експоненціювання точки кривої. Наприклад, для кожного вікна шириною
можна заздалегідь розрахувати
точок, при цьому на згадку рийдеться записати
точок. Операція подвоєння в цьому випадку не використовується, а складність оцінюється числом
додавань. Цей алгоритм назвемо алгоритмом максимальної пам'яті. У табл.13.1 дані для порівняння величини пам'яті
й тимчасової складності
(числа групових операцій) алгоритму 6 й алгоритму максимальної пам'яті при
. В обох випадках зі збільшенням ширини вікна збільшується пам'ять і знижується число групових операцій. Очевидно, що останній алгоритм за наявності більших резервів пам'яті дозволяє істотно прискорити операцію експоненціювання фіксованої точки 
Таблиця 1 - Об'єм пам'яті
й тимчасова складність
(число групових операцій) алгоритму 6 й алгоритму максимальної пам'яті при 
| Метод | W = 3 | W = 4 | W = 5 | W = 6 | ||||
| M | S | M | S | M | S | M | S | |
| Алгоритм 6 | 14 | 900 | 30 | 725 | 62 | 632 | 126 | 529 |
| Алгоритм максимальної пам'яті. | 469 | 58 | 750 | 46 | 1280 | 38 | 2079 | 33 |
Размещено на Allbest.ru






