Способ генерирования псевдослучайной последовательности

Номер патента: 8677

Опубликовано: 29.06.2007

Авторы: Жюно Паскаль, Водена Серж

Есть еще 3 страницы.

Смотреть все страницы или скачать PDF файл.

Формула / Реферат

1. Способ генерирования подключей на основе основного ключа (MKEY), включающий следующие этапы:

получают первое значение (А1) посредством применения к основному ключу (MKEY) слоя линейной диверсификации путем смешивания основного ключа (MKEY) с константой,

применяют к первому значению (А1) нелинейное преобразование, причем данное преобразование включает следующие этапы:

получают второе значение (А2) путем обработки первого значения (А1) в слое подстановки, причем слой подстановки включает по меньшей мере один блок (sbox) подстановки, а каждый блок подстановки содержит по меньшей мере одну таблицу констант, причем входные данные используются в качестве указателя, а определенная указателем константа используется в качестве выходных данных,

получают третье значение (A3) посредством диффузионного блока мультиперестановочного типа на основе второго значения (А2),

осуществляют разделение третьего значения (A3) на N блоков одинакового размера, получают четвертое выходное значение (А4), образованное из N блоков, причем каждый из блоков четвертого значения (А4) является результатом комбинирования N-1 блоков третьего значения (A3), а недостающий блок является блоком, имеющим тот же индекс,

получают седьмое значение (А7) путем применения к четвертому значению (А4) слоя (sigma) подстановки,

получают подключ (RKEY) путем обработки седьмого значения (А7) при помощи симметричного модуля (SENC) шифрования, причем первое значение (А1) используют в данном модуле в качестве входного ключа.

2. Способ по п.1, отличающийся тем, что введенный ключ (AKEY) имеет меньший размер, чем основной ключ (MKEY), причем способ предусматривает получение основного ключа (MKEY) на основе введенного ключа (AKEY) с использованием следующих этапов:

добавляют дополнительные данные с целью дополнения введенного ключа (AKEY) до размера основного ключа (MKEY),

смешивают дополнительные данные с введенным ключом (AKEY) таким образом, чтобы дополнительные биты были распределены по всему итоговому ключу (DKEY).

3. Способ по п.1 или 2, отличающийся тем, что константа, смешиваемая с основным ключом (MKEY) для получения первого значения (А1), представляет собой псевдослучайное значение, сгенерированное при помощи регистра LFSR, в который была загружена первая константа.

4. Способ по любому из пп.1-3, отличающийся тем, что в случае, когда размер входных данных симметричного модуля (SENC) шифрования меньше, чем размер седьмого значения (А7), способ включает этап разделения седьмого значения (А7) на кратное двум количество частей и попарного смешивания получившихся частей до достижения размера входных данных симметричного модуля (SENC) шифровки.

5. Способ по любому из пп.1-4, отличающийся тем, что перед использованием слоя (sigma) подстановки к четвертому значению (А4) прибавляют константу.

6. Способ по любому из пп.2-5, отличающийся тем, что все биты входного значения (А6) слоя (sigma) подстановки подвергают инвертированию в случае, если к введенному ключу (AKEY) добавлены дополнительные данные.

Рисунок 1

 

Текст

Смотреть все

