23
Выполнил: Скрябин Иван, 513 Научный руководитель: Сахин Ю.Х. Операции поддержки алгоритмов шифрования с открытым ключом и их реализация в микропроцессоре «Эльбрус»

Выполнил: Скрябин Иван, 513 Научный руководитель: Сахин Ю.Х

  • Upload
    iorwen

  • View
    98

  • Download
    1

Embed Size (px)

DESCRIPTION

Операции поддержки алгоритмов шифрования с открытым ключом и их реализация в микропроцессоре «Эльбрус». Выполнил: Скрябин Иван, 513 Научный руководитель: Сахин Ю.Х. Постановка задачи. - PowerPoint PPT Presentation

Citation preview

Page 1: Выполнил: Скрябин Иван, 513 Научный руководитель:  Сахин  Ю.Х

Выполнил: Скрябин Иван, 513Научный руководитель: Сахин Ю.Х.

Операции поддержки алгоритмов шифрования с открытым ключом

и их реализация в микропроцессоре «Эльбрус»

Page 2: Выполнил: Скрябин Иван, 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 (поддержка шифров с открытым ключом)

ЗАДАЧА: Предложить решение по аппаратной поддержке алгоритмов шифрования с открытым ключом в микропроцессорах «Эльбрус»

Page 3: Выполнил: Скрябин Иван, 513 Научный руководитель:  Сахин  Ю.Х

Два типа алгоритмов шифрования

Шифры с секретным ключом

Многочисленное повторение одного и того же набора простых операций (раундов) над блоками данных 128 / 64 / 256 бит

Большое разнообразие шифров – сложно выделить общие операции, эффективней реализовывать конкретные алгоритмы

Шифры с открытым ключом

Сложные операции (умножение по модулю) над очень большими числами (192 – 3072 бит)

В основе – операции умножения и возведения в степень по модулю

Encrypt Decrypt

Bob Alice

Encrypt Decrypt

Bob Alice

Page 4: Выполнил: Скрябин Иван, 513 Научный руководитель:  Сахин  Ю.Х

Операции в шифрах с открытым ключом

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 (умножение точки на скаляр)

Page 5: Выполнил: Скрябин Иван, 513 Научный руководитель:  Сахин  Ю.Х

Арифметика в двоичном поле 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

Page 6: Выполнил: Скрябин Иван, 513 Научный руководитель:  Сахин  Ю.Х

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 бит

Page 7: Выполнил: Скрябин Иван, 513 Научный руководитель:  Сахин  Ю.Х

Умножение по модулюТребования к аппаратной реализации

Масштабируемость (scalable)

Возможность работы с числами «произвольного» размера – расчёт на будущее

Работа в двух полях (dual-field)

Поддержка операций в GF(p) и в GF(2n) в соответствии со стандартом США

Высокая разрядность (high-radix)Разрядность функционального блока от 32 бит для повышения производительности

Page 8: Выполнил: Скрябин Иван, 513 Научный руководитель:  Сахин  Ю.Х

Умножение по модулюАлгоритм Монтгомери

Ключевая идея – заменить деление на 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

Page 9: Выполнил: Скрябин Иван, 513 Научный руководитель:  Сахин  Ю.Х

Умножение по модулюАлгоритм Монтгомери

Использование умножения Монтгомери 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

Эффективен только для выполнения множества операций подряд

Page 10: Выполнил: Скрябин Иван, 513 Научный руководитель:  Сахин  Ю.Х

Умножение по модулюАппаратная реализация алгоритма Монтгомери

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

Page 11: Выполнил: Скрябин Иван, 513 Научный руководитель:  Сахин  Ю.Х

Умножитель в 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

Page 12: Выполнил: Скрябин Иван, 513 Научный руководитель:  Сахин  Ю.Х

Умножитель в 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

Page 13: Выполнил: Скрябин Иван, 513 Научный руководитель:  Сахин  Ю.Х

Умножитель в 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

Page 14: Выполнил: Скрябин Иван, 513 Научный руководитель:  Сахин  Ю.Х

Умножитель в GF(p) и GF(2n) Сравнение подходов для умножителя 64x64 бит

Page 15: Выполнил: Скрябин Иван, 513 Научный руководитель:  Сахин  Ю.Х

Умножитель МонтгомериБазовый блок 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

Page 16: Выполнил: Скрябин Иван, 513 Научный руководитель:  Сахин  Ю.Х

MEMORYMEMORYMEMORY

Умножитель МонтгомериОрганизация конвейера

montmulunit

FSM

montmulunit

FSM

montmulunit

FSM

A[i]

M[i]

P[i]

B[j]

MEMORY

result

FSM

стадиизадержки

Page 17: Выполнил: Скрябин Иван, 513 Научный руководитель:  Сахин  Ю.Х

Умножитель МонтгомериВыбор параметров конвейера: быстродействие

Две 64-битных стадии дают ускорение примерно в 4 раза для ECC и в 8 раз для RSAпо сравнению с программной реализацией (все операнды на регистрах, операции в GF(p)).

Page 18: Выполнил: Скрябин Иван, 513 Научный руководитель:  Сахин  Ю.Х

Умножитель МонтгомериВыбор параметров конвейера: площадь

Page 19: Выполнил: Скрябин Иван, 513 Научный руководитель:  Сахин  Ю.Х

Вычисление «в лоб»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 – простое число

Возведение в степень по модулю

Page 20: Выполнил: Скрябин Иван, 513 Научный руководитель:  Сахин  Ю.Х

Сложение в группе точек на эллиптической кривой над полем

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

Операция деления (т.е. вычисления обратного по модулю) – медленная

Для ускорения вычислений используются проекционные координаты

Page 21: Выполнил: Скрябин Иван, 513 Научный руководитель:  Сахин  Ю.Х

Сложение в группе точек на эллиптической кривой над полем

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 умножений

Page 22: Выполнил: Скрябин Иван, 513 Научный руководитель:  Сахин  Ю.Х

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

Page 23: Выполнил: Скрябин Иван, 513 Научный руководитель:  Сахин  Ю.Х

Результаты работы

Разработано verilog-описание и произведён синтез криптографического сопроцессора для микропроцессора «Эльбрус», позволяющего аппаратно ускорить выполнение алгоритмов шифрования с открытым ключом.

Особенности:Поддержка современных алгоритмов шифрования с открытым ключом, включая алгоритмы на эллиптических кривых

Масштабируемость – размеры операндов ограничены только объёмом памяти.

Эффективность (умножение по модулю в 4-8 раз быстрее программной реализации)

Основные характеристики:Тактовая частота 500 MHz (90nm)

3.1 kb внутренней памяти – поддержка до 4096 бит RSA и до 571 бит ECC

Площадь ~ 1.2мм2