Вычислительное устройство, конфигурируемое с помощью табличной сети

Изобретение относится к вычислительному устройству. Технический результат заключается в обеспечении защиты от атак компьютерных систем по сторонним каналам. Вычислительное устройство выполнено с возможностью вычисления функции (f) данных на входном значении (w) функции, причем вычислительное устройство содержит электронное хранилище, хранящее первую табличную сеть, сконфигурированную для функции (f) данных, а также содержит электронный процессор, подключенный к хранилищу и выполненный с возможностью получения множественных входов первой таблицы для первой табличной сети. При этом электронное хранилище дополнительно хранит вторую табличную сеть, выполненную с возможностью взаимодействия с первой табличной сетью для противодействия модификациям, вносимым в первую табличную сеть, причем электронный процессор выполнен с возможностью получения множественных входов второй таблицы для второй табличной сети. 3 н. и 7 з.п. ф-лы, 10 ил.

Реферат

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

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

УРОВЕНЬ ТЕХНИКИ ИЗОБРЕТЕНИЯ

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

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

Уже давно известно, что компьютерные системы допускают утечку некоторой информации через так называемые сторонние каналы. Наблюдение поведения компьютерной системы по входу-выходу не может предоставить никакой полезной информации о конфиденциальной информации, например, используемых компьютерной системой секретных ключах. Но компьютерная система имеет другие каналы, которые можно наблюдать, например, ее энергопотребление или электромагнитное излучение; эти каналы именуются сторонними каналами. Например, можно измерить небольшие изменения в энергии, потребляемой разными инструкциями, и изменения в энергии, потребляемой при исполнении инструкций. Измеренное изменение можно соотнести с конфиденциальной информацией, например криптографическими ключами. Эта дополнительная информация о секретной информации, помимо наблюдаемого и запланированного поведения по входу-выходу, называется сторонним каналом. Через сторонний канал компьютерная система в ходе использования может "допустить утечку" секретной информации. Наблюдение и анализ стороннего канала могут предоставить нарушителю доступ к лучшей информации, чем можно получить только из криптоанализа поведения по входу-выходу. Одним известным типом атаки по сторонним каналам является так называемый разностный анализ мощности (DPA).

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

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

Доказано, что защита от этого сценария атаки очень сложна. Одним типом контрмеры является так называемая криптография на основе белого ящика. В криптографии на основе белого ящика объединяются ключ и алгоритм. Результирующий алгоритм работает только для одного конкретного ключа. Затем алгоритм можно реализовать в виде так называемой табличной сети поиска. Вычисления преобразуются в последовательность поисков в зависящих от ключа таблицах. Пример этого подхода см., например, в "White-Box Cryptography and an AES Implementation" за авторством S. Chow, P. Eisen, H. Johnson, P.C. van Oorschot.

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

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

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

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

Рассмотрим W={0, 1, …, N-1}, кодирование E, и его соответствующее декодирование D=E-1. Пусть F и G обозначают закодированное сложение по модулю N и закодированное умножение по модулю N, соответственно. Таким образом, по определению F: W×W→W как F(x,y)=E(D(x)⊕ND(y)), где ⊕N обозначает сложение по модулю N, и G: W×W→W как G(x,y)=E(D(x)*N D(y)), где *N обозначает умножение по модулю N.

Для каждого фиксированного x имеем {F(x,y)|y∈W}=W. Также, для каждого ненулевого x∈W и простого числа N, имеем {G(x,y)|y∈W}=W, и {G(0,y)|y∈W}=E(0). Для N, не являющегося простым числом, возникают аналогичные картины.

В результате, независимо от кодирования E, можно определить, что F не может быть закодированным умножением по модулю N, и что G не может быть закодированным сложением по модулю N. Нарушитель может делать это по меньшей мере двумя способами. Он может фиксировать два разных элемента x1 и x2 в W и для H∈{F,G}, сравнивать H(x1,y) и H(x2,y) для всех y. Если эти величины отличаются для всех y, то H не может представлять умножение по модулю N; если эти величины согласуются для некоторого y, то H не может представлять сложение по модулю N. Нарушитель, который не может выбрать, какие записи таблицы считывать, но может наблюдать результаты обращений выполняющейся программы, реализованной программными средствами, к таблице, может использовать тот факт, что каждый элемент W возникает также часто в качестве выхода, как с G, элемент E(0) возникает в качестве выхода гораздо чаще. Поэтому, если элемент W возникает гораздо чаще, чем другие элементы W в качестве выхода H, то H с гораздо большей вероятностью будет подверженным обфускации умножением по модулю N, чем подверженным обфускации сложением по модулю N.

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

