ЭЛЕКТРОННОЕ УСТРОЙСТВО БЛОЧНОГО ШИФРОВАНИЯ, ПОДХОДЯЩЕЕ ДЛЯ ОБФУСКАЦИИ Российский патент 2018 года по МПК H04L9/06 

Описание патента на изобретение RU2666281C2

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ

Данное изобретение относится к электронному устройству блочного шифрования для шифрования или дешифрования блока цифровых данных сообщения, содержащему запоминающее устройство, хранящее многочисленные блоки подстановки в виде справочных таблиц, причем многочисленные блоки подстановки вместе образуют уровень подстановки блочного шифра, причем уровень подстановки выполнен с возможностью приема входных данных уровня подстановки и преобразования их в выходные данные уровня подстановки, и блок управления, выполненный с возможностью применения блочного шифра к блоку цифровых данных сообщения посредством применения последовательности раундов блочного шифрования к блоку данных сообщения, причем один из раундов блочного шифрования содержит уровень подстановки.

Данное изобретение дополнительно относится к способу электронного блочного шифрования и соответствующему программному обеспечению.

УРОВЕНЬ ТЕХНИКИ

Блочные шифры являются часто используемыми примитивами в криптографии. Блочный шифр является алгоритмом для шифрования или дешифрования блока цифровых данных сообщения под управлением криптографического ключа. Блочный шифр производит действия над блоками цифровых данных сообщения с некоторым размером блока, традиционно измеряемого в битах. Обычные размеры блоков включают в себя 64, 128, 192, и 256 битов. Эта операция является детерминированной биективной (и, таким образом, обратимой) операцией. Известные блочные шифры включают в себя DES и AES.

Например, система распределения контента может шифровать контент перед распределением для противодействия пиратству. Зашифрованный контент может быть распределен через менее защищенные каналы, например, интернет, тогда как ключ, используемый для шифрования, может быть распределен с использованием более защищенного средства, например, систему DRM. Однако, даже распределение ключа не является безопасным. Даже реализации DRM могут быть дизассемблированы для извлечения их секретов, например, их секретных ключей. По этой и другим причинам, существует потребность в защищенном примитиве шифрования/дешифрования, который может быть защищен от обратной разработки.

Одним способом защиты ключа, например, ключа, используемого в реализации DRM, называемого главным ключом, может быть использование реализации блочного шифра. Шифр типа «белый ящик» является программной реализацией блочного шифра, в которой секретный ключ является «конкретизируемым». Конкретизация ключа в некоторой реализации фиксирует ключ и внедряет этот ключ в реализацию посредством частичного вычисления в отношении этого ключа; причем ввод ключа становится ненужным. Вычисления, которые зависят от ключа, выполняются, насколько это возможно, без знания входных данных блока данных сообщения. Обычно, может быть вычислено разворачивание ключа, и раундовые ключи могут быть объединены с другими этапами. Обычно, раундовые ключи могут быть объединены с уровнем подстановки, т.е., посредством сложения раундового ключа с выходными данными блоков подстановки в уровне подстановки.

Далее реализацию обфусцируют (запутывают). Обычно, это выполняют посредством выражения конкретизируемого шифра в виде сети таблиц, и кодирования таблиц этой сети. Цель состоит в том, чтобы усилия по извлечению конкретизируемого ключа из шифра типа «белый ящик» были по меньшей мере такими же значительными, как атака по принципу «черного ящика» (например, по методу «грубой силы») на базовый шифр.

Одним идеальным решением может быть реализация шифра в виде одной большой справочной таблицы. Однако, это неприменимо для реальных блочных шифров. Стратегия «белого ящика», которая подходит для этого идеально, представлена в работе “A White-Box DES Implementation for DRM Applications” под авторством S. Chow, P. Eisen, H. Johnson, and P.C. van Oorschot, 2002, опубликованной в книге Digital Rights Management of the Lecture Notes in Computer Science 2003. Вычисления, в частности, блочные шифры, могут быть реализованы в виде сети справочных таблиц, рандомизированных таким образом, чтобы информация о ключах была распространена по всей сети. Каждый структурный блок может быть выполнен кажущимся независимым от ключа. Таким образом, злоумышленник вынужден анализировать всю сеть для получения информации о секретных ключах. Обфускация сети таблиц возможна посредством добавления в начале и добавления в конце обфусцирующих (запутывающих) преобразований к преобразованиям, записанным в таблицах. Таким образом, каждая отдельная таблица является рандомизированной, пока не будет аннулирована комбинация всех обфусцирующих преобразований. Другой пример приведен в работе “White-Box Cryptography and an AES Implementation” под авторством Chow, Eisen and van Oorschot.

В криптографии по принципу «белого ящика» блочный шифр реализуют в программном обеспечении таким образом, чтобы атакующему было трудно извлечь ключ, даже если он имеет полный доступ к реализации. Однако, авторы изобретения обнаружили, что конкретный вид блочного шифра, так называемые сети подстановки – линейного преобразования (Substitution-Linear Transformation Networks) имеют в этом отношении уязвимые места, которые делают трудновыполнимой защиту с использованием общепринятых технологий по принципу «белого ящика». Для ознакомления с подробностями смотри работу “Cryptanalysis of a Generic Class of White-Box Implementations” под авторством Wil Michiels, Paul Gorissen, and Henk D. L. Hollmann. Проблема относится к способу организации шифров типа SLT (подстановка – линейное преобразование (Substitution-Linear Transformation)), т.е., любая реализация по принципу «белого ящика» блочного шифра типа, описанного выше, с использованием технологий по принципу «белого ящика», например, используемых Chow и др., будет уязвимой.

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

Требуется обеспечение улучшенного блочного шифра.

Согласно формуле изобретения, обеспечено электронное устройство блочного шифрования, выполненное с возможностью шифрования или дешифрования блока цифровых данных сообщения. Устройство блочного шифрования содержит запоминающее устройство и блок управления.

Уровень подстановки не является полностью параллельным, поскольку по меньшей мере один блок подстановки выполнен с возможностью приема в качестве входных данных комбинации по меньшей мере части выходных данных более чем одного дополнительного блока подстановки в том же самом уровне подстановки. Это означает, что входное-выходное кодирование этого уровня, такое как кодирование, используемое в «белом ящике», не может быть устранено способом, описанным выше. В общем, считается нежелательным, чтобы часть блочного шифра могла быть проанализирована таким простым способом.

Блочный шифр также очень хорошо подходит для использования в системе, такой как система, описанная в заявке на патент США, номер заявки 61/740,726, поданной 21 декабря 2012, озаглавленной “Computing device configured with a table network” того же самого заявителя. Кроме того, автоматизированные программные системы обфускации обычно являются более эффективными при использовании с блочными шифрами программной реализации описанного типа, чем с обычными блочными шифрами.

