Научная статья на тему 'РЕАЛИЗАЦИЯ КРИПТОГРАФИЧЕСКОГО АЛГОРИТМА RC6 НА FPGA'

РЕАЛИЗАЦИЯ КРИПТОГРАФИЧЕСКОГО АЛГОРИТМА RC6 НА FPGA Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
116
26
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
В СТАТЬЕ РАССМАТРИВАЮТСЯ: КРИПТОГРАФИЯ / ШИФРОВАНИЕ / RC6 / FPGA / ПЛИС / ЦИФРОВАЯ СХЕМОТЕХНИКА / БЛОЧНЫЕ ШИФРЫ / BLOCK CIPHER / CRYPTOGRAPHY / THE ARTICLE DEALS WITH: CRYPTOGRAPHY / ENCRYPTION / DIGITAL CIRCUITRY / BLOCK CIPHERS

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Шапиев М. М., Серов С. С., Никитин К. И., Серов С. А.

Блочные шифры являются одними из самых распространенных шифров в современной вычислительной технике. Эти шифры одни из самых требовательных к вычислительным ресурсам, поэтому для реализации этих криптографических алгоритмов, можно использовать FPGA (со кр. field programmable gate array - программируемая пользователем вентильная матрица). В данной работе мы реализуем криптографический алгоритм RC6 на FPGA фирмы Altera и анализируем эту реализацию.

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

IMPLEMENTATION OF CRYPTOGRAPHIC ALGORITHM RC6 ON FPGA

Block ciphers are one of the most common ciphers in modern computer technology. These ciphers are one of the most demanding of computational resources, so to implement these cryptographic algorithms, you can use FPGA (short programmed gate matrix - user-programmable gate array). RC5 on the FPGA of Altera and analyze this implementation.

Текст научной работы на тему «РЕАЛИЗАЦИЯ КРИПТОГРАФИЧЕСКОГО АЛГОРИТМА RC6 НА FPGA»

УДК 004.056.55

Шапиев М.М. студент 3 курса

факультет «Информатика и системы управления»

Серов С.С. студент 3 курса

факультет «Информатика и системы управления»

Никитин К.И. студент 3 курса

факультет «Информатика и системы управления»

Серов С.А., к. техн. н.

доцент

кафедра «Экология и промышленная безопасность»

МГТУ им. Н.Э. Баумана Россия, г. Москва

РЕАЛИЗАЦИЯ КРИПТОГРАФИЧЕСКОГО АЛГОРИТМА RC6 НА

FPGA

В статье рассматриваются: криптография, шифрование, RC6, FPGA, ПЛИС, цифровая схемотехника, блочные шифры, block cipher, cryptography.

Аннотация: Блочные шифры являются одними из самых распространенных шифров в современной вычислительной технике. Эти шифры одни из самых требовательных к вычислительным ресурсам, поэтому для реализации этих криптографических алгоритмов, можно использовать FPGA (со кр. field programmable gate array - программируемая пользователем вентильная матрица). В данной работе мы реализуем криптографический алгоритм RC6 на FPGA фирмы Altera и анализируем эту реализацию.

Shapiev M.M. student

3 year, Faculty of Computer Science and Management Systems

BMSTU them. N.E. Bauman Russia, Moscow Serov S.S. student

3 year, Faculty of Computer Science and Management Systems

BMSTU them. N.E. Bauman Russia, Moscow Nikitin K.I. student

3 year, Faculty of Computer Science and Management Systems

BMSTU them. N.E. Bauman Russia, Moscow

Serov S.A., Candidate of Technical Sciences, Associate Professor Associate Professor of the Department of Ecology and Industrial Safety

BMSTU them. N.E. Bauman Russia, Moscow

IMPLEMENTATION OF CRYPTOGRAPHIC ALGORITHM RC6

ON FPGA.

The article deals with: cryptography, encryption, RC6, FPGA, FPGA, digital circuitry, block ciphers, block cipher, cryptography.

Abstract: Block ciphers are one of the most common ciphers in modern computer technology. These ciphers are one of the most demanding of computational resources, so to implement these cryptographic algorithms, you can use FPGA (short programmed gate matrix - user-programmable gate array). RC5 on the FPGA of Altera and analyze this implementation.

FPGA и алгоритм RC6

