You are on page 1of 10

Слайд 1

ЛЕКЦІЯ 9

Множення Монтгомері

Вхідними даними є n-розрядні двійкові числа A=(an-1 an-2 … a1 a0 )2, B=(bn-1


bn-2 … b1 b0 )2 та модуль M=(mn-1 mn-2 … m1 m0)2 . При виконанні множення
використовується допоміжна величина R=2n та мультиплікативна інверсія R-1 цієї

величини по модулю М, така, що RR-1 mod M = 1. Вихідною n-розрядною

величиною Y=(yn-1 yn-2 …. y1 y0 ) є значення ABR-1 mod M.


Y = 0, j=0

Y = Y + bjA

0
y0 = 1 ?

Y=Y+M

Y=Y/2

j=j+1

Так
j<n

Y= ABR-1
mod M.

Слайд 2
Приклад.
Нехай модуль M = 100112 = 1910, відповідно, n=5; допоміжна
величина R=25 = 32, а її мультиплікативна інверсія по модулю М
дорівнює R-1 = 3. Виконується множення числа A=100012 = 1710 на число
B= 011002 = 1210 .
Динаміка змін величин, що задіяні в процедурі в процесі
покрокового виконання відображена в таблиці.

Динаміка покрокових змін величин, що задіяні в процедурі


множення Монтгомері чисел А=17 і В=12
Поточний результат Y
j bj На початку Після додавання y0 Після додавання Після
цикла множимого модуля зсуву
0 0 0 0 0 0 0
1 0 0 0 0 0 0
2 1 0 0+17 = 17 1 17 + 19 = 36 36/2 = 18
3 1 18 18+17= 35 1 35 + 19 = 54 54/2 = 27
4 0 27 27 1 27 + 19 = 46 46/2 = 23
Та як Y > M (23 > 19), то згідно п.6: Y=Y-M = 23-19 = 4
Отриманий результат Y=4 відповідає значенню ABR-1 mod M =
17123 mod 19 = 4. Для отримання істинного значення AB mod M
результат Y можна помножити на R по модулю М: AB mod M = Y R
mod M = 432 mod 19 = 14.
Слайд 3
Модулярне експоненціювання Монтгомері

В процедурі модулярного експоненціювання використовується


множення Монтгомері, яке позначається як MM(u,v) і яке формує
модулярний добуток uvR-1 mod M, де R-1 – мультиплікативна інверсія
числа R = 2n по модулю М, тобто RR-1 mod M =1. Код експоненти
складається з n двійкових розрядів: E=(eh eh-1 …. e0 )2, причому eh = 1.
Попередньо, здійснюється обчислення, результати яких залежать
тільки від модуля М: початкового значення поточного результату
Q= R mod M, а також С= R2 mod M.

B=MM(A,С)
j=n

Q = MM(Q,Q)

ej 0

Q = MM(Q,B)

j = j -1

Так
j>0

Q = MM(Q,1)
Слайд 4
ПРИКЛАД

Нехай модуль M = 100112 = 1910, відповідно, n=5; допоміжна


величина R=25 = 32, а її мультиплікативна інверсія по модулю М
дорівнює R-1 = 3. Попередньо, обчислюється початкове значення
поточного результату Q = R mod M = 32 mod 19 = 13, та С= R2 mod M =
322 mod 19 = 17, які залежать тільки від модуля M.
При обчисленні 1611 mod 19 = 9, значення A=16, код експоненти
E=1110 =10112 = (e3 e2 e1 e0 )2; відповідно h = 3. У відповідності з п.1
обчислюється значення R2 mod M = 264 mod 19 = 17 та B = MM(A, С) =
MM(16,17) = 18.
Динаміка зміни значень поточного результату по крокам виконання
процедури модулярного експоненціювання Монтгомері показана в
таблиці .
Динаміка зміни поточного результату по крокам процедури модулярного
експоненціювання Монтгомері при обчисленні 1611 mod 19
j ej Чисельне значення поточного результату Q
На початку Після піднесення до Після множення
циклу квадрату Монтгомері Монтгомері на В
3 1 13 MM(13,13) = 13 MM(13,8) = 18
2 0 18 MM(18,18) = 3 3
1 1 3 MM(3,3) = 8 MM(8,18) = 14
0 1 14 MM(14,14) = 18 MM(18,18) = 3
Остаточний результат MM(3,1) = 9
Слайд 5.
Захищене обчислення модулярної експоненти в хмарі
Потрібно обчислити AE mod M
Попередньо::
1. Користувачем довільно обирається число G, яке зберігається в секреті,
а також виходячи з характеру модуля М, визначається значення  таке,
що G mod M = 1.
Приклад. Нехай модуль М = 43, а код експоненти E = 37. Відповідно до п.1
користувачем попередньо обирається число G < М. Наприклад, нехай G = 29.
Тоді, при простому М,  = М-1=42. Не складно перевірити, що G mod M =
2942 mod 43 = 1.
2. Для обраного G користувачем обчислюється константа С= G-Е mod M,
яка також зберігається в секреті.
В рамках поточного прикладу: На обчислювальної платформі користувача
обчислюється значення константи С= G-Е mod M у вигляді: C = 2942-37 mod 43
= 295 mod 43 = 20.
Слайд 6

