Поздравляем с Новым Годом!
   
Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: LXIX Международной научно-практической конференции «Технические науки - от теории к практике» (Россия, г. Новосибирск, 24 апреля 2017 г.)

Наука: Технические науки

Секция: Информатика, вычислительная техника и управление

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Корсунский А.С., Шлыков Д.И., Рацеев С.М. О НАДЕЖНЫХ И ВЫСОКОСКОРОСТНЫХ СИММЕТРИЧНЫХ ШИФРАХ // Технические науки - от теории к практике: сб. ст. по матер. LXIX междунар. науч.-практ. конф. № 4(64). – Новосибирск: СибАК, 2017. – С. 12-19.
Проголосовать за статью
Дипломы участников
У данной статьи нет
дипломов

О НАДЕЖНЫХ И ВЫСОКОСКОРОСТНЫХ СИММЕТРИЧНЫХ ШИФРАХ

Корсунский Андрей Сергеевич

канд. техн. наук, главный специалист ФНПЦ АО «НПО «Марс»,

РФ, Ульяновск

Шлыков Дионисий Игоревич

студент Ульяновского государственного университета

РФ, Ульяновск

Рацеев Сергей Михайлович

д-р физ.-мат. наук, доц., проф. Ульяновского государственного университета

РФ, Ульяновск

ON STRONG AND HIGH-SPEED SYMMETRIC CIPHERS

Sergey Ratseev

doctor of Physics and Mathematics, Associate Professor; Professor at the Ulyanovsk State University

Russia, Ulyanovsk

Andrey Korsunskiy

candidate of Engineering, Chief Specialist at FRPC JSC “RPA “Mars”, Ulyanovsk,

Russia, Ulyanovsk

Dionisi Shlykov

 a fifth-year student of Ulyanovsk State University

Russia, Ulyanovsk

 

АННОТАЦИЯ

В работе приводятся методы повышения производительности симметричных шифров на примере шифра AES, являющегося международным стандартом блочного шифрования ISO/IEC 18033-3:2010. Показано, что данные методы позволяют превзойти по скорости в два и более раз относительно популярных криптографических библиотек OpenSSL и Crypto++. В качестве доказательства приводятся графики скоростных характеристик алгоритмов шифрования и расшифрования файлов шифром AES из разработанной библиотеки и соответствующие графики относительно библиотек OpenSSL и Crypto++.

ABSTRACT

The paper presents methods of increase in productivity of the symmetric ciphers on the example of the cipher AES which is the international standard of block encryption ISO/IEC 18033-3:2010. It is shown that these methods allow to exceed on speed in two and more times of popular cryptography libraries OpenSSL and Crypto ++. As the proof presented diagrams of speed regulation characteristics of algorithms of encoding and deciphering of files by the cipher AES from the developed library and the appropriate diagrams concerning OpenSSL and Crypto libraries ++.

 

Ключевые слова: шифр, симметричный шифр, шифр AES, совершенный шифр.

Keywords: cipher, symmetric cipher, the AES cipher, perfect cipher.

 

Все необъясняемые ниже понятия можно найти, например, в справочнике [2]. К. Шеннон в 40-х годах XX века ввел понятие совершенного шифра, обеспечивающего наилучшую защиту открытых текстов. Такой шифр не дает криптоаналитику никакой дополнительной информации об открытом тексте на основе перехваченного шифрованного сообщения. Хорошо известным совершенным шифром является шифр гаммирования с равновероятной гаммой. При этом данный шифр максимально уязвим к попыткам имитации и подмены шифрованных сообщений. Это происходит потому, что в шифре гаммирования алфавиты для записи открытых и шифрованных текстов равномощны. Также в данном шифре должны использоваться равновероятные гаммы, что не всегда достигается на практике. В работе [3] приводятся конструкции совершенных шифров по заданному набору параметров, совершенные шифры замены с неограниченным ключом, а также совершенные шифры, стойкие к имитации и подмене шифрованных сообщений с необязательно равномерным распределением на множестве ключей. Например, совершенные имитостойкие шифры можно строить на основе ортогональных таблиц [4]. Так как длины ключей таких шифров не меньше длин передаваемых сообщений, то шифры замены с неограниченным ключом целесообразно использовать в исключительно важных случаях.

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

Методы повышения производительности шифра AES

Наиболее широко используемым в мире шифром является симметричный блочный шифр AES [5]. AES – это симметричный блочный шифр, который допускает использование криптографических ключей длиной 128, 192 и 256 бит для шифрования и расшифрования данных блоками по 128 бит. Данный шифр является международным стандартом блочного шифрования ISO/IEC 18033-3:2010. Поддержка AES введена фирмой Intel в семейство процессоров x86 начиная с Intel Core i7-980X Extreme Edition, а затем на процессорах Sandy Bridge, Ivy Bridge и т.д. Данный шифр, в частности, поддерживают такие популярные криптографические библиотеки, как OpenSSL, Crypto++ и другие.