В результате, создают большую нелинейную функцию из меньших нелинейных функций (S-блоков), способом, отличным от методики уровня линейного преобразования, описанной выше, который больше подходит для реализации в контексте атаки «белого ящика». Блок подстановки является справочной таблицей, выполненной с возможностью приема цифровых входных данных и преобразования их в цифровые выходные данные. Предпочтительно, S-блок является нелинейным.

Непараллельность также получают посредством обеспечения по меньшей мере одного блока подстановки, выполненного таким образом, чтобы первая часть цифровых выходных данных по меньшей мере одного блока подстановки использовалась в качестве части входных данных дополнительного блока подстановки в том же самом уровне подстановки, в качестве по меньшей мере одного блока подстановки, и таким образом, чтобы вторая часть цифровых выходных данных по меньшей мере одного блока подстановки использовалась в качестве части входных данных еще для дополнительного другого блока подстановки в том же самом уровне подстановки.

В одном варианте осуществления, уровень подстановки содержит многочисленные подуровни, причем первый подуровень из многочисленных подуровней выполнен с возможностью приема, в качестве входных данных, входных данных уровня подстановки, причем следующие подуровни выполнены с возможностью приема, в качестве входных данных, выходных данных предшествующего уровня подстановки, и причем один из следующих подуровней, являющийся последним подуровнем, выполнен с возможностью создания выходных данных уровня подстановки. Было обнаружено, что использование многочисленных подуровней является эффективным способом для обеспечения того, чтобы рассеивание происходило в пределах уровня подстановки.

Устройство блочного шифрования может содержаться и использоваться в мобильном электронном устройстве, таком как мобильный телефон. Устройство блочного шифрования может содержаться и использоваться в телевизионной приставке, компьютере, и т.п.

Один аспект данного изобретения касается способа электронного блочного шифрования для шифрования или дешифрования блока цифровых данных сообщения, согласно формуле изобретения. Способ согласно данному изобретению может быть реализован на компьютере в виде способа, реализуемого с использованием компьютера, или в специализированном аппаратном обеспечении, или в их комбинации. Исполняемый код для способа согласно данному изобретению может храниться в компьютерном программном продукте. Примеры компьютерных программных продуктов включают в себя устройства памяти, оптические запоминающие устройства, интегральные схемы, серверы, онлайновое программное обеспечение, и т.д. Предпочтительно, компьютерный программный продукт содержит некратковременное средство программного кода, хранящееся на машиночитаемом носителе, для выполнения способа согласно данному изобретению, когда упомянутый программный продукт выполняется на компьютере.

В предпочтительном варианте осуществления, компьютерная программа содержит средство компьютерного программного кода, выполненное с возможностью выполнения всех этапов способа согласно данному изобретению при выполнении компьютерной программы на компьютере. Предпочтительно, компьютерная программа реализована на машиночитаемом носителе.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

Эти и другие аспекты данного изобретения явствуют из вариантов осуществления, описанных ниже, и будут разъяснены со ссылкой на них. На чертежах:

Фиг. 1а является блок-схемой, иллюстрирующей блочный шифр,

Фиг. 1b является блок-схемой, иллюстрирующей раунд блочного шифра,

Фиг. 2-4 и 5а являются блок-схемами, иллюстрирующими уровни подстановки,

Фиг. 5b является блок-схемой, иллюстрирующей уровень подстановки, включающий в себя кодирование,

Фиг. 6 является блок-схемой, иллюстрирующей вычислительное устройство,

Следует отметить, что элементы, которые имеют одинаковые ссылочные позиции в разных фигурах, имеют одинаковые структурные признаки и одинаковые функции, или являются одинаковыми сигналами. Если функция и/или структура такого элемента объяснена, то нет необходимости ее повторного объяснения в подробном описании.

ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ

Хотя данное изобретение допускает варианты осуществления во многих разных формах, здесь на чертежах показан и будет подробно описан один или несколько конкретных вариантов осуществления, причем следует понимать, что данное раскрытие сущности изобретения должно рассматриваться в качестве иллюстрации принципов данного изобретения и не предназначено для ограничения данного изобретения конкретными показанными и описанными вариантами осуществления.

Фиг. 1а показывает схематичный вид блочного шифра. Блочный шифр содержит некоторое количество раундов; причем показаны раунды 112, 114 и 116 блочного шифрования. Количество раундов зависит от конструкции блочного шифра. Например, в некоторых случаях используют 8 или 12 или 16 раундов. Обычно, количество раундов составляет 8 или больше. Также, показан входной блок цифровых данных 110 сообщения. Входной блок данных сообщения обычно является двоичными данными и имеет фиксированный размер блока. Обычными размерами блоков являются 64, 128, 192 и 256, причем 128 является особенно удобным выбором. Блок данных сообщения, который принимают в качестве входных данных, может быть разделен на слова, например, байты, по 8 битов в каждом, или полубайты, по 4 бита в каждом, и т.д. По окончанию раундов создают выходной блок 120 данных сообщения с соответствующим размером блока.

Начиная с блока 110 данных сообщения, последовательно применяют раунды 112-116, причем каждый раунд создает промежуточный результат с соответствующим размером блока. В случае фиг. 1а, первый раунд 112 применяют для создания первого промежуточного результата, затем раунд 114 применяют к первому промежуточному результату для создания второго промежуточного результата, и т.д. Первый промежуточный блок данных зависит только от входных данных блочного шифра, а каждый следующий промежуточный блок данных зависит от предшествующего промежуточного блока данных; обычно раунды 114-116 зависят только от промежуточного результата, который они принимают в качестве входных данных, и, возможно, раундового ключа.

Часто все раунды блочного шифра используют одинаковый алгоритм, хотя в некоторых случаях первый и последний раунды несколько отличаются по различным практическим причинам. Раунды часто отличаются, поскольку они используют разный раундовый ключ. Раундовые ключи могут быть получены из криптографического ключа с использованием разворачивания ключа. Если блочный шифр реализуют обфусцирующим способом, то раундовые ключи могут быть фиксированными, и раунды могут быть частично вычисленными. Например, во многих блочных шифрах (например, AES) можно объединять сложение с раундовым ключом и уровень подстановки. Блочный шифр можно удобно реализовать в электронном устройстве блочного шифрования.

Раунд может содержать уровень подстановки и уровень линейного преобразования. В операции уровня подстановки, блоки подстановки (S-блоки) применяют к блоку данных. Уровень линейного преобразования применяет линейное преобразование ко всему блоку данных.

