Здесь мы вводим некоторые обозначения, которые используются в этой статье.
Основные математические обозначения
- Множество целых чисел.
- Набор одномерных многочленов с коэффициентами в конечном поле мощности 2.
- целое число такой, что для целого числа а также .
- полином с участием такой, что с участием .
Базовая строковая нотация
- Набор всех струн.
- Набор всех строк длиной n.
Для - длина струны . Строка нулевой длины обозначается.
Для - результат а также конкатенация.
Биты, байты, слова
- Набор бит.
Возьмем все наборы формы. Для такого множества A определим «нулевой элемент»:
;
для
.
Мы определяем как набор байтов, и как набор слов.
Для с участием а также мы определяем оператор заполнения:
.
Оператор преобразования
Оператор преобразования выполняет преобразование между элементами .
Пара ключей шифрования
В схеме шифрования используются два типа ключей:
Открытый ключ ACE:.
Закрытый ключ ACE:.
Для заданного параметра размера m, так что ключевые компоненты определены как:
- 256-битное простое число.
- m-битное простое число, такое что .
- элементы (чей мультипликативный порядок по модулю разделяет ).
- элементы .
- элементы с участием а также , где а также .
Генерация ключей
Алгоритм. Генерация ключей для схемы шифрования ACE.
Ввод: параметр размера m., так что .
Выход: пара открытого / закрытого ключей.
- Создать случайное простое число , так что .
- Создать случайное простое число , , так что .
- Сгенерировать случайное целое число , так что .
- Сгенерировать случайные целые числа а также
- Вычислите следующие целые числа в :
,
,
,
,
.
- Генерация случайных байтовых строк а также , где а также .
- Вернуть пару открытый ключ / закрытый ключ
Представление зашифрованного текста
Зашифрованный текст схемы шифрования ACE имеет вид
,
где компоненты определены как:
- целые числа от (чей мультипликативный порядок по модулю разделяет ).
- элемент .
- элемент .
мы называем преамбулой , и- криптограмма . Если открытый текст - это строка, состоящая из байт, то длина равно .
Нам нужно ввести функцию, который отображает зашифрованный текст в его байтовую строку
представление и соответствующая обратная функция . Для целого числа, строка слова , целые числа , и байтовая строка ,
.
Для целого числа , байтовая строка , так что ,
.
Процесс шифрования
Алгоритм. Операция асимметричного шифрования ACE.
ввод: открытый ключ и байтовая строка .
Вывод: байтовая строка - зашифрованный текст из .
- Генерировать случайно.
- Сгенерируйте преамбулу зашифрованного текста:
- Генерировать случайно.
- Вычислить , .
- Вычислить ; Обратите внимание, что.
- Вычислить .
- Вычислите ключ для операции симметричного шифрования:
- , .
- Вычислить .
- Вычислить криптограмму .
- Закодируйте зашифрованный текст:
.
- Возвращаться .
Перед началом процесса симметричного шифрования входное сообщение делится на блоки , где каждый блок, возможно, кроме последнего, имеет размер 1024 байта. Каждый блок зашифрован потоковым шифром. Для каждого зашифрованного блокаВычисляется 16-байтовый код аутентификации сообщения. Получаем криптограмму
.
.
Обратите внимание, что если , тогда .
Алгоритм. Асимметричный процесс шифрования ACE.
Вход:
Выход: , .
- Если , затем вернитесь .
- Инициализировать псевдослучайное состояние генератора:
- Сгенерируйте ключ :
.
- .
- Пока , сделайте следующее:
- .
- Сгенерируйте значения маски для шифрования и MAC:
- .
- .
- Зашифруйте открытый текст: .
- Сгенерируйте код аутентификации сообщения:
- Если , тогда ; еще.
- .
- Обновите зашифрованный текст: .
- .
- Возвращаться .
Процесс расшифровки
Алгоритм. Процесс расшифровки ACE.
Ввод: открытый ключ и соответствующий закрытый ключ , байтовая строка .
Вывод: расшифрованное сообщение.
- Расшифруйте зашифрованный текст:
- Если , затем вернитесь .
- Вычислить:
;
Обратите внимание, что , где .
- Проверьте преамбулу зашифрованного текста:
- Если или же или же , затем вернитесь .
- Если , затем вернитесь .
- .
- Если , тогда .
- Вычислить ; Обратите внимание, что.
- Если , тогда .
- Если , затем вернитесь .
- Вычислите ключ для операции симметричного дешифрования:
- , .
- Вычислить .
- Вычислить ;Обратите внимание, что может вернуться .
- Возвращаться .
Алгоритм. Расшифровка операции.
Вход:
Вывод: расшифрованное сообщение .
- Если , затем вернитесь .
- Инициализировать псевдослучайное состояние генератора:
- Сгенерируйте ключ :
.
- .
- Пока , сделайте следующее:
- .
- Если , затем вернитесь .
- Сгенерируйте значения маски для шифрования и MAC:
- .
- .
- Проверьте код аутентификации сообщения:
- Если , тогда ; еще.
- .
- Если , затем вернитесь .
- Обновите открытый текст: .
- .
- Возвращаться .
В схеме подписи используются два типа ключей:
Открытый ключ подписи ACE:.
Закрытый ключ подписи ACE:.
Для данного параметра размера, так что , ключевые компоненты определяются следующим образом:
- -битовое простое число с - тоже простое число.
- -битовое простое число с - тоже простое число.
- и имеет либо или же бит.
- элементы (квадратичные вычеты по модулю ).
- 161-битное простое число.
- элемент
- элементы .
- элементы .
Генерация ключей
Алгоритм. Генерация ключа для схемы подписи открытым ключом ACE.
Ввод: параметр размера, так что .
Выход: пара открытого / закрытого ключей.
- Генерация случайных простых чисел, так что а также - тоже простое число, и
,
, и
,
где
а также . - Набор .
- Сгенерировать случайное простое число , где .
- Создать случайный , принимая во внимание а также , и вычислить .
- Создать случайный и вычислить .
- Генерация случайных байтовых строк , а также .
- Вернуть пару открытый ключ / закрытый ключ
.
Подпись Представительство
Подпись в схеме подписи ACE имеет вид , где компоненты определяются следующим образом:
- элемент .
- целое, такое что .
- элементы .
- элемент ;Обратите внимание, что , где - сообщение подписывается.
Нам нужно ввести функция, которая отображает подпись в ее представление байтовой строки, и соответствующая обратная функция . Для целого числа, байтовая строка , целые числа а также , и байтовая строка ,
.
Для целого числа , байтовая строка , где ,
.
Процесс создания подписи
Алгоритм. Процесс создания подписи ACE.
Ввод: открытый ключ и соответствующий закрытый ключ и байтовая строка , .
Вывод: байтовая строка - цифровая подпись.
- Выполните следующие шаги для хеширования входных данных:
- Сгенерируйте хеш-ключ наугад, так что .
- Вычислить .
- Выбирать случайным образом и вычислить .
- Вычислить .
- Создать случайное простое число , , и его сертификат правильности : . Повторяйте этот шаг до тех пор, пока.
- Набор ; Обратите внимание, что.
- Вычислить , где
,
и где а также . - Закодируйте подпись:
.
- Возвращаться