008677 Область техники, к которой относится изобретение Настоящее изобретение относится к способу генерирования криптографически защищенных псевдослучайных последовательностей на основе начального числа или ключа. Уровень техники Во многих случаях бывает необходимо сгенерировать последовательность данных, зависящую от базового ключа. Первая область применения таких способов - генерирование опознавательных сигналов в виде идентификационных номеров, которые могут генерироваться, например, каждые десять секунд и требоваться для опознавания в дополнение к личному идентификационному номеру (PIN-коду). Такое число остается действительным в течение всего нескольких секунд и исключает его повторное использование третьей стороной. Такой генератор предназначен для использования вместо старых списков вычеркиваемых (одноразовых) значений, которые распечатывались и рассылались пользователями для их идентификации. Другая область применения связана с генерированием подключей для алгоритмов шифровки, использующих несколько циклов вычислений. В этом случае первый ключ используют для создания нескольких подключей, каждый из которых применяют в одном из циклов. Пример такого способа шифровки с использованием нескольких циклов описан в патенте США 5214703. Предполагается, что такой способ шифрования должен обладать следующими двумя характеристиками: во-первых, непредсказуемостью любой другой последовательности (или начального числа) при знании одной последовательности и, во-вторых, воспроизведением (повторяемостью) последовательности в обоих направлениях. Последняя характеристика используется, в частности, когда последовательность используется в качестве подключа для шифрования, т.к. при дешифровании подключи используются в обратном порядке. Широко используемое известное решение заключается во введении начального числа или основного ключа в регистр сдвигов с логической обратной связью (Logical Feedback Shift Register, LFSR). Генераторы с LFSR создают так называемые рекурсивные линейные последовательности (Linear RecursiveSequences, LRS), т.к. все производимые операции линейны. В общем случае длина последовательности перед повторением зависит от двух факторов - элементов данных, характеризующих обратную связь, и исходного состояния. LFSR заданного размера m (равного количеству регистров) может создавать все возможные состояния в течение периода N=2m-1, но только при условии выбора соответствующих элементов данных обратной связи. Такую последовательность называют последовательностью максимальной длины или максимальной последовательностью. В известных способах выходные данные таких регистров сдвигов используют для поблочного создания подключей, которые направляются в соответствующие циклы процесса шифрования. Общепризнанно, что знание одной из последовательностей, сгенерированных таким образом, дает возможность получения других последовательностей или начального числа. Раскрытие изобретения Задача, на решение которой направлено настоящее изобретение, заключается в предложении способа генерирования последовательностей или подключей на основе основного ключа, в котором информация, получаемая из каждого подключа, не позволяет восстановить основной ключ или любые другие подключи. Для решения поставленной задачи предлагается способ генерирования подключей на основе основного ключа (MKEY), включающий следующие этапы: получение первого значения (А 1) в результате применения к основному ключу (MKEY) слоя линейной диверсификации путем смешивания основного ключа (MKEY) с константой,применение к первому значению (А 1) нелинейного преобразования, причем данное преобразование включает следующие этапы: получение второго значения (А 2) путем обработки первого значения (А 1) в слое подстановки, причем слой подстановки включает по меньшей мере один блок (sbox) подстановки, а каждый блок подстановки содержит по меньшей мере одну таблицу констант, причем входные данные используются в качестве указателя, а определенная указателем константа используется в качестве выходных данных,получение третьего значения (A3) при помощи диффузионного блока мультиперестановочного типа на основе второго значения (А 2),разделение третьего значения (A3) на N блоков одинакового размера, получение четвертого выходного значения (А 4), образованного из N блоков, причем каждый из блоков четвертого значения (А 4) является результатом комбинирования N-1 блоков третьего значения (A3), а недостающий блок является блоком, имеющим тот же индекс,получение седьмого значения (А 7) путем применения к четвертому значению (А 4) слоя (sigma) подстановки,получение подключа (RKEY) путем обработки седьмого значения (А 7) при помощи симметричного модуля (SENC) шифровки, причем первое значение (А 1) используют в данном модуле в качестве входного ключа. Предлагаемый способ может быть кратко описан следующим образом: первый уровень, основан-1 008677 ный на модуле линейной диверсификации, и второй уровень, основанный на модуле нелинейной диверсификации. Линейная диверсификация осуществляется путем смешивания основного ключа с псевдослучайным значением. Один из обычно используемых способов получения такого псевдослучайного значения заключается в использовании функции LFSR. Эту функцию используют для быстрого генерирования значений без необходимости хранения таблицы констант. Первую константу загружают в LFSR и сдвигают для получения потока битов той же длины, что и ключ. Этот поток битов смешивают (при помощи функции XOR) с основным ключом для получения значения А 1. Назначение второго уровня заключается в осуществлении нелинейной диверсификации значения А 1. Этот уровень включает пять основных слоев. Первый из них является слоем подстановки. Назначение слоя подстановки - преобразование входного значения в выходное без использования каких-либо простых алгебраических соотношений. Наиболее быстрый метод получения требуемого перемешивания заключается в использовании таблицы соответствий, содержащей константы. Поскольку в описываемом варианте осуществления входные данные имеют длину в 32 бита, количество констант равно 232, а длина каждой из них равна 32 битам. В соответствии с предпочтительным вариантом осуществления входные данные разбивают на группы длиной по 8 битов, что сокращает количество констант до 256 байтов. Затем 32- или 64-байтовые входные данные разбивают на байты по 8 битов и направляют в подстановочный блок для получения 8-битовых выходных данных. Входные данные используют в качестве указателя адреса, а определенная указателем константа представляет собой выходные данные. В соответствии с одним из вариантов осуществления изобретения таблицы констант могут быть одинаковы для всех групп входных данных (32- или 64-битовых). В другом варианте осуществления таблицы констант могут быть различны для всех групп входных данных. Константы, содержащиеся в такой таблице, представляют собой фиксированную перестановку различных чисел, закодированную по числу битов, равному ширине таблицы. Второй основной слой данного нелинейного уровня представляет собой мультиперестановочную матрицу. Мультиперестановочная матрица представляет собой квадратную матрицу, в которой определитель любой возможной квадратной подматрицы не равен нулю, а элементы матрицы являются элементами конечного поля. Операция смешивания сводится к умножению вектора входных элементов на матрицу, в результате которого получают вектор, представляющий собой выходные данные. Третий уровень представляет собой уровень смешивания. Входное значение разделяют на несколько блоков одинакового размера. Для i-того входного блока i-тый выходной блок представляет собой результат воздействия функции XOR на все входные блоки кроме i-того. Четвертый слой также представляет собой слой смешивания, в котором над входным значением производят те же операции, что и в первом слое. Пятый слой представляет собой один цикл шифрования многоциклового способа шифрования. Входное значение представляет собой результат обработки на предыдущем уровне, а используемый ключ является результатом линейной диверсификации, т.е. значением А 1. Могут использоваться различные способы шифрования, например DES (Data Encryption Standard,стандарт шифрования данных), CAST (алгоритм шифрования, описанный в стандарте RFC 2144) илиIDEA (International Data Encryption Algorithm, международный алгоритм шифрования данных). Цель данного слоя заключается в обеспечении качественной диверсификации, т.е. в получении высокой степени диффузии входных данных. В одном из вариантов осуществления изобретения может быть целесообразно повторно использовать в цикле шифрования предыдущие слои. Поэтому вместо использования известных типов циклов шифрования в цикле шифрования входного значения А 5 для получения значения RA производят следующие операции: разделение входного значения А 5 по меньшей мере на два значения Y0L и Y0R,смешивание по меньшей мере двух значений Y0L и Y0R с образованием смешанного значения Y1,получение значения Y2 путем смешивания первой части А 1 Н значения А 1 со значением Y1,получение значения Y3 путем обработки значения Y2 в слое подстановки,причем слой подстановки включает по меньшей мере один блок (sbox) подстановки, а каждый блок подстановки содержит по меньшей мере одну таблицу констант, причем входные данные используются в качестве указателя, а определенная указателем константа используется в качестве выходных данных,получение значения Y4 с использованием диффузионного блока мультиперестановочного типа на основе значения Y3,получение значения Y5 путем смешивания второй части A1L значения А 1 со значением Y4,получение значения Y6 путем обработки значения Y5 в слое подстановки,получение значения Y7 путем смешивания первой части RAH подключа RA со значением Y6,смешивание значения Y7 по меньшей мере с двумя исходными значениями Y0L и Y0R для получе-2 008677 ния по меньшей мере двух значений Y8L и Y8R, причем значения Y8L и Y8R представляют собой выходное значение RA данного цикла шифровки. В соответствии с другим вариантом осуществления изобретения к значению А 4 перед его передачей в слой подстановки применяют дополнительное преобразование. Это преобразование представляет собой простое сложение с константой, осуществляемое функцией XOR. Если длина текущего ключа отличается от длины основного ключа R, текущий ключ сначала должен быть скорректирован так, чтобы его длина была равна длине основного ключа. Если длина текущего ключа больше длины основного ключа, ключ обрезают, а оставшиеся биты добавляют к обрезанной части (функция XOR). Если длина текущего ключа меньше длины основного ключа, к ключу добавляют дополнительные данные. Чтобы такое добавление не снизило качества диверсификации, дополнительные данные перемешивают с текущим ключом так, чтобы дополнительные данные были распределены по всему полученному ключу. Вышеописанные особенности позволяют генерировать подключи, обладающие следующими достоинствами: они криптографически защищены,они генерируются в двунаправленном, прямом и обратном режиме,в них используется основной ключ переменной длины, предпочтительно состоящий из 8-битовых блоков. Краткое описание чертежей Другие свойства и достоинства настоящего изобретения станут ясны из нижеследующего описания,содержащего ссылки на прилагаемые чертежи, которые иллюстрируют пример осуществления изобретения, не вносящий каких-либо ограничений. На чертежах на фиг. 1 приведена блок-схема генерирования подключей на основе основного ключа,фиг. 2 изображает нелинейный модуль на основе 128-битового входного ключа и 64-битового выходного сигнала,фиг. 3 изображает нелинейный модуль на основе 256-битового входного ключа и 64-битового выходного сигнала,на фиг. 4 приведена блок-схема основного модуля процесса шифровки,фиг. 5 изображает процесс шифровки с использованием двух модулей MOD и ортоморфической функции OR (ИЛИ),на фиг. 6 приведена блок-схема ортоморфической функции,фиг. 7 изображает внутреннюю часть основного модуля шифровки MOD. Осуществление изобретения На фиг. 1 изображена основная структура процесса генерирования ключей. Первый этап представляет собой регулировку LA длины ключа. В данном примере размер входного ключа AKEY меньше ожидаемого размера. Процесс РРr добавляет к ключу AKEY дополнительные данные так, чтобы размер ключа был равен номинальному. Дополнительные данные просто добавляются к концу ключа. Получившийся ключ PKEY имеет номинальный размер, равный, например, 128 или 256 битам. Второй процесс представляет собой процесс МРr перемешивания добавленных данных. Дополнительные данные должны быть перемешаны с данными ключа так, чтобы дополнительные данные не находились всегда на одной и той же позиции. Перемешивание производят при помощи рекурсии Фибоначчи, в качестве входных данных которой используют ключ PKEY длины ek (в битах). Точнее говоря,дополненный ключ PKEY рассматривается как массив размером ek/8 байтов PKEY1(8), где 0Iek/8-1, и перемешивается в соответствии с формулой: Следующий этап представляет собой этап диверсификации LD, сводящейся к операции DPr линейной диверсификации. Если входной ключ уже имеет требуемый размер, этот ключ прямо загружают в регистр MKEY. Цель операции Dpr диверсификации заключается в создании линейной диверсификации ключаMKEY путем смешивания ключа MKEY с инициализирующим вектором. Для каждого из сгенерированных подключей используют свой инициализирующий вектор. Получение такого инициализирующего вектора может осуществляться различными способами. Простейший способ заключается в хранении массива констант, каждая из которых имеет тот же размер, что и ключ, и действует как инициализирующий вектор. Количество инициализирующих векторов зависит от количества циклов, используемых в процессе шифрования, или от количества подключей,используемых в системе. Во втором варианте осуществления инициализирующие векторы генерируют в операции DPr, основанной на псевдослучайном потоке с использованием регистра сдвигов с логической обратной связью(LFSR). Исходную константу (в данном примере размером 24 бита) загружают в LFSR, а выходные дан-3 008677 ные регистра, т.е. инициализирующий вектор, смешивают с ключом MKEY, в результате чего получают ключ DKEY. Этот вариант осуществления выгоден тем, что количество хранимых данных минимизируется, т.к. инициализирующие векторы не хранятся, но генерируются при помощи LFSR; сохраняется или является частью алгоритма только исходная константа. В третьем варианте осуществления сам ключ загружают в LFSR, а выходные данные LFSR непосредственно направляют на вход следующего модуля, т.е. используют в качестве ключа DKEY. Следующий этап, так называемый этап нелинейной диверсификации NLD, осуществляется нелинейным модулем NLxPR. Этот этап подробно изображен на фиг. 2 и 3. Как видно из фиг. 2, ключ DKEY (соответствующий значению А 1) разделяют на четыре части и направляют в слой sigma подстановки, который содержит по меньшей мере один блок (sbox) подстановки,причем каждый из блоков подстановки содержит таблицу констант, для которой входные данные служат указателем, а определенная указателем константа используется в качестве выходного значения. Выходные данные А 2 представляют собой выходные данные модуля sigma. Один из методов генерирования таблицы констант заключается в использовании генератора псевдослучайных чисел. При генерировании таблицы следует удалять все повторяющиеся значения так, чтобы каждая из констант, содержащихся в таблице, была уникальна. В зависимости от конкретного применения количество блоков (sbox) подстановки может быть различным, т.к. в рассматриваемом варианте осуществления каждый из блоков подстановки имеет 8 битовый входной канал. Входные данные, поступающие в модуль sigma, разделяют на части длиной по 8 битов и направляют в модуль подстановки. Затем выходные данные каждого блока соединяют в единые выходные данные модуля sigma. На следующем этапе используют мультиперестановочную матрицу mu. Эта матрица представляет собой диффузионный блок мультиперестановочного типа размером (n, n). Входные данные каждого блока mu разделяют на n входных векторов. В данном примере используется матрица из 4 элементов. Диффузионный блок производит умножение четырех входных векторов (Аа, Ab, Ac, Ad) на квадратную матрицу Мu4 размером 44, элементы которой принадлежат к конечному полю из 256 элементов; эти элементы обозначены как Mu(i, j), где индексом i обозначен номер строки, а индексом j - номер столбца. В результате умножения входного вектора (Аа, Ab, Ac, Ad) на матрицу Мu4 получают вектор (Ya, Yb, Yc,Yd), элементы которого вычисляют по следующим формулам: Символ + обозначает здесь сложение в конечном поле, а символ- умножение в нем же. Элементы матрицы Мu4 подобраны так, чтобы количество вычислений, необходимых для получения четырех вышеуказанных значений, было минимальным. Поэтому количество умножений на константу 1(далее называемых тождествами) выбирается максимальным. Выходное значение A3 блока mu представляет собой объединение четырех выходных значений Ya,Yb, Yc, Yd. Следующий этап представляет собой этап смешивания. Оно заключается в разделении значения A3 на N блоков одинакового размера и получении выходного значения А 4, образованного N блоками. Каждый из блоков значения А 4 получают в результате комбинирования N-1 блоков значения A3, причем не участвующий в смешивании блок является блоком с тем же индексом. В примере, проиллюстрированном на фиг. 2, количество блоков равно 4. Три оставшихся блока смешивают для формирования части значения А 4. Следующий этап представляет собой этап сложения, на котором к значению прибавляют константу,что вводит в процесс непредсказуемый элемент. Полученное значение А 5 направляют на условное инвертирование, т.е. операция инвертирования применяется, если к входному ключу AKEY были добавлены дополнительные данные. В этом случае все биты значения А 5 инвертируют, в результате чего получают значение А 6. Инвертирование производят,если к входному ключу AKEY были добавлены дополнительные данные. Назначение этого этапа заключается в получении разного поведения в случае использования полноразмерного ключа и дополненного ключа. Теоретически полноразмерный ключ может иметь то же значение, что и ключ меньшего размера,к которому были добавлены дополнительные данные. В случае добавления дополнительных данных для увеличения входного ключа до требуемого размера инвертирование данных А 5 производится с целью введения в процесс генерирования дополнительной диверсификации. Затем полученное значение А 6 направляют в слой sigma подстановки, уже описанный выше. Размер выходного значения А 7 слоя подстановки уменьшают в два раза путем смешивания двух элементов.-4 008677 Уменьшенное значение А 8 затем направляют в симметричный шифрующий модуль SENC, в котором ключ получают из основных входных данных процесса (т.е. DKEY). Как уже было указано, этот модуль, по существу, представляет собой симметричный процесс шифрования. В рамках настоящего изобретения вместо использования таких хорошо известных процессов шифровки, как IDEA, DES и т.п.,процесс шифровки осуществляют с использованием процесса, описанного в патентном документе ЕР 03011696.6 того же заявителя. Этот документ включается в настоящее изобретение по ссылке. Минимальное количество циклов определяют таким образом, чтобы был использован весь ключ DKEY. Поскольку размер ключа превышает размер входных данных этапа шифрования, ключ разделяют на части и используют в различных циклах шифрования, соединенных последовательно. Процесс шифрования описан со ссылками на фиг. 4-7. На фиг. 4 изображена схема процесса шифрования, соответствующая модулю MOD. Входные данные, имеющие в данном примере размер в 64 бита и представленные двумя частями X0L и X0R, каждая из которых имеет размер в 32 бита, сначала смешивают при помощи смешивающего элемента MX и получают значение Х 1. Смешивающий элемент предназначен для получения 32-битового изображения двух 32-битовых наборов данных. Эта операция может быть выполнена различными способами, например, с использованием функции XOR (исключающего ИЛИ), сложения по модулю или любого группового правила. Следующий шаг проиллюстрирован блоком f32, который содержит 32-битные входные данные Х 1 и 32-битные выходные данные Х 7, а также использует подключ DK. Подробное описание данного блока приведено со ссылками на фиг. 7 (см. далее). Выходные данные Х 7 блока f32 поступают в два смешивающих блока MX, соединенных с двумя входами X0L и Х 0 Н. Итоговые данные X8L и X8R представляют собой два 64-битных набора Х 8 выходных данных модуля MOD. На фиг. 5 представлена схема всего процесса шифрования, в котором используются два идентичных модуля MOD, т.е. MOD1 и MOD2. Входные данные А 8 состоят из двух частей X0L1 и X0R1, каждая из которых имеет длину в 32 бита. Симметричный процесс шифрования обозначен на фиг. 2 как SENC. Этот модуль соответствует блок-схеме, приведенной на фиг. 5. Выходные данные X0L1 и X0R1 затем используют в качестве входных данных первого модуляMOD1. Этот первый модуль обрабатывает данные, используя первый подключ DK1. Подключ DK1 является частью основного ключа DKEY. Обработка данных X0L1 и X0R1 производится так же, как описано со ссылками на фиг. 4. На выходе первого модуля MOD1 получают два набора X8L1 и X8R1 выходных данных. Как показано на фиг. 5, к одному из этих наборов выходных данных, например X8L1, применяют ортоморфическую функцию. Выходные данные, полученные в результате действия этой ортоморфической функции, обозначены как X0L2. Второе значение X8R1, полученное в результате обработки данных первым модулем MOD1, так же как и выходные данные X0L2, полученные в результате действия ортоморфической функции, используют в качестве входных данных второго обрабатывающего модуляMOD2. Модуль MOR представляет собой комбинацию модуля MOD с ортоморфической функцией OR(ИЛИ), воздействующей на один из наборов выходных данных этого модуля. Второй модуль MOD2 обрабатывает входные данные с использованием второй части DK2 основного ключа DKEY. Выходные данные этого второго модуля обозначены на фиг. 4 как X8L2 и X8R2. Эти выходные данные собирают в подключ RKEY при помощи собирающего модуля AS. Действие собирающего модуля AS может быть осуществлено различными способами, например,путем выбора младших битов X8L2 и старших битов X8R2 или же нечетных битов X8L2 и четных битовX8R2. Также могут быть использованы другие способы сборки итоговых данных RKEY при условии, что все биты RKEY составлены из битов X8L2 и X8R2. На фиг. 7 подробно проиллюстрированы функции блока f32, изображенного на фиг. 4. На вход этого блока поступает 32-битный набор Х 1 данных. Данные разбивают на блоки длиной по 8 битов (Х 1 а,X1b, X1c, X1d) при помощи разделяющего модуля SPMU, также обозначенного на фиг. 7 как Х 1'. Этот блок выполняет функцию разделения входных данных Х 1 таким образом, чтобы все биты полученных значений Х 1 а, Х 1b, Х 1 с и X1d присутствовали в Х 1. Эти четыре значения смешивают с максимальным значением DKH ключа DK, которое может быть равно DK1 или DK2 в зависимости от того,какой модуль (MOR или MOD) используется в данном случае, в результате чего получают четыре значения Х 2 а, Х 2b, Х 2 с и X2d. Генерирование двух подключей DKL и DKH осуществляют при помощи разделяющего модуля SP. Каждое из значений X2a-X2d обрабатывают в слое подстановки, содержащем по меньшей мере один блок (sbox) подстановки, причем каждый из блоков подстановки содержит таблицу констант, для которой входящее значение служит указателем, а определенная указателем константа служит выходным значением. Выходные значения обозначены на фиг. 7 как Х 3 а, Х 3b, Х 3 с, X3d и составляют значение Х 3. Данный слой подстановки уже был описан со ссылками на фиг. 2 при описании модуля sigma. Итоговое значение обозначено как Х 3.-5 008677 То же справедливо для модуля Мu4, соответствующего изображенному на фиг. 2 модулю mu. Итоговое значение обозначено как Х 4. Затем выходные данные Х 4 смешивают со второй частью DKL подключа DK для получения значений Х 5 а, X5b, X5c, X5d, которые составляют значение Х 5. Каждое из значений X5a-X5d обрабатывают при помощи блока (sbox) подстановки и получают значения Х 6 а, X6b, X6c, X6d, которые составляют значение Х 6. Эти значения смешивают с первой частьюDKH подключа DK для получения новых значений Х 7 а, X7b, X7c, X7d, которые составляют значение Х 7. Затем из значений Х 7 а, X7b, X7c, X7d собирают выходной набор Х 7 данных при помощи собирающего модуля AS, описанного выше со ссылками на фиг. 5. Эти данные соответствуют выходным данным Х 7 блока f32, изображенного на фиг. 4. На фиг. 6 проиллюстрировано осуществление ортоморфической функции. Входные данные обозначены как ZI, а выходные данные - как ZO. Длина данных для данной функции не важна. Входные данныеZI сначала разделяют при помощи разделяющего модуля SP на два набора данных ZL и ZR одинакового размера. Затем два набора данных смешивают при помощи так называемого смешивающего элементаMX, а выходные данные этого элемента вводят в собирающий модуль AS. Второе из разделенных значений ZR прямо направляют в собирающий модуль AS без изменений. Этот модуль содержит два входных канала и собирает эти данные в выходные данные ZO. Этот модуль работает по принципу, обратному принципу работы разделяющего модуля SP. Особенность данного осуществления заключается в том, что входные каналы собирающего модуля расположены перекрестно относительно выходных каналов разделяющего модуля SP. Данные из правого выходного канала ZR разделяющего модуля SP направляют в левый входной канал собирающего модуля AS, а данные из левого выходного канала ZR разделяющего модуля SP после смешивания с другими выходными данными разделяющего модуля SP направляют в правый входной канал собирающего модуля AS. На фиг. 3 представлен другой вариант осуществления процесса получения подключа RKEY на основе основного ключа DKEY. При использовании модулей, способных обрабатывать только данные ограниченного размера, для обработки ключей большей длины необходимо разделять входной ключ DKEY на большее количество элементов и проводить их параллельную обработку. Принцип, описанный со ссылками на фиг. 2, остается неизменным за единственным исключением, связанным с формированием значения А 4. Для упрощения описания количество смешиваемых элементов значения Х 3 ограничено тремя. На этапе использования симметричного процесса SENC шифровки входной ключ DKEY разделяют на четыре части, которые направляют в три независимых модуля MOR64 шифрования, причем в каждом из этих модулей к половине итогового значения применяют ортоморфическую функцию. Последний модуль MOD64 представляет собой одноцикловый процесс шифрования без ортоморфической функции. При получении ключа RKEY из значения А 8 процесс шифрования проводят в четыре цикла, причем в каждом цикле используют одну из частей входного ключа DKEY. В первых трех циклах используют модули MOR (содержащие ортоморфические функции) во входных каналах модуля MOD, а последний цикл относится к типу MOD, т.е. не содержит ортоморфической функции. Одна из важных особенностей заключается в том, что подключи генерируют в обратном порядке. Эта особенность полезна в случае, когда подключи используются в процессе шифровки, включающем несколько циклов. Эта операция производится на этапе DPr линейной диверсификации. Набор инициализирующих векторов, применяемых для смешивания с ключом MKEY, используется в обратном порядке. При формировании инициализирующих векторов при помощи LFSR регистр проходится в обратном порядке (обратный процесс), причем исходное значение, загружаемое в регистр, является конечным значением,представляющим последний из инициализирующих векторов, используемых в прямом процессе. ФОРМУЛА ИЗОБРЕТЕНИЯ 1. Способ генерирования подключей на основе основного ключа (MKEY), включающий следующие этапы: получают первое значение (А 1) посредством применения к основному ключу (MKEY) слоя линейной диверсификации путем смешивания основного ключа (MKEY) с константой,применяют к первому значению (А 1) нелинейное преобразование, причем данное преобразование включает следующие этапы: получают второе значение (А 2) путем обработки первого значения (А 1) в слое подстановки, причем слой подстановки включает по меньшей мере один блок (sbox) подстановки, а каждый блок подстановки содержит по меньшей мере одну таблицу констант, причем входные данные используются в качестве указателя, а определенная указателем константа используется в качестве выходных данных,получают третье значение (A3) посредством диффузионного блока мультиперестановочного типа на основе второго значения (А 2),-6 008677 осуществляют разделение третьего значения (A3) на N блоков одинакового размера, получают четвертое выходное значение (А 4), образованное из N блоков, причем каждый из блоков четвертого значения (А 4) является результатом комбинирования N-1 блоков третьего значения (A3), а недостающий блок является блоком, имеющим тот же индекс,получают седьмое значение (А 7) путем применения к четвертому значению (А 4) слоя (sigma) подстановки,получают подключ (RKEY) путем обработки седьмого значения (А 7) при помощи симметричного модуля (SENC) шифрования, причем первое значение (А 1) используют в данном модуле в качестве входного ключа. 2. Способ по п.1, отличающийся тем, что введенный ключ (AKEY) имеет меньший размер, чем основной ключ (MKEY), причем способ предусматривает получение основного ключа (MKEY) на основе введенного ключа (AKEY) с использованием следующих этапов: добавляют дополнительные данные с целью дополнения введенного ключа (AKEY) до размера основного ключа (MKEY),смешивают дополнительные данные с введенным ключом (AKEY) таким образом, чтобы дополнительные биты были распределены по всему итоговому ключу (DKEY). 3. Способ по п.1 или 2, отличающийся тем, что константа, смешиваемая с основным ключом(MKEY) для получения первого значения (А 1), представляет собой псевдослучайное значение, сгенерированное при помощи регистра LFSR, в который была загружена первая константа. 4. Способ по любому из пп.1-3, отличающийся тем, что в случае, когда размер входных данных симметричного модуля (SENC) шифрования меньше, чем размер седьмого значения (А 7), способ включает этап разделения седьмого значения (А 7) на кратное двум количество частей и попарного смешивания получившихся частей до достижения размера входных данных симметричного модуля (SENC) шифровки. 5. Способ по любому из пп.1-4, отличающийся тем, что перед использованием слоя (sigma) подстановки к четвертому значению (А 4) прибавляют константу. 6. Способ по любому из пп.2-5, отличающийся тем, что все биты входного значения (А 6) слоя(sigma) подстановки подвергают инвертированию в случае, если к введенному ключу (AKEY) добавлены дополнительные данные.

МПК / Метки

МПК: H04L 9/06

Метки: псевдослучайной, способ, генерирования, последовательности

Код ссылки

<a href="https://eas.patents.su/11-8677-sposob-generirovaniya-psevdosluchajjnojj-posledovatelnosti.html" rel="bookmark" title="База патентов Евразийского Союза">Способ генерирования псевдослучайной последовательности</a>

Похожие патенты