СПОСОБ ИТЕРАТИВНОГО КРИПТОГРАФИЧЕСКОГО ПРЕОБРАЗОВАНИЯ ДАННЫХ
METHOD FOR ITERATIVE CRYPTOGRAPHIC TRANSFORMATION OF DATA

Изобретение относится к вычислительной технике и электросвязи, предназначено для решения задач защиты компьютерной информации. Наиболее предпочтительной областью использования изобретения является построение генераторов псевдослучайных чисел (ГПСЧ), а также криптографических примитивов хеширования, блочного и поточного шифрования.
В совокупности признаков заявленного изобретения используются следующие термины:
Стохастическое преобразование - непредсказуемое преобразование данных; примером стохастического преобразования может являться криптографическое преобразование;
Генератор псевдослучайных чисел (ГПСЧ) - генератор последовательности чисел, статистически не отличимой от последовательности случайных чисел с равномерным законом распределения; наиболее жесткие требования (по непредсказуемости, статистической безопасности, периоду формируемых последовательности и эффективности реализации) предъявляются к ГПСЧ, ориентированным на решение задач криптографической защиты информации;
Ключ - секретный параметр стохастического преобразования, представляет собой двоичную информацию, известную только законному пользователю;
Подключ - часть ключа;
Раунд - последовательность шагов, образующих одну итерацию итеративного (многораундового) стохастического преобразования;
Раундовый ключ (RoundKey) - ключевая информация, использующаяся при выполнении одного раунда преобразования, существует два способа формирования раундовых ключей: раундовый ключ может являться частью секретного ключа (пример - Российский стандарт криптозащиты ГОСТ 28147-89), последовательность раундовых ключей может получаться в результате работы процедуры «разворачивания» исходного ключа (пример - американский стандарт криптозащиты AES);
Раундовый подключ - часть раундового ключа;
n
Двоичный вектор - некоторая последовательность нулевых и единичных бит, например (01101010), двоичный вектор разрядности n может быть интерпретирован как элемент конечного поля GF(2);
n
n
Замена (Substitution) - операция, выполняемая над двоичным вектором i∈GF(2), при этом результат операции равен содержимому ячейки с индексом i таблицы замен размерности n×2;
Перемешивание (Mix) - операция, выполняемая над двоичным вектором разрядности n, результат разрядности n которой зависит от всех входных бит и от их взаимного расположения; качественное перемешивание обладает свойствами рассеивания и перемешивания.
i
i
i
i
i
i
32
32
Известен способ нелинейного многораундового преобразования данных с архитектурой «Сеть Фейстеля», описанный в Российском стандарте криптографической защиты информации [Стандарт СССР ГОСТ 28147-89. Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования]. Способ аналог включает в себя формирование ключа в виде последовательности из 8 подключей длиной 32 бита. Перед преобразованием 64-разрядный блок данных разбивается на два 32-разрядного подблока L и R, которые поочередно преобразуются путем выполнения 32 раундов преобразования. Один раунд преобразования заключается в следующем. По подблоку L формируется двоичный вектор F в соответствии с выражением F:=L, который преобразуется в зависимости от одного из подключей в соответствии с раундовой функцией преобразования Е. Преобразование двоичного вектора на i-м раунде записывается в виде F:=E{F, K), где K - подключ, используемый на i-м раунде. Полученное значение F:=E(F, K) поразрядно суммируется по модулю два ⊕ с подблоком R в соответствии с выражением R:=R⊕F. Вычисление раундовой функции E(F, K) осуществляется в соответствии со следующими шагами преобразования. Первоначально сформированный двоичный вектор F:=L преобразуется путем наложения на него текущего подключа K, являющегося фиксированным для данного раунда, с помощью операции сложения по модулю 2 в соответствии с формулой F:=(F+K) mod 2, после чего над двоичным вектором F выполняют операцию замены F:=S(F), затем операцию циклического сдвига влево (в сторону старших разрядов) на 11 разрядов F:=F<<<11. После каждого раунда шифрования, за исключением последнего, подблоки переставляются. Операция замены выполняется следующим образом. Двоичный вектор F разбивается на 8 двоичных векторов длиной по 4 бит каждый. Каждый 4-разрядный двоичный вектор заменяется двоичным вектором из соответствующей таблицы замен. Выбранные из таблиц замен восемь 4-разрядных векторов объединяются в преобразованный двоичный вектор F.
Недостатком данного способа построения нелинейного многораундового криптографического преобразования является низкое быстродействие, громоздкая процедура обоснования наличия свойств рассеивания и перемешивания информации, обязательных для криптографических преобразований, невозможность реализации с использованием гибридных суперкомпьютерных технологий.
Одним из путей решения проблемы построения быстродействующего итеративного криптографического преобразования является использование гибридных вычислительных технологий. Наиболее подходящей для реализации на GPU является архитектура Квадрат, предложенная авторами криптоалгоритмов Square и Rijndael, при этом последний в 2001 г. победил в конкурсе на принятие нового Американского стандарта криптозащиты AES (Advanced Encryption Standard).
0
1
R
0
0
i
i
i
i
R
8
4
3
2
Наиболее близким по своей технической сущности к заявленному способу итеративного криптографического преобразования данных является принятый за прототип способ многораундового 2D-преобразования с архитектурой «Квадрат», описанный в версии стандарта AES-128 [Daemen J., Rijmen V. AES Proposal: Rijndael. URL: http://csrc.nist.gov/archive/aes/rijndael/Rijndael-ainmended.pdf или Иванов M.A., Ковалев А.В., Чугунков И.В. и др. Стохастические методы защиты информации в компьютерных системах и сетях. М.: Кудиц-Пресс, 2009, с.241]. В данном способе все входные и выходные блоки данных, все промежуточные результаты преобразований, все раундовые ключи представляются в виде квадратного массива байтов 4×4, таким образом, разрядность всех блоков данных равна 128 битам. Преобразование выполняется путем формирования из секретного ключа с помощью процедуры разворачивания ключа последовательности раундовых ключей K, K,…, K, где R - число раундов преобразования. По входному блоку М формируется блок State в соответствии с выражением State:=М. Затем выполняется операция начального поразрядного сложения по модулю два (XOR) блока State и раундового ключа (AddRoundKey) K в соответствии с выражением State:=State⊕K, после чего выполняются R раундов преобразования. Преобразование блока данных на i-м раунде записывается в виде State:=E(State, K), где Е() - раундовая функция преобразования, K - раундовый ключ, используемый на i-м раунде. Полученное значение State:=E(State, K) поступает на вход следующего раунда. В состав каждого i-го раунда кроме последнего входят последовательно выполняемые преобразования замены байтов State:=SubBytes(State), циклического сдвига строк State:=ShiftRows(State), перемешивания столбцов State:=MixColimns(State) и сложения по модулю два (XOR) с раундовым ключом (AddRoundKey) Ki в соответствии с выражением State:=State⊕K. В состав последнего раунда входят последовательно выполняемые преобразования замены байтов, циклического сдвига строк и сложения (XOR) с раундовым ключом K. Операция замены байтов выполняется следующим образом. Блок State разбивается на 16 байтов. Каждый байт заменяется байтом из фиксированной таблицы замен размерностью 8×256. Выбранные из таблицы замен 16 байтов объединяются в преобразованный блок State. Операция сдвига строк выполняется следующим образом. Блок State разбивается на 4 строки. Каждая j-я строка (j=0, 1, 2, 3) циклически сдвигается на j байтов. Сдвинутые строки объединяются в преобразованный блок State. Операция перемешивания столбцов выполняется следующим образом. Блок State разбивается на 4 столбца. При выполнении перемешивания байты столбца рассматриваются как коэффициенты многочлена А(х) степени 3 над полем GF(2). Суть операции перемешивания столбца - умножение по модулю х+1 многочлена А(х) на многочлен 03х+х+х+02. Перемешанные столбцы объединяются в преобразованный блок State.
Таким образом, последовательность 10-раундового преобразования AES-128 имеет следующий вид: начальный шаг сложения с раундовым ключом, 9 раундов, каждый из которых состоит из четырех шагов (замены байтов, циклического сдвига строк, перемешивания столбцов и сложения с раундовым ключом), последний 10-й раунд, состоящий из трех шагов (замены байтов, циклического сдвига строк и сложения с раундовым ключом).
Недостатком известного решения является низкая криптостойкость и недостаточно высокое быстродействие.
К причинам, препятствующим достижению указанного ниже технического результата, относится использование только последовательной композиции раундовых преобразований, в результате, для обеспечения требуемого уровня криптостойкости необходимо выполнение большого числа раундов.
В основе изобретения лежит задача построения на основе последовательной и параллельной композиции раундовых функций шифрования нелинейного многораундового преобразования, допускающего максимальную степень параллелизма, что при реализации с использованием гибридных суперкомпьютерных технологий позволит в несколько раз повысить быстродействие алгоритма. При этом результат преобразований зависит от секретной информации, которую образуют ключ и таблица замен.
Техническим результатом изобретения является повышение криптостойкости и увеличение быстродействия итеративного криптографического преобразования данных.
Указанный технический результат при осуществлении изобретения достигается тем, что в итеративном криптографическом преобразовании данных, включающем
1
2
R
формирование из секретного ключа с помощью процедуры разворачивания ключа последовательности раундовых ключей K, K,…, K, где R - число раундов преобразования;
формирование по входному блоку М блока С в соответствии с выражением С:=М;
i
i
i
R
выполнение R раундов преобразования, при этом преобразование блока данных на i-м раунде записывается в виде С:=Е(С, K), где Е() - раундовая функция преобразования, К - раундовый ключ, используемый на i-м раунде, полученное значение С:=Е(С, K) при i<R поступает на вход следующего раунда, а результат действия последнего раунда С:=Е(С, K) является результатом преобразования;
новым согласно изобретению является то, что дополнительно
i
i1
i2
iN
из каждого раундового ключа K формируют N раундовых подключей K, K,…, K, где N - число траекторий раундовых преобразований в каждом раунде;
i1
i2
iN
ij
ij
ij
ij
ij
ij
ij
i1
i2
iN
при выполнении каждого i-го раунда создают N копий С, С,…, С входного блока данных С, каждую копию C подвергают стохастическому преобразованию Е, которое записывается в виде С:=E(C, K), преобразованные значения C поступают на входы комбинационной схемы F, функцией которой является параллельная композиция различных траекторий раундовых преобразований, результат действия комбинационной схемы С:=F(C, С,…, С) объявляют результатом раунда.
В частном случае выполняют комбинационную схему в виде N - входового блока поразрядного сложения по модулю два.
Благодаря такому решению параллельная декомпозиция траекторий преобразований осуществляется самым простым из всех возможных способов.
ij
Новым является то, что в частном случае стохастическое преобразование E включает
ij
ij
представление входного блока C, промежуточных результатов преобразования и раундового подключа K в виде квадратного массива бит размерностью 8×8;
ij
ij
сложение по модулю два (XOR) входного блока C и раундового подключа К;
1
2
8
разбиение результата на строки r, r,…, r и выполнение для каждой строки операции замены с использованием таблицы S размерностью 8×256;
1
2
8
разбиение результата на столбцы с, с,…, с и выполнение для каждого столбца операции замены с использованием таблицы S размерностью 8×256.
ij
ij
ij
ij
Благодаря совокупности перечисленных решений увеличивается криптостойкость преобразования за счет выполнения последовательной и параллельной композиции раундовых преобразований и повышается быстродействие за счет появления возможности сокращения числа раундов и выполнения всех раундовых преобразований C:=Е(С, K) параллельно.
Суть предлагаемого способа иллюстрируют фиг.1-3.
На фиг.1 изображена структура итеративного криптографического преобразования.
i
i
i
1
2
R
На фиг.1 показаны входы 1 и выходы 2 последовательно выполняемых раундов 6, а также раундовые ключи 3, 3,…, 3, которые формируются из секретного ключа с помощью процедуры разворачивания ключа, где R - число раундов преобразования, i=1, 2,…, R. Последовательность шагов итеративного криптографического преобразования:
1
формирование по входному блоку 1 М блока С в соответствии с выражением С:=М;
i
i
i
i
i
i
R
R
1
выполнение R раундов преобразования, при этом преобразование блока данных 1 на i-м раунде записывается в виде С:=Е(С, K), где K - раундовый 3 ключ, используемый на i-м раунде, полученное значение 2 С:=Е(С, K) при i<R поступает на вход следующего раунда, а результат действия 2 последнего раунда С:=Е(С, K) является результатом преобразования входного блока 1М.
Процедура разворачивания ключа может быть выполнена на основе ГПСЧ, в качестве начального состояния которого используется исходный секретный ключ, а с выхода которого снимается последовательность раундовых ключей.
ij
i1
i2
iN
i
На фиг.1 показаны раундовые 3 подключи, i=1, 2,…, R, j=1, 2,…, N, использующиеся при выполнении стохастических преобразований 4, 4,…, 4, которые выполняются внутри каждого раунда 6, а также комбинационная схема 7.
i
ij
ij
ij
ij
ij,
ij
ij
i
i
i1
i2
iN
i
i
Внутри каждого раунда происходит формирование N копий входного блока 1, каждая копия C подвергается стохастическому преобразованию 4, которое записывается в виде C:=E(C K), преобразованные значения C поступают на входы комбинационной 5 схемы F, функцией которой является параллельная композиция различных траекторий раундовых преобразований, результат действия комбинационной 5 схемы С:=F(C, С,…, С) объявляется результатом 2 раунда 6.
i1
i2
iN
i
На фиг.2 показан вариант построения комбинационной 5 схемы на основе N-входового блока поразрядного сложения 7 по модулю два. На входы блока 7 поступают результаты преобразований с выходов блоков, осуществляющих стохастические преобразования 4, 4,…, 4. С выхода блока 5 снимается результат 2 i-го раунда.
i
i
ij
ij
На фиг.3 показан пример преобразования 4. Рассматривается случай, когда все блоки 1, 2, все раундовые подключи 3, все промежуточные результаты преобразований в блоках 4 представляются в виде квадратного массива бит 8×8, т.е. имеют разрядность 64 бита. На фиг.3 показана операция сложения 8 по модулю два, отдельные строки 9 и столбцы 10 блока данных.
Последовательность шагов итеративного криптографического преобразования имеет следующий вид.
i
- Формирование по входному 1 блоку М блока С в соответствии с выражением С:=М.
1
1
1
2
- 1-й раунд преобразований. Преобразование блока данных на первом раунде записывается в виде С:=Е(С, K), где K - раундовый ключ первого раунда. Полученное значение 2 поступает на вход 1 второго раунда.
2
2
2
3
- 2-й раунд преобразований. Преобразование блока данных на втором раунде записывается в виде С:=Е(С, K), где K - раундовый ключ второго раунда. Полученное значение 2 поступает на вход 1 третьего раунда.
R
R
R
1
- R-й раунд преобразований. Преобразование блока данных на последнем раунде записывается в виде С:=Е(С, K), где K - раундовый ключ последнего раунда. Полученное значение 2 является результатом итеративного криптографического преобразования блока данных 1М.
Более детально последовательность шагов итеративного криптографического преобразования можно описать следующим образом.
1
- Формирование по входному 1 блоку М блока С в соответствии с выражением С:=М.
11
12
1N
1
1j
ij
ij
1j
1j
1j
1j
1j
1
1
11
12
1N
1
1
2
- 1-й раунд преобразований. При выполнении первого раунда создается N копий С, С,…, С входного 1 блока данных С, каждая копия С подвергается стохастическому преобразованию 4, которое записывается в виде C:=E(C, K), где K - раундовые подключи первого раунда, j=1, 2,…, N, преобразованные значения C поступают на входы комбинационной 5 схемы F, функцией которой является параллельная композиция результатов выполнения различных траекторий раундовых преобразований, результат действия комбинационной 5 схемы С:=F(C, С,…, C) объявляется результатом 2 первого раунда. Полученное значение 2 поступает на вход 1 второго раунда.
21
22
2N
2
2j
2j
2j
2j
2j
2j
2j
ij
2
2
21
22
2N
2
3
- 2-й раунд преобразования. При выполнении второго раунда создается N копий С, С,…, С входного 1 блока данных С, каждая копия С подвергается стохастическому преобразованию 4, которое записывается в виде С:=Е(С, K), где K - раундовые подключи второго раунда, j=1, 2,…, N преобразованные значения C поступают на входы комбинационной 5 схемы F, функцией которой является параллельная композиция результатов выполнения различных траекторий раундовых преобразований, результат действия комбинационной 5 схемы С:=F(C, С,…, C) объявляется результатом 2 второго раунда. Полученное значение 22 поступает на вход 1 третьего раунда.
R1
R2
RN
R
Rj
Rj
Rj
Rj
Rj
Rj
Rj
Rj
R
R
R1
R2
RN
R
R
1
- R-й раунд преобразований. При выполнении последнего раунда создается N копий C, C,…, C входного 1 блока данных С, каждая копия C подвергается стохастическому преобразованию 4, которое записывается в виде C:=E(C, K), где K - раундовые подключи последнего раунда, j=1, 2,…, N, преобразованные значения C поступают на входы комбинационной 5 схемы F, функцией которой является параллельная композиция результатов выполнения различных траекторий раундовых преобразований, результат действия комбинационной 5 схемы С:=F(C, C,…, C) объявляется результатом 2 второго раунда. Полученное значение 2 является результатом итеративного криптографического преобразования блока данных 1М.
ij
i
ij
Рассмотрим пример реализации стохастического преобразования 4, показанный на фиг.4. Все блоки 1 входных данных, все промежуточные результаты, раундовые подключи 3 имеют разрядность 64 бита и представляются в виде квадратного массива бит 8×8.
ij
Последовательность операций при выполнении простейшего преобразования 4 имеет следующий вид:
i
ij
сложение 8 по модулю два (XOR) входного блока 1 и раундового подключа 3;
1
2
8
разбиение результата на строки 9 r, r,…, r и выполнение для каждой строки операции замены с использованием таблицы S размерностью 8×256;
1
2
8
разбиение результата на столбцы 10 с, с,…, c и выполнение для каждого столбца операции замены с использованием таблицы S размерностью 8×256.
ij
При таком способе выполнения преобразования 4 дополнительно появляется возможность повысить быстродействие за счет параллельного выполнения операций замены строк и столбцов.
c
Одним из известных путей повышения криптостойкости нелинейной функции шифрования является использование для ее построения последовательной и параллельной композиции простейших функций ƒ шифрования. Параллельная композиция суть побитовый XOR последовательностей с выходов двух блоков ƒ, в последовательной композиции выход одного блока ƒ является входом другого. Такой подход к построению шифра впервые был использован У. Маурером при создании самосинхронизирующегося поточного шифра [Иванов М.А., Ковалев А.В., Чугунков И.В. и др. Стохастические методы защиты информации в компьютерных системах и сетях. М.: Кудиц-Пресс, 2009, с.263]. Базовый компонент схемы Маурера - 3-битовый регистр сдвига с зависящей от ключа функцией ƒ выхода. Четыре таких компонента образуют блок следующего уровня - пару параллельно соединенных цепочек из двух базовых компонентов. На следующем уровне четыре таких блока собраны в последовательную композицию. На двух следующих уровнях эта конструкция повторяется. Результирующая последовательностная машина (ПМ) имеет входную память объемом 192 бита и 4 бита-компонента на каждый бит памяти. Внутреннее состояние ПМ служит входом для зависящей от ключа функции шифрования F. Для задания конструкций булевых функций ƒ ключ шифрования «разворачивается» в 256 байтов, каждый из которых определяет таблицу истинности соответствующей функции. Основная идея данной конструкции - построение ПМ, количество элементов памяти которой превышает разрядность входной памяти. Подобный подход к построению блочных итеративных шифров ранее не применялся, его использование при программной реализации криптографических преобразований стало возможным в связи с появлением гибридных суперкомпьютерных технологий. В результате стало возможным в пределах раунда параллельно (иначе говоря, без ущерба для быстродействия) выполнять различные траектории сложных преобразований, а затем на выходе осуществлять параллельную композицию полученных результатов. В результате задача инвертирования функции шифрования становится вычислительно неразрешимой при меньшем числе раундов преобразования. В том случае, когда число раундов остается неизменным, применение последовательной и параллельной композиции раундовых преобразований приводит к повышению криптостойкости шифра.
Таким образом, особенностью предлагаемого способа реализации итеративного криптографического преобразования является высокая степень параллелизма при выполнении различных траекторий раундовых преобразований с последующей параллельной композицией результатов их выполнения, что обеспечивает получение заявляемого технического результата - увеличение быстродействия при реализации с использованием гибридных суперкомпьютерных технологий за счет уменьшения числа раундов, требуемых для обеспечения заданного уровня криптостойкости, либо увеличение криптостойкости при сохранении исходного числа раундов.
В последние годы все большую популярность завоевывают гибридные вычислительные системы, сочетающие удобство классических вычислений на центральных процессорах (CPU) с массово-параллельными вычислениями на графических процессорах (GPU) [Боресков А.В., Харламов А.А. Основы работы с технологией CUDА. М.: ДМК Пресс, 2011], [CUDA Zone. URL http://developer.nvidia.com/ category/zone/cuda-zone]. Особенностью GPU является наличие большого числа (десятки и сотни) вычислительных ядер, работающих параллельно. В задачах, допускающих распараллеливание обработки потока исходных данных, выигрыш в производительности для системы CPU/GPU составляет до нескольких десятков раз по сравнению с классической CPU-системой. Многие из наиболее производительных современных суперкомпьютеров также имеют гибридную архитектуру CPU/GPU.
В гибридных системах CPU решает задачи управления выполнением программы в целом и проведения не очень "тяжелых" вычислений; наиболее критичные по производительности участки программы оформляются в виде специальных функций-ядер (kernel), которые запускаются на GPU. Современные производители графических процессоров, в частности, компания NVIDIA, предоставляют разработчикам программ для систем CPU/GPU мощные инструментальные средства. Полезной и приятной особенностью таких средств является то, что они являются бесплатными. В качестве примеров можно указать CUDA Toolkit [CUDA Toolkit. URL http://developer.nvidia.com/cuda-toolkit] и Parallel NSight [NVIDIA Parallel Nsight. URL http://developer.nvidia.com/ nvidia-parallel-nsight], которые интегрируются с современными популярными системами разработки ПО, такими как Microsoft Visual Studio и NetBeans.
Для программной реализации предложенного способа построения итеративного криптографического преобразования наиболее целесообразной представляется технология CUDA (Compute Unified Device Architecture - вычислительная унифицированная архитектура устройств) от компании NVIDIA [Боресков А.В., Харламов А.А. Основы работы с технологией CUDA. М.: ДМК Пресс, 2011], [CUDA Zone. URL http://developer.nvidia.com/category/zone/cuda-zone]. Минимальной вычислительной единицей в CUDA является нить (thread). По сути, нить есть набор конкретных действий над элементом данных, нити группируются в пучки (warp); все нити одного пучка физически параллельно выполняются на потоковом мультипроцессоре; из потоковых мультипроцессоров состоит графический процессор. Очень важной особенностью CUDA является то, что при программировании нити образуют трехмерные структуры, именуемые блоками (block). Блоки, в свою очередь, группируются в еще более крупную многомерную структуру, именуемую сеткой (grid). Другими словами, сетка есть совокупность всех нитей, выполняющих параллельную обработку данных, и вместе с тем представляющая собой гибкую многомерную иерархическую структуру. Таким образом, CUDA-программист может оперировать с одно-, двух- или трехмерными структурами для параллельной обработки исходных данных, в том числе комбинируя размерности этих структур.
Очевидно, что в пределах каждого раунда все траектории могут быть обработаны параллельно, а применение CUDA позволит существенно упростить процесс разработки ПО.