Разработанная третьим автором (под руководством первого) криптографическая библиотека SDIAES обеспечивает самое быстрое шифрование/расшифрование среди библиотек OpenSSL и Crypto++ (очень вероятно, что относительно других криптографических библиотек ситуация аналогична).

Ниже приведен сравнительный анализ графиков зависимости времени шифрования+расшифрования шифром AES-256 от размеров файлов для библиотек SDIAES, OpenSSL и Crypto++ при использовании различных режимов шифрования. Заметим, что для объективного анализа приводились замеры времени связки «шифрование+расшифрование» данных. На рисунке 1 представлен сравнительный анализ шифрования+расшифрования в режиме электронной кодовой книги (ECB), на рисунке 2 – в режиме сцепления блоков (CBC), на рисунке 3 – в режиме гаммирования (OFB), на рисунке 4 – в режиме гаммирования с обратной связью по шифртексту (CFB).

 

Рисунок 1. Режим ECB. Шифрование+расшифрование файлов шифром AES-256.

 

Рисунок 2. Режим CBC. Шифрование+расшифрование файлов шифром AES-256.

 

Рисунок 3. Режим OFB. Шифрование+расшифрование файлов шифром AES-256.

 

Рисунок 4. Режим CFB. Шифрование+расшифрование файлов шифром AES-256.

 

Как видно из рисунков, выигрыш в скорости получается очень существенным – программа шифрует/расшифровывает файлы в среднем в 2 раза быстрее, чем при использовании библиотеки OpenSSL и в 2.5-3 раза быстрее, чем при использовании библиотеки Crypto++. Это интересный результат на фоне широкой распространенности OpenSSL и Crypto++ (например, OpenSSL используется большим количеством сетевых серверов для защиты передаваемой информации). Сами замеры производились на одном и том же компьютере с использованием процессора с аппаратной поддержкой шифра AES:

  • CPU - AMD FX-6200;
  • RAM - Kingston HyperX 2 x 8 Gb 1866 MHz;
  • Motherboard - ASUS SABERTOOTH 990FX R1.0;-
  • HDD - WD WDC WD20EFRX;
  • OS - Windows 10 Pro x64;
  • GPU - AMD Radeon R9 270X, GDDR5, 2048 Mb.

Ниже приводятся методы, с помощью которых удалось ускорить работу шифра AES относительно библиотек OpenSSL и Crypto++.

Таблицы предварительных расчетов. Шифр AES, в силу своего математического описания, очень удобно раскладывается в готовые таблицы для расчётов. Некоторые этапы шифрования можно заранее просчитать и вынести в отдельные таблицы, причем они не будут зависеть от входных данных. Далее они уже используются в ходе самого шифрования или расшифрования и корректны для любой последовательности входных данных. Это помогает сэкономить процессорное время и увеличить общую пропускную способность программных реализаций. Подобные предвычисления предлагаются в работе [1] для высокоскоростной реализации шифра «Кузнечик» из ГОСТ Р 34.12-2015.

Для каждого режима шифрования свой алгоритм. Библиотека SDIAES поддерживает все режимы шифрования для всех длин ключей (поддерживается как шифрование потоков данных в оперативной памяти, так и отдельных файлов). Для каждого режима проработан отдельный алгоритм шифрования и расшифрования, за счет чего достигается максимальная оптимизация всех этапов обработки данных.

Распараллеливание считывания/записывания информации из файлов и шифрования/расшифрования информации в оперативной памяти. Обычно файлы хранятся где-то на твердотельных накопителях или на жестких дисках. Их оттуда сначала необходимо считать и подгрузить в оперативную память. Здесь мы и применяем асинхронный ввод и вывод данных. В алгоритмах SDIAES (при шифровании/расшифровании файлов) применяется два (и более) буфера для данных. Как только первый буфер будет заполнен данными, он отправляется на шифрование. И пока шифруется первый буфер, во второй начинается подгрузка данных. Потом шифрование переключается на второй буфер данных, а первый записывается на носитель. В результате эффективно используется время. Носитель информации практически постоянно загружен на 100% считыванием и записыванием, поскольку процессор обрабатывает данные немного быстрее.

Указательная арифметика. В языке С++ имеются указатели. Они применяются для эффективных проходов по массивам данных, по строкам и т.д. Эти указатели можно очень эффективно перемещать по данным, применяя префиксные и постфиксные операции сложения или вычитания в сочетании с другими операциями вместо обычного обращения к массиву по индексу. В SDIAES они повсеместно применяются. Особенно это касается функций шифрования и расшифрования файлов. Зачастую эти операции применяются в тех же развернутых циклах. Здесь есть простор действий и для самого компилятора. Он может оптимизировать данный код под 64-ех разрядные операционные системы, что может значительно увеличить общую скорость выполнения.