Для начала рассмотрим преимущества FPGA перед другими архитектурами. Во-первых, главным преимуществом FPGA является более низкое энергопотребление и низкая рабочая частота, во-вторых, при реализации каких-либо проектов на FPGA, микросхема становится узкоспециализированной архитектурой для решения отдельного рода задач. Исследования показывают, что почти все проекты, реализованные на них, дают большую производительность (в соотношении производительность-энергопотребление) чем на той же архитектуре x86-x64 или ARM. FPGA программируются путем изменения логики работы принципиальной схемы, например, на языке описания аппаратуры Verilog. Они являются одним из видов ПЛИС (сокр. программируемые логические интегральные схемы) [3]. Главной целью реализации алгоритма RC6 на FPGA является получение более эффективного использования ресурсов кристалла и добиться максимальной скорости шифрования.

Алгоритм RC6 [1] - симметричный блочный шифр, является усовершенствованной версией своего предшественника RC5. Этот алгоритм является одним из пяти финалистов конкурса AES и считается очень надежным, при использовании генератора псевдо-случайных последовательностей с большим периодом и без серьезных уязвимостей. Он работает с блоками данных длиной 128 бит и ключами 128-256 бит. Из-за присутствия в алгоритме операции умножения, реализация на некоторых аппаратных платформах является затруднительной задачей. RC6 как и свой предшественник RC5 - параметризированный алгоритм шифрования с обозначениями RC6-w/r/b, где w - длина машинного слова в битах, r -количество раундов шифрования, b - длина ключа (0-255 байт). В качестве ключей в RC6 используется таблица ключей идентичная той что используется в RC5, но она больше зависит от введенного пользователем ключа. Схема алгоритма выглядит следующим образом(Рис.1). Входные и выходные данные расположены в переменных A, B, C, D. В массиве

5[0. .2г + 3] хранится таблица ключей.

Рис.1 Схема работы алгоритма RC6 Для генерации таблицы ключей используется следующий алгоритм [4]: Входные данные - ¿[0..с-1] - массив полученный из ^слов введенных пользователем в качестве ключа, г - количество раундов. Выходные данные - 5[0. .2 г + 3] - таблица ключей.

S[0]=Pw

Юг i=1 to 2Г+3 ^

S[i]=S[i-1]+Qw

A=B=i=j=0

v=3*max{c,2г+4}

Юг s=1 to v do

{

A=S[i]=(S[i]+A+B)<<<3

B=L[j]=(L[j]+A+B)<<<(A+B) i=(i+1) mod (2r+4)

j=(j+1) mod c }

Pw = B7E1516316 и Qw = 9E3779B916 - константы, получаемые при помощи формул:

