ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Изобретение относится к скрытию подробностей исполнения программы. В частности, изобретение относится к скрытию условной операции. В частности, изобретение относится к скрытию программного потока и потоков данных в программе, содержащей условное вычисление.
УРОВЕНЬ ТЕХНИКИ
Вычисление с зашифрованными значениями, не использующее операторы, которые раскрывают их функциональные возможности, может быть реализовано посредством табличного подхода. Программный код, т. е. его операция, может быть скрыт посредством использования таблиц соответствия. Применение этих таблиц к зашифрованным данным дает зашифрованный результат, итог скрытой операции. Однако распознавание операторов, таких как сравнения (<, =,...), является довольно простым, поскольку эти инструкции ограничены по количеству, обычно приводят к результату в виде изменения в потоке управления, и их итог имеет зашифрованный логический тип. Если это зашифрованное логическое значение защищает условную операцию, например в случае конструкции если-то или если-то-иначе, злоумышленник может распознать из потока управления аспекты операции. Кроме того, злоумышленник может создавать упорядочивание над зашифрованными значениями, которые сравнивались. В конечном итоге это может приводить к взлому шифрования.
В программном продукте часто необходимо выполнить сравнение. Например, проверить, было ли достигнуто некоторое пороговое значение или равен ли некоторый ввод предварительно определенному значению. В усложненных программах такие сравнения могут помочь злоумышленнику взломать кодирование.
В документе US 7,809,135 B2 раскрываются способы и системы, относящиеся к увеличению криптографической безопасности ключей, используемых программными средствами с криптографическими функциями. Это выполняется путем увеличения математической сложности программных средств. Компоненты и функции, используемые программными средствами, сначала определяются, и с использованием этих компонентов, функций и данных, обмен которыми осуществляется между ними, программные средства становятся более устойчивыми к анализу. Способы, используемые в увеличении аналитической устойчивости, сгруппированы в 3 общих типа: регулирование информации, обмен которой осуществляется между компонентами, замена некоторых компонентов другими, но родственными компонентами и регулирование потока данных между компонентами.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
Преимущества были бы обеспечены наличием улучшенного способа и системы для предотвращения утечки информации из программы в течение исполнения программы.
Чтобы решить эту проблему, в первом аспекте обеспечивается система для скрытия изменения во множестве переменных программы. Система содержит:
средство представления значения для представления значения переменной из переменных , причем является элементом множества W, посредством представления , причем и является элементом множества представлений , причем является переменной состояния, которая является элементом множества и которая обеспечивает избыточность представлению для , и является взаимно-однозначным криптографическим отображением из в предварительно определенное множество; и
средство представления действия для представления действия над значениями подмножества V' из V посредством действия над V' и действия над V\V', причем
действие над V' изменяет представление каждой переменной во множестве переменных V' согласно измененному значению переменной так, что , причем является взаимно-однозначным криптографическим отображением из в предварительно определенное множество, и
причем действие над V\V' изменяет представление каждой переменной в V\V' согласно измененному значению для так, что .
Благодаря этой системе, злоумышленнику становится сложно обнаружить, какие из переменных были в действительности изменены в программе, поскольку представления переменных, которые не были изменены, также изменяются путем изменения переменной состояния .
Например, действие содержит условный оператор, который определяет действие над множеством переменных V1, если условие выполняется, и действие над множеством переменных V2, если условие не выполняется, причем множество переменных V является объединением V1 и V2, то есть , и средство представления действия сконфигурировано, чтобы использовать множество переменных V1 или множество переменных V2 в качестве множества переменных V' согласно тому, выполняется ли условие. Это помогает избежать утечки информации об условной конструкции и о том, которая ветвь условного сегмента кода была выбрана. Средство представления действия может использовать выбранное множество V' при представлении действия над подмножеством V' посредством действия над V' и действия над V\V', как описано выше.
Множество переменных V1 и множество переменных V2 могут иметь пересечение V3 из переменных, которые подвергаются обоим из действий, то есть , причем действие изменяет каждую переменную множества V3 согласно функции f, если условие выполняется, и согласно функции g, если условие не выполняется, причем средство представления действия сконфигурировано, чтобы определять представление каждой переменной множества V3 так, что на основе того, выполняется ли условие согласно вводу, либо
и , либо
и ,
причем является отображением из в W.
Благодаря использованию этого признака, злоумышленнику становится сложно обнаружить, была ли действительно применена к переменной или же была применена к переменной .
Средство представления действия может быть сконфигурировано, чтобы вызывать поиск представлений , соответствующих вводу в отношении условия и представлений , с использованием по меньшей мере одной таблицы соответствия, которая отображает кортеж ввода в отношении условия и представлений в соответствующие представления . Ввод может, например, содержать (опционально зашифрованную) булеву переменную. Альтернативно, ввод может содержать переменные, возникающие в предикате, который определяет условие. Этот предикат и фактические действия могут быть скрыты в по меньшей мере одной таблице соответствия.
В конкретном примере , и средство (103) представления действия сконфигурировано, чтобы идентифицировать одну или несколько входных переменных, которые определяют условие b, и причем средство (103) представления действия содержит блок (305) перестановки для выполнения скрытой операции перестановки на основе по меньшей мере одного представления r, причем , переменной во множестве V и одной или нескольких входных переменных так, что для и q при
причем является взаимно-однозначным криптографическим отображением из в предварительно определенное множество, причем отличается от , причем является представлением,
и/или блок (306) перестановки для выполнения скрытой операции перестановки на основе представления и одной или нескольких переменных так, что для и q при
причем является взаимно-однозначным криптографическим отображением из в предварительно определенное множество, причем отличается от и является обновленным представлением .
Эти операции перестановки могут быть использованы в качестве этапов предварительной обработки и/или последующей обработки, соответственно, при вычислении представления r' так, что скрытое осуществление фактических функций f и/или g может быть упрощено. Если используется один из блоков перестановки, роли w и до и после действия могут меняться местами. С этим можно разобраться путем учета этого в остальной системе, например посредством подходящего программного кода, который предполагает, что кодирование изменилось.
Средство представления действия может дополнительно содержать блок оценки функции для вычисления функции, чтобы получить представление на основе представления такое, что для и q при
причем f является отображением, определенным над W, и g является отображением, определенным над W.
Таким образом, функции f и g могут применяться к аспекту w или представления в зависимости от операции перестановки, выполненной ранее, так, что скрытое осуществление f и g может быть одним и тем же независимо от того, выполняется ли условие. Операция перестановки, которая может выполняться после этого, осуществляет перестановку аспектов w и обратно в зависимости от условия, чтобы отменить операцию перестановки, выполненную первой операцией перестановки.
В конкретном примере . Это означает, что две операции перестановки используют идентичные криптографические кодирования. Таким образом, один и тот же код и/или таблицы могут повторно использоваться для обеих операций перестановки.
В одном примере для всех значений w и и по меньшей мере одного m из . Это может обеспечивать упрощенное и/или более симметричное осуществление.
В одном примере действие над V' сконфигурировано для изменения представления каждой переменной во множестве переменных V' так, что и , и
причем действие над V\V' сконфигурировано для изменения представления каждой переменной в V\V' так, что и ;
причем для , является функцией, определенной над W, и для каждой переменной в V\V' является функцией, отображающей элементы в W.
Это пример того, какие изменения следует сделать над представлениями.
Система может дополнительно содержать средство представления вложенных условных конструкций для представления вложенной условной операции, задействующей первый набор вложенных условий, в функционально эквивалентной последовательности невложенных условных операций, задействующих второй набор условий.
Система может дополнительно содержать блок преобразования для преобразования вложенной условной операции, задействующей первый набор вложенных условий, в функционально эквивалентную последовательность невложенных условных операций, задействующих второй набор условий. Это помогает улучшить предотвращение утечки информации, поскольку каждая из невложенных условных операций оценивается, например, посредством кода, генерируемого первым и вторым блоками генерирования, так, что все выражения, возникающие в условных операциях, оцениваются и могут влиять на представление r'. Меньше ветвей пропускается.
Например, блок преобразования может быть сконфигурирован, чтобы комбинировать соответственные выражения соответственных условных ветвей вложенной условной операции в термины вспомогательного выражения, причем соответственные выражения ассоциированы с альтернативными значениями, которые должны быть присвоены конкретной переменной; повторять этап, чтобы комбинировать соответственные выражения соответственных условных ветвей в термины вспомогательного выражения так, что генерируется набор вспомогательных выражений, в котором термины комбинируются различными способами, генерировать код, чтобы оценить вспомогательные выражения и сохранить их результаты; и генерировать код, чтобы комбинировать результаты вспомогательных выражений в зависимости от комбинированного условия, причем комбинированное условие является комбинацией набора условий, так, что термины, соответствующие ветвям, которые неактуальны ввиду условия, взаимно уничтожаются. Такая система может быть использована, чтобы скрыть вложенные условные операторы путем их уплощения в последовательность условных операторов, которые не являются вложенными. Путем комбинирования выражений, возникающих в различных условных ветвях, во вспомогательные выражения и затем комбинирования вспомогательных выражений таким образом, что выражения, которые неактуальны ввиду условий, взаимно уничтожаются, многие из выражений оцениваются в программе и могут влиять на зашифрованный итог, делая сложным анализ того, какие выражения в действительности влияют на дешифрованное значение w', соответствующее зашифрованному итогу.
Средство представления действия может быть сконфигурировано, чтобы идентифицировать по меньшей мере одну условную операцию из последовательности невложенных условных операций и соответствующее условие из второго набора условий, и причем средство представления действия сконфигурировано, чтобы использовать идентифицированную условную операцию в качестве действия и идентифицированное соответствующее условие в качестве условия условного оператора. Такая комбинация обеспечивает, в частности, хорошее скрытие того, что происходит во фрагменте условного кода. Кроме того, блок определения может быть сконфигурирован, чтобы идентифицировать каждую условную операцию из последовательности невложенных условных операций и каждое соответствующее условие из второго набора условий, причем первый блок генерирования и второй блок генерирования конфигурируются для обработки каждой идентифицированной условной операции и соответствующего условия.
В другом аспекте обеспечивается способ для скрытия изменения во множестве переменных программы, причем способ содержит этапы, на которых
представляют значение переменной из переменных , причем w является элементом множества W, посредством представления , причем и является элементом множества представлений , причем является переменной состояния, которая является элементом множества и которая обеспечивает избыточность представлению для , и является взаимно-однозначным криптографическим отображением из в предварительно определенное множество; и
представляют действие над значениями подмножества V' из V посредством действия над V' и действия над V\V', чтобы получить обновленные представления , для , причем является взаимно-однозначным криптографическим отображением из в предварительно определенное множество, и причем
действие над V' сконфигурировано для изменения представления каждой переменной во множестве переменных V' согласно измененному значению переменной , и
действие над V\V' сконфигурировано для изменения представления каждой переменной в V\V' согласно измененному значению для .
Согласно другому аспекту, обеспечивается система для скрытия условной операции, причем система содержит
блок представления для представления значения w, причем w является элементом множества W, посредством представления r, причем и r является элементом множества представлений , причем является переменной состояния, которая является элементом множества и которая обеспечивает избыточность представлению r для w, и является взаимно-однозначным криптографическим отображением из в предварительно определенное множество; и
блок получения для получения представления r' значения w' из представления r на основе ввода в отношении условия, причем w' является элементом множества W, причем r' является элементом множества представлений , причем , причем является переменной состояния, которая является элементом множества и которая обеспечивает избыточность представлению r' для w', причем является взаимно-однозначным криптографическим отображением из в предварительно определенное множество, причем на основе того, выполняется ли условие согласно вводу, либо w' ассоциируется с f(w), либо ассоциируется с , причем f является нетривиальным отображением, определенным над W, и h является отображением из в W.
Блок представления обеспечивает представление r, которое является избыточным представлением значения w. То есть любое отдельное значение w имеет множество различных представлений r, поскольку r может быть любым элементом . Это означает, что изменение r не обязательно означает изменение w, поскольку r может просто измениться в другой элемент для того же самого значения w. Такое представление обеспечивает возможность условной операции, например, если условие b выполняется, обновлять w в w'=f(w) для скрытия. Таким образом, если условие действительно выполняется, представление r обновляется, чтобы стать представлением r', которое является представлением f(w), т. е. членом множества . С другой стороны, если условие не выполняется, представление r все равно обновляется, но в другое представление того же самого значения w, т. е. (другой) член множества . Поскольку в последнем случае функция f используется, чтобы выбрать конкретный член множества , та же самая функция на основе f влияет на операцию, которая выполняется и применяется к представлению r независимо от того, выполняется ли условие. Любой энтропийный эффект, обеспеченный функцией f, таким образом, распространяется в представлении w' независимо от того, выполняется ли условие. То есть даже когда злоумышленник изменяет значение r или условие b и смотрит на любые эффекты, оказываемые этим на результат r', все равно сложно извлечь информацию о программе и ее переменных. Дополнительно, злонамеренному наблюдателю также сложно выяснить, была функция f применена к значению w или нет.
Блок определения может быть сконфигурирован, чтобы определять представление так, что на основе того, выполняется ли условие согласно вводу, либо w' ассоциируется с f(w) и ассоциируется с , либо w' ассоциируется с g(w) и ассоциируется с , причем g является (нетривиальным) отображением, определенным над W. Особенно полезно создать скрытое осуществление, например, условного оператора, у которого есть часть "иначе": если b то w=f(w) иначе w=g(w). Обе функции f и g влияют на итог r', несмотря на то, что только одна из этих функций влияет на часть w, или множество , из которого выбирается представление r'. Другая функция влияет только на то, какой элемент выбирается. Таким образом, только одна из функций f и g (как определяется условием) определяет базовое дешифрованное значение w' представления r'.
Блок получения может быть сконфигурирован, чтобы осуществлять поиск представления r', соответствующего вводу в отношении условия и представления r, с использованием по меньшей мере одной таблицы соответствия, которая отображает кортеж ввода и представления r в соответствующее представление r'. Осуществление посредством таблиц соответствия обеспечивает возможность предотвратить утечку какой-либо информации, задействованной в вычислении условия из входных переменных и функции f. Кроме того, любой условный оператор или инструкция ветви, которые зависят от условия, могут избегаться.
Например, . Блок получения может быть сконфигурирован, чтобы идентифицировать одну или несколько переменных, которые определяют условие b, и блок получения может содержать блок перестановки для выполнения скрытой операции перестановки на основе представления r и одной или нескольких переменных так, что для и q при
причем является взаимно-однозначным криптографическим отображением из в предварительно определенное множество, причем отличается от , причем является представлением,
и/или выполнения скрытой операции перестановки на основе представления и одной или нескольких переменных так, что для и q при
причем является взаимно-однозначным криптографическим отображением из в предварительно определенное множество, причем отличается от .
Эти операции перестановки могут использоваться в качестве этапов предварительной и/или последующей обработки, соответственно, при вычислении представления r' так, что скрытое осуществление фактических функций f и/или g может быть упрощено.
Блок получения может дополнительно содержать блок оценки функции для вычисления функции, чтобы получить представление на основе представления такое, что для и q при
причем g является отображением, определенным над W.
Таким образом, функции f и g могут применяться к аспекту w или представления в зависимости от операции перестановки, выполненной до этого, так, что скрытое осуществление f и g может быть одним и тем же независимо от того, выполняется ли условие.
Например, для всех значений w и . В этом примере, когда условие не истинно, на аспект представления не влияет аспект w представления. Это улучшает симметричность схемы.
Блок определения может быть сконфигурирован, чтобы определять представление такое, что на основе условия либо и , либо и . Это может использоваться, чтобы создавать скрытое осуществление, например, условного оператора, который не имеет части "иначе": если b то w=f(w).
Согласно другому аспекту изобретения, обеспечивается способ выполнения операции условным образом. Способ содержит этапы, на которых
представляют значение w, причем w является элементом множества W, посредством представления r, причем и r является элементом множества представлений , причем является переменной состояния, которая является элементом множества и которая обеспечивает избыточность представлению r для w, и является взаимно-однозначным криптографическим отображением из в предварительно определенное множество; и
получают представление r' значения w' из представления r на основе ввода в отношении условия, причем w' является элементом множества W, причем r' является элементом множества представлений , причем , причем является переменной состояния, которая является элементом множества и которая обеспечивает избыточность представлению r' для w', причем является взаимно-однозначным криптографическим отображением из в предварительно определенное множество, причем на основе того, выполняется ли условие согласно вводу, либо w' ассоциируется с f(w), либо ассоциируется с , причем f является нетривиальным отображением, определенным над W, и h является отображением из в W.
Согласно другому аспекту изобретения, обеспечивается система для создания компьютерного кода, чтобы выполнять операцию условным образом. Система содержит
блок идентификации для идентификации условия и условной операции f, которая должна быть выполнена над переменной w так, что, если условие выполняется, переменная w' вычисляется такая, что , причем w' является элементом множества W, и причем f является отображением, определенным над W;
первый блок генерирования для генерирования первого компьютерного кода, причем первый компьютерный код сконфигурирован, чтобы при исполнении представлять переменную w, причем w является элементом множества W, посредством представления r, причем и r является элементом множества представлений , причем является переменной состояния, которая является элементом множества и которая обеспечивает избыточность представлению r для w, и является взаимно-однозначным криптографическим отображением из в предварительно определенное множество; и
второй блок генерирования для генерирования второго компьютерного кода, причем второй компьютерный код сконфигурирован, чтобы при исполнении определять представление r' значения w' на основе ввода в отношении условия, причем r' является элементом множества представлений , причем , причем является переменной состояния, которая является элементом множества и которая обеспечивает избыточность представлению r' для w', причем является взаимно-однозначным криптографическим отображением из в предварительно определенное множество; и причем, если условие выполняется согласно вводу, , и, если условие не выполняется согласно вводу, , причем h является отображением из в W.
Такая система может использоваться для преобразования открытых (не скрытых) операций в скрытый код. Например, система может осуществляться в составе компилятора, который генерирует скрытый код. Например, генерируемый компьютерный код может содержать машинный код, псевдокод или виртуальный машинный код.
Согласно другому аспекту, обеспечивается способ создания машинного кода, чтобы выполнять операцию условным образом, причем способ содержит этапы, на которых
идентифицируют условие и условную операцию f, которая должна быть выполнена над переменной w так, что, если условие выполняется, переменная w' вычисляется такая, что , причем w' является элементом множества W, и причем f является отображением, определенным над W;
генерируют первый компьютерный код, причем первый компьютерный код сконфигурирован, чтобы при исполнении представлять переменную w, причем w является элементом множества W, посредством представления r, причем и r является элементом множества представлений , причем является переменной состояния, которая является элементом множества и которая обеспечивает избыточность представлению r для w, и является взаимно-однозначным криптографическим отображением из в предварительно определенное множество; и
генерируют второй компьютерный код, причем второй компьютерный код сконфигурирован, чтобы при исполнении определять представление r' значения w' на основе ввода в отношении условия, причем r' является элементом множества представлений , причем , причем является переменной состояния, которая является элементом множества и которая обеспечивает избыточность представлению r' для w', причем является взаимно-однозначным криптографическим отображением из в предварительно определенное множество; и причем, если условие выполняется согласно вводу, , и, если условие не выполняется согласно вводу, , причем h является отображением из в W.
Согласно другому аспекту, обеспечивается компьютерный программный продукт, содержащий инструкции для побуждения процессора, чтобы выполнять один или несколько из способов, изложенных выше.
Специалистам будет понятно, что два или более из вышеупомянутых вариантов осуществления, осуществлений и/или аспектов изобретения могут быть скомбинированы любым образом, который будет сочтен полезным.
Модификации и вариации способов и/или компьютерного программного продукта, которые соответствуют описанным модификациям и вариациям систем, могут быть осуществлены специалистом в области техники на основе настоящего описания.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Эти и другие аспекты изобретения очевидны из и будут освещены со ссылками на варианты осуществления, описанные далее.
Фиг.1 изображает структурную схему системы для выполнения преобразования в зависимости от условия.
Фиг.2 изображает структурную схему системы для скрытия условной операции.
Фиг.3 изображает структурную схему блока получения для скрытия условной операции.
Фиг.4 изображает блок-схему способа скрытия условной операции.
Фиг.5 изображает структурную схему системы для создания машинного кода, чтобы выполнять операцию условным образом.
Фиг.6 изображает структурную схему другой системы для создания машинного кода, чтобы выполнять операцию условным образом.
Фиг.7 изображает блок-схему способа преобразования вложенной условной операции.
Фиг.8 изображает блок-схему способа создания машинного кода, чтобы выполнять скрытую операцию условным образом.
Фиг.9 изображает структурную схему системы для скрытия изменения во множестве переменных.
Фиг.10 изображает блок-схему способа скрытия изменения во множестве переменных.
ПОДРОБНОЕ ОПИСАНИЕ
Далее описание дается в отношении того, как улучшить шифрование значений данных и скрытие внутреннего функционирования программы. Такие методики могут применяться, чтобы создавать безопасную виртуальную машину, например. Также другие виды систем могут быть защищены от утечки информации с использованием методик, раскрываемых здесь. На протяжении этого документа слово "скрытие" используется для указания, что функциональные возможности программы сложно выяснить, например, путем обратного проектирования. "Запутывание" является другим термином, используемым для указания, что сложно выяснить, какие функциональные операции выполняются в программном коде.
Фиг.1 изображает систему, содержащую блок 101 преобразования, сконфигурированный выполнять условную операцию. То есть блок 101 преобразования принимает значение w и условие b и выводит w' в зависимости от b. В случае, если условие b истинно, блок преобразования выводит w'=f(w). В случае, если условие b ложно, блок 101 преобразования выводит w'=g(w). Здесь f и g являются разными функциями. В альтернативной компоновке блок 101 преобразования сконфигурирован, чтобы принимать некоторые переменные (не показаны) вместо самого условия, и блок 101 преобразования сначала оценивает выражение, чтобы определить, истинно ли условие b, на основе этих переменных. После этого блок 101 преобразования выводит w'=f(w) (если условие истинно) или w'=g(w) (если условие ложно). Далее будут раскрыты варианты осуществления, в которых значения w и w' и, возможно, b, шифруются.
Фиг.2 изображает систему для выполнения условного преобразования скрытым образом. Система содержит блок 102 представления для идентификации криптографического представления значения w. Например, значение w обеспечивается на входе 105 блока 102 представления, и блок 102 представления сконфигурирован, чтобы шифровать значение w, чтобы генерировать зашифрованное представление r для w. Альтернативно, блок 102 представления может быть сконфигурирован, чтобы принимать представление r в качестве входного значения 101 и перенаправлять представление r к блоку 103 получения. В любом случае, примерное отношение между значением w и его криптографическом представлением r может быть объяснено следующим образом.
Пусть W обозначает множество операндов (входных значений операции), которые должны быть закодированы. Определим конечное множество состояний и конечное множество V с мощностью, равной произведению мощностей W и . Элементы отображаются взаимно-однозначным образом в V секретной функций кодирования . Закодированные представители элемента являются членами множества
Количество представителей каждого элемента , таким образом, равно мощности . В результате, пути данных, переносящие символы из V, равны (мощность ) или шире (мощность ), чем пути данных для переноса символов из W. Иными словами, когда мощность больше одного, существует больше значений, которые могут представлять любое конкретное значение w, поскольку представление зависит не только от w, но также и от переменной состояния , которая не обязательно имеет какой-либо смысл, но может быть выбрана случайным образом. Эта переменная состояния введена лишь для того, чтобы зашифровывать значение w и скрывать любые операции, выполняемые над w. Предпочтительно, или по меньшей мере мощность W равна мощности . Однако это не ограничение.
Рассмотрим функцию , которая должна быть закодирована (или скрыта). Построим функцию такую, что и мы имеем . Таким образом, F отображает представитель w в представитель f(w). Общим определением может быть:
. (Уравнение 1)
В этом примере представитель для f(w) частично определяется функцией . То есть значение состояния, ассоциированное с представителем f(w), может зависеть от обоих из значения w и состояния , ассоциированного с представителем w, с использованием соответствия . В конкретном примере g зависит только от , так что . Однако дальнейшее не ограничивается этим конкретным примером.
Представление значения и кодирование операции f(w), определенные в уравнении 1, таким образом, скрываются с использованием некоторого отображения g. Это отображение g может быть разным для каждой операции, которая возникает в программе. Соответственно, набор инструкций с соответственными операциями fi вводит соответствующий набор инструкций с, соответственно, соответствиями gi. Порядок исполнения инструкций с операциями fi может порождать порядок исполнения для инструкций с соответствиями gi. Фактически, помимо вычисления, составляемого операциями fi, новое вычисление возникает для вычисления gi. Это последние вычисление здесь называется вычислением или траекторией . Подобным образом, функция шифрования может быть различной для каждой операции в программе путем введения последовательности соответственных функций шифрования , так что представление любого значения w может быть различным после каждой операции. В таком случае, уравнение 1 обобщается до уравнения 1a:
. (Уравнение 1a)
Для описания инструкции может задействоваться симметричное обобщение уравнения 1. Рассмотрим функцию , соответствие . Уравнение 1 может быть обобщено до:
(Уравнение 2)
В таком случае, возможно, частичная информация f(w) в уравнении 1 может передаваться в составе q0 или q1. Можно сделать два наблюдения. Первое наблюдение в том, что в конкретном примере q0, а также q1 могут быть шифрованиями и что "только" комбинирует значения. Второе наблюдение в том, что роль w как значения и как состояния может рассматриваться как уменьшающаяся. Ее достаточно для возможности определить f(w) или w, или .
Для запутывания программного потока операции скачка могут быть устранены и заменены альтернативными операциями над вышеописанными представлениями. Однако в отличие от случая признаков преобразования "если" современных архитектур процессора, это преобразование "если" делается не для того, чтобы предотвратить затратный магистральный сбой, а для того, чтобы удалить любые наблюдаемые изменения в потоке управления. Таким образом, анализ потока управления не раскрывает какие-либо выборы, сделанные в программе. Кроме того, при кодировании условной программы, такой как "если булево b истинно, то операция F, иначе операция G", может быть обеспечено посредством методик, раскрываемых здесь, чтобы обе ветви ("операция F" и "операция G") участвовали в , независимо от итога условия ("если булево b истинно"). Благодаря этому может достигаться статистический разброс условия по всей программе. Например,
- вывод w определяется ветвью, которая соответствует итогу условия,
- вывод определяется ветвью, которая не соответствует итогу условия.
Как w, так и могут вычисляться одновременно и/или могут неразделимо соединяться друг с другом посредством . Путем анализа получающихся в результате данных, ни выбранная ветвь, ни значение условия не могут быть определены. Операция скачка, которая осуществлялась бы в предшествующем уровне техники на основе итога условной конструкции, может быть устранена, таким образом, делая сложным извлечение информации из потока управления программы. Значение может быть поставлено в зависимость от обеих ветвей конструкции если-то-иначе. В терминах теории информации энтропия w и очень хорошо распределена.
Например, программное представление преобразования, выполняемого блоком 101 преобразования с фиг.1, может быть следующим:
если b то w':=f(w) иначе w':=g(w).
В примерном варианте осуществления, показанном на фиг.2, блок 103 получения принимает зашифрованное представление r значения w, как объяснено выше, и входную информацию в отношении условия b 104. Эта входная информация может быть булевой или зашифрованной булевой переменной. Альтернативно, входная информация может содержать одну или несколько переменных, которые могут комбинироваться посредством, например, блока 101 преобразования в предикате, который определяет условие.
Вышеупомянутая условная программа с фиг.1 может быть перепрограммирована путем внесения избыточности с использованием переменной состояния, как описано выше, где является представлением операнда w, и r' является представлением итога w' таким, что для некоторых значений и . Вывод из блока 103 получения может быть кратко записан следующим образом:
если b
то r':=;
иначе r':=.
Каждая из операций и может быть осуществлена в форме таблицы соответствия. Однако чтобы избежать исполнения условного оператора и соответствующей условной операции скачка внутри блока 103 получения, существует возможность осуществить блок 103 получения посредством таблицы соответствия, которая отображает комбинации b и представления r непосредственно в соответствующие значения r'. Здесь b может быть зашифрованной булевой переменной. Кроме того, b может быть замещена одной или несколькими входными переменными, причем условие b является функцией от этих переменных. В таком случае комбинации этих переменных и представления r могут отображаться посредством таблицы соответствия в соответствующие значения r'. В таком случае функция, определяющая условие b, может кодироваться вместе с f и g в таблице соответствия. Вместо таблицы соответствия может использоваться сеть таблиц соответствия. Способы осуществления функции в виде сети таблиц соответствия известны в области техники сами по себе.
Как можно увидеть выше, обе операции f и g оказывают влияние на представление r' независимо от итога условной конструкции ("если b"). Таким образом, и f, и g участвуют в "энтропии" r', делая сложным извлечение информации об этих условных операциях.
Фиг.3 изображает примерное осуществление блока 103 получения. В этом конкретном осуществлении условный оператор (или условная операция скачка) замещается двумя операциями 305 и 306 перестановки. Такая операция перестановки может осуществляться, например, в форме таблицы соответствия. Операции, описанные в каждой соответственной строке из следующих трех строк, могут осуществляться, например, соответственной таблицей соответствия.
Ввод: b и r, причем .
строка 1: если b то r':= иначе r':= конец если
строка 2: :=.
строка 3: если b то := иначе := конец если
Вывод: , причем или
Строка 1 вышеописанного фрагмента кода объясняет функциональные возможности операции 305 перестановки, которая условным образом осуществляет перестановку частей значения (w) и состояния () представления на основе условия b (позиция 104). Строка 2 вышеописанного фрагмента кода объясняет, как функции f и g применяются к представлению r' в блоке 307. Строка 3 объясняет функциональные возможности операции 306 перестановки, которая снова условным образом осуществляет перестановку частей значения (w) и состояния () представления на основе условия b (позиция 104).
Следует заметить, что после строки 1 r' может быть либо , либо в зависимости от b. В строке 2 символы p и q определяются так, что . В строке 2 функция f эффективно применяется к w, если b истинно. Однако если b не истинно, функция g эффективно применяется к w, но ввиду предшествующей операции перестановки в строке 1 w вошло в состав части "состояния" или "" представления r'. Следовательно, дополнительная операция перестановки обеспечивается в строке 3 для смены частей "w" и "" из r'. В строке 3 символы u и v определяются так, что . То есть и . В строке 3, если b не истинно, желаемое значение, которое было захвачено в части "состояния" или "" представления , перемещается в часть "w" представления .
Каждая из строк 1 и 3 обозначает функцию перестановки. Такая функция перестановки может осуществляться в качестве таблицы соответствия, причем верное значение ищется на основе значения b и представления r (или , соответственно). Существует возможность использовать одну и ту же таблицу соответствия для обеих строк 1 и 3 путем выбора , , , и таких, что и . Существует возможность закодировать итог строк 1-3 в одной таблице соответствия, которая непосредственно отображает значения r и b в соответствующие значения .
Со ссылкой на фиг.2, блок 103 получения, который выполняет скрытое вычисление, соответствующее этому фрагменту кода, может также быть сконфигурирован, чтобы определять вывод следующим образом:
Ввод: условие b и представление r, причем .
если b
то r':=;
иначе r':=.
Здесь h является отображением из в W. Никакая операция перестановки не используется в этом случае. Также это осуществление подходит для случаев, когда или когда мощность W отличается от мощности . Существует возможность осуществлять обе ветви условного оператора в форме таблицы соответствия и применять одну из таблиц соответствия в зависимости от условия b. Функции f и g будут влиять на итог r' независимо от условия b. Альтернативно, может быть осуществлена одна таблица соответствия, которая отображает кортежи b (или переменные, которые определяют b) и r в соответствующие представления r'.
Особым случаем является то, когда не существует ветви "иначе" в нескрытой версии программы, т. е. рассмотрим программу
если b то w':=f(w) конец.
В этом случае функция g(w) из предыдущих примеров равна тождеству. То есть блок 103 определения сконфигурирован, чтобы определять представление так, что на основе условия либо
и (когда условие истинно), либо
и (когда условие ложно).
Это не представляет угрозы безопасности как таковой, поскольку всегда существует некоторое развитие, и энтропийный разброс поддерживается путем применения функции f либо к w, либо к состоянию зашифрованной области. Однако эта ситуация может быть дополнительно улучшена путем балансирования обеих ветвей путем внесения фиктивных операций для переменных, которые не подвергаются воздействию. Рассмотрим операцию "Баланс", цель которой дополнительно скрыть программу путем балансирования любого условного оператора, где различные переменные могут подвергаться воздействию в зависимости от условия.
причем, например, Баланс(x:=x+1,y:=f(5)) означает x:=x+1; Фикция(y). Здесь Фикция(y) может представлять любую операцию над переменной, которая не изменяет эту переменную. Например, Фикция(y) может означать любое из: , , . Другие фиктивные операции будут очевидны специалисту в области техники с учетом настоящего раскрытия.
Иными словами, условный сегмент кода, содержащий набор ветвей, причем каждая ветвь условным образом исполняется в зависимости от условия, может быть "сбалансирован" путем:
- определения переменной, которая изменяется в по меньшей мере одной ветви из условных ветвей, но не в по меньшей мере одной другой ветви из условных ветвей;
- создания фиктивной операции для этой определенной переменной;
- включения фиктивной операции в по меньшей мере одну другую ветвь из условных ветвей.
Вышеупомянутые три этапа могут повторяться для каждой переменной, задействуемой в условных ветвях.
Фиг.4 изображает способ выполнения операции условным образом. На этапе 401 значение w, причем w является элементом множества W, представляется посредством представления r, причем и r является элементом множества представлений , причем является переменной состояния, которая является элементом множества и которая обеспечивает избыточность представлению r для w, и является криптографическим отображением из в предварительно определенное множество. Это представление r может приниматься, например. Альтернативно, представление может генерироваться из входного значения w путем определения переменной состояния в качестве случайного числа и вычисления или поиска .
На этапе 402 представление r' значения w' определяется, причем w' является элементом множества W, причем r' является элементом множества представлений , причем , причем является переменной состояния, которая является элементом множества и которая обеспечивает избыточность представлению r' для w', причем ' является взаимно-однозначным криптографическим отображением из в предварительно определенное множество. Например, значение r' ищется в таблице соответствия на основе одной или нескольких входных переменных, которые определяют условие b и представление r. Опционально, последовательность поисков в таблице выполняется, как описано выше, включающая в себя операцию перестановки, операцию функции и другую операцию перестановки. Таблицы проектируются таким образом, что в зависимости от условия b либо w' ассоциируется с f(w), либо ассоциируется с . Здесь f является отображением, определенным над W, и h является отображением из d .
В конкретном примере вышеописанный способ применяет f к части "w" зашифрованного представления так, что на основе условия, например, если условие истинно. В противном случае f применяется к части "" в так, что , например, если условие ложно. Дополнительные варианты способа могут быть обеспечены, как объяснено выше со ссылками на фиг.1-3. Например, варианты с ветвью "иначе" могут быть сделаны так, что на основе условия либо , либо .
Фиг.5 изображает систему для создания машинного кода, чтобы выполнять операцию условным образом. Система содержит блок 501 идентификации для идентификации условия и условной операции f, которая должна быть выполнена над переменной w так, что, если условие выполняется, переменная w' должна быть вычислена такая, что , причем w' является элементом множества W, и причем f является отображением, определенным над W. Например, блок 501 идентификации может соединяться с модулем синтаксического анализатора (парсера) компилятора (не показан), который извлекает выражения компьютерной программы для того, чтобы идентифицировать условие и условную операцию.
Блок 501 идентификации может обеспечивать информацию в отношении идентифицированных условия и условной операции первому блоку 502 генерирования, который генерирует машинный код. Сгенерированный машинный код при исполнении представляет переменную w, причем w является элементом множества W, посредством представления r, причем и r является элементом множества представлений , причем является переменной состояния, которая является элементом множества и которая обеспечивает избыточность представлению r для w, и является взаимно-однозначным криптографическим отображением из в предварительно определенное множество. Например, машинный код может генерировать представление r из фактического входного значения w и случайного числа . Альтернативно, машинный код, сгенерированный первым блоком 502 генерирования, может при исполнении осуществлять ссылку на местоположение памяти, в котором хранится представление, или принимать представление r от другого программного компонента или устройства ввода.
Система дополнительно содержит второй блок 503 генерирования. Второй блок 503 генерирования генерирует машинный код для определения представления r' значения w' на основе представления r и ввода в отношении условия, причем r' является элементом множества представлений , причем , причем является переменной состояния, которая является элементом множества и которая обеспечивает избыточность представлению r' для w', причем является взаимно-однозначным криптографическим отображением из в предварительно определенное множество. Если условие выполняется, w'=f(w), и, если условие не выполняется, , причем h является отображением из в W. Блок 503 генерирования может содержать генератор таблиц (не показан), который генерирует одну или несколько таблиц соответствия, как описано выше, которые могут использоваться, чтобы осуществлять функцию. Система может быть расширена, чтобы генерировать машинный код, необходимый для выполнения вычислений или поисков по таблице, как описано выше.
Фиг.6 изображает дополнительный вариант осуществления системы для генерирования машинного кода, чтобы выполнять операцию условным образом. Элементам, которые подобны элементам с фиг.5, были даны те же самые ссылочные позиции, и их нет необходимости снова рассматривать подробно. Система содержит блок 601 преобразования для преобразования вложенной условной операции, задействующей набор условий, в последовательность невложенных условных операций. Конкретным образом, последовательность невложенных условных операций с соответствующими условиями эквивалентна вложенным условным операциям в том смысле, что выходное значение то же самое. Кроме того, невложенные условные операции с соответствующими условиями могут обрабатываться блоком 501 идентификации и блоками 502 и 503 генерирования кода.
Фиг.7 изображает примерный способ преобразования вложенной условной операции, задействующей набор условий, в последовательность невложенных условных операций. Блок 601 преобразования с фиг.6 может быть сконфигурирован, чтобы выполнять способ, изображенный на фиг.7.
На этапе 701 соответственные выражения соответственных условных ветвей вложенной условной операции преобразуются в термины вспомогательного выражения. Эти соответственные выражения ассоциированы с альтернативными значениями, которые должны быть присвоены конкретной переменной в зависимости от условия. То есть выражения предназначены для присваивания одной и той же переменной сгенерированного кода, но условия определяют, которое выражение будет в конечном итоге назначено переменной. На этапе 702, если определяется, что этап 701 должен быть повторен, поток возвращается к этапу 701 так, чтобы набор вспомогательных выражений был сгенерирован, в котором термины комбинируются различными способами. Если на этапе 702 определяется, что достаточно вспомогательных выражений было сгенерировано, чтобы каждая условная операция была эквивалентна конкретной комбинации вспомогательных терминов, способ продолжается от этапа 703. На этапе 703 код генерируется, чтобы оценить вспомогательные выражения и сохранить их результаты. Этот этап может включать в себя генерирование кода для оценки комбинации по меньшей мере одного из набора условий. Далее на этапе 704 генерируется код, чтобы комбинировать результаты вспомогательных выражений в зависимости от комбинированного условия, причем комбинированное условие является комбинацией набора условий так, что термины, соответствующие ветвям, которые неактуальны ввиду условия, взаимно уничтожаются.
Рассмотрим снова условный сегмент кода "если b то F иначе G конец если". Условные ветви F и G такой инструкции могут содержать множество выражений, например последовательность операций, обозначенных, например, как "F1; F2", содержать циклы, рекурсию или дополнительный условный сегмент кода, такой как дополнительный условный оператор. Последняя ситуация представляет вложенный логический защищенный выбор.
Определим программу P следующим образом:
Итак, существует четыре альтернативы (F, G, H и J), из которых только одна должна исполняться. Когда вышеописанные методики применяются к P1 и P2, главная ветвь, которая зависит от b1, все равно не обязательно полностью покрывается методикой скрытия.
Один способ решить это состоит в замене вложенных условных операторов последовательностью невложенных условных операторов и сделать это таким образом, что все выражения каждой ветви (F, G, H, J) оцениваются в процессе исполнения этой последовательности невложенных условных операторов.
Для такого преобразования программы выражения могут сначала быть сбалансированы путем внесения фиктивных операций.
Системный способ может применяться для уплощения программы так, чтобы она больше не содержала вложенных условных операторов.
Как мы видели ранее, наш способ действует наилучшим образом с точки зрения криптографии, если программа энтропийно полностью сбалансирована, в особенности пара ветвей условного оператора. В случае, когда ветвь содержит оба (безусловных) присвоения и один или несколько вложенных условных операторов, мы можем осуществить их "уплощение" путем распространения копии таких присвоений в каждую ветвь условного оператора следующим образом:
-
-
Рассмотрим следующий вложенный условный оператор, который предпочтительно балансируется в отношении переменной x:
Здесь выр0, выр1, выр2 и выр3 являются выражениями, которые зависят от x.
При добавлении p:=вырi+вырi+1 и q:=вырi-вырi+1 в качестве вспомогательных переменных эта программа может быть преобразована в:
Поскольку продолжения после двух условных операторов второго уровня теперь стали идентичными, программа может быть "уплощена" в следующее:
Программа 1:
или, с использованием варианта с умножением:
Получающиеся в результате два условных оператора могут осуществляться с использованием методик в отношении зашифрованных представлений выше. Например, для первого условного оператора программы 1 выше представление r может использоваться, чтобы представлять входную переменную x, и представления r1 и r2 могут использоваться, чтобы представлять p и q. Дополнительное представление может использоваться, чтобы представлять выходное x из второго условного оператора программы 1.
Когда условные операторы вложены в более глубокий уровень, подобные методики могут применяться к преобразованию их в группу последовательных условных операторов. Например, рассмотрим следующую примерную программу, в которой условные операторы дважды вложены:
Эта примерная программа может быть преобразована в последовательность невложенных условных операторов. Чтобы сделать это, может быть применен подход из двух этапов. Сначала, подобно случаю с один раз вложенными условными операторами, продолжения из условных операторов третьего уровня могут быть объединены путем добавления вспомогательных переменных p и q следующим образом: p:=вырi+вырi+1 и q:=вырi-вырi+1. Это иллюстрируется более подробно в следующем коде:
q:=выр0-выр1;
q:=выр2-выр3;
q:=выр4-выр5;
q:=выр6-выр7;
Эта программа может быть уплощена, чтобы получить следующий код без каких-либо вложенных условных операторов:
s:=выр0+выр1-выр2+выр3;
s:=выр4+выр5-выр6+выр7;
w:=выр0-выр1-выр2-выр3;
w:=выр4-выр5-выр6-выр7;
Вышеупомянутая процедура преобразования для преобразования программы с дважды вложенными условными операторами в программу с последовательными, невложенными условными операторами может быть применена к любой программе, которая имеет вышеупомянутый формат, для любых выражений от выр1 до выр2.
Фиг.8 изображает способ создания компьютерного кода, чтобы выполнять операцию условным образом. Этап 801 включает в себя идентификацию условия и условной операции f, которая должна быть выполнена над переменной w так, что, если условие выполняется, переменная w' вычисляется такая, что w'=f(w), причем w' является элементом множества W, и причем f является отображением, определенным над W. Этап 802 включает в себя генерирование первого компьютерного кода, причем первый компьютерный код сконфигурирован, чтобы при исполнении представлять переменную w, причем w является элементом множества W, посредством представления r, причем и r является элементом множества представлений , причем является переменной состояния, которая является элементом множества и которая обеспечивает избыточность представлению r для w, и является взаимно-однозначным криптографическим отображением из в предварительно определенное множество. Этап 803 включает в себя генерирование второго компьютерного кода, причем второй компьютерный код сконфигурирован, чтобы при исполнении определять представление r' значения w' на основе ввода в отношении условия, причем r' является элементом множества представлений , причем , причем является переменной состояния, которая является элементом множества и которая обеспечивает избыточность представлению r' для w', причем является взаимно-однозначным криптографическим отображением из в предварительно определенное множество; и причем, если условие выполняется согласно вводу, w'=f(w), и, если условие не выполняется согласно вводу, , причем h является отображением из в W.
Удаление скачков в программе может использоваться, чтобы препятствовать анализу потока управления или задействованных значений. Вычисление вычислений, осуществляемых во всех ветвях условного оператора, даже ветвях, которые неактуальны ввиду условия, и комбинирование результатов этих вычислений в один элемент данных может помочь достичь этой цели.
Система табличных машин, в которой скачки подавляются, может создаваться, чтобы удалять изменения в потоке управления программы, причем кодирование в форме в случае логического защищенного выбора протекает по невыбранной ветви посредством по большей мере и по выбранной ветви посредством по меньшей мере w.
Фиг.9 изображает систему для скрытия изменения во множестве переменных программы. Система содержит средство 902 представления значения для представления значения переменной из переменных , причем w является элементом множества W, посредством представления , причем и является элементом множества представлений , причем является переменной состояния, которая является элементом множества и которая обеспечивает избыточность представлению для , и является взаимно-однозначным криптографическим отображением из в предварительно определенное множество. Это средство 902 представления значения может осуществляться с использованием методик, раскрытых выше. Средство 902 представления значения может быть сконфигурировано, чтобы представлять все из переменных посредством соответственных представлений определенным образом. Значения могут выбираться случайным образом, например. Средство 902 представления значения может быть сконфигурировано, чтобы вычислять представления на основе базовых значений . Средство 902 представления значения может также быть сконфигурировано, чтобы принимать представления от другого устройства или от другого компонента системы. n является положительным целым. То есть в общем случае множество переменных V содержит по меньшей мере одну переменную.
Система может дополнительно содержать средство 903 представления действия для представления действия над значениями переменных в подмножестве V' из V посредством действия над V' и действия над V\V', чтобы получить обновленные представления , для , причем является взаимно-однозначным криптографическим отображением из в предварительно определенное множество. может быть равно . Альтернативно, может быть криптографическим отображением, которое отличается от . Таким образом, существует возможность изменить криптографическое отображение при изменении представления.
Дополнительно, средство представления действия может быть сконфигурировано, чтобы выполнять действие над V' и действие над V\V'. Альтернативно, средство представления действия может быть сконфигурировано, чтобы всего лишь представлять эти действия путем генерирования программного кода, который при исполнении выполняет действия. В последнем случае средство 903 представления действия может быть сконфигурировано, чтобы идентифицировать (например, посредством синтаксического анализатора) программный код, определяющий действие над значениями переменных в подмножестве V', и преобразовывать этот программный код в программный код, который определяет действие над V' и действие над V\V'.
Действие над V' сконфигурировано для изменения представления каждой переменной во множестве переменных V' согласно измененному значению переменной , и действие над V\V' сконфигурировано для изменения представления каждой переменной в V\V' согласно измененному значению переменной состояния . В частности, представление каждой переменной в V\V' изменяется на представление, которое представляет то же самое значение . Представление каждой переменной во множестве переменных V' может быть изменено согласно измененному значению переменной , поддерживая то же самое значение (или, опционально, другое значение ).
Действие может содержать условный оператор, который определяет действие над множеством переменных V1, если условие выполняется, и действие над множеством переменных V2, если условие не выполняется, причем оба V1 и V2 являются подмножествами V. Иными словами, множество переменных V содержит объединение V1 и V2, то есть . Средство 903 представления действия может быть сконфигурировано, чтобы использовать множество переменных V1 в качестве множества переменных V', если условие выполняется. Это означает, что средство 903 представления действия выполняет действие над V1 путем изменения представления каждой переменной во множестве переменных V1 согласно измененному значению переменной , и выполняет действие над V\V1 путем изменения представления каждой переменной в V\V1 согласно измененному значению переменной состояния .
Дополнительно, средство 903 представления действия может быть сконфигурировано, чтобы использовать множество переменных V2 в качестве множества переменных V', если условие не выполняется. Это означает, что средство 903 представления действия выполняет действие над V2 путем изменения представления каждой переменной во множестве переменных V2 согласно измененному значению переменной и выполняет действие над V\V2 путем изменения представления каждой переменной в V\V2 согласно измененному значению переменной состояния .
Некоторые из переменных могут быть изменены условным сегментом кода независимо от того, выполняется условие или нет. В таком случае множество переменных V1 и множество переменных V2 имеют пересечение V3, причем . Действие изменяет значение каждой переменной множества V3 согласно функции fm, если условие выполняется, и согласно функции gm, если условие не выполняется. Средство представления действия сконфигурировано, чтобы представлять эти действия посредством действия, которое определяет представление каждой измененной переменной из множества V3 так, что, если условие выполняется, и , но если условие не выполняется, и . Здесь hm является отображением из в W.
Средство 903 представления действия может осуществляться посредством операций поиска. С этой целью одна или несколько таблиц соответствия могут быть подготовлены и сохранены в памяти системы. То, выполняется ли условие, не обязательно должно быть определено явным образом системой. В действительности ввод может приниматься для значений, которые определяют условие. Одна или несколько таблиц соответствия могут отображать эти входные значения вместе с представлениями в соответствующие измененные представления. Средство 903 представления действия может, таким образом, быть сконфигурировано, чтобы вызывать поиск представлений , соответствующих вводу в отношении условия и представлений , с использованием по меньшей мере одной таблицы соответствия, которая отображает кортеж ввода в отношении условия и представлений в соответствующие представления .
Средство 903 представления действия может также осуществляться посредством одной или нескольких операций перестановки, которые были описаны выше со ссылками на фиг.3. Средство 903 представления действия может быть сконфигурировано, чтобы идентифицировать одну или несколько входных переменных, которые определяют условие b, и может содержать первый блок 305 перестановки, блок 307 оценки функции и/или второй блок 306 перестановки, как описано выше, для каждой из переменных во множестве переменных .
Средство 902 представления значения и средство 903 представления действия, описанные выше, могут операционно объединяться с блоком 601 преобразования, описанным выше. Блок 601 преобразования представляет вложенную условную операцию, задействующую первый набор вложенных условий, посредством функционально эквивалентной последовательности невложенных условных операций, задействующих второй набор условий. Например, последовательность невложенных условных операций может генерироваться блоком 601 преобразования путем обработки вложенной условной операции. Каждая из получающихся в результате невложенных условных операций может быть по отдельности представлена средством 903 представления действия изложенным способом.
Фиг.10 изображает способ скрытия изменения во множестве переменных программы. На этапе 1001 значение переменной из переменных , причем w является элементом множества W, представляется представлением , причем и является элементом множества представлений , причем является переменной состояния, которая является элементом множества и которая обеспечивает избыточность представлению для , и является взаимно-однозначным криптографическим отображением из в предварительно определенное множество. На этапе 1002 действие над значениями подмножества V' из V представляется посредством действия над V' и действия над V\V', чтобы получить обновленные представления , для , причем является взаимно-однозначным криптографическим отображением из в предварительно определенное множество, и причем действие над V' сконфигурировано для изменения представления каждой переменной во множестве переменных V' согласно измененному значению переменной , и действие над V\V' сконфигурировано для изменения представления каждой переменной в V\V' согласно измененному значению of .
Следует понимать, что изобретение также применимо к компьютерным программам, в частности к компьютерным программам на или в носителе, выполненном с возможностью вводить изобретение в осуществление на практике. Вариант осуществления, относящийся к компьютерному программному продукту, содержит машиноисполняемые инструкции, соответствующие каждому этапу обработки по меньшей мере одного из способов, изложенных здесь. Эти инструкции могут подразделяться на подпрограммы и/или сохраняться в одном или нескольких файлах, которые могут быть связаны статически или динамически. Другой вариант осуществления, относящийся к компьютерному программному продукту, содержит машиноисполняемые инструкции, соответствующие каждому блоку по меньшей мере одной из систем и/или продуктов, изложенных здесь. Эти инструкции могут подразделяться на подпрограммы и/или сохраняться в одном или нескольких файлах, которые могут быть связаны статически или динамически.
Носитель компьютерной программы может быть любым объектом или устройством с возможностью переноса программы. Например, носитель может включать в себя носитель данных, такой как ROM, например CD-ROM или полупроводниковая ROM, или магнитный носитель записи. Кроме того, носитель может быть передаваемым носителем, таким как электрический или оптический сигнал, который может переноситься по электрическому или оптическому кабелю или посредством радио или других средств. Когда программа осуществляется в таком сигнале, носитель может быть составлен таким кабелем или другим устройством или средством. Альтернативно, носитель может быть интегральной цепью, в которую программа встроена, причем интегральная цепь выполнена с возможностью выполнять актуальный способ или использоваться в его выполнении.
Следует заметить, что вышеупомянутые варианты осуществления иллюстрируют, а не ограничивают изобретение, и что специалисты в области техники смогут спроектировать множество альтернативных вариантов осуществления без выхода за пределы объема прилагаемой формулы изобретения. В формуле изобретения любые позиционные обозначения, помещенные в скобках, не должны толковаться как ограничивающие пункт формулы. Использование глагола "содержать" и его спряжений не исключает наличия элементов или этапов помимо упомянутых в пункте формулы. Упоминание элемента в единственном числе не исключает наличия множества таких элементов. Изобретение может осуществляться посредством аппаратных средств, содержащих несколько обособленных элементов, и посредством подходящим образом запрограммированного компьютера. В пункте устройства, перечисляющем несколько средств, несколько из этих средств могут осуществляться одним и тем же элементом аппаратных средств. Сам факт того, что конкретные меры перечислены во взаимно различных зависимых пунктах формулы изобретения, не указывает, что комбинация этих мер не может использоваться выгодным образом.
название | год | авторы | номер документа |
---|---|---|---|
КРИПТОГРАФИЧЕСКАЯ СИСТЕМА И СПОСОБ | 2015 |
|
RU2710670C2 |
КРИПТОГРАФИЧЕСКОЕ УСТРОЙСТВО И КОДИРУЮЩЕЕ УСТРОЙСТВО | 2016 |
|
RU2692419C1 |
ВЫЧИСЛИТЕЛЬНОЕ УСТРОЙСТВО, КОНФИГУРИРУЕМОЕ С ПОМОЩЬЮ ТАБЛИЧНОЙ СЕТИ | 2013 |
|
RU2661308C2 |
ЭЛЕКТРОННОЕ ВЫЧИСЛИТЕЛЬНОЕ УСТРОЙСТВО ДЛЯ ВЫПОЛНЕНИЯ АРИФМЕТИКИ С ОБФУСКАЦИЕЙ | 2015 |
|
RU2701716C2 |
ВЫЧИСЛИТЕЛЬНОЕ УСТРОЙСТВО, СОДЕРЖАЩЕЕ СЕТЬ ТАБЛИЦ | 2013 |
|
RU2676454C2 |
ВЫЧИСЛИТЕЛЬНОЕ УСТРОЙСТВО И СПОСОБ | 2016 |
|
RU2708439C1 |
СПОСОБ ИТЕРАТИВНОГО ШИФРОВАНИЯ БЛОКОВ ДАННЫХ | 1999 |
|
RU2140714C1 |
ЭЛЕКТРОННОЕ ВЫЧИСЛИТЕЛЬНОЕ УСТРОЙСТВО ДЛЯ ВЫПОЛНЕНИЯ ЗАМАСКИРОВАННЫХ АРИФМЕТИЧЕСКИХ ДЕЙСТВИЙ | 2015 |
|
RU2698764C2 |
ПРОВЕРЯЕМЫЕ СЕКРЕТНЫЕ ПЕРЕТАСОВЫВАНИЯ И ИХ ПРИМЕНЕНИЕ ПРИ ПРОВЕДЕНИИ ЭЛЕКТРОННОГО ГОЛОСОВАНИЯ | 2002 |
|
RU2271574C2 |
ВЫЧИСЛИТЕЛЬНОЕ УСТРОЙСТВО, ХРАНЯЩЕЕ ТАБЛИЦЫ СООТВЕТСТВИЯ ДЛЯ ВЫЧИСЛЕНИЯ ФУНКЦИИ | 2013 |
|
RU2657178C2 |
Изобретение относится к области вычислительной техники. Технический результат заключается в повышении защиты программного обеспечения от утечки информации. Технический результат достигается за счёт представления значения переменной из переменных , причем является элементом множества , посредством представления , причем , и является элементом множества представлений , при этом является переменной состояния, которая является элементом множества и обеспечивает избыточность представлению для , является взаимно-однозначным криптографическим отображением из в предварительно определенное множество; представления действия над значениями подмножества множества переменных посредством действия над , предназначенного для изменения представления каждой переменной во множестве переменных согласно измененному значению переменной , и действия над , предназначенного для изменения представления каждой переменной в согласно измененному значению для , чтобы получить обновленные представления , для , причем является взаимно-однозначным криптографическим отображением из в предварительно определенное множество. 3 н. и 11 з.п. ф-лы, 10 ил.
1. Система для скрытия изменения во множестве переменных программы, содержащая:
средство (902) представления значения для представления значения переменной из переменных , причем является элементом множества , посредством представления , причем и является элементом множества представлений , причем является переменной состояния, которая является элементом множества и которая обеспечивает избыточность представлению для , и является взаимно-однозначным криптографическим отображением из в предварительно определенное множество; и
средство (903) представления действия для представления действия над значениями переменных в подмножестве множества переменных посредством действия над и действия над , чтобы получить обновленные представления , для , причем является взаимно-однозначным криптографическим отображением из в предварительно определенное множество, и причем упомянутое действие над предназначено для изменения представления каждой переменной во множестве переменных согласно измененному значению переменной , и
упомянутое действие над предназначено для изменения представления каждой переменной в согласно измененному значению переменной состояния .
2. Система по п.1, в которой упомянутое действие над значениями переменных в подмножестве содержит условный (if) оператор, который определяет действие над множеством переменных , если условие выполняется, и действие над множеством переменных , если условие не выполняется, причем множество переменных является подмножеством множества переменных , и множество переменных также является подмножеством множества переменных , и средство (903) представления действия выполнено с возможностью использовать множество переменных в качестве множества переменных , если условие выполняется, и использовать множество переменных в качестве множества переменных , если условие не выполняется.
3. Система по п.2, в которой множество переменных и множество переменных имеют пересечение переменных, которые подвергаются обоим из действия над множеством переменных и действия над множеством переменных , такое что , причем упомянутое действие изменяет каждую переменную множества согласно функции , если условие выполняется, и согласно функции , если условие не выполняется, причем средство представления действия выполнено с возможностью определять представление каждой переменной множества так, что на основе того, выполняется ли условие, либо
и , либо
и ,
причем является отображением из в .
4. Система по п.1, в которой средство (903) представления действия выполнено с возможностью вызывать поиск представлений , соответствующих вводу в отношении условия и представлений , с использованием по меньшей мере одной таблицы соответствия, которая отображает кортеж ввода в отношении условия и представлений в соответствующие представления .
5. Система по п.1, в которой и в которой средство (903) представления действия выполнено с возможностью идентифицировать одну или несколько входных переменных, которые определяют условие b, при этом средство (103) представления действия содержит первый блок (305) перестановки для выполнения скрытой операции перестановки на основе по меньшей мере одного представления r, где , переменной во множестве и одной или нескольких входных переменных, так что для и q при
при этом является взаимно-однозначным криптографическим отображением из в предварительно определенное множество, причем отличается от , при этом является представлением,
и/или второй блок (306) перестановки для выполнения скрытой операции перестановки на основе представления и одной или нескольких переменных, так что для и q при
при этом является взаимно-однозначным криптографическим отображением из в предварительно определенное множество, причем отличается от , и является обновленным представлением .
6. Система по п.5, в которой средство (103) представления действия содержит блок (307) оценки функции для вычисления функции, чтобы получить представление на основе представления такое, что для и q при
причем f является отображением, определенным над , и g является отображением, определенным над .
7. Система по п.5 или 6, в которой и .
8. Система по п.3, в которой для всех значений и и по меньшей мере одного значения m в .
9. Система по п.1, в которой упомянутое действие над предназначено для изменения представления каждой переменной во множестве переменных , так что и , и
причем упомянутое действие над предназначено для изменения представления каждой переменной в , так что и ;
при этом , для , является функцией, определенной над , и , для каждой переменной в , является функцией, отображающей элементы в .
10. Система по п.2 или 3, дополнительно содержащая блок (601) преобразования для представления вложенной условной операции, задействующей первый набор вложенных условий, посредством функционально эквивалентной последовательности невложенных условных операций, задействующих второй набор условий.
11. Система по п.10, в которой блок (601) преобразования выполнен с возможностью:
комбинировать (701) соответственные выражения соответственных условных ветвей вложенной условной операции в члены вспомогательного выражения, каковые соответственные выражения ассоциированы с альтернативными значениями, которые должны быть присвоены конкретной переменной;
повторять (702) этап комбинирования соответственных выражений соответственных условных ветвей в члены вспомогательного выражения, с тем чтобы сгенерировался набор вспомогательных выражений, в котором члены скомбинированы различными способами,
генерировать код (703), чтобы оценить вспомогательные выражения и сохранить их результаты; и
генерировать код (704), чтобы комбинировать результаты вспомогательных выражений в зависимости от комбинированного условия, причем комбинированное условие является комбинацией набора условий, так что члены, соответствующие ветвям, которые неактуальны ввиду условия, взаимно уничтожаются.
12. Система по п.10, в которой средство (903) представления действия выполнено с возможностью идентифицировать по меньшей мере одну условную операцию из последовательности невложенных условных операций и соответствующее условие из второго набора условий, причем средство (903) представления действия выполнено с возможностью использовать идентифицированную условную операцию в качестве действия и идентифицированное соответствующее условие в качестве условия условного оператора.
13. Способ скрытия изменения во множестве переменных программы, содержащий этапы, на которых:
представляют (1001) значение переменной из переменных , причем является элементом множества , посредством представления , причем , и является элементом множества представлений , при этом является переменной состояния, которая является элементом множества и которая обеспечивает избыточность представлению для , и является взаимно-однозначным криптографическим отображением из в предварительно определенное множество; и
представляют (1002) действие над значениями подмножества множества переменных посредством действия над и действия над , чтобы получить обновленные представления , для , причем является взаимно-однозначным криптографическим отображением из в предварительно определенное множество, при этом
упомянутое действие над предназначено для изменения представления каждой переменной во множестве переменных согласно измененному значению переменной , и
упомянутое действие над предназначено для изменения представления каждой переменной в согласно измененному значению для .
14. Машиночитаемый носитель, на котором сохранен программный код, который при его исполнении процессором предписывает процессору выполнять способ по п.13.
US 8874928 B2, 28.10.2014 | |||
US 8756435 B2, 17.06.2014 | |||
Приспособление для суммирования отрезков прямых линий | 1923 |
|
SU2010A1 |
US 7383443 B2, 03.06.2008 | |||
RU 2012131957 A, 27.01.2014 | |||
Пресс для выдавливания из деревянных дисков заготовок для ниточных катушек | 1923 |
|
SU2007A1 |
Авторы
Даты
2020-02-21—Публикация
2015-12-08—Подача