Для получения защищенных блочных шифров, необходимо реализовать перестановку EK (биективную функцию), которая является эквивалентной псевдослучайной функции; однако, функция шифрования должна быть также эффективно реализуемой. Нелинейные функции могут быть реализованы эффективно только для малых размеров слов; обычно они реализованы посредством справочных таблиц, и эти таблицы имеют размер, который увеличивается экспоненциально с увеличением размера блока. Линейные функции могут быть реализованы эффективно для больших размеров блоков, но не являются очень безопасными. Распространенные блочные шифры, такие как AES и 3DES объединяют две эти возможности: раунд блочного шифра содержит этап сложения с ключом и два уровня. Первый из этих уровней задают посредством набора блоков подстановки, называемых S-блоками. S-блок является нелинейной функцией малых слов, например, из k битов (обычно размер слова составляет байт или полубайт). Входные данные разделяют на k-битные слова, и каждое слово подают к S-блоку. В AES и DES уровень создает зависимость не между битами разных слов, а только между битами одного и того же слова. Второй уровень выполняет линейную функцию. Линейная функция оперирует полным n-битным блоком данных. Следовательно, этот уровень создает зависимость между битами разных слов. Такие блочные шифры называют сетями подстановки- линейного преобразования (Substitution-Linear Transformation Networks).

Фиг. 1b показывает возможную реализацию раунда блочного шифра SLT-шифра, например, для использования в качестве раунда блочного шифра на фиг. 1а.

Показаны входные данные 130 раунда. Входные данные раунда являются цифровыми, например, двоичными, данными с разрядностью, соответствующей размеру блока. Показанные входные данные приведены в виде некоторого количества входных слов 132-136 раунда. Каждое слово имеет размер блока подстановки, например, 4 или 8 битов. Раунд имеет уровень 140 подстановки. Уровень 140 подстановки содержит S-блоки 142-146. Каждый S-блок применяет функцию входного слова раунда к входному слову раунда. Эти функции обычно являются нелинейными. Например, они являются нелинейными относительно операции XOR (исключающее ИЛИ). Для каждого из слов во входном блоке 130 может быть использован разный S-блок. Может быть также использован один и тот же S-блок для всех слов. Следует отметить, что перед применением уровня 140 подстановки, может быть выполнено сложение с раундовым ключом, например, XOR (сложение по модулю два) раундового ключа, соответствующего размеру блока, с входными данными 130 раунда. Однако, предположим, что раундовый ключ включен в уровень 140 подстановки, с использованием частичного вычисления.

К объединенным результатам S-блоков 142-146 в уровне подстановки, например, объединенным посредством конкатенации результатов, применяют линейное преобразование 150, например, матричную операцию. Эта линейная операция может состоять из многочисленных линейных комбинаций, например, циклического сдвига слов, и т.д., как в AES. Результатом линейного преобразования 150 являются выходные данные 160 раунда, показанные здесь в виде многочисленных выходных слов 162-166 раунда.

Уровень 140 подстановки принимает в качестве входных данных входные данные 130 уровня подстановки, соответствующие, в этом случае, размеру блока, в этом случае, промежуточный результат, и преобразует их в выходные данные уровня подстановки посредством замены многочисленных слов другими словами. S-блоки могут быть справочными таблицами. Уровень 140 подстановки является полностью параллельным, причем каждый S-блок зависит строго только от одного входного слова раунда; причем каждый S-блок создает в качестве выходных данных одно выходное слово раунда. Выходные слова раунда не используются снова в этом уровне подстановки. Другими словами, уровень 140 подстановки не имеет блока подстановки, который выполнен с возможностью приема в качестве входных данных комбинации по меньшей мере части выходных данных более, чем одного дополнительного блока подстановки в том же самом уровне подстановки.

Обычно, устройство, реализующее блочный шифр фиг. 1а и 1b, содержит микропроцессор, который выполняет команды соответствующего программного обеспечения, хранящегося на этом устройстве; это программное обеспечение может быть, например, загружено и сохранено в соответствующей памяти, например, энергозависимой памяти, такой как RAM, или энергозависимой памяти, такой как флэш-память (не показано).

В математической системе обозначений, общую, в SLT-сети нелинейную функцию на основе n битов, образуют из m малых, предпочтительно, существенно нелинейных функций (S-блоков) S1, S2,…,Sm (142-146) посредством перемешивания n выходных битов из S1, S2,…,Sm посредством линейного преобразования 150.

Фиг. 1b показывает структуру типичной SLT-сети. Входные данные 130 раунда разделяют на m слов x1,x2,…,xm одинакового размера из k битов (следует отметить, что: n=mk), показанных в виде 132-136. Обычная длина слов составляет 4-8 битов (например, 6 битов для 3DES и 8 битов для AES). Входные данные подвергают операции XOR с раундовым ключом (не показано отдельно на фиг. 1b), и результат этой операции подают к m S-блокам S1, S2,…,Sm (142-146), т.е., слово 132 подают к S-блоку 142, слово 134 к S-блоку 136, т.е., каждое слово входных данных 130 подают к соответствующему S-блоку. Например, слово i подают к S-блоку Si. Можно объединять функции сложения с раундовым ключом ⊕Ki и Si в единственной функции из k на k битов. Обозначим эту функцию Ti. Далее, применяют линейное преобразование 150 к выходным данным S-блоков. Линейное преобразование может быть представлено в виде умножения на матрицу M. Результат дает выходные данные раунда. Выходные данные раунда могут быть использованы в качестве входных данных для следующего раунда, могут быть использованы в качестве выходных данных блочного шифра, или могут быть обработаны и затем использованы в качестве выходных данных блочного шифра. Например, конечное сложение с раундовым ключом или конечная перестановка могут быть применены в конечном раунде, который отличается от предшествующих раундов.

Авторы изобретения обнаружили, что, в общем, блочные SLT-шифры типа, показанного на фиг. 1а и 1b, имеют уязвимые места, связанные с получением обфусцированных реализаций для них, в частности, таких как реализации по принципу «белого ящика». Здесь показаны уровни подстановки, которые лучше подходят для обфусцированных реализаций.

Уровень подстановки преобразует входной блок данных в выходной блок данных посредством последовательных блоков подстановки. Некоторые блоки подстановки обеспечивают часть выходных данных уровня подстановки, например, некоторые биты выходного блока подстановки прямо используют в качестве части выходных данных уровня подстановки; эти блоки подстановки могут быть названы выходными блоками подстановки. Некоторые блоки подстановки в уровне принимают входные данные из входных данных уровня подстановки, и эти блоки подстановки могут быть названы входными блоками подстановки. Предпочтительно, каждую часть выходных данных уровня подстановки получают из выходных данных некоторого S-блока в этом уровне; предпочтительно, каждую часть входных данных уровня подстановки используют в качестве входных данных для некоторого S-блока в этом уровне.

Если уровень подстановки будет использоваться в SLT-сети, то уровень подстановки должен быть обратимым. Кроме того, размер входных и выходных данных такого уровня подстановки должен быть равен размеру блока. Однако, если уровень подстановки используют в другой структуре, например, для замены уровня подстановки в сетях Фейстеля, таких как DES, то этот уровень не должен быть обратимым, и размеры входных и выходных данных такого уровня подстановки не должны быть равны размеру блока. Фактически, можно даже допустить, чтобы размер входных данных уровня подстановки не был равен (обычно он больше) размеру выходных данных уровня подстановки.

