WikiSort.ru - Компьютерные программы

ПОИСК ПО САЙТУ | о проекте

ACE (Advanced Cryptographic Engine) — набор программных средств, реализующих шифрование в режиме схемы шифрования с открытым ключом, а также в режиме цифровой подписи. Соответствующие названия этих режимов — «ACE Encrypt» и «ACE Sign». Схемы являются вариантами реализации схем Крамера-Шоупа. Внесённые изменения нацелены на достижение наилучшего баланса между производительностью и безопасностью всей системы шифрования.

Авторы

Все алгоритмы, написанные в ACE, основаны на алгоритмах, разработанных Виктором Шоупом(Victor Shoup) и Рональдом Крамером (Ronald Cramer). Полная спецификация алгоритмов написана Виктором Шоупом. Реализация алгоритмов выполнена Томасом Швейнбергером(Thomas Schweinberger) и Медди Нассей (Mehdi Nassehi), их поддержкой и развитием занимается Виктор Шоуп. Томас Швейнберг принимал участие в составлении документа спецификаций ACE, а также написал руководство пользователя.
Рональд Крамер в настоящее время находится в университете Орхуса, Дания. Он принимал участие в работе, относящейся к ACE Encrypt пока находился в ETH в Цюрихе, Швейцария.
Медди Нассей и Томасом Швейнбергер работали над проектом ACE в исследовательской лаборатории IBM в Цюрихе, Швейцария, но в настоящее время закончили своё пребывание там.
Виктор Шоуп работает в исследовательской лаборатории IBM в Цюрихе, Швейцария.

Безопасность

Доказательство безопасности схемы шифрования и схемы цифровой подписи в ACE проводится с использованием обоснованных и естественных допущений. Четырьмя основными допущениями являются:

  • Допущение Диффи-Хеллмана
  • Сильное допущение RSA
  • Стойкость к коллизиям на второй прообраз в SHA-1
  • Псевдо-случайность режима сумматора/счётчика MARS

Основные обозначения и терминология

Приведём определения некоторых обозначений и терминов, используемых в данной статье.

Основные математические обозначения

 — множество целых чисел.
 — множество одномерных полиномов с коэффициентами в конечном поле с числом элементов поля — 2.
 — такое целое число , для которого при целом и .
 — такой полином с , такой что при .

Основные строковые обозначения

 — множество всевозможных строк.
 — множество всевозможных строк длины n.
Для  — длина строки . Обозначения для длины нулевой строки — .
Для  — результат конкатенации строк и .

Биты, байты, слова

 — множество битов.
Рассмотрим множества вида . Для такого множества A определим нулевой элемент:

;
для .


Определим как множество байтов, а как множество слов.

Для с и определим оператор заполнения:

.

Оператор преобразования

Оператор преобразования выполняет преобразования между элементами .

Схема шифрования

Пара ключей шифрования

В схеме шифрования ACE задействованы два типа ключей:
открытый ключ ACE: .
закрытый ключ ACE: .
Для заданного параметра размера , такого что , компоненты ключей определяются следующим образом:
 — 256-битное простое число.
 — m-битное простое число, такое что .
 — элементы (чей мультипликативный порядок по модулю делит ).
 — элементы .
 — элементы , для которых и , где и .

Генерация ключа

Алгоритм. Генерация ключа для схемы шифрования ACE.
Вход: параметра размера , такой что .
Выход: пара открытый/закрытый ключ.

  1. Сгенерировать случайное простое число , такое что .
  2. Сгенерировать случайное простое число , , такое что .
  3. Сгенерировать случайное целое число , такое что .
  4. Сгенерировать случайные целые числа и
  5. Вычислить следующие целые числа в :

    ,


    ,


    ,


    ,


    .

  6. Сгенерировать случайные байтовые строки и , где и .
  7. Вернуть пару открытый/закрытый ключ

Представление шифротекста

Шифротекст в схеме шифрования ACE имеет вид

,


где компоненты определяются следующим образом:
 — целые числа из (чей мультипликативный порядок по модулю делит ).
 — элемент .
 — элемент .
назовём преамбулой, а  — криптограммой. Если текст — строка из байт, то тогда длина равна .

Необходимо ввести функцию , которая представляет шифротекст в виде байтовой строки, а также обратную функцию . Для целого , символьной строки , целых , и байтовой строки ,

.


Для целого , байтовой строки , для которой ,

.

Процесс шифрования

Алгоритм. Асимметричный процесс шифрования ACE.
Вход: открытый ключ и байтовая строка .
Выход: байтовая строка — шифротекст , полученный из .

  1. Сгенерировать случайное .
  2. Сгенерировать преамбулу шифротекста:
    1. Сгенерировать .
    2. Вычислить , .
    3. Вычислить ; заметим, что .
    4. Вычислить .
  3. Вычислить ключ для операции симметричного шифрования:
    1. , .
    2. Вычислить .
  4. Вычислить криптограмму .
  5. Закодировать шифротекст:

    .

  6. Вернуть .

Перед запуском процесса симметричного шифрования входное сообщение разбивается на блоки , где каждый блок кроме, возможно, последнего имеет 1024 байт. Каждый блок шифруется потоковым шифратором. Для каждого зашифрованного блока вычисляется 16-байтовый код аутентификации. Получаем криптограмму

.

. Заметим, что если , то .