Захищене обчислення AE mod M

1. Користувач обчислює модулярний добуток S = G∙A mod M.


Для поточного прикладу: При обчисленні 3837 mod 43 = 40 (A = 38)
користувачем обчислюється модулярний добуток S = G∙A mod M =
= 29∙38 mod 43 = 27.
2. Вибирається довільне u < E, розрядність якого значно менше розряд-
ності коду експоненти Е. Обчислюється d = E - u, розрядність якого
збігається з розрядністю Е.
Для поточного прикладу: Довільно обирається u = 2, розрядність якого (2)
помітно менше розрядності 6 коду експоненти E, обчислюється d = E - u = 37-
2 = 35, розрядність якого збігається з розрядністю Е.
3. Передаються в хмару ( або на криптопроцесор) значень S і d, де
виконується обчислення модулярної експоненти B = Sd mod M. Значення
В повертається користувачеві.
Для поточного прикладу: Передаються в хмару значення S = 27 і d = 35. В
хмарі віддалено обчислюється B = 2735 mod 43 = 42. Обчислення значення
повертається користувачу.
4. Користувач обчислює значення Y = Su mod M.
Для поточного прикладу: Користувач обчислює Y = Su mod M = 272 mod 43 = 41
5. Користувач обчислює значення результату у вигляді
R = C∙B∙Y mod M.
Для поточного прикладу: Користувач обчислює значення результата
R = C∙B∙Y mod M = 20∙42∙41 mod 43 = 40, тобто правильне значення
3837 mod 43 .
Слайд 7
ISRSAC
В 2018 році Tangavel та Varalakshmi запропонували новий проект
несиметричного шифрування “Improved Secure RSA cryptosystem
(ISRSAC) for Data Confidentiality in Cloud”

Основна ідея: на порядки ускладнити атаки на математику шляхом


використання різних модулів для шифрування та дешифрування.
Слайд 8
Генерація ключів I SRSAC

1. Довільним чином вибираються два простих числа p і q такі, що p≠q,


p>3, q>3. Наприклад p = 59; q = 37;
2. Обчислюються два модуля: перший n = pq(p-1)(q-1) та другий :
m = pq. В рамках поточного прикладу n = 4 558 104, m= 2 183.
3. Довільним чином обирається ціле число r, таке, що 2r < p та 2r < q.
В рамках поточного прикладу r = 3 : 23 < 59 23 < 37.
4. Обчислюється :
( p  1)  (q  1)  ( p  2 r )  (q  2 r )
 ( n) 
2r
58  36  (59  8)  (37  8)
Для поточного прикладу:  (n)   386019
8
5. Обирається число Е, яке не має спільних подільників з α(n) і число
D, для яких виконується умова ED mod (n) = 1
В рамках поточного прикладу: E = 43, D = 143 635.
6. Відкритий ключ складається з пари: (E,n)
Закритий ключ складається з пари (D,m).
В рамках поточного прикладу: (E,n) = 43, 4558 104
(D,m) = 143 635, 2 183
Слайд 9
Шифрування повідомлення М з отриманням шифротексту С:
C = ME mod n

Приклад: Якщо M=2018 C = 201843 mod 4558104 = 1541072

Дешифрування повідомлення М з шифротексту C :


M = CD mod m
Для поточного прикладу: M = 1541072143635 mod 2183 = 2018

You might also like