Научная статья на тему 'О надежных и высокоскоростных симметричных шифрах'

О надежных и высокоскоростных симметричных шифрах Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
134
32
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ШИФР / CIPHER / СИММЕТРИЧНЫЙ ШИФР / SYMMETRIC CIPHER / ШИФР AES / СОВЕРШЕННЫЙ ШИФР / PERFECT CIPHER / AES CIPHER

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Рацеев Сергей Михайлович, Корсунский Андрей Сергеевич, Шлыков Дионисий Игоревич

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

ON STRONG AND HIGH-SPEED SYMMETRIC CIPHERS

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 ++.

Текст научной работы на тему «О надежных и высокоскоростных симметричных шифрах»

СЕКЦИЯ

«ИНФОРМАТИКА, ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА И УПРАВЛЕНИЕ»

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

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

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

РФ, Ульяновск E-mail: ratseevsm@mail.ru

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

канд. техн. наук, главный специалист ФНПЦАО «НПО «Марс», РФ, Ульяновск E-mail: mars@mv.ru

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

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

РФ, Ульяновск, E-mail: shlykov. di@mail.ru

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

www.sibac.info

Dionisi Shlykov

student of Ulyanovsk State University Russia, Ulyanovsk

АННОТАЦИЯ

В работе приводятся методы повышения производительности симметричных шифров на примере шифра AES, являющегося международным стандартом блочного шифрования ISO/IEC 180333: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 - в режиме сцепления

www.sibac.info

блоков (СВС), на рисунке 3 - в режиме гаммирования (ОКБ), на рисунке 4 - в режиме гаммирования с обратной связью по шифртексту (СРВ).

■5DIAES —О— Cryptctt —A—OpenSSL

1 50 100 150 200 250 300 350 400 450 500 550 600 65D 700 750 800 350 900 9501000 РАЗМЕР ФАЙЛА (МБ]

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

—S01AES -О— QYpto++ —и—OpenSSL

16000 14000 12000 С 10000 | 8000 g| 6000 4000 2000 о -

1 50 100 150 300 250 300 350 400 450 500 550 600 650 700 750 800 850 900 9501000 РАЗМЕР ФАЙЛА (МБ)

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

—4—SDIAES —С—Crypto+t —ü— OpenSSL

20000 1ВООО 16000 14000

S 12000

g 10000

ï 8000 ш

60DO 4000 2000 0

1 5 û 100 ISO 20C 250 300 350 400 450 500 550 600 650 700 750 SOO S50 900 9S01000 РАЗМЕР ФАЙЛА (МБ)

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

—6—'5DIAE5 —О— Crypto** —£г— OpenSSL

16000 140 00 120 DO

ег юосю

S

| 3000

ы 6000 4000 2000 о

1 50 100 ISO 200 250 300 350 400 450 5О0 550 600 6S0 700 750 800 S50 900 9501000 РАЗМЕР ФАЙЛА (ME)

Рисунок 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;

www.sibac.info

• 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-NL Библиотека 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 бит.

www.sibac.info

Все остальные классы, которые занимаются шифрованием потоков, файлов и т.д., за счет шаблонизации не зависят от базовых классов. Отсюда следует несколько важных моментов: 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.

i Надоели баннеры? Вы всегда можете отключить рекламу.