Было установлено, что эта проблема решается путем введения табличных сетей, которые действуют одновременно на множественных входных значениях. Табличная сеть может применять разные функции к разным входам или группам входов. Использование кодирования, которое шифрует в единое значение два или более из множественных входов совместно в единое значение, не позволяет нарушителю определять, для какой функции предназначена табличная сеть, поскольку, в действительности, она осуществляет две функции. См. предварительную заявку США № US 61/740,691, озаглавленную "Computing device comprising a table network", поданную 21 декабря 2012 г., и/или европейскую патентную заявку под тем же названием "Computing device comprising a table network", с датой подачи 27 декабря 2012 г. и номером дела EP12199387.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Совместное кодирование некоторых или всех из множественных входов и/или некоторых или всех из множественных выходов значительно затрудняет реверсивное проектирование устройства. Нарушитель не знает непосредственно, что представляет значение, или чем в действительности является значение.

Кодирование (часто обозначаемое ‘E’) является, по меньшей мере, частично обратимым, то есть, для некоторых кодированных пар входного значения функции и входного значения состояния, входное значение функции и/или входное значение состояния можно восстановить; аналогично, для закодированной пары выходного значения функции и выходного значения состояния. В практической реализации операции кодирования обычно выбираются как полностью обратимые, хотя, как упомянуто выше, это не является строго необходимым. Таким образом, для полностью обратимого кодирования можно восстановить как входное значение функции, так и входное значение состояния для любой закодированной пары входного значения функции и входного значения состояния. Аналогично, из закодированной пары выходного значения функции и выходного значения состояния можно восстановить выходное значение функции и выходное значение состояния.

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

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

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

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

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

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

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

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

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

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

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

Вход и выход функции могут иметь 4, 5, 6, 7 или 8 битов, возможно, еще больше, например 16 битов, входные и выходные значения состояния одного размера, или, возможно, меньше, например 2 или 3 бита. Практически, значения функции и состояния, выбираются каждые 4 бита, и закодированные значения, содержащие значение функции и состояния, как 8 битов.

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

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

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

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

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

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

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

Фиг. 2 - блок-схема, иллюстрирующая вычислительные устройства 202 и 204, конфигурируемые с помощью табличной сети,

Фиг. 3 - блок-схема, иллюстрирующая табличную сеть,

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

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

Фиг. 6 - блок-схема алгоритма, иллюстрирующая компилятор,

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

Фиг. 8a и 8b - блок-схемы, иллюстрирующие табличную сеть,

Фиг. 9 - схема, иллюстрирующая процесс выполнения программы.

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

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

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

Фиг. 4 иллюстрирует обобщенное понятие табличной сети, показанной в виде табличной сети 400. Большинство функций может быть выражено в виде сети таблиц. В частности, так можно выразить любую композицию арифметических и логических операций. Например, сеть таблиц может быть некоторой реализацией, например, шифра. Показано 8 таблиц из множественных таблиц. Таблица преобразует входное значение в выходное значение путем поиска входного значения по таблице. Показаны три входные таблицы 410 для приема входных данных извне по отношению к реализации функции. Показана одна из выходных таблиц 430. Выходные таблицы 430 совместно образуют выход реализации функции, например путем конкатенации. Показаны четыре таблицы из промежуточных таблиц 420, 422, 424, 426, которые принимают по меньшей мере один вход от другой из таблиц, и которые создают результат для использования в качестве входа по меньшей мере для одной другой таблицы; например, на схеме промежуточные таблицы 422 и 410 предоставляют вход для таблицы 426. Таблицы совместно образуют сеть. Шифр может быть блочным шифром; блочный шифр может конфигурироваться для шифрования или для дешифрования. Блочный шифр шифрует некий блок, например AES. Реализация может быть предназначена для конкретного ключа, и в этом случае таблицы могут зависеть от конкретного ключа.

Поисковая таблица 426 представляет собой оператор, имеющий два входа и один выход. Построение поисковых таблиц для одноместных операторов можно распространить на двухместные операторы. Например, второй вход может быть "каррированным"; согласно методу преобразования функций, каррирование является методом преобразования функции, который принимает n множественных аргументов (или кортеж из n аргументов) таким образом, что это можно назвать цепочкой функций, причем каждая - с единичным аргументом. Когда используется этот подход, поисковая таблица 426 реализуется в виде множественных одноместных поисковых таблиц. С другой стороны, также можно сформировать битовые строки для каждого входа и объединить результаты. Таким образом, непосредственно генерируется поисковая таблица, и получается одна единственная, но более крупная поисковая таблица. Хотя компоновка поисковых таблиц может отличаться на основе этого построения, они имеют равный размер и одинаковые свойства. Заметим, что не требуется, чтобы множественные входные значения кодировались в соответствии с одинаковым кодированием.

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