Следует отметить, что уровни подстановки, описанные здесь, имеют преимущество, состоящее в том, что нелинейная часть кодирований не может быть изолирована от аффинной части входного/ выходного кодирования. Такое разделение является особенно проблематичным в SLT-шифрах, поскольку это прямо приводит к атакам на эти шифры. Однако, такой недостаток является нежелательным в любом блочном шифре, в частности, если они предназначены для реализации контекста модели атаки «белого ящика».

На фиг. 2-4, 5a и 5b показаны примеры уровней подстановки, которые не имеют этого недостатка. Эти уровни подстановки могут быть прямо использованы в SLT-шифре, показанном на фигурах 1a и 1b, посредством замены уровня 140 подстановки на уровень подстановки, показанный ниже. Далее, можно даже удалить линейное преобразование 150, в этом случае некоторые или все раунды содержат только уровень подстановки и, возможно, сложение с раундовым ключом. Это может быть выполнено, например, если уровень подстановки имеет полное рассеивание. Одним способом для установления этого является требование, чтобы каждый бит выходных данных уровня подстановки зависел от каждого бита входных данных уровня подстановки. Одним критерием для обеспечения этого является требование, чтобы для каждого местоположения бита x в выходных данных уровня подстановки и каждого входного местоположения бита y во входных данных уровня подстановки, существовало два входных значения уровня подстановки w1 и w2, которые отличаются по меньшей мере в местоположении бита y, и которые имеют свойство, состоящее в том, что выходные данные уровня подстановки для w1 и w2 отличаются по меньшей мере в местоположении бита x. В идеальном случае, это свойство должно обеспечиваться для каждого раундового ключа, но, в практических целях, может оказаться удовлетворительным, если это обеспечено для одного раундового ключа, например, выбранного случайным образом, или даже фиксированного, например, состоящего из одних нулей.

В более усовершенствованном применении, можно также потребовать, чтобы был удовлетворен лавинный критерий (изменение любого бита во входных данных, например, входных данных раунда, обеспечивает с вероятностью, равной ½, изменение любого бита в выходных данных, плюс или минус допуск по вероятности).

Смотри, например, работу “Avalanche and Bit Independence Properties for the Ensembles of Randomly Chosen n x n S-Boxes” под авторством Işıl Vergili and Melek Yücel; смотри, например, раздел 2.1 для определения лавинного критерия. Предполагается, что лавинный критерий является важным криптографическим свойством блочных шифров, которое обеспечивает то, что небольшое количество различий в битах во входном нешифрованном тексте ведет к лавине изменений, а именно, приводит к большому количеству различий в битах шифртекста. Более формально, функция удовлетворяет лавинному критерию, если всегда, когда один входной бит изменяется, в среднем, изменяется половина выходных битов. Точное удовлетворение этого определения лавинного критерия является нереальным, и допускается некоторый интервал погрешности. Лавинный критерий может быть использован на уровне блочного шифра, а также на уровне S-блока.

В общем, можно использовать уровень подстановки, как описано ниже, в виде большого S-блока, созданного из меньших S-блоков. Большие S-блоки могут быть затем использованы в сети подстановки -линейного преобразования (Substitution-Linear Transformation Network) подобно меньшим S-блокам, а также в сети Фейстеля, или, в общем, в качестве замены блока подстановки. Также, таким образом можно создать блочный шифр, для которого существуют более безопасные обфусцированные реализации. Таким образом, получена новая методика для создания нелинейной функции на основе n битов из малых S-блоков. Эта нелинейная функция больше подходит для обфусцированной реализации. На фиг. 2-4, 5a-5b не используется параллельное применение S-блоков, показанное на фиг. 1b, а используется сетевое применение S-блоков. А именно, вместо прямой подачи выходных данных всех S-блоков для линейного преобразования 150, части выходных данных части S-блоков используют в качестве входных данных других S-блоков.

На этих фигурах S-блоки показаны в виде блоков, стрелка в направлении S-блока показывает ввод в этот S-блок по меньшей мере 1 бита, стрелка из S-блока показывает вывод по меньшей мере одного бита.

Фиг. 2 показывает уровень 200 подстановки. Показаны входные данные 202 уровня подстановки и выходные данные 204 уровня подстановки. Уровень 200 подстановки имеет первый подуровень 210 и второй подуровень 220. Первый подуровень 210 содержит блоки 212-216 подстановки, а второй подуровень 220 содержит блоки 222-226 подстановки.

Каждый блок подстановки в первом подуровне 210 принимает все свои входные данные или часть их из входных данных 202 уровня подстановки. Первый блок 212 подстановки в первом подуровне 210 принимает входные данные только из входных данных 202 уровня подстановки, каждый следующий блок подстановки в первом подуровне 210 принимает входные данные как из предшествующего блока подстановки, так и из входных данных 202 уровня подстановки. Например, блок 212 подстановки принимает входные данные из входных данных 202 уровня подстановки, например, 8 битов. Блок 214 подстановки принимает входные данные из входных данных 202 уровня подстановки, например, 4 бита, и входные данные из выходных данных блока 212 подстановки, например, также 4 бита.

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

Каждый блок подстановки во втором уровне 220 принимает входные данные из соответствующего S-блока в первом уровне 210. Первый блок 226 подстановки принимает входные данные только из соответствующего S-блока 216 в первом уровне 210; каждый следующий блок подстановки принимает входные данные из соответствующего S-блока в первом уровне 210 и предшествующего S-блока во втором уровне 220.

Входные данные S-блоков в первом уровне 210 вместе составляют входные данные 202 уровня. Выходные данные второго уровня 220 вместе составляют выходные данные 204 уровня.

Следует отметить, что все блоки подстановки, за исключением S-блока 226, принимают в качестве входных данных комбинацию по меньшей мере части выходных данных более, чем одного дополнительного блока подстановки, в том же самом уровне подстановки, а именно, одного S-блока в первом подуровне 210, и предшествующего S-блока в том же самом подуровне. Этот признак блокирует класс упрощений кодирований «белого ящика», применяемых к S-блокам.

Следует отметить также, что выходные данные каждого S-блока во втором подуровне зависят от входных данных каждого S-блока в первом уровне. Этот признак делает очень вероятным, особенно с использованием больших S-блоков, что уровень подстановки также вызовет полное рассеивание (причем каждый выходной бит зависит от каждого входного бита). S-блоки предпочтительно выбирают в виде нелинейных функций. Например, можно взять S-блок AES или случайную нелинейную функцию; возможно, с раундовым ключом, добавленным в нее.

В качестве примера, можно взять в качестве размера блока степень 2, большую, или равную 32, например, 128, и использовать ее также для размера входных данных 202. Каждый S-блок может принимать меньшую степень 2 в качестве входных данных и выходных данных, например, 4 или 8 битов. Когда S-блок принимает входные данные более, чем от одного источника, или отправляет выходные данные более, чем к одному источнику, входные данные или выходные данные поровну разделяют между этими двумя источниками, например, на старшее и младшее полуслово (возможны и другие разбиения).

