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 |
Литература
внешние ссылки