ACE (Продвинутый криптографический движок) - совокупность единиц, реализующих как схему шифрования с открытым ключом, так и схему цифровой подписи. Соответствующие названия этих схем - «ACE Encrypt» и «ACE Sign». Схемы основаны на схеме шифрования с открытым ключом Cramer-Shoup и схеме подписи Cramer-Shoup. Представленные варианты этих схем предназначены для достижения хорошего баланса между производительностью и безопасностью всей системы шифрования.
Авторы
Все алгоритмы, реализованные в ACE, основаны на алгоритмах, разработанных Виктором Шоупом и Рональдом Крамером. Полная спецификация алгоритмов написана Виктором Шупом. Реализацией алгоритмов занимаются Томас Швайнбергер и Мехди Нассехи, а поддержку и сопровождение - Виктор Шуп. Томас Швайнбергер участвовал в создании документа спецификации ACE, а также написал руководство пользователя.
Рональд Крамер в настоящее время учится в Орхусском университете, Дания. Он работал над проектом ACE Encrypt, находясь в ETH в Цюрих, Швейцария.
Мехди Нассехи и Томас Швайнбергер работали над проектом ACE в исследовательской лаборатории IBM в г. Цюрих, Швейцария.
Виктор Шуп работает в исследовательской лаборатории IBM в г. Цюрих, Швейцария.
Безопасность
Схема шифрования в ACE может быть доказана безопасностью при разумных и естественных предположениях о неприемлемости этих четырех предположений:
- Решительное допущение Диффи-Хеллмана (DDH)
- Сильное предположение RSA
- Сопротивление столкновению второго прообраза SHA-1
- Псевдослучайность режима суммирования / счетчика MARS
Основная терминология и обозначения
Здесь мы вводим некоторые обозначения, которые используются в этой статье.
Основные математические обозначения
- Множество целых чисел.
- Набор одномерных многочленов с коэффициентами в конечном поле мощности 2.
- целое число такой, что для целого числа и .
- полином с участием такой, что с участием .
Базовая строковая нотация
- Набор всех струн.
- Набор всех строк длиной n.
Для - длина струны . Строка нулевой длины обозначается .
Для - результат и конкатенация.
Биты, байты, слова
- Набор бит.
Возьмем все наборы формы . Для такого множества A мы определяем «нулевой элемент»:
;
для .Мы определяем как набор байтов, и как набор слов.
Для с участием и мы определяем оператор заполнения:
.Оператор преобразования
Оператор преобразования выполняет преобразование между элементами .
Схема шифрования
Пара ключей шифрования
В схеме шифрования используются два типа ключей:
Открытый ключ ACE: .
Закрытый ключ ACE: .
Для заданного параметра размера m , так что , ключевые компоненты определены как:
- 256-битное простое число.
- m-битное простое число, такое что .
- элементы (чей мультипликативный порядок по модулю разделяет ).
- элементы .
- элементы с участием и , где и .
Генерация ключей
Алгоритм. Генерация ключей для схемы шифрования ACE.
Ввод: параметр размера m , так что .
Выход: пара открытого и закрытого ключей.
- Создать случайное простое число , так что .
- Создать случайное простое число , , так что .
- Сгенерировать случайное целое число , так что .
- Сгенерировать случайные целые числа и
- Вычислите следующие целые числа в :,
,
,
,
. - Генерация случайных байтовых строк и , где и .
- Вернуть пару открытый ключ / закрытый ключ
Представление зашифрованного текста
Зашифрованный текст схемы шифрования ACE имеет вид
,
где компоненты определены как:
- целые числа от (чей мультипликативный порядок по модулю разделяет ).
- элемент .
- элемент .
мы называем преамбула, и - в криптограмма. Если открытый текст - это строка, состоящая из байт, то длина равно .
Нам нужно ввести функцию , который отображает зашифрованный текст в его байтовую строку
представление и соответствующая обратная функция . Для целого числа , строка слова , целые числа , и байтовая строка ,
.
Для целого числа , байтовая строка , так что ,
.Процесс шифрования
Алгоритм. Операция асимметричного шифрования ACE.
ввод: открытый ключ и байтовая строка .
Вывод: байтовая строка - зашифрованный текст из .
- Генерировать наугад.
- Создайте преамбулу зашифрованного текста:
- Генерировать наугад.
- Вычислить , .
- Вычислить ; Обратите внимание, что .
- Вычислить .
- Вычислите ключ для операции симметричного шифрования:
- , .
- Вычислить .
- Вычислить криптограмму .
- Закодируйте зашифрованный текст: .
- Вернуть .
Перед запуском процесса симметричного шифрования входное сообщение делится на блоки , где каждый блок, возможно, кроме последнего, имеет размер 1024 байта. Каждый блок зашифрован потоковым шифром. Для каждого зашифрованного блока Вычисляется 16-байтовый код аутентификации сообщения. Получаем криптограмму
.. Обратите внимание, что если , тогда .
Алгоритм. Асимметричный процесс шифрования ACE.
Вход:
Вывод: , .
- Если , затем вернитесь .
- Инициализировать псевдослучайное состояние генератора:
- Сгенерируйте ключ : .
- .
- В то время как , сделайте следующее:
- .
- Сгенерируйте значения маски для шифрования и MAC:
- .
- .
- Зашифруйте открытый текст: .
- Сгенерируйте код аутентификации сообщения:
- Если , тогда ; еще .
- .
- Обновите зашифрованный текст: .
- .
- Вернуть .
Процесс расшифровки
Алгоритм. Процесс расшифровки ACE.
Ввод: открытый ключ и соответствующий закрытый ключ , байтовая строка .
Вывод: расшифрованное сообщение .
- Расшифруйте зашифрованный текст:
- Если , затем вернитесь .
- Вычислить: ;
Обратите внимание, что , где .
- Проверьте преамбулу зашифрованного текста:
- Если или или , затем вернитесь .
- Если , затем вернитесь .
- .
- Если , тогда .
- Вычислить ; Обратите внимание, что .
- Если , тогда .
- Если , затем вернитесь .
- Вычислите ключ для операции симметричного дешифрования:
- , .
- Вычислить .
- Вычислить ;Обратите внимание, что может вернуться .
- Вернуть .
Алгоритм. Расшифровка операции .
Вход:
Вывод: расшифрованное сообщение .
- Если , затем вернитесь .
- Инициализировать псевдослучайное состояние генератора:
- Сгенерируйте ключ : .
- .
- В то время как , сделайте следующее:
- .
- Если , затем вернитесь .
- Сгенерируйте значения маски для шифрования и MAC:
- .
- .
- Проверьте код аутентификации сообщения:
- Если , тогда ; еще .
- .
- Если , затем вернитесь .
- Обновите открытый текст: .
- .
- Вернуть .
Схема подписи
В схеме подписи используются два типа ключей:
Открытый ключ подписи ACE: .
Закрытый ключ подписи ACE: .
Для данного параметра размера , так что , ключевые компоненты определяются следующим образом:
— -битовое простое число с - тоже простое число.
— -битовое простое число с - тоже простое число.
— и имеет либо или бит.
- элементы (квадратичные вычеты по модулю ).
- 161-битное простое число.
- элемент
- элементы .
- элементы .
Генерация ключей
Алгоритм. Генерация ключа для схемы подписи открытым ключом ACE.
Ввод: параметр размера , так что .
Выход: пара открытого / закрытого ключей.
- Генерация случайных простых чисел, так что и - тоже простое число, и , , и ,
где
и . - Набор .
- Сгенерировать случайное простое число , где .
- Создать случайный , принимая во внимание и , и вычислить .
- Создать случайный и вычислить .
- Генерация случайных байтовых строк , и .
- Вернуть пару открытый ключ / закрытый ключ .
Подпись Представление
Подпись в схеме подписи ACE имеет вид , где компоненты определяются следующим образом:
- элемент .
- целое, такое что .
- элементы .
- элемент ;Обратите внимание, что , где - сообщение подписывается.
Нам нужно ввести функция, которая отображает подпись в ее представление байтовой строки, и соответствующая обратная функция . Для целого числа , байтовая строка , целые числа и , и байтовая строка ,
.
Для целого числа , байтовая строка , где ,
.Процесс создания подписи
Алгоритм. Процесс создания подписи ACE.
Ввод: открытый ключ и соответствующий закрытый ключ и байтовая строка , .
Вывод: байтовая строка - цифровая подпись .
- Выполните следующие шаги для хеширования входных данных:
- Создать хэш-ключ наугад, так что .
- Вычислить .
- Выбрать случайным образом и вычислить .
- Вычислить .
- Создать случайное простое число , , и его сертификат правильности : . Повторяйте этот шаг, пока .
- Набор ; Обратите внимание, что .
- Вычислить , где ,
и где и . - Закодируйте подпись: .
- Вернуть
Заметки
В определении процесса шифрования ACE и процесса подписи ACE используются некоторые вспомогательные функции (например, UOWHash, ESHash и некоторые другие), определение которых выходит за рамки данной статьи. Подробнее об этом можно прочитать в в.[1]
Внедрение, использование и производительность
Схема шифрования ACE рекомендована NESSIE (Новые европейские схемы для подписей, целостности и шифрования) в качестве схемы асимметричного шифрования. Пресс-релиз датирован февралем 2003 года.
Обе схемы были реализованы на ANSI C с использованием библиотеки GNU GMP. Тесты проводились на двух платформах: Power PC 604 модели 43P в системе AIX и Pentium 266 МГц в системе Windows NT. Таблицы результатов:
Таблица 1. Временные затраты на основные операции.
| Питание ПК | Pentium |
| Размер операнда (байт) | Размер операнда (байт) |
| 512 | 1024 | 512 | 1024 |
Умножение | 3,5 * 10 ^ (- 5) сек | 1.0 * 10 ^ (- 4) сек | 4.5 * 10 ^ (- 5) сек | 1,4 * 10 ^ (- 4) сек |
Квадрат | 3.3 * 10 ^ (- 5) сек | 1.0 * 10 ^ (- 4) сек | 4.4 * 10 ^ (- 5) сек | 1,4 * 10 ^ (- 4) сек |
Возведение в степень | 1.9 * 10 ^ (- 2) сек | 1.2 * 10 ^ (- 1) сек | 2.6 * 10 ^ (- 2) сек | 1,7 * 10 ^ (- 1) сек |
Таблица 2. Характеристики схемы шифрования и схемы подписи.
| Питание ПК | Pentium |
| Постоянные затраты (мс) | Мбит / сек | Постоянные затраты (мс) | Мбит / сек |
Зашифровать | 160 | 18 | 230 | 16 |
Расшифровать | 68 | 18 | 97 | 14 |
Знак | 48 | 64 | 62 | 52 |
Настройка знака | 29 | | 41 | |
Проверить | 52 | 65 | 73 | 53 |
Литература
внешние ссылки