СПОСОБ ХЕШИРОВАНИЯ ИНФОРМАЦИИ
METHOD FOR HASHING INFORMATION

Изобретение относится к вычислительной технике и электросвязи, предназначено для решения задач защиты компьютерной информации. Наиболее предпочтительной областью использования изобретения является реализация стохастических методов защиты информации.
В совокупности признаков заявленного изобретения используются следующие термины:
Стохастическое преобразование (Stochastic Transformation) - непредсказуемое преобразование данных; примером стохастического преобразования может являться криптографическое преобразование;
Генератор псевдослучайных чисел (ГПСЧ) (PRNG, Pseudo-Random Number Generator) - генератор последовательности чисел, статистически не отличимой от последовательности случайных чисел с равномерным законом распределения; наиболее жесткие требования предъявляются к ГПСЧ, ориентированным на решение задач защиты информации;
Ключ (Key) - секретный параметр стохастического преобразования, представляет собой двоичную информацию, известную только законному пользователю;
n
Двоичный вектор - некоторая последовательность нулевых и единичных бит, например (01101010), двоичный вектор разрядности n может быть интерпретирован как элемент конечного поля GF(2);
n
n
Замена (Substitution) - операция, выполняемая над двоичным вектором i∈GF(2), при этом результат операции равен содержимому ячейки с индексом i таблицы замен размерности n×2;
Перемешивание (Mix) - операция, выполняемая над двоичным вектором разрядности n, результат разрядности n которой зависит от всех входных бит и от их взаимного расположения.
Стохастическими методами защиты информации (ЗИ) принято называть методы, основанные на внесении непредсказуемости в работу средств и объектов защиты. Термин «стохастический» применительно к задачам ЗИ впервые стал применяться С.А. Осмоловским при построении кодов, обнаруживающих и исправляющих ошибки, возникающие при передаче данных по каналам связи [С.А. Осмоловский. Стохастические методы передачи данных. - М.: Радио и связь, 1991]. Примеры использования стохастических методов ЗИ приведены в следующих источниках информации:
- С.А. Осмоловский С.А. Стохастические методы защиты информации. - М.: Радио и связь, 2003.
- V. Мао. Modern Cryptography. Theory and Practice. - Prentice Hall PTR, 2003.
- M. Bellare, P. Rogaway. Optimal asymmetric encryption. In A. de Santis, editor, Advances in Cryptology - Proceedings of EUROCRYPT'94, Lecture Notes in Computer Science 950, pp. 92-111. Springer-Verlag, 1995 и др.
Только с использованием стохастических методов можно защититься от активного противника. Эффективность стохастических методов защиты определяется качеством используемых генераторов псевдослучайных чисел (ГПСЧ) и хеш-функций. Тенденцией последних лет стало массовое появление 2D и 3D стохастических преобразований:
- Barreto, V. Rijmen. The WHIRLPOOL Hashing Function. http://cryptospecs.googlecode.com/svn/trunk/hash/specs/whirlpool.pdf
- G. Bertoni, J. Daemen, M. Peeters, G. Van Assche. Keccak specifications. http://keccak.noekeon.org/Keccak-specifications-2.pdf
- Benadjila, R., Billet, O., Gilbert, H., Macario-Rat, G., Peyrin, Т., Robshaw, M., Seurin, Y. SHA-3 proposal: ECHO. Submission to NIST (updated) (2009). http://crypto.rd.francetelecom.com/echo/doc/echo_description_1-5.pdf
- P. Gauravaram, L.R. Knudsen, K. Matusiewicz, F. Mendel, C. Rechberger, M. Schlaffer, and S.S. Thomsen.  - a SHA-3 candidate. Submission to NIST (Round 3), 2011. http://www.groestl.info.
- Информационная технология. Криптографическая защита информации. Функция хеширования. ГОСТ R 34.11-2012. - Москва, Стандартинформ, 2012.
m
*
*
m
Хеш-функция h(x) - это функция, принимающая на входе в качестве аргумента информационную последовательность (прообраз) М произвольной длины и дающая на выходе в качестве результата h(M) информационную последовательность (хеш-образ) фиксированной длины. Дадим формальное определение хеш-функции. Пусть {0, 1} - множество всех двоичных строк длины m, {0, 1} - множество всех двоичных строк конечной длины. Тогда хеш-функцией h называется преобразование вида h: {0, 1}→{0, 1}, где m - разрядность хеш-образа.
Хеширование являются важным видом криптографического преобразования. Область применения хеш-функций чрезвычайно широка, они успешно решают практически все задачи защиты компьютерной информации от обеспечения аутентичности субъектов и объектов информационного взаимодействия до внесения неопределенности в работу средств и объектов защиты.
Процесс получения хеш-функции можно рассматривать как наложение псевдослучайной последовательности (ПСП) с выхода ГПСЧ на входную преобразуемую последовательность. Наиболее явно справедливость этого утверждения следует из анализа новой конструкции хеширования, получившей название Sponge.
Любая криптографическая хеш-функция h(x) должна удовлетворять следующим требованиям:
- Хеш-образ h(M) должен зависеть от всех бит прообраза М и от их взаимного расположения;
- При любом изменении М хеш-образ должен изменяться непредсказуемо, иначе говоря, в среднем должна измениться половина бит h(M);
n
*
- Хеш-функция должна быть односторонней (one-way), иначе говоря для произвольной n-разрядной строки y∈{0,1} вычислительно сложно найти х∈{0,1}, такое, что h(x)=y(pre-image resistance);
m
*
- Хеш-функция должна быть стойкой в смысле нахождения второго прообраза, иначе говоря, для заданной m-разрядной строки х∈{0,1} вычислительно сложно найти произвольную строку х'∈{0,1}, x'≠x, такую, что h(x')=h(x) (second pre-image resistance);
*
- Хеш-функция должна быть стойкой в смысле нахождения коллизий, иначе говоря, вычислительно сложно найти две произвольные строки х', х''∈{0,1}, х'≠х'', такие, что h(x')=h(x'') (collision resistance).
Существует два подхода к проектированию криптографической хеш-функции: проектирование «с нуля» и построение функции хеширования на основе использования функции зашифрования блочного шифра. Примером реализации первого подхода может являться хеш-функция MD5 - многолетний неофициальный мировой стандарт на функцию хеширования. Примером реализации второго подхода может являться хеш-функция Whirlpool, построенная на основе блочного шифра W [Barreto, V. Rijmen. The WHIRLPOOL Hashing Function. http://cryptospecs.googlecode.com/svn/trunk/hash/specs/whirlpool.pdf].
Известен традиционный способ хеширования информации [Hash function using a quasi-group operation, US 2011/0179281, фиг. 1 или "Информационная технология. Криптографическая защита информации. Функция хеширования. ГОСТ R 34.11-2012". Москва, Стандартинформ, 2012)], включающий
1
2
n
разбиение входного сообщения М на n блоков фиксированной длины М, М, … M;
n
дополнение в случае необходимости последнего блока сообщения M до длины, кратной разрядности блоков;
i
i-1
i
i-1
i
0
выполнение n итераций хеширования h=g(h, M), i=1, 2, 3, …, n; с использованием функции сжатия g(h, M), где h=IV - вектор инициализации (Initialization Vector); после чего результат последней итерации объявляется результатом преобразования, т.е. хеш-образом сообщения.
В некоторых случаях после n-й итерации выполняется от одного до трех финальных шагов преобразования.
1
2
3
n
Уравнение работы при хешировании сообщения М=М М М … M, дополненного до длины, кратной разрядности блоков, имеет вид
i
i-1
i
0
n
h=g(h, M), i=1, 2, 3, …, n; h=IV; h=h(M);
i-1
i
где g(h, M) - итерационная функция сжатия, n - число блоков сообщения М, IV - вектор инициализации.
i
k
m
m
Уравнение работы функции сжатия для одного из наиболее распространенных вариантов использования функции зашифрования Е(K, M):{0, 1} × {0, 1} → {0, 1} блочного шифра имеет вид
i-1
i
i-1
i
i
i-1
g(h, M)=E(h, M)⊕m⊕h,
i
где k - разрядность ключа K, m - разрядность блока данных M.
Недостатком традиционного способа хеширования является низкая криптостойкость.
Начиная с 2005 года, положение в области криптографических хеш-функций стало напоминать кризисное, и по этой причине в 2007 году НИСТ США объявил открытый международный конкурс по выбору нового стандарта хеширования SHA-3. Конкурс был ответом НИСТ на последние достижения в области криптоанализа алгоритмов хеширования. Среди функций, представленных на конкурс, помимо тех, которые имели традиционную конструкцию, были представлены функции, имевшие новые конструкции, наиболее интересной из которых является Sponge.
с/2
1
2
На всех этапах конкурса в его работе активно участвовало мировое криптографическое сообщество. Основываясь на открытых комментариях, результатах криптоанализа, особенностей аппаратной и программной реализации, в октябре 2012 года НИСТ объявил 3D алгоритм Keccak победителем, завершив пятилетний конкурс. Таким образом, в качестве основы для нового стандарта SHA-3 была выбрана хеш-функция Keccak, построенная с использованием конструкции под названием Sponge (губка), конструкция которой показана на фиг. 1, где 1.1, 1.2, …, 1.n - входы, на которые поступают блоки входного сообщения; 2 - вход для вектора инициализации; 3.1, 3.2, 3.3 - выходы, с которого снимается результат преобразования, т.е. хеш-образ; 4 - итерационная нелинейная функция (псевдослучайная перестановка по терминологии авторов хеш-функции Keccak); 5 - многоразрядные блоки сложения по модулю два (XOR). Схема Sponge имеет внутреннее состояние S разрядностью b, b=r+с, значение r называется rate (определяет скорость преобразования), а значение с (параметр безопасности) - capacity. Пусть RL(Resistance Level) - уровень безопасности, тогда справедливо соотношение с≥2RL (иначе говоря, Sponge гарантирует нижнюю границу сложности 2 любой атаки). Состояние делится на две части: S разрядностью r и S разрядностью с.
Процесс хеширования состоит из двух многораундовых этапов: ввод (absorbing, впитывание) и вывод (squeezing, выжимание). Особенностью этапа ввода информации является в том, что на каждом раунде блок сообщения складывается по модулю 2 только с частью состояния, а функция F производит преобразование всего состояния и делает его зависимым от всего сообщения М. На этапе вывода информации результат длины b, полученный на этапе впитывания, вновь подается на вход функции F. При этом с выхода этой функции считываются первые r бит. Этот процесс повторяется конечное число раз, при этом над r битами, считанными на каждом этапе, производится операция конкатенации (сцепления блоков). Повторение происходит до тех пор, пока не получим результат, т.е. хеш-образ, нужной длины.
Важно отметить, что функциональные возможности схемы Sponge значительно шире, чем только хеширование данных. На фиг. 2 показаны два других варианта применения схемы Sponge.
На фиг. 2,a показана схема хеширования с солью (salt) и с замедлением, что целесообразно при организации парольных систем разграничения доступа и, в частности, для противодействия атакам с использованием радужных таблиц (rainbow tables). Замедление обеспечивается за счет выполнения многораундового этапа обработки информации между этапами ввода и вывода информации.
На фиг. 2,b показано преобразование входной последовательности произвольной длины в выходную последовательность произвольной длины. Использование входа и выхода переменной длины в схеме Sponge может применяться, например, для генерации симметричных ключей из паролей.
Таким образом, наиболее близким по своей технической сущности к заявленному способу хеширования информации является способ, принятый за прототип и предполагающий использование конструкции Sponge (HASH VALUE GENERATING DEVICE, US 2016/0013932, фиг. 1A или G. Bertoni, J. Daemen, M. Peeters, G. Van Assche. Sponge functions. Ecrypt Hash Workshop, Barcelona, Spain, May 2007. http://sponge.noekeon.org/). Этот способ включает
1
2
n
разбиение входного сообщения М на n r-разрядных блоков фиксированной длины M, М, … M;
n
дополнение в случае необходимости последнего блока сообщения M до длины, кратной разрядности блоков;
r(i-1)
c(i-1)
i-1
i
выполнение n итераций ввода информации:  i=1, 2, 3, …, n; где F - r младших разрядов результата предыдущей (i-1)-й итерации, F - с старших разрядов результата предыдущей (i-1)-й итерации, с использованием нелинейной функции F(F; M),  IV - вектор инициализации (Initialization Vector);
j
(j-1)
0
выполнение d≥0 итераций обработки информации F=F(F); j=1, 2, 3, …, d; где F - результат последней итерации ввода;
rt
ct
r0
c0
выполнение k≥0 итераций вывода информации  t=1, 2, 3, …, k; где F и F - соответственно r младших и с старших разрядов результата t-ой итерации обработки информации, F и F - соответственно r младших и с старших разрядов результата последней итерации обработки информации, после чего конкатенация r младших разрядов результата последней итерации обработки информации и r младших разрядов результатов всех итераций вывода информации  объявляется результатом хеширования, т.е. хеш-образом сообщения.
Недостатком известного решения является низкая криптостойкость. К причинам, препятствующим достижению указанного ниже результата является использование линейной операции XOR при выполнении итераций ввода информации.
Техническим результатом изобретения является повышение криптостойкости хеширования за счет использования непредсказуемого многораундового стохастического преобразования, существенно затрудняющего проведение атак, актуальных для известных конструкций хеширования.
1
2
n
Заявленный технический результат достигается тем, что при выполнении операции хеширования, включающей разбиение входного сообщения М на n r-разрядных блоков М, М, … M;
n
дополнение в случае необходимости последнего блока сообщения M до длины, кратной разрядности блоков;
i-1
i
0
выполнение n итераций ввода информации с использованием нелинейной функции F(F; M), где i=1, 2, 3, …, n; F=F(IV), IV - вектор инициализации (Initialization Vector);
j
(j-1)
0
выполнение d≥0 итераций обработки информации F=F(F); где j=1, 2, 3, …, d; F - результат последней итерации ввода;
rt
ct
r0
c0
выполнение k≥0 итераций вывода информации  t=1, 2, 3, …, k; где F и F - соответственно r младших и с старших разрядов результата t-ой итерации обработки информации, F и F - соответственно r младших и с старших разрядов результата последней итерации обработки информации, после чего конкатенация r младших разрядов результата последней итерации обработки информации и r младших разрядов результатов всех итераций вывода информации  объявляется результатом хеширования, т.е. хеш-образом сообщения;
r(j-1)
c(i-1)
дополнительно при выполнении каждой i-й итерации ввода информации используется блок трехвходового многораундового стохастического преобразования данных R(A, В, С), где А - преобразуемый блок данных, В - параметр преобразования, С - параметр раундовых преобразований, при этом итерация ввода осуществляется по формуле  где F - r младших разрядов результата предыдущей (i-1)-й итерации, F - с старших разрядов результата предыдущей (i-1)-й итерации, где i=1, 2, 3, …, n;  IV - вектор инициализации.
Суть предлагаемого способа хеширования иллюстрируют фиг. 3-7.
1
2
n
На фиг. 3 показаны блоки 1.1, 1.2, …, 1.n входного сообщения М=М М … M; вектор 2 инициализации; блоки 3.0, 3.1, 3.2 результата хеширования (хеш-образа входного сообщения); блоки 4 выполнения нелинейной функции F, число которых в общем случае равно n+d+k+1, где n - число итераций ввода, d - число итераций обработки и k - число итераций вывода информации; блоки 6 многораундового стохастического преобразования данных R(A, В, С), число которых равно числу n итераций ввода. В общем случае число блоков 3 равно k+1. На фиг. 3 показан случай k=2.
1
2
n
n
i-1
i
0
t
(t-1)
0
rt
ct
r0
c0
r(i-1)
c(i-1)
Преобразование хеширования выполняется следующим образом. Входное сообщение М разбивается на n r-разрядных блоков фиксированной длины M, М, … M. В случае необходимости последний блок сообщения M дополняется до длины, кратной разрядности блоков. Для получения результата хеширования выполняются n итераций ввода информации с использованием нелинейной функции F(F, M), где i=1, 2, 3, …, n; F=F(IV), IV - вектор инициализации (Initialization Vector), n - число блоков входного сообщения; затем выполняются d≥0 итераций обработки информации F=F(F); где t=1, 2, 3, …, d; F - результат последней итерации ввода; и, наконец, выполняются k≥0 итераций вывода информации  t=1, 2, 3, …, k; где F и F - соответственно r младших и с старших разрядов результата t-ой итерации обработки информации, F и F - соответственно r младших и с старших разрядов результата последней итерации обработки информации, после чего конкатенация r младших разрядов результата последней итерации обработки информации и r младших разрядов результатов всех итераций вывода информации  объявляется результатом преобразования, т.е. хеш-образом сообщения. При выполнении каждой i-й итерации ввода информации используется блок трехвходового многораундового стохастического преобразования данных R(A, В, С), где А - преобразуемый блок данных, В - параметр преобразования, С - параметр раундовых преобразований, при этом итерация ввода осуществляется по формуле  где F - r младших разрядов результата предыдущей (i-1)-й итерации ввода, F - с старших разрядов результата предыдущей (i-1)-й итерации ввода, где i=1, 2, 3, …, n;  IV - вектор инициализации,  - операция конкатенации.
На фиг. 4 показана схема одной итерации ввода информации при использовании блока 6, построенного на основе 512-разрядного стохастического преобразования DOZEN+.
На фиг. 5 показан пример реализации предлагаемого способа хеширования. На фиг. 5 помимо блока 1.i входного сообщения М, вектора 2 инициализации, блока 3.j результата преобразования (хеш-образа сообщения М), блока 4 выполнения нелинейной функции F и блока 6 стохастического преобразования R показаны мультиплексор 7, регистр 8 разрядностью (r+с), вход 9 тактовых импульсов и вход 10 режима, который равен нулю при выполнении итераций ввода информации и равен единице при выполнении итераций обработки и вывода информации. Устройство работает следующим образом. Перед началом работы в регистр 8 записывается вектор 2 инициализации. Цепь установки в исходное состояние на рис. 5 не показана. В режиме ввода информации (сигнал на управляющем входе 10 мультиплексора равен нулю) синхронно с блоками 1 сообщения М на вход 9 поступают тактовые импульсы, по которым в регистр 8 записывается результат очередной итерации с выхода блока 6 стохастического преобразования R и выхода 4.2 блока 4 выполнения нелинейной функции F. В режиме обработки информации (сигнал на управляющем входе 10 мультиплексора равен единице) в регистр 8 при поступлении тактового импульса на его вход 9 записывается результат очередной итерации обработки информации с выходов 4.1 и 4.2 блока 4 выполнения нелинейной функции F. В режиме вывода информации (сигнал на управляющем входе 10 мультиплексора равен единице) на выходе 3 устройства синхронно с тактовыми импульсами на входе 9 появляются блоки 3.j результата преобразования.
i
1i
2i
На фиг. 6 показан пример реализации блока 6 стохастического преобнразования R на основе 3D преобразования DOZEN+. На рис. 6 показан вход 1.i блока 6, на который поступают блоки исходного сообщения М; входы 4.1 и 4.2, на которые поступают данные соответственно с r младших и с старших выходов блока 4; 128-разрядные блоки 11 сложения по модулю два (XOR), блоки 12 замены (операция SubBytes - замена байтов), блоки 13 выполнения линейной операции L (MixSquareState - перемешивание квадрата состояния), 512-разрядный блок 14 сложения по модулю два (XOR). Результат преобразования R (M, K, K) с выхода блока 6 поступает на вход мультиплексора 7.
1
2
n
n
i-1
i
0
j
(j-1)
0
rt
ct
r0
c0
Хеширование осуществляется следующим образом. Входное сообщения М разбивается на n r-разрядных блоков М, М, … M. В случае необходимости последний блок сообщения M дополняется до длины r. После этого выполняются n итераций ввода информации с использованием нелинейной функции F(F, M), где i=1, 2, 3, …, n; F=F(IV), IV - вектор инициализации. Затем выполняются d≥0 итераций обработки информации F=F(F); где j=1, 2, 3, …, d; F - результат последней итерации ввода. Наконец, выполняются k≥0 итераций вывода информации  t=1, 2, 3, …, k; где F и F - соответственно r младших и с старших разрядов результата t-ой итерации обработки информации, F и F - соответственно r младших и с старших разрядов результата последней итерации обработки информации, после чего конкатенация r младших разрядов результата последней итерации обработки информации и r младших разрядов результатов всех итераций вывода информации  объявляется результатом преобразования, т.е. хеш-образом сообщения.
При выполнении каждой i-й итерации ввода информации используется блок трехвходового многораундового стохастического преобразования данных R(A, В, С), где А - преобразуемый блок данных, В - параметр преобразования, С - параметр раундовых преобразований, при этом итерация ввода осуществляется по формуле
r(i-1)
c(i-1)
где F - r младших разрядов результата предыдущей (i-1)-й итерации, F - с старших разрядов результата предыдущей (i-1)-й итерации, где i=1, 2, 3, …, n;  IV - вектор инициализации,  - операция конкатенации.
Таким образом, предложенный способ хеширования имеет повышенную криптостойкость за счет использование непредсказуемого многораундового стохастического преобразования, существенно затрудняющего проведение атак, актуальных для традиционной конструкции хеширования. Кроме того, использование в качестве стохастического преобразования 3D алгоритмов, например, алгоритмов семейства DOZEN, главное достоинство которых - высокая степень параллелизма на уровне элементарных операций, позволяет при реализации преобразования использовать не только конвейерный, но и параллельный принцип выполнения операций, обеспечивая тем самым быстродействие, приемлемое для большинства приложений.
3D преобразования семейства DOZEN описаны в следующих источниках информации:
- RU 2503994, Способ нелинейного трехмерного многораундового преобразования данных DOZEN.
- RU 2591015, Способ нелинейного трехмерного многораундового преобразования данных RDOZEN.
- Три новых способа стохастического преобразования данных / М.А. Иванов, А.А. Скитев, И.В. Матвейчиков и др. - Proceedings of The Radio-Electronic Devices and Systems for the Infocommunication Technologies (REDS-2016), Moscow, Russia, May 25-26, pp. 351-355.
2i
1i
Важнейшим требованием к стохастическому преобразованию информации является непредсказуемость. Дополнительным преимуществом предлагаемого способа хеширования является повышение криптостойкости стохастического преобразования, используемого при реализации блока 6. Так, например, использование алгоритма DOZEN+ в составе предлагаемой конструкции хеширования, обеспечивает большую непредсказуемость результата преобразования, чем базовая схема, в которой параметры K раундовых преобразований зависят от параметров K
2i
1i
K=KeyExpansion(K),
1i
2i
где KeyExpansion - традиционное название для процедуры формирования параметров раундовых преобразований. При использовании же алгоритма DOZEN+ в составе предлагаемой конструкции K и K - это значения на выходах соответственно 4.1 и 4.2 блока 4 (см. фиг. 4), не зависящие друг от друга.