Фиг. 2 также показывает свойства длинных цепочек зависимых соединений. Например, имеются первый (212), второй (214), третий (224) и четвертый (222) блоки подстановки, имеющие свойство, состоящее в том, что четвертый блок подстановки принимает входные данные из выходных данных третьего блока подстановки, третий блок подстановки принимает входные данные из выходных данных второго блока подстановки, второй блок подстановки принимает входные данные из выходных данных первого блока подстановки. Это затрудняет прослеживание цепочки через S-блоки из-за нерегулярностей, например, в частности, для дифференциального или линейного криптоанализа.

Фиг. 3 показывает уровень 300 подстановки. Показаны входные данные 302 уровня подстановки и выходные данные 304 уровня подстановки. Уровень 300 подстановки имеет первый подуровень 310 и второй подуровень 320. Первый подуровень 310 содержит блоки 312-316 подстановки, а второй подуровень 320 содержит блоки 322-326 подстановки.

Каждый блок подстановки в первом подуровне 310 принимает все свои входные данные из входных данных 302 уровня подстановки. Каждый блок подстановки во втором подуровне 320 принимает все свои входные данные из выходных данных блоков подстановки в уровне 310 подстановки. Каждый блок подстановки во втором подуровне 320 принимает входные данные по меньшей мере из двух или более других блоков подстановки. Например, в первом и втором уровне может быть 8 S-блоков, причем каждый S-блок имеет 8 битов в выходных данных. Каждый S-блок во втором уровне принимает 1 бит из каждого S-блока в первом уровне, так что каждые выходные данные первого подуровня 310 используются только один раз.

Уровень подстановки фиг. 3 не имеет свойства длинной цепочки фиг. 2, однако, он имеет следующее свойство: уровень подстановки содержит первый (312), второй (314), третий (324) и четвертый (322) блоки подстановки, имеющие свойство, состоящее в том, что четвертый и третий блоки подстановки оба принимают входные данные из выходных данных первого и второго блока подстановки.

Фиг. 4 показывает вариант фиг. 2, в котором используются 3 подуровня. Показан уровень 400 подстановки, принимающий входные данные 402 уровня подстановки и создающий выходные данные 404 уровня подстановки. Уровень 400 подстановки содержит первый подуровень 410, имеющий блоки 412-416 подстановки, второй подуровень 420, имеющий блоки 422-426 подстановки, и третий подуровень 430, имеющий блоки 432-436 подстановки. Количество подуровней может быть увеличено более, чем до 3, или даже до, например, 32 (или больше), или 64. Такой уровень подстановки может быть использован без уровня 150 линейного рассеяния.

Следует отметить, что все уровни подстановки, показанные на фиг. 2, 3, и 4, являются обратимыми всегда, когда отдельные S-блоки являются обратимыми.

Фиг. 5а показывает версию фиг. 2, в которой раундовые ключи включены в S-блоки. В этом примере, раундовые слова имеют размер k=8. Количество используемых S-блоков составляет p. Сеть S-блоков состоит из левого (первого) уровня и правого (второго) уровня. В левом уровне, выходной байт S-блока Ti с i<p разделяют на два полубайта (также возможны другие варианты разделения байта на 2 слова). Один полубайт подают в качестве входных данных к S-блоку Tp+1 правого уровня, а другой подают к следующему S-блоку Si+1 в левом уровне.

Предпочтительно, на каждый выходной бит сети влияет каждый входной бит сети. Это свойство (свойство рассеивания) является причиной для ввода уровня линейного преобразования в SLT-шифр. Для реализации, или по меньшей мере аппроксимации, этого свойства, из каждого S-блока в левом уровне существует маршрут в сети к каждому S-блоку в правом уровне.

Предположим, что сеть S-блоков T1,T2,…,T2p описана в приведенном выше разделе. Если принять p=3, то можно построить нелинейную биективную функцию F на основе 16 битов. Для реализации этой функции, необходимо 6 справочных таблиц: по одной для каждого Ti. Эти справочные таблицы состоят из 28 строк, причем каждая строка содержит один байт. Следовательно, требуемый объем памяти составляет 1,536 байт. Для сравнения, для реализации произвольного 16-битного S-блока G посредством единственной справочной таблицы потребуется справочная таблица, состоящая из 216 строк, причем каждая строка состоит из 2 байтов. Это подразумевает, что требуемый объем памяти составит 131,072 байт. В более общем виде, требуемый объем памяти для F составляет 2p∙28, в то время как требуемый объем памяти для G составляет 24+4p. Следовательно, требуемый объем памяти для F растет линейно относительно p, а требуемый объем памяти для G растет экспоненциально относительно p.

Фиг. 5а принимает входные данные размера k(p+1)/2, предполагая, что все входные/выходные данные разделяют на две части размера k/2. Если желательно иметь степень двойки в качестве входных данных, то необходимо выбрать k и (p+1) в виде степеней двойки.

Уровень подстановки, полученный посредством конструкции фигуры 5а, может быть использован для конструирования блочного шифра на основе n битов из F различными способами. Ограничимся объяснением того, как может быть сконструирован единственный раунд блочного шифра. Полный блочный шифр легко получают посредством последовательности некоторого количества таких раундов. Выберем p таким образом, чтобы F стала функцией n битов, или выберем p таким образом, чтобы F стала функцией l бита, причем l нацело делит n, т.е. n=l⋅r для некоторого r. Сгенерируем r таких функций (обозначенных F1,F2,…,Fr). Может быть сконструирована SLT-сеть, показанная на фиг. 1а и 1b, в которой S-блок 142-146 задан посредством Fi и m=r. Полученный шифр лучше подходит для обфусцированной реализации в контексте модели атаки «белого ящика», чем стандартный SLT-шифр, и, в частности, для реализации «белого ящика».

Фиг. 5b. В обфусцированной реализации ключ скрывают от атакующего, который имеет полный доступ к реализации. Широко известная технология для выполнения этого состоит в следующем: сначала выражают функцию, которая подлежит обфускации, в виде сети таблиц, т.е., эту функцию вычисляют посредством сети таблиц, в которой каждая таблица либо принимает в качестве входных данных часть входных данных сети, например, входные данные блочного шифра, либо принимает выходные данные других таблиц, и создает в качестве выходных данных выходные данные блочного шифра и/или входные данные для других таблиц. Далее, эти таблицы обфусцируют посредством применения кодирования к этим таблицам. Посредством обеспечения того, что кодирование входных данных и выходных данных аннулировано, обеспечивают, что вся сеть вычисляет одну и ту же функцию, и эта точность распределена по всей сети. Поскольку сети подстановки уже являются сетью таблиц, эта технология хорошо подходит к сетям подстановки, описанным здесь.