Алгоритм. Симметричный процесс шифрования ACE.
Вход:
Выход: , .

  1. Если , тогда вернуть .
  2. Проинициализировать генератор псевдо-случайных чисел:

  1. Сгенерировать ключ :

.

  1. .
  2. Пока , выполнять следующее:
    1. .
    2. Сгенерировать значения масок для шифрования и MAC:
      1. .
      2. .
    3. Зашифровать текст: .
    4. Сгенерировать аутентификационный код сообщения:
      1. Если , тогда ; иначе .
      2. .
    5. Обновить шифротекст: .
    6. .
  3. Вернуть .

Процесс дешифрования

Алгоритм. Процесс дешифрования ACE.
Вход: открытый ключ и соответствующий закрытый ключ , байтовая строка .
Выход: Расшифрованное сообщение .

  1. Дешифровать шифротекст:
    1. Если , тогда вернуть .
    2. Вычислить:

      ;


      заметим, что , где .
  2. Подтвердить преамбулу шифротекста:
    1. Если или или , тогда вернуть .
    2. Если , тогда вернуть .
    3. .
    4. Если , тогда .
    5. Вычислить ; заметим, что .
    6. Если , тогда .
    7. Если , тогда вернуть .
  3. Вычислить ключ для процесс симметричного дешифрования:
    1. , .
    2. Вычислить .
  4. Вычислить ;заметим, что может вернуть .
  5. Вернуть .

Алгоритм. Операция дешифрования .
Вход:
Выход: Расшифрованное сообщение .

  1. Если , тогда вернуть .
  2. Проинициализировать генератор псевдо-случайных чисел:

  3. Сгенерировать ключ :

    .

  4. .
  5. Пока , выполнять следующее:
    1. .
    2. Если , тогда вернуть .
    3. Сгенерировать значения масок для шифрования и MAC:
      1. .
      2. .
    4. Подтвердить аутентификационный код сообщения:
      1. Если , тогда ; иначе .
      2. .
      3. Если , тогда вернуть .
    5. Обновить текст: .
    6. .
  6. Вернуть .

Схема цифровой подписи

В схеме цифровой подписи ACE задействованы два типа ключей:
открытый ключ цифровой подписи ACE: .
закрытый ключ цифровой подписи ACE: .
Для заданного параметра размера , такого что , компоненты ключей определяются следующим образом:
 — -битное простое число, для которого  — тоже простое.
 — -битное простое число, для которого  — тоже простое.
 — и может иметь как , так и бит.
 — элементы (квадратичные остатки по модулю ).
 — 161-битное простое число.
 — элемент
 — элементы .
 — элементы .

Генерация ключа

Алгоритм. Генерация ключа для схемы цифровой подписи ACE.
Вход: параметра размера , такой что .
Выход: пара открытый/закрытый ключ.

  1. Сгенерировать случайные простые числа , такие что и  — тоже простые, и

    , , и ,


    где

    и .

  2. Положить .
  3. Сгенерировать случайное простое число , где .
  4. Сгенерировать случайное , при условии и , и вычислить .
  5. Сгенерировать случайное и вычислить .
  6. Сгенерировать случайные байтовые строки , и .
  7. Вернуть пару открытый ключ/закрытый ключ

    .

Представление подписи

Подпись в схеме цифровой подписи ACE имеет вид , где компоненты определяются следующим образом:
 — элемент .
 — целое число, такое что .
 — элементы .
 — элемент ;заметим, что , где  — подписываемое сообщение.

Необходимо ввести функцию , которая представляет подпись в виде байтовой строки, а также обратную функцию . Для целого , байтовой строки , целых и , и байтовой строки ,

.


Для целого , байтовой строки , для которой ,

.

Процесс генерирования подписи

Алгоритм. Генерирование цифровой подписи ACE.
Вход: открытый ключ и соответствующий закрытый ключ и байтовая строка , .
Выход: байтовая строка — цифровая подпись .

  1. Произвести следующие действия для хеширования входных данных:
    1. Сгенерировать случайно ключ хеша , такой что .
    2. Вычислить .
  2. Выбрать случайное , и вычислить .
  3. Вычислить .
  4. Сгенерировать случайное простое число , , и его подтверждение корректности : . Повторять этот шаг до тех пор, когда .
  5. Положить ; заметим, что .
  6. Вычислить , где

    ,


    и где и .
  7. Закодировать подпись:

    .

Замечания

В схемах шифрования и цифровой подписи ACE используются некоторые вспомогательные функции(такие как, например, UOWHash,ESHash и другие), описание которых выходит за рамки данной статьи. Подробнее о данных функциях можно найти в[1].

Реализация, применение и производительность

Схема шифрования ACE рекомендована проектом NESSIE (New European Schemes for Signatures, Integrity and Encryption) как асимметричная схема шифрования. Пресс-релиз датирован февралем 2003.
Обе схемы были реализованы в ANSI C, с использование пакета GNU GMP. Тесты были проведены на двух платформах: Power PC 604 model 43P под системой AIX и 266 MHz Pentium под системой Windows NT. Таблицы показателей приведены ниже:
Таблица 1. Временные затраты на базовые операции.

Power PC 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. Производительность схем шифрования и цифровой подписи.

Power PC Pentium
Постоянные затраты (мсек) МБит/сек Постоянные затраты (мсек) МБит/сек
Шифрование 160 18 230 16
Дешифрование 68 18 97 14
Подпись 48 64 62 52
Подпись (начальная установка) 29 41
Верификация 52 65 73 53

Литература

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии