Upload
iorwen
View
98
Download
1
Embed Size (px)
DESCRIPTION
Операции поддержки алгоритмов шифрования с открытым ключом и их реализация в микропроцессоре «Эльбрус». Выполнил: Скрябин Иван, 513 Научный руководитель: Сахин Ю.Х. Постановка задачи. - PowerPoint PPT Presentation
Citation preview
Выполнил: Скрябин Иван, 513Научный руководитель: Сахин Ю.Х.
Операции поддержки алгоритмов шифрования с открытым ключом
и их реализация в микропроцессоре «Эльбрус»
Постановка задачи
Развитие интернета и электронной коммерции вынуждает производителей микропроцессоров внедрять аппаратную поддержку алгоритмов шифрования:
Intel (Westmere), AMD (Bulldozer)- AES
VIA Padlock Security Engine - AES, SHA-1, SHA-256- Умножение Монтгомери (поддержка шифров с открытым ключом)
SPARC T3 (Криптографический ускоритель в каждом из 16 ядер)
- DES, AES, Kasumi, MD5, SHA-1, SHA-256, SHA-512- Modular Arithmetic Unit (поддержка шифров с открытым ключом)
ЗАДАЧА: Предложить решение по аппаратной поддержке алгоритмов шифрования с открытым ключом в микропроцессорах «Эльбрус»
Два типа алгоритмов шифрования
Шифры с секретным ключом
Многочисленное повторение одного и того же набора простых операций (раундов) над блоками данных 128 / 64 / 256 бит
Большое разнообразие шифров – сложно выделить общие операции, эффективней реализовывать конкретные алгоритмы
Шифры с открытым ключом
Сложные операции (умножение по модулю) над очень большими числами (192 – 3072 бит)
В основе – операции умножения и возведения в степень по модулю
Encrypt Decrypt
Bob Alice
Encrypt Decrypt
Bob Alice
Операции в шифрах с открытым ключом
RSA (1024 – 3072 бит)
Генерация ключей:•Выбор простых p, q. φ = (p-1) * (q-1)•N = p * q (1024 – 3072 бита)•Выбор e, взаимно простого с φ•Вычисление d = e-1 mod φ(N, e) – открытый, (p, q, d) – секретный ключ
Шифрование сообщения m (m < N)c = me mod N
Расшифровка:m = cd mod N
Основные операции (A, B, M: 1024 - 3072 бит)
A*B mod MAB mod M
ECDSA (192 – 512 бит)
Операции над точками (x, y) эллипт. кривой
y2 = x3 + a*x + b mod q
Базовая точка P порядка n (n*P=0)
Q=d*P : Q – открытый, d – секретный ключ
Проверка подписи (r, s) сообщения m•Вычислить w = s-1 mod n
•Вычислить u1 = m*w, u2 = r*w mod n
•Вычислить X = u1*P + u2*Q = (x1, y1)
•Сравнить x1 == r mod n
Основные операции (числа: 192 – 512 бит)
A*B mod MAB mod M P + Q (сложение точек элл. кривой)
k*Q (умножение точки на скаляр)
Арифметика в двоичном поле GF(2n)
Стандарт DSS определяет так же операции в GF(2n), потому что они эффективно реализуются аппаратно.
GF(2n) – конечное поле многочленов степени меньше n с коэффициентами 0 или 1x6 + x4 + x2 + x + 1 → 01010111 (удобное представление в виде набора бит)
0101 0111
1000 0011
1101 0100
0101011110000011
01010111010101110
10101110000000
10101101111001
10001101100000
100000011001100011011000
11000001
*Умножение (сложение ↔ XOR)
Вычисление остатка по модулю(вычитание ↔ XOR)
Сложение и вычитание в GF(2n)
Вместо сложения и вычитания – операция XOR
Умножение и деление в GF(2n)
Сложение ↔ XOR
ECDSA, ECDH,ГОСТ Р 31.10-2001
ECDSA, ECDH,ГОСТ Р 31.10-2001
RSA, DSA, DHRSA, DSA, DH
k * Pk * P
P + QP + Q
Операции в шифрах с открытым ключом
AB mod M A-1 mod MAB mod M A-1 mod M
A * B mod M в GF(P) и GF(2n)A * B mod M в GF(P) и GF(2n)
- реализованные операции
A, B, M, k - от 192 до 3072 бит
Умножение по модулюТребования к аппаратной реализации
Масштабируемость (scalable)
Возможность работы с числами «произвольного» размера – расчёт на будущее
Работа в двух полях (dual-field)
Поддержка операций в GF(p) и в GF(2n) в соответствии со стандартом США
Высокая разрядность (high-radix)Разрядность функционального блока от 32 бит для повышения производительности
Умножение по модулюАлгоритм Монтгомери
Ключевая идея – заменить деление на M делением на 2n, которое легко выполняется аппаратно
Mont(A, B) = A * B * 2-n mod M
Алгоритм:
A, B < M < 2n , M - нечётноеM’ = -M-1 mod 2n // предвычисленная константа, зависит только от M
P = A * BU = P * M’ mod 2n // просто оставляем первые n бит
P = (P + U * M) >> n // деление на 2n
if P ≥ M then // результат в пределах 0 ≤ P < 2*M
P = P – Mend if
Умножение по модулюАлгоритм Монтгомери
Использование умножения Монтгомери Mont(A, B) = A * B * 2-n mod Mдля вычисления A * B mod M
1.Переход к представлению Монтгомери:
Ar = A * 2n mod M = Mont(A, 22n)
Br = B * 2n mod M = Mont(B, 22n)
2.Вместо обычного умножения – умножение Монтгомери
Pr = Mont(Ar, Br) = (A * 2n) * (B * 2n) * 2-n mod M = A * B * 2n mod M
3.Возврат к обычному представлению
P = Mont(Pr, 1) = (A * B * 2n) * 1 * 2-n = A * B
Эффективен только для выполнения множества операций подряд
Умножение по модулюАппаратная реализация алгоритма Монтгомери
A[3] A[2] A[1] A[0]
B[3] B[2] B[1] B[0]
00 ..
000 ..
000 ..
000 ..
0
A * B[0]
M * U0
A * B * 2-n mod M
*
A * B[1]
M * U1
A * B[2]
M * U2
A * B[3]
M * U3
B[j]A[i] * P[i+j]+ + M[i] * Uj
A * B
Умножение Монтгомери:Mont(A, B) = A * B * 2-n mod M
w бит – размер слова
w – битный ALU
ALUALU
вычисляет в цикле
A[i]
B[j]
P[i]
w
P[i]
P[i+j]M[i] Uj
Умножитель в GF(p) и GF(2n) Подход 1: модифицированные FA / HA
FA
FSEL A B Cin
SCou
t
HA
FSEL A B
SCout
FSEL = 1 - умножение в GF(p)FSEL = 0 - умножение в GF(2n)
A B Cin
Cout S
A B Cin
Cout S
A B Cin
Cout S
A B Cin
Cout S
A B Cin
Cout S
A B Cin
Cout S
A B Cin
Cout S
A B Cin
Cout S
2 xor
3 xor
3 xor
1 xor
2 xor 1
xor
3 xor
4 xor
Оптимизация дерева умножителя с учетом различия задержек по разным входам FA/HA
Умножитель в GF(p) и GF(2n) Подход 2: специальное построение дерева
FA / HA array
w2
sum
carry
FA / HA arraysum
carry
FA / HA array
sum
. . .
carry
ai * bj
Wallace tree
Final adder
Результат в GF(p) Результат в GF(2n)
2w - 12w
Умножитель в GF(p) и GF(2n) Подход 3: использование умножителя из DesignWare
IP
w
Результат в GF(2n)
Synopsys DesignWare DW02_mult(обычный умножитель)
x
A B
Результат в GF(p)
BA
w
A B
Синтезируемое verilog-описаниедля умножителя в GF(2n)
2w - 12w
Умножитель в GF(p) и GF(2n) Сравнение подходов для умножителя 64x64 бит
Умножитель МонтгомериБазовый блок montmul_unit (64 бит)
x
+
x
+
A[i] B[j] P[i] M[i] / M’0
U
(C, S) = C + A[i]*B[j] + P[i] + M[i]*U
P[i-1]
SC
precalc
MEMORYMEMORYMEMORY
Умножитель МонтгомериОрганизация конвейера
montmulunit
FSM
montmulunit
FSM
montmulunit
FSM
A[i]
M[i]
P[i]
B[j]
MEMORY
result
FSM
стадиизадержки
Умножитель МонтгомериВыбор параметров конвейера: быстродействие
Две 64-битных стадии дают ускорение примерно в 4 раза для ECC и в 8 раз для RSAпо сравнению с программной реализацией (все операнды на регистрах, операции в GF(p)).
Умножитель МонтгомериВыбор параметров конвейера: площадь
Вычисление «в лоб»AB mod M = A * A * A * … * A mod M [!] 2n операций умножения по модулю если B – n-битное число
Быстрое возведение в степень (Square & multiply)x19 - ?19 : 100112 = (2 * 2 * 2 + 1) * 2 + 1
x19 = (((x2)2)2 * x)2 * x
В среднем n + n/2 операций умножения
Вычисление обратного значения по модулюМалая теорема Ферма:A-1 mod M = AM - 2 mod M если M – простое число
Возведение в степень по модулю
Сложение в группе точек на эллиптической кривой над полем
GF(p)y2 = x3 + a*x + b mod MP = (x1, y1), Q = (x2, y2), P ≠ Q
Сложение точек:P + Q = (x3, y3)
λ = (y2 – y1) / (x2 – x1) mod M
x3 = λ2 – x1 – x2 mod M
y3 = λ* (x1 – x3) – y1 mod M
Удвоение точки:2*P = (x3, y3)
λ = (3*x12 + a) / (2 * y1) mod M
x3 = λ2 – x1 mod M
y3 = λ* (x1 – x3) – y1 mod M
Операция деления (т.е. вычисления обратного по модулю) – медленная
Для ускорения вычислений используются проекционные координаты
Сложение в группе точек на эллиптической кривой над полем
GF(p)
Проекционные координаты
Переход к проекционным координатам
(x, y) -> (x, y, 1)
Возврат к обычному представлению(X, Y, Z) -> (X/Z2, Y/Z3)
Вычисление обратного по модулю только на этапе возврата к обычному представлению
Сложение точек:λ1 = X1 * Z2
2
λ2 = X2 * Z12
λ3 = λ1 – λ2
λ4 = Y1 * Z23
λ5 = Y2 * Z13
λ6 = λ4 – λ5
λ7 = λ1 + λ2
λ8 = λ4 + λ5
Z3 = Z1*Z2* λ3
X3 = λ62 – λ7* λ3
2
λ9 = λ7 * λ32 – 2 * X3
Y3 = (λ9 * λ6 – λ8 * λ33) / 2
Итого: 16 умножений
MEMORY
Архитектура сопроцессора
MontgomeryMultiplier
MontgomeryMultiplier
Adder / Subtracte
r
Adder / Subtracte
r
MEMORYMEMORYMEMORY3.1 kb
data bus
EC add/sub/doublescalar mult
EC add/sub/doublescalar mult
mod add/sub/multmod add/sub/mult
Level 3
Level 1
mod expmod exp
Level 2
Sequencer block
Systeminterfac
e
control
Результаты работы
Разработано verilog-описание и произведён синтез криптографического сопроцессора для микропроцессора «Эльбрус», позволяющего аппаратно ускорить выполнение алгоритмов шифрования с открытым ключом.
Особенности:Поддержка современных алгоритмов шифрования с открытым ключом, включая алгоритмы на эллиптических кривых
Масштабируемость – размеры операндов ограничены только объёмом памяти.
Эффективность (умножение по модулю в 4-8 раз быстрее программной реализации)
Основные характеристики:Тактовая частота 500 MHz (90nm)
3.1 kb внутренней памяти – поддержка до 4096 бит RSA и до 571 бит ECC
Площадь ~ 1.2мм2