Реализуются S-блоки Ti в сети фиг. 5а посредством справочных таблиц. Затем, эти справочные таблицы (которые содержат ключ) обфусцируются посредством кодирования их входных данных и выходных данных. Кодирование входных данных и выходных данных таблицы Ti с использованием биективных функций fi и gi, соответственно, соответствует замене таблицы Ti на gi°Ti°fi-1. Следовательно, в нее включается входное декодирование и выходное кодирование. Демонстрация того, что такое применение кодирований реализует обфускацию, следует из наблюдения того, что кодирование входных данных справочной таблицы изменяет порядок ее строк, и что кодирование выходных данных изменяет значение этих строк.

Кодирования применяют таким образом, чтобы не повлиять на функциональность всей реализации. Это обеспечивают посредством выбора входного кодирования таблицы таким образом, чтобы оно соответствовало кодированию, которому были подвергнуты его входные данные предшествующими таблицами в сети. Это показано на фиг. 5b.

Если применить подобную технологию обфускации к SLT-шифру, то тогда итоговая реализация не будет защищенной: известно несколько атак для извлечения ключа из таких обфусцированных реализаций. Все эти атаки используют уязвимые места, которые являются типичными для SLT-шифров, и которые отсутствуют в шифре, определенном посредством фиг. 5b.

Фиг. 6 показывает устройство 600 блочного шифрования, содержащее запоминающее устройство 610, компьютерный процессор 650, и устройство 660 ввода/вывода. Запоминающее устройство 610 хранит справочные таблицы (показаны справочные таблицы 621 и 622) и машинный код 655. Справочные таблицы соответствуют блокам подстановки, возможно, в кодированном виде, например, в виде «белого ящика». Устройство 660 ввода/вывода может быть сетевым устройством для приема и передачи сообщений по сети.

При функционировании, устройство 660 ввода/вывода может принять кодированное сообщение. Блок данных сообщения извлекают из принятого сообщения. Процессор 650 под управлением машинного кода 655 применяет блочный шифр к блоку данных сообщения. Например, процессор 650 может применить уровень подстановки, выраженный в справочных таблицах, к блоку данных сообщения. Например, запоминающее устройство 610 может хранить таблицу, указывающую на то, к каким данным какая таблица должна быть применена. После уровня подстановки, процессор 650 может применить линейное преобразование. Последнее может быть выражено в коде, а не в виде таблицы. Кроме того, преобразование может также храниться в виде сети таблиц. Последнее является предпочтительным в контексте модели атаки «белого ящика». Таким образом, процессор 650 применяет некоторое количество раундов, каждый с использованием уровня подстановки. Если ключ был включен в уровень подстановки, то тогда в этих раундах не нужно сложение с раундовым ключом. Когда блочное шифрование завершено, и все раунды выполнены, процессор 650 имеет доступ к дешифрованной версии принятого блока данных сообщения. Когда весь блок данных дешифрован, процессор 650 может обработать результат, например, отобразить его, если это был зашифрованный контент, и т.д.

Напротив, когда необходимо отправить зашифрованное сообщение, процессор 650 применяет блочный шифр к нешифрованному текстовому блоку для получения зашифрованного блока данных сообщения. В некоторых случаях, тот же самый блочный шифр может быть применен в обратном направлении для выполнения противоположной функции, в данном случае, шифрования. Однако, в контексте модели атаки «белого ящика» может быть предпочтительным наличие разных реализаций для шифрования и дешифрования.

Следует отметить, что нет необходимости для явного хранения в запоминающем устройстве 610 криптографического ключа. Напротив, этот ключ является внедренным в сам блочный шифр. Вследствие обфусцирующего кодирования и свойств уровня подстановки, этот ключ тяжело извлечь.

В способе электронного блочного шифрования для шифрования или дешифрования блока цифровых данных сообщения, существует этап хранения и этап применения. Этап хранения содержит хранение многочисленных блоков подстановки в виде справочных таблиц, причем многочисленные блоки подстановки вместе образуют уровень подстановки блочного шифра, причем уровень подстановки выполнен с возможностью приема входных данных уровня подстановки и преобразования их в выходные данные уровня подстановки, причем по меньшей мере один блок подстановки выполнен с возможностью приема в качестве входных данных комбинации по меньшей мере части выходных данных более, чем одного дополнительного блока подстановки, в том же самом уровне подстановки. На этапе применения, блочный шифр применяют к блоку цифровых данных сообщения посредством применения последовательного блока раундов шифрования к блоку данных сообщения, причем один из раундов блочного шифрования содержит уровень подстановки.

Возможны разные пути для выполнения этого способа, как будет очевидно специалистам в данной области техники. Способ, согласно данному изобретению, может быть выполнен с использованием программного обеспечения, которое содержит команды для обеспечения системе процессора возможности выполнения этого способа. Программное обеспечение может включать в себя только те этапы, которые выполняет конкретный подобъект этой системы. Программное обеспечение может храниться на подходящем носителе, таком как жесткий диск, гибкий диск, память, и т.д. Программное обеспечение может быть отправлено в виде сигнала по проводам, или беспроводным способом, или с использованием сети данных, например, интернета. Программное обеспечение может быть выполнено доступным для загрузки и/или для удаленного использования на сервере.

Следует понимать, что данное изобретение также распространяется на компьютерные программы, в частности, компьютерные программы на носителе или в носителе, приспособленные для осуществления данного изобретения на практике. Программа может быть в форме исходного кода, объектного кода, кода, промежуточного по отношению к исходному и объектному коду, например, в частично скомпилированной форме, или в любой другой форме, подходящей для использования в реализации способа согласно данному изобретению. Вариант осуществления, относящийся к компьютерному программному продукту, содержит исполняемые компьютером команды, соответствующие каждому из этапов обработки по меньшей мере одного из указанных способов. Эти команды могут подразделяться на подпрограммы и/или могут храниться в одном или нескольких файлах, которые могут быть связаны статически или динамически. Другой вариант осуществления, относящийся к компьютерному программному продукту, содержит исполняемые компьютером команды, соответствующие каждому из средств по меньшей мере одного из систем и/или продуктов, указанных выше.

Следует отметить, что вышеупомянутые варианты осуществления иллюстрируют, а не ограничивают данное изобретение, и что специалисты в данной области техники смогут разработать много альтернативных вариантов осуществления.

В формуле изобретения, любые ссылочные позиции, расположенные между скобками, не должны толковаться как ограничивающие пункт формулы изобретения. Использование глагола «содержать» и его спряжений не исключает наличия элементов или этапов, отличных от заявленных в пункте формулы изобретения. Единственное число, примененное к элементу, не исключает наличия множества таких элементов. Данное изобретение может быть реализовано посредством аппаратного обеспечения, содержащего несколько отдельных элементов, и посредством соответствующим образом запрограммированного компьютера. В пункте формулы изобретения на устройство, перечисляющем несколько средств, некоторые из этих средств могут быть осуществлены посредством одного и того же элемента аппаратного обеспечения. Тот факт, что некоторые меры перечислены во взаимно отличающихся зависимых пунктах формулы изобретения, не указывает на то, что комбинация этих мер не может быть использована для получения преимущества.