Поддержка AES-NI. Библиотека SDIAES поддерживает аппаратное шифрование, которое основано на новом наборе инструкций для процессоров. Эти инструкции позволяют некоторые этапы шифрования выполнить на аппаратном уровне, что очень сильно ускоряет обработку информации на CPU, и они обладают более высоким уровнем безопасности. В данной библиотеке шифрование/расшифрование и генерация раундовых ключей полностью реализованы на данных инструкциях (в том числе использованы инструкции SSE для выполнения операций над xmm регистрами).

Реализация на OpenCL. OpenCL (Open Computing Language — открытый язык вычислений) — это кроссплатформенный фреймворк для написания компьютерных программ, связанных с параллельными вычислениями на различных графических (GPU) и центральных процессорах (CPU), а также FPGA. В библиотеке SDIAES также присутствует модуль, который позволяет выполнять операции шифрования/расшифрования при помощи OpenCL во всех режимах и на всех длинах ключей. В основном это сделано для выполнения операций на GPU, где использование режима ECB будет наиболее оправданным. Поскольку в данном режиме каждый блок шифруется/расшифровывается абсолютно независимо от других, то эта задача как раз для видеокарты, которая очень хорошо выполняет параллельные вычислительные задачи. По сравнению с чисто программной реализацией видеокарта может выдавать прирост скорости в ~10 раз (это объясняется тем, что в видеокарте может быть до 1280 (и более) независимых вычислительных блоков, и, следовательно, 1280 одновременных потов выполнения, а на хорошем процессоре максимум 8-16 потоков).

Заключение

Приведем особенности библиотеки SDIAES. Библиотека SDIAES полностью написана на С++11 (возможна модернизация под С++14) с применением классов, наследований, шаблонов и различных паттернов. Она декомпозирована на подклассы, которые занимаются своей конкретной задачей. В SDIAES имеются три базовые части: программное шифрование, аппаратное шифрование, шифрование на видеокарте. Это три отдельных класса (модуля). Они имеют схожий интерфейс, который ориентирован под блоки длинной в 128 бит. Все остальные классы, которые занимаются шифрованием потоков, файлов и т.д., за счет шаблонизации не зависят от базовых классов. Отсюда следует несколько важных моментов: 1) Возможность дальнейшей оптимизации. Например, некоторые базовые части библиотеки можно полностью переписать на ассемблере под конкретный процессор с использованием каких-нибудь регистров (XMM, YMM). При этом остальные части алгоритмов не придется переписывать за счет строго определенных интерфейсов. 2) В качестве базовых классов можно использовать любой симметричный блочный шифр, работающий с 128-битными блоками, например, шифр «Кузнечик» из ГОСТ Р 34.12-2015. В результате имеются неплохие перспективы для данной библиотеки за счет ее архитектуры. Есть просторы и для оптимизаций, и для включения других шифров в уже существующие алгоритмы без особых трудозатрат.

Как итог, имеется библиотека SDIAES, которая полностью разработана и написана с чистого листа и предоставляет возможности использования по максимуму всех мощностей компьютера. Имея в себе три базовых модуля:

  • Программная
  • Аппаратная (CPU)
  • OpenCL (GPU и CPU)

она позволяет достаточно легко создавать свои алгоритмы шифрования потоков или файлов, основанных на симметричных блочных шифрах с длиной блока в 128 бит.

 

Список литературы:

  1. Ищукова Е.А., Кошуцкий Р.А., Бабенко Л.К. Разработка и реализация высокоскоростного шифрования данных с использованием алгоритма Кузнечик// AUDOTORIUM, 2015, – № 4 (8). – С. 80–88.
  2. Погорелов Б.А., Сачков В.Н. Словарь криптографических терминов.  – М.: МЦНМО, 2006. – 91 с.
  3. Рацеев С.М. Некоторые обобщения теории Шеннона о совершенных шифрах // Вестн. ЮУрГУ. Сер. Матем. моделирование и программирование. 2015. – № 1 (8). – С.111–127.
  4. Рацеев С.М., Череватенко О.И. О совершенных шифрах на основе ортогональных таблиц// Вестн. ЮУрГУ. Сер. Матем. моделирование и программирование. 2014. – № 2 (7). – С. 66-73.
  5. Announcing the ADVANCED ENCRYPTION STANDARD (AES). Federal Information Processing Standards Publication 197. United States National Institute of Standards and Technology (NIST). November 26, 2001. Retrieved October 2, 2012.
Проголосовать за статью
Дипломы участников
У данной статьи нет
дипломов

Оставить комментарий