Qw<r-Odd({f- 1)*2W) Pw <- Odd((e - 2) * 2U'). Процедура шифрования выглядит следующим образом:

B = B + S[0] D = D + S[1]

for i = 1 to r do

{

t = (B(2B + 1)) <<< lg w u = (D(2D + 1)) <<< lg w A = ((A © t) <<< u) + S[2i] C = ((C © u) <<< t) + S[2i + 1]

(A, B, C, D) = (B, C, D, A)

}

A = A + S[2r + 2] C = C + S[2r + 3]

Зашифрованный текст сохраняется в A,B,C,D. В качестве входных данных, поступает открытый текст, сохраненный в A,B,C,D, таблица ключей 5[0. .2г + 3] и количество раундов г.

Процедура расшифровки выполняется следующим образом:

C = C - S[2r + 3] A = A - S[2r + 2]

for i = r downto 1 do

{

(A, B, C, D) = (D, A, B, C) u = (D(2D + 1)) <<< lg w t = (B(2B + 1)) <<< lg w C = ((C - S[2i + 1]) >>> t) © u A = ((A - S[2i]) >>> u) © t

}

D = D - S[1]

B = B - S[0]

В качестве входных данных поступает зашифрованный текст, хранящийся в A,B,C,D, количество раундов г и таблица ключей. Расшифрованный текст так же сохранятся в A,B,C,D.

Рассмотрим FPGA фирмы Altera с кодовым названием Arria II GX EP2AGX125. Это кристалл с 118 ПЛБ (программируемый логический блок), работающий на штатной частоте 125 МГц. Этого FPGA будет достаточно для реализации нашего криптоалгоритма, при увеличении числа модулей, необходимо взять кристалл с большим числом ПЛБ.

Схема реализации криптоалгоритма на FPGA полностью выглядит следующим образом (Рис.2):

Рис.2 Схема реализации на FPGA Код реализации алгоритма шифрования на языке Verilog (синтаксис языка приведен в [2]):

module RC6_encrypt (open_Text, encrypt_Text, S ); (

input [7:0] S [0:43]; //т.к. у нас r=20 размерность Sравна 44. input [31:0] open_Text [0:3]; // аналог 32-битных А, B, C, D для хранения открытого текста

output [31:0] encrypt_Text [0:3]; // на выходе получаем зашифрованный текст

reg [31:0] text [0:3]; assign text=open_Text; reg [7:0] Skey [0:43]; text[1] = text[1] + Skey[0]; text[3] = text[3] + Skey[1]; reg [7:0] t; reg [7:0] u; reg [7:0] i;

reg [31:0] temp32; // буфер для перестановки

for(i=0; i<20; i=i+1)

begin

t = (text[1] *(2* text[1] + 1)) << 2 u = (text[3] *(2* text[3] + 1)) << 2 text[0] = ((text[0] Л t) << u) + Skey[2*i] text[2] = ((text[2] л u) << t) + Skey[2*i + 1] temp32 = text [0]; // меняем местами A и B text[0]= text [1]; text[1]=temp32;

temp32 = text [3]; // меняем местами D и B

text[3]= text [1];

text[1]=temp32;

temp32 = text [2]; // меняем местами C и B в итоге получаем нужную перестановку

text[2]= text [1]; text[1]=temp32; end

text[0] = text[0] + Skey[2*i + 2]; text[2] = text[2] + Skey[2*i + 3];

assign encrypt_Text=text; // передаем на выход зашифрованный текст )

Модуль для расшифровки выглядит следующим образом:

module RC6_decrypt (open_Text, encrypt_Text, S ); (

input [7:0] S [0:43]; // т.к. у нас г=20 размерность S равна 44. output [31:0] open_Text [0:3]; // аналог 32-битных А, B, C, D для хранения открытого текста

input [31:0] encrypt_Text [0:3]; // зашифрованный текст reg [31:0] text [0:3];

assign text=open_Text; reg [7:0] Skey [0:43]; text[1] = text[1] + Skey[0]; text[3] = text[3] + Skey[1]; reg [7:0] t; reg [7:0] u; reg [7:0] i;

reg [31:0] temp32; // буфер для перестановки

for(i=20; i=0; i=i-1) begin

temp32 = text[0]; // меняем местами A и B

text[0]= text[1];

text[1]=temp32;

temp32 = text[3]; // меняем местами D и B

text[3]= text [1];

text[1]=temp32;

temp32 = text[2]; // меняем местами C и B в итоге получаем нужную перестановку

text[2]= text[1]; text[1]=temp32;

t = (text [1] *(2*text[1] + 1)) << 2; u = (text[3] *(2*text[3] + 1)) << 2; text[2] = ((text[2] - key[2*i + 1]) >> t) л u; text[0] = ((text[0] - key[2*i]) >> u) л t; end

text[3] = text[3] - key[1]; text[1] = text[1] - key[0];

assign open_Text=text; // передаем на выход открытый текст )

Заключение

Практические испытания показали, что данная реализация обходит по производительности реализации на архитектурах x86 и ARM. Это объясняется тем что в шифре RC6 очень много битовых операций, которые на FPGA выполняются на порядок быстрее. Так же данную реализацию можно с минимальным числом изменений адаптировать под любой FPGA фирмы Altera. Операцию умножения можно так же заменить на XOR для увеличения производительности. Но в этом случае зашифрованный текст становится уязвимым для дифференциального и частотного криптоанализа. На кристалле Arria II GX EP2AGX125 при частоте 125 MHz показывает скорость примерно равную 917 Mb/sec. Так же данная реализация позволяет масштабировать алгоритм на других платформах. На более развитых по структуре и числу ПЛБ моделях FPGA, можно реализовать параллельное шифрование (расшифровку) данных алгоритмом RC6. При этом, рост

производительности в этих операциях будет пропорционален количеству ПЛБ и тактовой частоте.

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

Использованные источники:

1. Шнайер Б. Прикладная криптография. 2-е издание, М.: Триумф, 2002, 816 с.

2. Спиридонов С.Б. Курс лекций по Вычислительные системы АСОИУ. М.: МГТУ им. Баумана, 2017. 224 с.

3. Спиридонов С.Б. Курс лекций по схемотехнике дискретных устройств. М.: МГТУ им. Баумана, 2017. 204 с.

4. Дэвид Харрис М. Сара Харрис Л. Цифровая схемотехника и архитектура компьютера, М.: Morgan Kaufman, 2013, 792 с.

5. Ronald L. Rivest, M.J.B. Robshaw, R. Sidney, and Y.L. Yin. "The RC6 Block Cipher". Cambridge, M.I.T.: 1998, 21 p.

6. Акчурин А.Д., Юсупов К.М. Программирование на языке Verilog. Учебное пособие. Казань, 2016. 90 с.

УДК 159.9

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