1 / 23

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

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

iorwen
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Постановка задачи Развитие интернета и электронной коммерции вынуждает производителей микропроцессоров внедрять аппаратную поддержку алгоритмов шифрования: • Intel (Westmere), AMD (Bulldozer)- AES • VIA PadlockSecurity Engine - AES, SHA-1, SHA-256- Умножение Монтгомери (поддержка шифров с открытым ключом) • SPARC T3 (Криптографический ускоритель в каждом из 16 ядер)- DES, AES, Kasumi, MD5, SHA-1, SHA-256, SHA-512- Modular Arithmetic Unit (поддержка шифров с открытым ключом) ЗАДАЧА: Предложить решение по аппаратной поддержке алгоритмов шифрования с открытым ключом в микропроцессорах «Эльбрус»

  3. Два типа алгоритмов шифрования • Шифры с секретным ключом • Многочисленное повторение одного и того же набора простых операций (раундов)над блоками данных 128 / 64 / 256 бит • Большое разнообразие шифров – сложно выделить общие операции, эффективней реализовывать конкретные алгоритмы • Шифры с открытым ключом • Сложные операции (умножение по модулю) над очень большими числами (192 – 3072 бит) • В основе – операции умножения и возведения в степень по модулю Encrypt Decrypt Bob Alice Encrypt Decrypt Bob Alice

  4. Операции в шифрах с открытым ключом RSA (1024 – 3072 бит) 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 M AB mod M P + Q (сложение точекэлл. кривой) k*Q(умножение точки на скаляр) Генерация ключей: • Выбор простых 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 M • AB mod M

  5. Арифметика в двоичном поле GF(2n) Стандарт DSS определяет так же операции в GF(2n), потому что они эффективно реализуются аппаратно. GF(2n) – конечное поле многочленов степени меньше n с коэффициентами 0 или 1 x6 + x4 + x2 + x + 1 → 01010111(удобное представление в виде набора бит) Сложение и вычитание в GF(2n) Вместо сложения и вычитания – операция XOR Умножение и деление в GF(2n) 01010111 01010111 * Сложение ↔ XOR 10000011 1000 0011 01010111 1101 0100 Умножение (сложение ↔ XOR) 010101110 10101110000000 10101101111001 10001101100000 100000011001 Вычисление остатка по модулю (вычитание ↔ XOR) 100011011000 11000001

  6. Операции в шифрах с открытым ключом ECDSA, ECDH, ГОСТ Р 31.10-2001 k * P RSA, DSA, DH P + Q AB mod M A-1 mod M A * B mod Mв GF(P) и GF(2n) A, B, M, k - от 192 до 3072 бит - реализованные операции

  7. Умножение по модулюТребования к аппаратной реализации • Масштабируемость (scalable)Возможность работы с числами «произвольного» размера – расчёт на будущее • Работа в двух полях (dual-field)Поддержка операций в GF(p) и в GF(2n) в соответствии со стандартом США • Высокая разрядность (high-radix)Разрядность функционального блока от 32 бит для повышения производительности

  8. Умножение по модулюАлгоритм Монтгомери Ключевая идея – заменить деление на 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 // деление на 2nif P ≥ M then// результат в пределах 0 ≤ P < 2*M P = P – Mend if

  9. Умножение по модулюАлгоритм Монтгомери Использование умножения Монтгомери Mont(A, B) = A * B * 2-n mod Mдля вычисления A * Bmod M • Переход к представлению Монтгомери:Ar = A * 2n mod M = Mont(A, 22n)Br = B * 2n mod M = Mont(B, 22n) • Вместо обычного умножения – умножение МонтгомериPr = Mont(Ar, Br) = (A * 2n) * (B * 2n) * 2-n mod M = A * B * 2n mod M • Возврат к обычному представлениюP = Mont(Pr, 1) = (A * B * 2n) * 1 * 2-n = A * B Эффективен только для выполнения множества операций подряд

  10. Умножение по модулюАппаратная реализация алгоритма Монтгомери w бит – размер слова Умножение Монтгомери: Mont(A, B) = A * B * 2-n mod M A[3] A[2] A[1] A[0] * B[3] B[2] B[1] B[0] w – битный ALU A * B[0] M * U0 A[i] B[j] P[i+j] P[i] M[i] Uj w ALU A * B[1] M * U1 вычисляет в цикле A * B[2] A[i] B[j] + P[i+j] P[i] + M[i] * Uj * M * U2 A * B[3] M * U3 00 .. 0 00 .. 0 00 .. 0 00 .. 0 A * B * 2-n mod M A * B

  11. Умножитель в GF(p) и GF(2n) Подход 1: модифицированные FA / HA FSEL A B Cin FSEL A B FSEL = 1 - умножение в GF(p) FSEL = 0 - умножение в GF(2n) FA HA Cout S Cout S Оптимизация дерева умножителя с учетом различия задержек по разным входам FA/HA 2 xor 2 xor 1 xor 1 xor A A A A A A A A B B B B B B B B Cin Cin Cin Cin Cin Cin Cin Cin Cout Cout Cout Cout Cout Cout Cout Cout S S S S S S S S 3 xor 3 xor 3 xor 4 xor

  12. Умножитель в GF(p) и GF(2n) Подход 2: специальное построение дерева ai * bj w2 carry Wallace tree FA / HA array sum carry FA / HA array sum . . . carry FA / HA array sum Final adder 2w 2w - 1 Результат в GF(p) Результат в GF(2n)

  13. Умножитель в GF(p) и GF(2n) Подход 3: использование умножителя из DesignWare IP Synopsys DesignWare DW02_mult (обычный умножитель) Синтезируемое verilog-описание для умножителя в GF(2n) A B w w A B A B x 2w 2w - 1 Результат в GF(2n) Результат в GF(p)

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

  15. Умножитель МонтгомериБазовый блок montmul_unit(64 бит) M[i] / M’0 A[i] B[j] P[i] precalc x x U + + C S (C, S) = C + A[i]*B[j] + P[i] + M[i]*U P[i-1]

  16. Умножитель МонтгомериОрганизация конвейера MEMORY MEMORY MEMORY MEMORY B[j] стадии задержки montmulunit montmulunit montmulunit A[i] M[i] P[i] result FSM FSM FSM FSM

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

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

  19. Возведение в степень по модулю Вычисление «в лоб» ABmod 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 – простое число

  20. Сложение в группе точек на эллиптической кривой над полем GF(p) y2 = x3 + a*x + b mod M P = (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 Операция деления (т.е. вычисления обратного по модулю) – медленная Для ускорения вычислений используются проекционные координаты

  21. Сложение в группе точек на эллиптической кривой над полем GF(p) Сложение точек: λ1 = X1 * Z22 λ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* λ32 λ9 = λ7 * λ32 – 2 * X3 Y3 = (λ9 * λ6 – λ8 * λ33) / 2 Итого: 16 умножений Проекционные координаты Переход к проекционным координатам (x, y) -> (x, y, 1) Возврат к обычному представлению (X, Y, Z) -> (X/Z2, Y/Z3) Вычисление обратного по модулю только на этапе возврата к обычному представлению

  22. Архитектура сопроцессора MEMORY MEMORY MEMORY MEMORY 3.1 kb data bus Adder / Subtracter Montgomery Multiplier System interface Sequencer block Level 3 EC add/sub/double scalar mult Level 2 control mod exp Level 1 mod add/sub/mult

  23. Результаты работы Разработано verilog-описание и произведён синтез криптографического сопроцессора для микропроцессора «Эльбрус», позволяющего аппаратно ускорить выполнение алгоритмов шифрования с открытым ключом. Особенности: • Поддержка современных алгоритмов шифрования с открытым ключом, включая алгоритмы на эллиптических кривых • Масштабируемость – размеры операндов ограничены только объёмом памяти. • Эффективность (умножение по модулю в 4-8 раз быстрее программной реализации) Основные характеристики: • Тактовая частота 500 MHz (90nm) • 3.1 kb внутренней памяти – поддержка до 4096 бит RSA и до 571 бит ECC • Площадь ~ 1.2мм2

More Related