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

Презентация:



Advertisements
Похожие презентации
Моделирование и анализ аппаратных реализаций криптографических алгоритмов на основе эллиптических кривых Домаев Роман Михайлович Научный руководитель:
Advertisements

Криптографические свойства блочных шифров регистрового типа, построенных на основе обобщения раундовой функции Фейстеля Исполнитель: студентка гр. Б10-04.
Схема предсказания исключительной ситуации «потеря точности» в модуле операции «умножение с накоплением» Ивасюк Евгений Вячеславович Научно-исследовательский.
Принцип построения – SP-сеть Архитектура – Сеть Фейстеля, Квадрат Самые известные блочные шифры – DES, ГОСТ , RIJNDAEL (AES), TEA, MARS, RC6, SERPENT,
Автор: учитель информатики Комкова Мария Сергеевна, г.Москва.
Устройство для вычисления скалярного произведения векторов с коррекцией ошибок на базе системы остаточных классов Авторы: Соловьев Р.А. (докладчик) Д.В.
Введение в параллельную обработку. Уровни параллелизма в процессорах Параллелизм данных (DLP – Data Level Parallelism) Параллелизм команд (ILP – Instruction.
Разработка кэша справочника для вычислительного комплекса на базе микропроцессора Эльбрус – 2S Студент : Петров Игорь, ФРТК, 613 группа Научный руководитель:
Процессор – это блок, предназначенный для автоматического считывания команд программы, их расшифровки и выполнения.
ЕДИНЫЙ ПОДХОД К УСОВЕРШЕНСТВОВАНИЮ ИЗВЕСТНЫХ ФУНКЦИЙ ХЭШИРОВАНИЯ Хасанов П.Ф., Ахмедова О.П.
Модуль 2. Математичні основи криптографії 1. Лекция 6 Криптография с использованием эллиптических кривых 1. Основные понятия 2. Способы использования.
Разработка 4-х канального контроллера оперативной памяти DDR3 SDRAM с интерфейсом AXI Студент: Кожин А.С., ФРТК, 515 гр. Научный руководитель: д.т.н.,
Системы счисления и внутреннее представление целых ( практическое занятие ) Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных.
Реализация алгоритмов расчета RAID 6 с использованием встроенных функций SSE Макулов Р.Н., 345 группа Научный руководитель: Короткевич А.И.
Разработка программного обеспечения для сигнальных процессоров TMS320C64xx Часть 3. Архитектура ядра процессоров с64хх.
5 марта 2015 г. 5 марта 2015 г. 5 марта 2015 г. 5 марта 2015 г. 5 марта 2015 г.
Архитектура компьютера. Функциональные характеристики ПК Лекция 2 часть г.
Тема: Конечные поляТема: Конечные поляКонечные поля Теория конечных полей является центральной математической теорией, лежащей в основе помехоустойчивого.
Модуль 2. Математичні основи криптографії 1. Лекция 4 Хэш-функции и аутентификация сообщений. Часть 2 1. Хэш-функции основных алгоритмов. SHA1 2. Коды.
Использование модулярной арифметики в алгоритме гомоморфного шифрования Выполнила: Чечулина Дарья Научный руководитель: Кренделев С. Ф. Лаборатория современных.
Транксрипт:

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

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

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

Операции в шифрах с открытым ключом 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 = m e mod N Расшифровка: m = c d mod N Основные операции (A, B, M: бит) A*B mod M A B mod M ECDSA (192 – 512 бит) Операции над точками (x, y) эллипт. кривой y 2 = x 3 + a*x + b mod q Базовая точка P порядка n (n*P=0) Q=d*P : Q – открытый, d – секретный ключ Проверка подписи (r, s) сообщения m Вычислить w = s -1 mod n Вычислить u 1 = m*w, u 2 = r*w mod n Вычислить X = u 1 *P + u 2 *Q = (x 1, y 1 ) Сравнить x 1 == r mod n Основные операции (числа: 192 – 512 бит) A*B mod M A B mod M P + Q (сложение точек элл. кривой) k*Q (умножение точки на скаляр)

Арифметика в двоичном поле GF(2 n ) Стандарт DSS определяет так же операции в GF(2n), потому что они эффективно реализуются аппаратно. GF(2 n ) – конечное поле многочленов степени меньше n с коэффициентами 0 или 1 x 6 + x 4 + x 2 + x (удобное представление в виде набора бит) * Умножение (сложение XOR) Вычисление остатка по модулю (вычитание XOR) Сложение и вычитание в GF(2 n ) Вместо сложения и вычитания – операция XOR Умножение и деление в GF(2 n ) Сложение XOR

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

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

Умножение по модулю Алгоритм Монтгомери Ключевая идея – заменить деление на M делением на 2 n, которое легко выполняется аппаратно Mont(A, B) = A * B * 2 -n mod M Алгоритм: A, B < M < 2 n, M - нечётное M = -M -1 mod 2 n // предвычисленная константа, зависит только от M P = A * B U = P * M mod 2 n // просто оставляем первые n бит P = (P + U * M) >> n // деление на 2 n if P M then // результат в пределах 0 P < 2*M P = P – M end if

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

Умножение по модулю Аппаратная реализация алгоритма Монтгомери A, B < M < 2n, w – количество бит в слове, e = n/w – количество слов M 0 = - M[0] -1 mod 2 w 1: P = 0 2: for j = 0 to e - 1 do 3: U j = (A[0] * B[j] + P[0]) * M 0 mod 2 w 4: (C, S) = A[0] * B[j] + P[0] + M[0] * U j 5: for i = 1 to e – 1 do 6: (C, S) = C + A[i] * B[j] + P[i] + M[i] * U j 7: P[i - 1] = S 8: end for 9: P[e -1] = C 10: end for 11: if P M then // только для GF(p) 12: P = P – M 13: end if A[3]A[2]A[1]A[0] B[3]B[2]B[1]B[0] A * B * 2 -n mod M A * B[0] M * U 0 A * B[1] M * U 1 A * B[2] M * U 2 A * B[3] M * U 3 P *

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

Умножитель в GF(p) и GF(2 n ) Подход 1: модифицированные FA / HA FA FSELABC in S C out HA FSELAB SC out FSEL = 1 - умножение в GF(p) FSEL = 0 - умножение в GF(2 n ) ABCin CoutS ABCin CoutS ABCin CoutS ABCin CoutS ABCin CoutS ABCin CoutS ABCin CoutS ABCin CoutS 2 xor 3 xor 1 xor 2 xor 1 xor 3 xor4 xor Оптимизация дерева умножителя с учетом различия задержек по разным входам FA/HA

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

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

Умножитель в GF(p) и GF(2 n ) Сравнение подходов для умножителя 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

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

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

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

Вычисление «в лоб» A B mod M = A * A * A * … * A mod M [!] 2 n операций умножения по модулю если B – n-битное число Быстрое возведение в степень (Square & multiply) x 19 - ? 19 : = (2 * 2 * 2 + 1) * x 19 = (((x 2 ) 2 ) 2 * x) 2 * x В среднем n + n/2 операций умножения Вычисление обратного значения по модулю Малая теорема Ферма: A -1 mod M = A M - 2 mod M если M – простое число Возведение в степень по модулю

Сложение в группе точек на эллиптической кривой над полем GF(p) y 2 = x 3 + a*x + b mod M P = (x 1, y 1 ), Q = (x 2, y 2 ), P Q Сложение точек: P + Q = (x 3, y 3 ) λ = (y 2 – y 1 ) / (x 2 – x 1 ) mod M x 3 = λ 2 – x 1 – x 2 mod M y 3 = λ* (x 1 – x 3 ) – y 1 mod M Удвоение точки: 2*P = (x3, y3) λ = (3*x a) / (2 * y 1 ) mod M x 3 = λ 2 – x 1 mod M y 3 = λ* (x 1 – x 3 ) – y 1 mod M Операция деления (т.е. вычисления обратного по модулю) – медленная Для ускорения вычислений используются проекционные координаты

Сложение в группе точек на эллиптической кривой над полем GF(p) Проекционные координаты Переход к проекционным координатам (x, y) -> (x, y, 1) Возврат к обычному представлению (X, Y, Z) -> (X/Z 2, Y/Z 3 ) Вычисление обратного по модулю только на этапе возврата к обычному представлению Сложение точек: λ 1 = X 1 * Z 2 2 λ 2 = X 2 * Z 1 2 λ 3 = λ 1 – λ 2 λ 4 = Y 1 * Z 2 3 λ 5 = Y 2 * Z 1 3 λ 6 = λ 4 – λ 5 λ 7 = λ 1 + λ 2 λ 8 = λ 4 + λ 5 Z 3 = Z 1 *Z 2 * λ 3 X 3 = λ 6 2 – λ 7 * λ 3 2 λ 9 = λ 7 * λ 3 2 – 2 * X 3 Y 3 = (λ 9 * λ 6 – λ 8 * λ 3 3 ) / 2 Итого: 16 умножений

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

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