СПИСОК ССЫЛОЧНЫХ ПОЗИЦИЙ

100 блочный шифр

110 входной блок данных сообщения

112-116 раунды блочного шифрования

120 выходной блок данных сообщения

130 входные данные раунда

132-136 входные слова раунда

140 уровень подстановки

142-146 блоки подстановки

150 линейное преобразование

160 выходные данные раунда

162-166 выходные слова раунда

200 уровень подстановки

202 входные данные уровня подстановки

204 выходные данные уровня подстановки

210 первый подуровень

220 второй подуровень

212-226 блоки подстановки

300 уровень подстановки

302 входные данные уровня подстановки

304 выходные данные уровня подстановки

310 первый подуровень

320 второй подуровень

312-326 блоки подстановки

400 уровень подстановки

402 входные данные уровня подстановки

404 выходные данные уровня подстановки

410 первый подуровень

420 второй подуровень

430 третий подуровень

412-436 блоки подстановки

600 вычислительное устройство

610 запоминающее устройство

621, 622 справочные таблицы

650 компьютерный процессор

655 машинный код

660 устройство ввода/вывода

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

название год авторы номер документа
СПОСОБ БЛОЧНОГО ПРЕОБРАЗОВАНИЯ ЦИФРОВЫХ ДАННЫХ НА ОСНОВЕ РЕГИСТРА СДВИГА ДЛИНЫ ВОСЕМЬ С 32-БИТОВЫМИ ЯЧЕЙКАМИ И С ТРЕМЯ ОБРАТНЫМИ СВЯЗЯМИ 2022
  • Задорожный Дмитрий Игоревич
  • Коренева Алиса Михайловна
  • Фомичев Владимир Михайлович
RU2796629C1
УСТРОЙСТВО И СПОСОБ ВЫЧИСЛЕНИЯ БЛОЧНОГО ШИФРА 2018
  • Ритман, Рональд
  • Бодландер, Мартен, Петер
  • Де Хог, Себастиан, Якобус, Антониус
RU2696334C1
УСТРОЙСТВО ОБРАБОТКИ ШИФРОВАНИЯ, СПОСОБ ОБРАБОТКИ ШИФРОВАНИЯ И КОМПЬЮТЕРНАЯ ПРОГРАММА 2007
  • Сираи Таизо
  • Сибутани Кёдзи
  • Акисито Тору
  • Мориаи Сихо
RU2449482C2
СПОСОБ КРИПТОГРАФИЧЕСКОГО ПРЕОБРАЗОВАНИЯ И УСТРОЙСТВО ДЛЯ ЕГО ОСУЩЕСТВЛЕНИЯ 2018
  • Стахов Сергей Валентинович
  • Плясов Александр Александрович
  • Андреев Алексей Евгеньевич
RU2738321C1
УСТРОЙСТВО ОБРАБОТКИ ШИФРОВАНИЯ/ДЕШИФРОВАНИЯ, СПОСОБ ОБРАБОТКИ ШИФРОВАНИЯ/ДЕШИФРОВАНИЯ, УСТРОЙСТВО ОБРАБОТКИ ИНФОРМАЦИИ И КОМПЬЮТЕРНАЯ ПРОГРАММА 2007
  • Сираи Таизо
  • Сибутани Кёдзи
  • Акисито Тору
  • Мориаи Сихо
RU2502201C2
УСТРОЙСТВО ОБРАБОТКИ ДАННЫХ, СПОСОБ ОБРАБОТКИ ДАННЫХ И ПРОГРАММА 2012
  • Сибутани Кедзи
  • Акисита Тору
  • Исобэ Таканори
  • Сираи Таидзо
  • Хиватари Харунага
  • Мицуда Ацуси
RU2603550C2
СПОСОБ ИТЕРАТИВНОГО ШИФРОВАНИЯ БЛОКОВ ДВОИЧНЫХ ДАННЫХ 1999
  • Гуц Н.Д.
  • Левченко В.И.
  • Молдовян А.А.
  • Молдовян Н.А.
RU2144268C1
СПОСОБ КРИПТОГРАФИЧЕСКОГО ПРЕОБРАЗОВАНИЯ БЛОКОВ ЦИФРОВЫХ ДАННЫХ 2007
  • Амербаев Вильжан Мавлютинович
  • Романец Юрий Васильевич
  • Шарамок Александр Владимирович
RU2359415C2
СПОСОБ БЛОЧНОГО ИТЕРАТИВНОГО ШИФРОВАНИЯ ЦИФРОВЫХ ДАННЫХ 2000
  • Алексеев Л.Е.
  • Изотов Б.В.
  • Молдовян А.А.
  • Молдовян Н.А.
RU2184423C2
КРИПТОГРАФИЧЕСКОЕ УСТРОЙСТВО И КОДИРУЮЩЕЕ УСТРОЙСТВО 2016
  • Ритман Рональд
  • Де Хог Себастиан Якобус Антониус
  • Гориссен Паулус Матхиас Хюбертус Мехтилдис Антониус
  • Маллон Виллем
  • Толхэйзен Людовикус Маринус Герардус Мария
  • Холманн Хендрик Дирк Лодевейк
RU2692419C1

Иллюстрации к изобретению RU 2 666 281 C2

Реферат патента 2018 года ЭЛЕКТРОННОЕ УСТРОЙСТВО БЛОЧНОГО ШИФРОВАНИЯ, ПОДХОДЯЩЕЕ ДЛЯ ОБФУСКАЦИИ

Изобретение относится к шифрованию цифровых данных. Технический результат заключается в повышении защищенности данных. Устройство содержит запоминающее устройство, хранящее многочисленные блоки подстановки в виде справочных таблиц, причем многочисленные блоки подстановки вместе образуют уровень подстановки блочного шифра, причем уровень подстановки выполнен с возможностью приема входных данных уровня подстановки и преобразования их в выходные данные уровня подстановки, причем по меньшей мере один блок подстановки выполнен с возможностью приема в качестве входных данных комбинации по меньшей мере части выходных данных более чем одного дополнительного блока подстановки в том же самом уровне подстановки, блок управления, выполненный с возможностью применения блочного шифра к блоку цифровых данных сообщения посредством применения последовательности раундов блочного шифрования к блоку данных сообщения, причем один из раундов блочного шифрования содержит уровень подстановки. 3 н. и 9 з.п. ф-лы. 8 ил.

Формула изобретения RU 2 666 281 C2

1. Электронное устройство блочного шифрования с использованием реализации белого ящика блочного шифра, причем блочный шифр имеет раунды, причем раунд содержит уровень подстановки и уровень линейного преобразования,

- причем уровень подстановки образован посредством множественных нелинейных блоков подстановки, причем уровень подстановки выполнен с возможностью приема входных данных уровня подстановки и преобразования их в выходные данные уровня подстановки, причем по меньшей мере один блок (222; 332) подстановки из множественных блоков подстановки выполнен с возможностью приема в качестве входных данных комбинации по меньшей мере части выходных данных более чем одного дополнительного блока (212, 224; 312, 314, 316) подстановки из множественных блоков подстановки в том же самом уровне подстановки,

причем электронное устройство блочного шифрования содержит:

- запоминающее устройство, хранящее множественные нелинейные блоки подстановки в виде справочных таблиц, реализующих упомянутый блочный шифр белого ящика, причем блоки подстановки в уровне подстановки обфусцированы посредством кодирования их входных данных и выходных данных,

- блок управления, выполненный с возможностью применения реализации белого ящика блочного шифра к блоку цифровых данных сообщения посредством применения последовательности раундов блочного шифрования к упомянутому блоку сообщения, причем один из раундов блочного шифрования содержит уровень подстановки.

2. Электронное устройство блочного шифрования по п. 1, в котором по меньшей мере один блок (212; 312) подстановки из множественных блоков подстановки выполнен таким образом, чтобы первая часть цифровых выходных данных по меньшей мере одного блока (212; 312) подстановки использовалась в качестве части входных данных дополнительного блока (222; 322) подстановки в том же самом уровне подстановки, в качестве по меньшей мере одного блока (212; 312) подстановки и, таким образом, чтобы вторая часть цифровых выходных данных по меньшей мере одного блока (212; 312) подстановки использовалась в качестве части входных данных еще для дополнительного другого блока (214; 324, 326) подстановки в том же самом уровне подстановки.

3. Электронное устройство блочного шифрования по п. 1, в котором уровень подстановки содержит множественные подуровни (210, 220; 310, 320; 410, 420, 430), причем первый подуровень (210; 310; 410) из множественных подуровней выполнен с возможностью приема, в качестве входных данных, входных данных уровня подстановки, причем следующие подуровни (220; 320; 420, 430) выполнены с возможностью приема, в качестве входных данных, выходных данных предшествующего уровня подстановки и причем один из следующих подуровней, являющийся последним подуровнем, выполнен с возможностью создания выходных данных (220; 320; 430) уровня подстановки.

4. Электронное устройство блочного шифрования по п. 3, в котором первый блок (212) подстановки в первом подуровне принимает входные данные только из входных данных уровня подстановки, а второй блок (214) подстановки в первом подуровне принимает входные данные как из входных данных уровня подстановки, так и из выходных данных первого блока (212) подстановки.

5. Электронное устройство блочного шифрования по п. 1, в котором уровень подстановки содержит первый (212), второй (214), третий (224) и четвертый (222) блоки подстановки, имеющие свойство, состоящее в том, что четвертый блок подстановки принимает входные данные из выходных данных третьего блока подстановки, третий блок подстановки принимает входные данные из выходных данных второго блока подстановки, второй блок подстановки принимает входные данные из выходных данных первого блока подстановки.

6. Электронное устройство блочного шифрования по п. 1, в котором уровень подстановки содержит первый (312), второй (314), третий (324) и четвертый (322) блоки подстановки, имеющие свойство, состоящее в том, что и четвертый, и третий блоки подстановки принимают входные данные из выходных данных первого и второго блока подстановки.

7. Электронное устройство блочного шифрования по любому из пп. 5 и 6, в котором

- первый и второй блоки подстановки принимают часть своих соответствующих входных данных из входных данных уровня подстановки, и/или

- третий и четвертый блоки подстановки создают в качестве части своих соответствующих выходных данных часть выходных данных уровня подстановки.

8. Электронное устройство блочного шифрования по п. 1, выполненное с возможностью создания, начиная с упомянутого блока сообщения, последовательности промежуточных блоков данных того же размера, что и упомянутый блок сообщения, и причем каждый следующий промежуточный блок данных зависит от промежуточного предшествующего блока данных.

9. Электронное устройство блочного шифрования по п. 8, в котором уровень подстановки принимает в качестве входных данных уровня подстановки промежуточный блок данных и создает в качестве выходных данных следующий промежуточный блок данных.

10. Электронное устройство блочного шифрования по п. 1, в котором последовательность раундов блочного шифра преобразует упомянутый блок сообщения согласно криптографическому раундовому ключу, причем раундовый ключ включен в уровень подстановки раунда блочного шифра.

11. Способ электронного блочного шифрования с использованием реализации белого ящика блочного шифра, причем блочный шифр имеет раунды, причем раунд содержит уровень подстановки и уровень линейного преобразования,

- причем уровень подстановки образован посредством множественных нелинейных блоков подстановки, причем уровень подстановки выполнен с возможностью приема входных данных уровня подстановки и преобразования их в выходные данные уровня подстановки, причем по меньшей мере один блок (222; 332) подстановки из множественных блоков подстановки выполнен с возможностью приема в качестве входных данных комбинации по меньшей мере части выходных данных более чем одного дополнительного блока (212, 224; 312, 314, 316) подстановки из множественных блоков подстановки, в том же самом уровне подстановки,

причем способ электронного блочного шифрования содержит:

- хранение множественных нелинейных блоков подстановки в виде справочных таблиц, реализующих упомянутый блочный шифр белого ящика, причем блоки подстановки в уровне подстановки обфусцированы посредством кодирования их входных данных и выходных данных,

- применение реализации белого ящика блочного шифра к блоку цифровых данных сообщения посредством применения последовательности раундов блочного шифрования к упомянутому блоку сообщения, причем один из раундов блочного шифрования содержит уровень подстановки.

12. Машиночитаемый носитель, содержащий сохраненную на нем компьютерную программу, содержащую средство компьютерного программного кода, выполненное с возможностью заставлять компьютер выполнять все этапы п. 11 при выполнении этой компьютерной программы на компьютере.

Документы, цитированные в отчете о поиске Патент 2018 года RU2666281C2

Изложница с суживающимся книзу сечением и с вертикально перемещающимся днищем 1924
  • Волынский С.В.
SU2012A1
Изложница с суживающимся книзу сечением и с вертикально перемещающимся днищем 1924
  • Волынский С.В.
SU2012A1
Приспособление для суммирования отрезков прямых линий 1923
  • Иванцов Г.П.
SU2010A1
СПОСОБ ЗАЩИТЫ ПРОГРАММНО-ИНФОРМАЦИОННОГО ОБЕСПЕЧЕНИЯ ОТ НЕСАНКЦИОНИРОВАННОГО ИСПОЛЬЗОВАНИЯ 2011
  • Краснопевцев Антон Андреевич
RU2467389C1

RU 2 666 281 C2

Авторы

Михилс Вильхельмус Петрус Андрианус Йоханнус

Гориссен Паулус Матхиас Хюбертус Мехтилдис Антониус

Даты

2018-09-06Публикация

2014-04-17Подача