RU2715021C2 - Скрытие исполнения программы - Google Patents

Скрытие исполнения программы Download PDF

Info

Publication number
RU2715021C2
RU2715021C2 RU2017126073A RU2017126073A RU2715021C2 RU 2715021 C2 RU2715021 C2 RU 2715021C2 RU 2017126073 A RU2017126073 A RU 2017126073A RU 2017126073 A RU2017126073 A RU 2017126073A RU 2715021 C2 RU2715021 C2 RU 2715021C2
Authority
RU
Russia
Prior art keywords
variables
action
condition
variable
representation
Prior art date
Application number
RU2017126073A
Other languages
English (en)
Other versions
RU2017126073A (ru
RU2017126073A3 (ru
Inventor
Хендрик Ян Йозеф Хюбертус ШЕПЕРС
Паулус Матхиас Хюбертус Мехтилдис Антониус ГОРИССЕН
Original Assignee
Конинклейке Филипс Н.В.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Конинклейке Филипс Н.В. filed Critical Конинклейке Филипс Н.В.
Publication of RU2017126073A publication Critical patent/RU2017126073A/ru
Publication of RU2017126073A3 publication Critical patent/RU2017126073A3/ru
Application granted granted Critical
Publication of RU2715021C2 publication Critical patent/RU2715021C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Abstract

Изобретение относится к области вычислительной техники. Технический результат заключается в повышении защиты программного обеспечения от утечки информации. Технический результат достигается за счёт представления значения
Figure 00000239
переменной
Figure 00000240
из переменных
Figure 00000241
, причем
Figure 00000242
является элементом множества
Figure 00000243
, посредством представления
Figure 00000244
, причем
Figure 00000245
, и
Figure 00000244
является элементом множества представлений
Figure 00000246
, при этом
Figure 00000247
является переменной состояния, которая является элементом множества
Figure 00000248
и обеспечивает избыточность представлению
Figure 00000244
для
Figure 00000239
,
Figure 00000249
является взаимно-однозначным криптографическим отображением из
Figure 00000250
в предварительно определенное множество; представления действия над значениями подмножества
Figure 00000251
множества переменных
Figure 00000252
посредством действия над
Figure 00000251
, предназначенного для изменения представления
Figure 00000253
каждой переменной
Figure 00000254
во множестве переменных
Figure 00000251
согласно измененному значению
Figure 00000255
переменной
Figure 00000254
, и действия над
Figure 00000256
, предназначенного для изменения представления
Figure 00000257
каждой переменной
Figure 00000258
в
Figure 00000256
согласно измененному значению
Figure 00000259
для
Figure 00000260
, чтобы получить обновленные представления
Figure 00000261
, для
Figure 00000262
, причем
Figure 00000263
является взаимно-однозначным криптографическим отображением из
Figure 00000250
в предварительно определенное множество. 3 н. и 11 з.п. ф-лы, 10 ил.

Description

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Изобретение относится к скрытию подробностей исполнения программы. В частности, изобретение относится к скрытию условной операции. В частности, изобретение относится к скрытию программного потока и потоков данных в программе, содержащей условное вычисление.
УРОВЕНЬ ТЕХНИКИ
Вычисление с зашифрованными значениями, не использующее операторы, которые раскрывают их функциональные возможности, может быть реализовано посредством табличного подхода. Программный код, т. е. его операция, может быть скрыт посредством использования таблиц соответствия. Применение этих таблиц к зашифрованным данным дает зашифрованный результат, итог скрытой операции. Однако распознавание операторов, таких как сравнения (<, =,...), является довольно простым, поскольку эти инструкции ограничены по количеству, обычно приводят к результату в виде изменения в потоке управления, и их итог имеет зашифрованный логический тип. Если это зашифрованное логическое значение защищает условную операцию, например в случае конструкции если-то или если-то-иначе, злоумышленник может распознать из потока управления аспекты операции. Кроме того, злоумышленник может создавать упорядочивание над зашифрованными значениями, которые сравнивались. В конечном итоге это может приводить к взлому шифрования.
В программном продукте часто необходимо выполнить сравнение. Например, проверить, было ли достигнуто некоторое пороговое значение или равен ли некоторый ввод предварительно определенному значению. В усложненных программах такие сравнения могут помочь злоумышленнику взломать кодирование.
В документе US 7,809,135 B2 раскрываются способы и системы, относящиеся к увеличению криптографической безопасности ключей, используемых программными средствами с криптографическими функциями. Это выполняется путем увеличения математической сложности программных средств. Компоненты и функции, используемые программными средствами, сначала определяются, и с использованием этих компонентов, функций и данных, обмен которыми осуществляется между ними, программные средства становятся более устойчивыми к анализу. Способы, используемые в увеличении аналитической устойчивости, сгруппированы в 3 общих типа: регулирование информации, обмен которой осуществляется между компонентами, замена некоторых компонентов другими, но родственными компонентами и регулирование потока данных между компонентами.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
Преимущества были бы обеспечены наличием улучшенного способа и системы для предотвращения утечки информации из программы в течение исполнения программы.
Чтобы решить эту проблему, в первом аспекте обеспечивается система для скрытия изменения во множестве переменных
Figure 00000001
программы. Система содержит:
средство представления значения для представления значения
Figure 00000002
переменной
Figure 00000003
из переменных
Figure 00000004
, причем
Figure 00000002
является элементом множества W, посредством представления
Figure 00000005
, причем
Figure 00000006
и
Figure 00000005
является элементом множества представлений
Figure 00000007
, причем
Figure 00000008
является переменной состояния, которая является элементом множества
Figure 00000009
и которая обеспечивает избыточность представлению
Figure 00000005
для
Figure 00000002
, и
Figure 00000010
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество; и
средство представления действия для представления действия над значениями подмножества V' из V посредством действия над V' и действия над V\V', причем
действие над V' изменяет представление
Figure 00000012
каждой переменной
Figure 00000013
во множестве переменных V' согласно измененному значению
Figure 00000014
переменной
Figure 00000013
так, что
Figure 00000015
, причем
Figure 00000016
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество, и
причем действие над V\V' изменяет представление
Figure 00000017
каждой переменной
Figure 00000018
в V\V' согласно измененному значению
Figure 00000019
для
Figure 00000020
так, что
Figure 00000021
.
Благодаря этой системе, злоумышленнику становится сложно обнаружить, какие из переменных были в действительности изменены в программе, поскольку представления переменных, которые не были изменены, также изменяются путем изменения переменной состояния
Figure 00000022
.
Например, действие содержит условный оператор, который определяет действие над множеством переменных V 1, если условие выполняется, и действие над множеством переменных V 2, если условие не выполняется, причем множество переменных V является объединением V 1 и V 2, то есть
Figure 00000023
, и средство представления действия сконфигурировано, чтобы использовать множество переменных V 1 или множество переменных V 2 в качестве множества переменных V' согласно тому, выполняется ли условие. Это помогает избежать утечки информации об условной конструкции и о том, которая ветвь условного сегмента кода была выбрана. Средство представления действия может использовать выбранное множество V' при представлении действия над подмножеством V' посредством действия над V' и действия над V\V', как описано выше.
Множество переменных V 1 и множество переменных V 2 могут иметь пересечение V 3 из переменных, которые подвергаются обоим из действий, то есть
Figure 00000024
, причем действие изменяет каждую переменную
Figure 00000025
множества V 3 согласно функции f, если условие выполняется, и согласно функции g, если условие не выполняется, причем средство представления действия сконфигурировано, чтобы определять представление
Figure 00000026
каждой переменной
Figure 00000025
множества V 3 так, что на основе того, выполняется ли условие согласно вводу, либо
Figure 00000027
и
Figure 00000028
, либо
Figure 00000029
и
Figure 00000030
,
причем
Figure 00000031
является отображением из
Figure 00000011
в W.
Благодаря использованию этого признака, злоумышленнику становится сложно обнаружить, была ли
Figure 00000032
действительно применена к переменной
Figure 00000033
или же
Figure 00000034
была применена к переменной
Figure 00000033
.
Средство представления действия может быть сконфигурировано, чтобы вызывать поиск представлений
Figure 00000035
, соответствующих вводу в отношении условия и представлений
Figure 00000005
, с использованием по меньшей мере одной таблицы соответствия, которая отображает кортеж ввода в отношении условия и представлений
Figure 00000005
в соответствующие представления
Figure 00000035
. Ввод может, например, содержать (опционально зашифрованную) булеву переменную. Альтернативно, ввод может содержать переменные, возникающие в предикате, который определяет условие. Этот предикат и фактические действия могут быть скрыты в по меньшей мере одной таблице соответствия.
В конкретном примере
Figure 00000036
, и средство (103) представления действия сконфигурировано, чтобы идентифицировать одну или несколько входных переменных, которые определяют условие b, и причем средство (103) представления действия содержит блок (305) перестановки для выполнения скрытой операции перестановки на основе по меньшей мере одного представления r, причем
Figure 00000037
, переменной
Figure 00000003
во множестве V и одной или нескольких входных переменных так, что для
Figure 00000038
и q
Figure 00000039
при
Figure 00000040
Figure 00000041
причем
Figure 00000042
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество, причем
Figure 00000042
отличается от
Figure 00000010
, причем
Figure 00000043
является представлением,
и/или блок (306) перестановки для выполнения скрытой операции перестановки на основе представления
Figure 00000044
и одной или нескольких переменных так, что для
Figure 00000038
и q
Figure 00000039
при
Figure 00000045
Figure 00000046
причем
Figure 00000047
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество, причем
Figure 00000047
отличается от
Figure 00000016
и
Figure 00000048
является обновленным представлением
Figure 00000035
.
Эти операции перестановки могут быть использованы в качестве этапов предварительной обработки и/или последующей обработки, соответственно, при вычислении представления r' так, что скрытое осуществление фактических функций f и/или g может быть упрощено. Если используется один из блоков перестановки, роли w и
Figure 00000022
до и после действия могут меняться местами. С этим можно разобраться путем учета этого в остальной системе, например посредством подходящего программного кода, который предполагает, что кодирование
Figure 00000010
изменилось.
Средство представления действия может дополнительно содержать блок оценки функции для вычисления функции, чтобы получить представление
Figure 00000049
на основе представления
Figure 00000043
такое, что для
Figure 00000038
и q
Figure 00000039
при
Figure 00000050
Figure 00000051
причем f является отображением, определенным над W, и g является отображением, определенным над W.
Таким образом, функции f и g могут применяться к аспекту w или
Figure 00000022
представления
Figure 00000043
в зависимости от операции перестановки, выполненной ранее, так, что скрытое осуществление f и g может быть одним и тем же независимо от того, выполняется ли условие. Операция перестановки, которая может выполняться после этого, осуществляет перестановку аспектов w и
Figure 00000022
обратно в зависимости от условия, чтобы отменить операцию перестановки, выполненную первой операцией перестановки.
В конкретном примере
Figure 00000052
. Это означает, что две операции перестановки используют идентичные криптографические кодирования. Таким образом, один и тот же код и/или таблицы могут повторно использоваться для обеих операций перестановки.
В одном примере
Figure 00000053
для всех значений w и
Figure 00000022
и по меньшей мере одного m из
Figure 00000054
. Это может обеспечивать упрощенное и/или более симметричное осуществление.
В одном примере действие над V' сконфигурировано для изменения представления
Figure 00000012
каждой переменной
Figure 00000013
во множестве переменных V' так, что
Figure 00000055
и
Figure 00000056
, и
причем действие над V\V' сконфигурировано для изменения представления
Figure 00000017
каждой переменной
Figure 00000018
в V\V' так, что
Figure 00000057
и
Figure 00000058
;
причем
Figure 00000059
для
Figure 00000060
, является функцией, определенной над W, и
Figure 00000061
для каждой переменной
Figure 00000018
в V\V' является функцией, отображающей элементы
Figure 00000011
в W.
Это пример того, какие изменения следует сделать над представлениями.
Система может дополнительно содержать средство представления вложенных условных конструкций для представления вложенной условной операции, задействующей первый набор вложенных условий, в функционально эквивалентной последовательности невложенных условных операций, задействующих второй набор условий.
Система может дополнительно содержать блок преобразования для преобразования вложенной условной операции, задействующей первый набор вложенных условий, в функционально эквивалентную последовательность невложенных условных операций, задействующих второй набор условий. Это помогает улучшить предотвращение утечки информации, поскольку каждая из невложенных условных операций оценивается, например, посредством кода, генерируемого первым и вторым блоками генерирования, так, что все выражения, возникающие в условных операциях, оцениваются и могут влиять на представление r'. Меньше ветвей пропускается.
Например, блок преобразования может быть сконфигурирован, чтобы комбинировать соответственные выражения соответственных условных ветвей вложенной условной операции в термины вспомогательного выражения, причем соответственные выражения ассоциированы с альтернативными значениями, которые должны быть присвоены конкретной переменной; повторять этап, чтобы комбинировать соответственные выражения соответственных условных ветвей в термины вспомогательного выражения так, что генерируется набор вспомогательных выражений, в котором термины комбинируются различными способами, генерировать код, чтобы оценить вспомогательные выражения и сохранить их результаты; и генерировать код, чтобы комбинировать результаты вспомогательных выражений в зависимости от комбинированного условия, причем комбинированное условие является комбинацией набора условий, так, что термины, соответствующие ветвям, которые неактуальны ввиду условия, взаимно уничтожаются. Такая система может быть использована, чтобы скрыть вложенные условные операторы путем их уплощения в последовательность условных операторов, которые не являются вложенными. Путем комбинирования выражений, возникающих в различных условных ветвях, во вспомогательные выражения и затем комбинирования вспомогательных выражений таким образом, что выражения, которые неактуальны ввиду условий, взаимно уничтожаются, многие из выражений оцениваются в программе и могут влиять на зашифрованный итог, делая сложным анализ того, какие выражения в действительности влияют на дешифрованное значение w', соответствующее зашифрованному итогу.
Средство представления действия может быть сконфигурировано, чтобы идентифицировать по меньшей мере одну условную операцию из последовательности невложенных условных операций и соответствующее условие из второго набора условий, и причем средство представления действия сконфигурировано, чтобы использовать идентифицированную условную операцию в качестве действия и идентифицированное соответствующее условие в качестве условия условного оператора. Такая комбинация обеспечивает, в частности, хорошее скрытие того, что происходит во фрагменте условного кода. Кроме того, блок определения может быть сконфигурирован, чтобы идентифицировать каждую условную операцию из последовательности невложенных условных операций и каждое соответствующее условие из второго набора условий, причем первый блок генерирования и второй блок генерирования конфигурируются для обработки каждой идентифицированной условной операции и соответствующего условия.
В другом аспекте обеспечивается способ для скрытия изменения во множестве переменных
Figure 00000001
программы, причем способ содержит этапы, на которых
представляют значение
Figure 00000002
переменной
Figure 00000003
из переменных
Figure 00000004
, причем w является элементом множества W, посредством представления
Figure 00000005
, причем
Figure 00000006
и
Figure 00000005
является элементом множества представлений
Figure 00000007
, причем
Figure 00000008
является переменной состояния, которая является элементом множества
Figure 00000009
и которая обеспечивает избыточность представлению
Figure 00000005
для
Figure 00000002
, и
Figure 00000010
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество; и
представляют действие над значениями подмножества V' из V посредством действия над V' и действия над V\V', чтобы получить обновленные представления
Figure 00000062
, для
Figure 00000060
, причем
Figure 00000016
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество, и причем
действие над V' сконфигурировано для изменения представления
Figure 00000012
каждой переменной
Figure 00000013
во множестве переменных V' согласно измененному значению
Figure 00000014
переменной
Figure 00000013
, и
действие над V\V' сконфигурировано для изменения представления
Figure 00000017
каждой переменной
Figure 00000018
в V\V' согласно измененному значению
Figure 00000019
для
Figure 00000020
.
Согласно другому аспекту, обеспечивается система для скрытия условной операции, причем система содержит
блок представления для представления значения w, причем w является элементом множества W, посредством представления r, причем
Figure 00000063
и r является элементом множества представлений
Figure 00000064
, причем
Figure 00000022
является переменной состояния, которая является элементом множества
Figure 00000009
и которая обеспечивает избыточность представлению r для w, и
Figure 00000010
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество; и
блок получения для получения представления r' значения w' из представления r на основе ввода в отношении условия, причем w' является элементом множества W, причем r' является элементом множества представлений
Figure 00000065
, причем
Figure 00000066
, причем
Figure 00000067
является переменной состояния, которая является элементом множества
Figure 00000009
и которая обеспечивает избыточность представлению r' для w', причем
Figure 00000016
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество, причем на основе того, выполняется ли условие согласно вводу, либо w' ассоциируется с f(w), либо
Figure 00000067
ассоциируется с
Figure 00000068
, причем f является нетривиальным отображением, определенным над W, и h является отображением из
Figure 00000011
в W.
Блок представления обеспечивает представление r, которое является избыточным представлением значения w. То есть любое отдельное значение w имеет множество различных представлений r, поскольку r может быть любым элементом
Figure 00000069
. Это означает, что изменение r не обязательно означает изменение w, поскольку r может просто измениться в другой элемент
Figure 00000069
для того же самого значения w. Такое представление обеспечивает возможность условной операции, например, если условие b выполняется, обновлять w в w'=f(w) для скрытия. Таким образом, если условие действительно выполняется, представление r обновляется, чтобы стать представлением r', которое является представлением f(w), т. е. членом множества
Figure 00000070
. С другой стороны, если условие не выполняется, представление r все равно обновляется, но в другое представление того же самого значения w, т. е. (другой) член множества
Figure 00000071
. Поскольку в последнем случае функция f используется, чтобы выбрать конкретный член множества
Figure 00000071
, та же самая функция на основе f влияет на операцию, которая выполняется и применяется к представлению r независимо от того, выполняется ли условие. Любой энтропийный эффект, обеспеченный функцией f, таким образом, распространяется в представлении w' независимо от того, выполняется ли условие. То есть даже когда злоумышленник изменяет значение r или условие b и смотрит на любые эффекты, оказываемые этим на результат r', все равно сложно извлечь информацию о программе и ее переменных. Дополнительно, злонамеренному наблюдателю также сложно выяснить, была функция f применена к значению w или нет.
Блок определения может быть сконфигурирован, чтобы определять представление
Figure 00000072
так, что на основе того, выполняется ли условие согласно вводу, либо w' ассоциируется с f(w) и
Figure 00000067
ассоциируется с
Figure 00000073
, либо w' ассоциируется с g(w) и
Figure 00000067
ассоциируется с
Figure 00000068
, причем g является (нетривиальным) отображением, определенным над W. Особенно полезно создать скрытое осуществление, например, условного оператора, у которого есть часть "иначе": если b то w=f(w) иначе w=g(w). Обе функции f и g влияют на итог r', несмотря на то, что только одна из этих функций влияет на часть w, или множество
Figure 00000074
, из которого выбирается представление r'. Другая функция влияет только на то, какой элемент
Figure 00000074
выбирается. Таким образом, только одна из функций f и g (как определяется условием) определяет базовое дешифрованное значение w' представления r'.
Блок получения может быть сконфигурирован, чтобы осуществлять поиск представления r', соответствующего вводу в отношении условия и представления r, с использованием по меньшей мере одной таблицы соответствия, которая отображает кортеж ввода и представления r в соответствующее представление r'. Осуществление посредством таблиц соответствия обеспечивает возможность предотвратить утечку какой-либо информации, задействованной в вычислении условия из входных переменных и функции f. Кроме того, любой условный оператор или инструкция ветви, которые зависят от условия, могут избегаться.
Например,
Figure 00000075
. Блок получения может быть сконфигурирован, чтобы идентифицировать одну или несколько переменных, которые определяют условие b, и блок получения может содержать блок перестановки для выполнения скрытой операции перестановки на основе представления r и одной или нескольких переменных так, что для
Figure 00000076
и q
Figure 00000039
при
Figure 00000040
Figure 00000077
причем
Figure 00000042
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество, причем
Figure 00000042
отличается от
Figure 00000010
, причем
Figure 00000078
является представлением,
и/или выполнения скрытой операции перестановки на основе представления
Figure 00000079
и одной или нескольких переменных так, что для
Figure 00000038
и q
Figure 00000039
при
Figure 00000045
Figure 00000080
причем
Figure 00000047
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество, причем
Figure 00000047
отличается от
Figure 00000016
.
Эти операции перестановки могут использоваться в качестве этапов предварительной и/или последующей обработки, соответственно, при вычислении представления r' так, что скрытое осуществление фактических функций f и/или g может быть упрощено.
Блок получения может дополнительно содержать блок оценки функции для вычисления функции, чтобы получить представление
Figure 00000049
на основе представления
Figure 00000043
такое, что для
Figure 00000038
и q
Figure 00000039
при
Figure 00000050
Figure 00000081
причем g является отображением, определенным над W.
Таким образом, функции f и g могут применяться к аспекту w или
Figure 00000022
представления
Figure 00000043
в зависимости от операции перестановки, выполненной до этого, так, что скрытое осуществление f и g может быть одним и тем же независимо от того, выполняется ли условие.
Например,
Figure 00000082
для всех значений w и
Figure 00000022
. В этом примере, когда условие не истинно, на аспект
Figure 00000022
представления не влияет аспект w представления. Это улучшает симметричность схемы.
Блок определения может быть сконфигурирован, чтобы определять представление
Figure 00000083
такое, что на основе условия либо
Figure 00000084
и
Figure 00000085
, либо
Figure 00000086
и
Figure 00000087
. Это может использоваться, чтобы создавать скрытое осуществление, например, условного оператора, который не имеет части "иначе": если b то w=f(w).
Согласно другому аспекту изобретения, обеспечивается способ выполнения операции условным образом. Способ содержит этапы, на которых
представляют значение w, причем w является элементом множества W, посредством представления r, причем
Figure 00000063
и r является элементом множества представлений
Figure 00000064
, причем
Figure 00000022
является переменной состояния, которая является элементом множества
Figure 00000009
и которая обеспечивает избыточность представлению r для w, и
Figure 00000010
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество; и
получают представление r' значения w' из представления r на основе ввода в отношении условия, причем w' является элементом множества W, причем r' является элементом множества представлений
Figure 00000065
, причем
Figure 00000066
, причем
Figure 00000067
является переменной состояния, которая является элементом множества
Figure 00000009
и которая обеспечивает избыточность представлению r' для w', причем
Figure 00000016
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество, причем на основе того, выполняется ли условие согласно вводу, либо w' ассоциируется с f(w), либо
Figure 00000067
ассоциируется с
Figure 00000068
, причем f является нетривиальным отображением, определенным над W, и h является отображением из
Figure 00000011
в W.
Согласно другому аспекту изобретения, обеспечивается система для создания компьютерного кода, чтобы выполнять операцию условным образом. Система содержит
блок идентификации для идентификации условия и условной операции f, которая должна быть выполнена над переменной w так, что, если условие выполняется, переменная w' вычисляется такая, что
Figure 00000084
, причем w' является элементом множества W, и причем f является отображением, определенным над W;
первый блок генерирования для генерирования первого компьютерного кода, причем первый компьютерный код сконфигурирован, чтобы при исполнении представлять переменную w, причем w является элементом множества W, посредством представления r, причем
Figure 00000063
и r является элементом множества представлений
Figure 00000064
, причем
Figure 00000022
является переменной состояния, которая является элементом множества
Figure 00000009
и которая обеспечивает избыточность представлению r для w, и
Figure 00000010
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество; и
второй блок генерирования для генерирования второго компьютерного кода, причем второй компьютерный код сконфигурирован, чтобы при исполнении определять представление r' значения w' на основе ввода в отношении условия, причем r' является элементом множества представлений
Figure 00000065
, причем
Figure 00000066
, причем
Figure 00000067
является переменной состояния, которая является элементом множества
Figure 00000009
и которая обеспечивает избыточность представлению r' для w', причем
Figure 00000016
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество; и причем, если условие выполняется согласно вводу,
Figure 00000084
, и, если условие не выполняется согласно вводу,
Figure 00000087
, причем h является отображением из
Figure 00000011
в W.
Такая система может использоваться для преобразования открытых (не скрытых) операций в скрытый код. Например, система может осуществляться в составе компилятора, который генерирует скрытый код. Например, генерируемый компьютерный код может содержать машинный код, псевдокод или виртуальный машинный код.
Согласно другому аспекту, обеспечивается способ создания машинного кода, чтобы выполнять операцию условным образом, причем способ содержит этапы, на которых
идентифицируют условие и условную операцию f, которая должна быть выполнена над переменной w так, что, если условие выполняется, переменная w' вычисляется такая, что
Figure 00000084
, причем w' является элементом множества W, и причем f является отображением, определенным над W;
генерируют первый компьютерный код, причем первый компьютерный код сконфигурирован, чтобы при исполнении представлять переменную w, причем w является элементом множества W, посредством представления r, причем
Figure 00000063
и r является элементом множества представлений
Figure 00000064
, причем
Figure 00000022
является переменной состояния, которая является элементом множества
Figure 00000009
и которая обеспечивает избыточность представлению r для w, и
Figure 00000010
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество; и
генерируют второй компьютерный код, причем второй компьютерный код сконфигурирован, чтобы при исполнении определять представление r' значения w' на основе ввода в отношении условия, причем r' является элементом множества представлений
Figure 00000065
, причем
Figure 00000066
, причем
Figure 00000067
является переменной состояния, которая является элементом множества
Figure 00000009
и которая обеспечивает избыточность представлению r' для w', причем
Figure 00000016
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество; и причем, если условие выполняется согласно вводу,
Figure 00000084
, и, если условие не выполняется согласно вводу,
Figure 00000087
, причем h является отображением из
Figure 00000011
в 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 обозначает множество операндов (входных значений операции), которые должны быть закодированы. Определим конечное множество
Figure 00000009
состояний и конечное множество V с мощностью, равной произведению мощностей W и
Figure 00000009
. Элементы
Figure 00000011
отображаются взаимно-однозначным образом в V секретной функций кодирования
Figure 00000010
. Закодированные представители элемента
Figure 00000088
являются членами множества
Figure 00000089
Количество представителей каждого элемента
Figure 00000088
, таким образом, равно мощности
Figure 00000009
. В результате, пути данных, переносящие символы из V, равны (мощность
Figure 00000090
) или шире (мощность
Figure 00000091
), чем пути данных для переноса символов из W. Иными словами, когда мощность
Figure 00000009
больше одного, существует больше значений, которые могут представлять любое конкретное значение w, поскольку представление
Figure 00000092
зависит не только от w, но также и от переменной состояния
Figure 00000022
, которая не обязательно имеет какой-либо смысл, но может быть выбрана случайным образом. Эта переменная состояния
Figure 00000022
введена лишь для того, чтобы зашифровывать значение w и скрывать любые операции, выполняемые над w. Предпочтительно,
Figure 00000093
или по меньшей мере мощность W равна мощности
Figure 00000009
. Однако это не ограничение.
Рассмотрим функцию
Figure 00000094
, которая должна быть закодирована (или скрыта). Построим функцию
Figure 00000095
такую, что
Figure 00000096
и
Figure 00000097
мы имеем
Figure 00000098
. Таким образом, F отображает представитель w в представитель f(w). Общим определением может быть:
Figure 00000099
. (Уравнение 1)
В этом примере представитель
Figure 00000100
для f(w) частично определяется функцией
Figure 00000101
. То есть значение состояния, ассоциированное с представителем f(w), может зависеть от обоих из значения w и состояния
Figure 00000022
, ассоциированного с представителем w, с использованием соответствия
Figure 00000102
. В конкретном примере g зависит только от
Figure 00000022
, так что
Figure 00000103
. Однако дальнейшее не ограничивается этим конкретным примером.
Представление значения
Figure 00000092
и кодирование операции f(w), определенные в уравнении 1, таким образом, скрываются с использованием некоторого отображения g. Это отображение g может быть разным для каждой операции, которая возникает в программе. Соответственно, набор инструкций с соответственными операциями f i вводит соответствующий набор инструкций с, соответственно, соответствиями g i . Порядок исполнения инструкций с операциями f i может порождать порядок исполнения для инструкций с соответствиями g i . Фактически, помимо вычисления, составляемого операциями f i , новое вычисление возникает для вычисления g i . Это последние вычисление здесь называется вычислением
Figure 00000022
или траекторией
Figure 00000022
. Подобным образом, функция шифрования
Figure 00000010
может быть различной для каждой операции в программе путем введения последовательности соответственных функций шифрования
Figure 00000104
, так что представление любого значения w может быть различным после каждой операции. В таком случае, уравнение 1 обобщается до уравнения 1a:
Figure 00000105
. (Уравнение 1a)
Для описания инструкции может задействоваться симметричное обобщение уравнения 1. Рассмотрим функцию
Figure 00000106
, соответствие
Figure 00000107
. Уравнение 1 может быть обобщено до:
Figure 00000108
(Уравнение 2)
В таком случае, возможно, частичная информация f(w) в уравнении 1 может передаваться в составе q 0 или q 1. Можно сделать два наблюдения. Первое наблюдение в том, что в конкретном примере q 0, а также q 1 могут быть шифрованиями и что
Figure 00000010
"только" комбинирует значения. Второе наблюдение в том, что роль w как значения и
Figure 00000022
как состояния может рассматриваться как уменьшающаяся. Ее достаточно для возможности определить f(w) или w,
Figure 00000109
или
Figure 00000022
.
Для запутывания программного потока операции скачка могут быть устранены и заменены альтернативными операциями над вышеописанными представлениями. Однако в отличие от случая признаков преобразования "если" современных архитектур процессора, это преобразование "если" делается не для того, чтобы предотвратить затратный магистральный сбой, а для того, чтобы удалить любые наблюдаемые изменения в потоке управления. Таким образом, анализ потока управления не раскрывает какие-либо выборы, сделанные в программе. Кроме того, при кодировании условной программы, такой как "если булево b истинно, то операция F, иначе операция G", может быть обеспечено посредством методик, раскрываемых здесь, чтобы обе ветви ("операция F" и "операция G") участвовали в
Figure 00000092
, независимо от итога условия ("если булево b истинно"). Благодаря этому может достигаться статистический разброс условия по всей программе. Например,
- вывод w определяется ветвью, которая соответствует итогу условия,
- вывод
Figure 00000022
определяется ветвью, которая не соответствует итогу условия.
Как w, так и
Figure 00000022
могут вычисляться одновременно и/или могут неразделимо соединяться друг с другом посредством
Figure 00000010
. Путем анализа получающихся в результате данных, ни выбранная ветвь, ни значение условия не могут быть определены. Операция скачка, которая осуществлялась бы в предшествующем уровне техники на основе итога условной конструкции, может быть устранена, таким образом, делая сложным извлечение информации из потока управления программы. Значение
Figure 00000092
может быть поставлено в зависимость от обеих ветвей конструкции если-то-иначе. В терминах теории информации энтропия w и
Figure 00000022
очень хорошо распределена.
Например, программное представление преобразования, выполняемого блоком 101 преобразования с фиг.1, может быть следующим:
если b то w':=f(w) иначе w':=g(w).
В примерном варианте осуществления, показанном на фиг.2, блок 103 получения принимает зашифрованное представление r значения w, как объяснено выше, и входную информацию в отношении условия b 104. Эта входная информация может быть булевой или зашифрованной булевой переменной. Альтернативно, входная информация может содержать одну или несколько переменных, которые могут комбинироваться посредством, например, блока 101 преобразования в предикате, который определяет условие.
Вышеупомянутая условная программа с фиг.1 может быть перепрограммирована путем внесения избыточности с использованием переменной состояния, как описано выше, где
Figure 00000110
является представлением операнда w, и r' является представлением итога w' таким, что
Figure 00000111
для некоторых значений
Figure 00000022
и
Figure 00000067
. Вывод из блока 103 получения может быть кратко записан следующим образом:
если b
то r':=
Figure 00000112
;
иначе r':=
Figure 00000113
.
Каждая из операций
Figure 00000112
и
Figure 00000113
может быть осуществлена в форме таблицы соответствия. Однако чтобы избежать исполнения условного оператора и соответствующей условной операции скачка внутри блока 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, причем
Figure 00000114
.
строка 1: если b то r':=
Figure 00000115
иначе r':=
Figure 00000116
конец если
строка 2:
Figure 00000117
:=
Figure 00000118
.
строка 3: если b то
Figure 00000119
:=
Figure 00000120
иначе
Figure 00000119
:=
Figure 00000121
конец если
Вывод:
Figure 00000119
, причем
Figure 00000122
или
Figure 00000123
Строка 1 вышеописанного фрагмента кода объясняет функциональные возможности операции 305 перестановки, которая условным образом осуществляет перестановку частей значения (w) и состояния (
Figure 00000022
) представления
Figure 00000124
на основе условия b (позиция 104). Строка 2 вышеописанного фрагмента кода объясняет, как функции f и g применяются к представлению r' в блоке 307. Строка 3 объясняет функциональные возможности операции 306 перестановки, которая снова условным образом осуществляет перестановку частей значения (w) и состояния (
Figure 00000022
) представления
Figure 00000124
на основе условия b (позиция 104).
Следует заметить, что после строки 1 r' может быть либо
Figure 00000115
, либо
Figure 00000116
в зависимости от b. В строке 2 символы p и q определяются так, что
Figure 00000125
. В строке 2 функция f эффективно применяется к w, если b истинно. Однако если b не истинно, функция g эффективно применяется к w, но ввиду предшествующей операции перестановки в строке 1 w вошло в состав части "состояния" или "
Figure 00000022
" представления r'. Следовательно, дополнительная операция перестановки обеспечивается в строке 3 для смены частей "w" и "
Figure 00000022
" из r'. В строке 3 символы u и v определяются так, что
Figure 00000126
. То есть
Figure 00000127
и
Figure 00000128
. В строке 3, если b не истинно, желаемое значение, которое было захвачено в части "состояния" или "
Figure 00000022
" представления
Figure 00000117
, перемещается в часть "w" представления
Figure 00000119
.
Каждая из строк 1 и 3 обозначает функцию перестановки. Такая функция перестановки может осуществляться в качестве таблицы соответствия, причем верное значение ищется на основе значения b и представления r (или
Figure 00000117
, соответственно). Существует возможность использовать одну и ту же таблицу соответствия для обеих строк 1 и 3 путем выбора
Figure 00000129
,
Figure 00000130
,
Figure 00000131
, и
Figure 00000132
таких, что
Figure 00000133
и
Figure 00000134
. Существует возможность закодировать итог строк 1-3 в одной таблице соответствия, которая непосредственно отображает значения r и b в соответствующие значения
Figure 00000119
.
Со ссылкой на фиг.2, блок 103 получения, который выполняет скрытое вычисление, соответствующее этому фрагменту кода, может также быть сконфигурирован, чтобы определять вывод следующим образом:
Ввод: условие b и представление r, причем
Figure 00000135
.
если b
то r':=
Figure 00000136
;
иначе r':=
Figure 00000137
.
Здесь h является отображением из
Figure 00000011
в W. Никакая операция перестановки не используется в этом случае. Также это осуществление подходит для случаев, когда
Figure 00000138
или когда мощность W отличается от мощности
Figure 00000009
. Существует возможность осуществлять обе ветви условного оператора в форме таблицы соответствия и применять одну из таблиц соответствия в зависимости от условия b. Функции f и g будут влиять на итог r' независимо от условия b. Альтернативно, может быть осуществлена одна таблица соответствия, которая отображает кортежи b (или переменные, которые определяют b) и r в соответствующие представления r'.
Особым случаем является то, когда не существует ветви "иначе" в нескрытой версии программы, т. е. рассмотрим программу
если b то w':=f(w) конец.
В этом случае функция g(w) из предыдущих примеров равна тождеству. То есть блок 103 определения сконфигурирован, чтобы определять представление
Figure 00000083
так, что на основе условия либо
Figure 00000084
и
Figure 00000085
(когда условие истинно), либо
Figure 00000086
и
Figure 00000087
(когда условие ложно).
Это не представляет угрозы безопасности как таковой, поскольку всегда существует некоторое развитие, и энтропийный разброс поддерживается путем применения функции f либо к w, либо к состоянию
Figure 00000022
зашифрованной области. Однако эта ситуация может быть дополнительно улучшена путем балансирования обеих ветвей путем внесения фиктивных операций для переменных, которые не подвергаются воздействию. Рассмотрим операцию "Баланс", цель которой дополнительно скрыть программу путем балансирования любого условного оператора, где различные переменные могут подвергаться воздействию в зависимости от условия.
Figure 00000139
Figure 00000140
Figure 00000141
причем, например, Баланс(x:=x+1,y:=f(5)) означает x:=x+1; Фикция(y). Здесь Фикция(y) может представлять любую операцию над переменной, которая не изменяет эту переменную. Например, Фикция(y) может означать любое из:
Figure 00000142
,
Figure 00000143
,
Figure 00000144
. Другие фиктивные операции будут очевидны специалисту в области техники с учетом настоящего раскрытия.
Иными словами, условный сегмент кода, содержащий набор ветвей, причем каждая ветвь условным образом исполняется в зависимости от условия, может быть "сбалансирован" путем:
- определения переменной, которая изменяется в по меньшей мере одной ветви из условных ветвей, но не в по меньшей мере одной другой ветви из условных ветвей;
- создания фиктивной операции для этой определенной переменной;
- включения фиктивной операции в по меньшей мере одну другую ветвь из условных ветвей.
Вышеупомянутые три этапа могут повторяться для каждой переменной, задействуемой в условных ветвях.
Фиг.4 изображает способ выполнения операции условным образом. На этапе 401 значение w, причем w является элементом множества W, представляется посредством представления r, причем
Figure 00000063
и r является элементом множества представлений
Figure 00000064
, причем
Figure 00000022
является переменной состояния, которая является элементом множества
Figure 00000009
и которая обеспечивает избыточность представлению r для w, и
Figure 00000010
является криптографическим отображением из
Figure 00000011
в предварительно определенное множество. Это представление r может приниматься, например. Альтернативно, представление может генерироваться из входного значения w путем определения переменной состояния
Figure 00000022
в качестве случайного числа и вычисления или поиска
Figure 00000145
.
На этапе 402 представление r' значения w' определяется, причем w' является элементом множества W, причем r' является элементом множества представлений
Figure 00000065
, причем
Figure 00000066
, причем
Figure 00000067
является переменной состояния, которая является элементом множества
Figure 00000009
и которая обеспечивает избыточность представлению r' для w', причем
Figure 00000010
' является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество. Например, значение r' ищется в таблице соответствия на основе одной или нескольких входных переменных, которые определяют условие b и представление r. Опционально, последовательность поисков в таблице выполняется, как описано выше, включающая в себя операцию перестановки, операцию функции и другую операцию перестановки. Таблицы проектируются таким образом, что в зависимости от условия b либо w' ассоциируется с f(w), либо
Figure 00000067
ассоциируется с
Figure 00000068
. Здесь f является отображением, определенным над W, и h является отображением из
Figure 00000011
d
Figure 00000146
.
В конкретном примере вышеописанный способ применяет f к части "w" зашифрованного представления
Figure 00000063
так, что
Figure 00000147
на основе условия, например, если условие истинно. В противном случае f применяется к части "
Figure 00000022
" в
Figure 00000063
так, что
Figure 00000148
, например, если условие ложно. Дополнительные варианты способа могут быть обеспечены, как объяснено выше со ссылками на фиг.1-3. Например, варианты с ветвью "иначе" могут быть сделаны так, что на основе условия либо
Figure 00000149
, либо
Figure 00000150
.
Фиг.5 изображает систему для создания машинного кода, чтобы выполнять операцию условным образом. Система содержит блок 501 идентификации для идентификации условия и условной операции f, которая должна быть выполнена над переменной w так, что, если условие выполняется, переменная w' должна быть вычислена такая, что
Figure 00000084
, причем w' является элементом множества W, и причем f является отображением, определенным над W. Например, блок 501 идентификации может соединяться с модулем синтаксического анализатора (парсера) компилятора (не показан), который извлекает выражения компьютерной программы для того, чтобы идентифицировать условие и условную операцию.
Блок 501 идентификации может обеспечивать информацию в отношении идентифицированных условия и условной операции первому блоку 502 генерирования, который генерирует машинный код. Сгенерированный машинный код при исполнении представляет переменную w, причем w является элементом множества W, посредством представления r, причем
Figure 00000063
и r является элементом множества представлений
Figure 00000064
, причем
Figure 00000022
является переменной состояния, которая является элементом множества
Figure 00000009
и которая обеспечивает избыточность представлению r для w, и
Figure 00000010
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество. Например, машинный код может генерировать представление r из фактического входного значения w и случайного числа
Figure 00000022
. Альтернативно, машинный код, сгенерированный первым блоком 502 генерирования, может при исполнении осуществлять ссылку на местоположение памяти, в котором хранится представление, или принимать представление r от другого программного компонента или устройства ввода.
Система дополнительно содержит второй блок 503 генерирования. Второй блок 503 генерирования генерирует машинный код для определения представления r' значения w' на основе представления r и ввода в отношении условия, причем r' является элементом множества представлений
Figure 00000065
, причем
Figure 00000066
, причем
Figure 00000067
является переменной состояния, которая является элементом множества
Figure 00000009
и которая обеспечивает избыточность представлению r' для w', причем
Figure 00000016
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество. Если условие выполняется, w'=f(w), и, если условие не выполняется,
Figure 00000087
, причем h является отображением из
Figure 00000011
в 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 такой инструкции могут содержать множество выражений, например последовательность операций, обозначенных, например, как "F 1; F 2", содержать циклы, рекурсию или дополнительный условный сегмент кода, такой как дополнительный условный оператор. Последняя ситуация представляет вложенный логический защищенный выбор.
Определим программу P следующим образом:
Figure 00000151
Итак, существует четыре альтернативы (F, G, H и J), из которых только одна должна исполняться. Когда вышеописанные методики применяются к P1 и P2, главная ветвь, которая зависит от b1, все равно не обязательно полностью покрывается методикой скрытия.
Один способ решить это состоит в замене вложенных условных операторов последовательностью невложенных условных операторов и сделать это таким образом, что все выражения каждой ветви (F, G, H, J) оцениваются в процессе исполнения этой последовательности невложенных условных операторов.
Для такого преобразования программы выражения могут сначала быть сбалансированы путем внесения фиктивных операций.
Системный способ может применяться для уплощения программы так, чтобы она больше не содержала вложенных условных операторов.
Как мы видели ранее, наш способ действует наилучшим образом с точки зрения криптографии, если программа энтропийно полностью сбалансирована, в особенности пара ветвей условного оператора. В случае, когда ветвь содержит оба (безусловных) присвоения и один или несколько вложенных условных операторов, мы можем осуществить их "уплощение" путем распространения копии таких присвоений в каждую ветвь условного оператора следующим образом:
-
Figure 00000152
Figure 00000153
-
Figure 00000154
Figure 00000155
Рассмотрим следующий вложенный условный оператор, который предпочтительно балансируется в отношении переменной x:
если b 0
то если b 1
то x:=выр 0;
иначе x:=выр 1;
конец если;
иначе если b 2
то x:=выр 2;
иначе x:=выр 3;
конец если;
конец если;
Здесь выр 0, выр 1, выр 2 и выр 3 являются выражениями, которые зависят от x.
При добавлении p:=выр i +выр i +1 и q:=выр i -выр i +1 в качестве вспомогательных переменных эта программа может быть преобразована в:
если b 0
то p:=выр 0+выр 1; q:=выр 0-выр 1;
если b 1
то
Figure 00000156
;
иначе
Figure 00000157
;
конец если;
иначе p:=выр 2+выр 3; q:=выр 2-выр 3;
если b 2
то
Figure 00000156
;
иначе
Figure 00000157
;
конец если;
конец если;
Поскольку продолжения после двух условных операторов второго уровня теперь стали идентичными, программа может быть "уплощена" в следующее:
Программа 1:
если b 0
то p:=выр 0+выр 1; q:=выр 0-выр 1;
иначе p:=выр 2+выр 3; q:=выр 2-выр 3;
конец если;
если (b 0b 1)∨(b 0b 2)
то
Figure 00000156
;
иначе
Figure 00000157
;
конец если;
или, с использованием варианта с умножением:
если b 0
то p:=выр 0*выр 1; q:=выр 0/выр 1;
иначе p:=выр 2*выр 3; q:=выр 2/выр 3;
конец если;
если (b 0b 1)∨(b 0b 2)
то
Figure 00000158
;
иначе
Figure 00000159
;
конец если;
Получающиеся в результате два условных оператора могут осуществляться с использованием методик в отношении зашифрованных представлений
Figure 00000160
выше. Например, для первого условного оператора программы 1 выше представление r может использоваться, чтобы представлять входную переменную x, и представления r1 и r2 могут использоваться, чтобы представлять p и q. Дополнительное представление может использоваться, чтобы представлять выходное x из второго условного оператора программы 1.
Когда условные операторы вложены в более глубокий уровень, подобные методики могут применяться к преобразованию их в группу последовательных условных операторов. Например, рассмотрим следующую примерную программу, в которой условные операторы дважды вложены:
если b0
то если b1
то если b2
то x:=выр0;
иначе x:=выр1;
конец если;
иначе если b3
то x:=выр2;
иначе x:=выр3;
конец если;
конец если;
иначе если b4
то если b5
то x:=выр4;
иначе x:=выр5;
конец если;
иначе если b6
то x:=выр6;
иначе x:=выр7;
конец если;
конец если;
конец если;
Эта примерная программа может быть преобразована в последовательность невложенных условных операторов. Чтобы сделать это, может быть применен подход из двух этапов. Сначала, подобно случаю с один раз вложенными условными операторами, продолжения из условных операторов третьего уровня могут быть объединены путем добавления вспомогательных переменных p и q следующим образом: p:=выр i +выр i +1 и q:=выр i -выр i +1 . Это иллюстрируется более подробно в следующем коде:
если b0
то если b1
то p:=выр0+выр1
q:=выр0-выр1;
если b2
то x:=(p+q)/2;
иначе x:=(p-q)/2;
конец если;
иначе p:=выр2+выр3;
q:=выр2-выр3;
если b3
то x:=(p+q)/2;
иначе x:=(p-q)/2;
конец если;
конец если;
иначе если b4
то p:=выр4+выр5;
q:=выр4-выр5;
если b5
то x:=(p+q)/2;
иначе x:=(p-q)/2;
конец если;
иначе p:=выр6+выр7;
q:=выр6-выр7;
если b6
то x:=(p+q)/2;
иначе x:=(p-q)/2;
конец если;
конец если;
конец если;
Эта программа может быть уплощена, чтобы получить следующий код без каких-либо вложенных условных операторов:
если b0
то r:=выр0+выр1+выр2+выр3;
s:=выр0+выр1-выр2+выр3;
иначе r:=выр4+выр5+выр6+выр7;
s:=выр4+выр5-выр6+выр7;
конец если;
если (b0^b1)v(¬b0^b4)
то p:=(r+s)/2;
иначе p:=(r-s)/2;
конец если;
если b0
то v:=выр0-выр1+выр2-выр3;
w:=выр0-выр1-выр2-выр3;
иначе v:=выр4-выр5+выр6-выр7;
w:=выр4-выр5-выр6-выр7;
конец если;
если (b0^b1)v(¬b0^b4)
то q:=(v+w)/2;
иначе q:=(v-w)/2;
конец если;
если (b0^((b1^b2)v(¬b1^b3)))v(¬b0^((b4^b5)v(¬b4^b6))))
то x:=(p+q)/2;
иначе x:=(p-q)/2;
конец если;
Вышеупомянутая процедура преобразования для преобразования программы с дважды вложенными условными операторами в программу с последовательными, невложенными условными операторами может быть применена к любой программе, которая имеет вышеупомянутый формат, для любых выражений от выр 1 до выр 2.
Фиг.8 изображает способ создания компьютерного кода, чтобы выполнять операцию условным образом. Этап 801 включает в себя идентификацию условия и условной операции f, которая должна быть выполнена над переменной w так, что, если условие выполняется, переменная w' вычисляется такая, что w'=f(w), причем w' является элементом множества W, и причем f является отображением, определенным над W. Этап 802 включает в себя генерирование первого компьютерного кода, причем первый компьютерный код сконфигурирован, чтобы при исполнении представлять переменную w, причем w является элементом множества W, посредством представления r, причем
Figure 00000063
и r является элементом множества представлений
Figure 00000064
, причем
Figure 00000022
является переменной состояния, которая является элементом множества
Figure 00000009
и которая обеспечивает избыточность представлению r для w, и
Figure 00000010
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество. Этап 803 включает в себя генерирование второго компьютерного кода, причем второй компьютерный код сконфигурирован, чтобы при исполнении определять представление r' значения w' на основе ввода в отношении условия, причем r' является элементом множества представлений
Figure 00000065
, причем
Figure 00000066
, причем
Figure 00000067
является переменной состояния, которая является элементом множества
Figure 00000009
и которая обеспечивает избыточность представлению r' для w', причем
Figure 00000016
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество; и причем, если условие выполняется согласно вводу, w'=f(w), и, если условие не выполняется согласно вводу,
Figure 00000087
, причем h является отображением из
Figure 00000011
в W.
Удаление скачков в программе может использоваться, чтобы препятствовать анализу потока управления или задействованных значений. Вычисление вычислений, осуществляемых во всех ветвях условного оператора, даже ветвях, которые неактуальны ввиду условия, и комбинирование результатов этих вычислений в один элемент данных может помочь достичь этой цели.
Система табличных машин, в которой скачки подавляются, может создаваться, чтобы удалять изменения в потоке управления программы, причем кодирование в форме
Figure 00000161
в случае логического защищенного выбора протекает по невыбранной ветви посредством по большей мере
Figure 00000022
и по выбранной ветви посредством по меньшей мере w.
Фиг.9 изображает систему для скрытия изменения во множестве переменных
Figure 00000001
программы. Система содержит средство 902 представления значения для представления значения
Figure 00000002
переменной
Figure 00000003
из переменных
Figure 00000004
, причем w является элементом множества W, посредством представления
Figure 00000005
, причем
Figure 00000006
и
Figure 00000005
является элементом множества представлений
Figure 00000007
, причем
Figure 00000008
является переменной состояния, которая является элементом множества
Figure 00000009
и которая обеспечивает избыточность представлению
Figure 00000005
для
Figure 00000002
, и
Figure 00000010
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество. Это средство 902 представления значения может осуществляться с использованием методик, раскрытых выше. Средство 902 представления значения может быть сконфигурировано, чтобы представлять все из переменных
Figure 00000004
посредством соответственных представлений
Figure 00000162
определенным образом. Значения
Figure 00000163
могут выбираться случайным образом, например. Средство 902 представления значения может быть сконфигурировано, чтобы вычислять представления
Figure 00000005
на основе базовых значений
Figure 00000002
. Средство 902 представления значения может также быть сконфигурировано, чтобы принимать представления
Figure 00000005
от другого устройства или от другого компонента системы. n является положительным целым. То есть в общем случае множество переменных V содержит по меньшей мере одну переменную.
Система может дополнительно содержать средство 903 представления действия для представления действия над значениями переменных в подмножестве V' из V посредством действия над V' и действия над V\V', чтобы получить обновленные представления
Figure 00000062
, для
Figure 00000060
, причем
Figure 00000016
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество.
Figure 00000016
может быть равно
Figure 00000010
. Альтернативно,
Figure 00000016
может быть криптографическим отображением, которое отличается от
Figure 00000010
. Таким образом, существует возможность изменить криптографическое отображение при изменении представления.
Дополнительно, средство представления действия может быть сконфигурировано, чтобы выполнять действие над V' и действие над V\V'. Альтернативно, средство представления действия может быть сконфигурировано, чтобы всего лишь представлять эти действия путем генерирования программного кода, который при исполнении выполняет действия. В последнем случае средство 903 представления действия может быть сконфигурировано, чтобы идентифицировать (например, посредством синтаксического анализатора) программный код, определяющий действие над значениями переменных в подмножестве V', и преобразовывать этот программный код в программный код, который определяет действие над V' и действие над V\V'.
Действие над V' сконфигурировано для изменения представления
Figure 00000012
каждой переменной
Figure 00000013
во множестве переменных V' согласно измененному значению
Figure 00000014
переменной
Figure 00000013
, и действие над V\V' сконфигурировано для изменения представления
Figure 00000017
каждой переменной
Figure 00000018
в V\V' согласно измененному значению
Figure 00000019
переменной состояния
Figure 00000020
. В частности, представление
Figure 00000017
каждой переменной
Figure 00000018
в V\V' изменяется на представление, которое представляет то же самое значение
Figure 00000164
. Представление
Figure 00000012
каждой переменной
Figure 00000013
во множестве переменных V' может быть изменено согласно измененному значению
Figure 00000014
переменной
Figure 00000013
, поддерживая то же самое значение
Figure 00000165
(или, опционально, другое значение
Figure 00000165
).
Действие может содержать условный оператор, который определяет действие над множеством переменных V 1, если условие выполняется, и действие над множеством переменных V 2, если условие не выполняется, причем оба V 1 и V 2 являются подмножествами V. Иными словами, множество переменных V содержит объединение V 1 и V 2, то есть
Figure 00000166
. Средство 903 представления действия может быть сконфигурировано, чтобы использовать множество переменных V 1 в качестве множества переменных V', если условие выполняется. Это означает, что средство 903 представления действия выполняет действие над V 1 путем изменения представления
Figure 00000012
каждой переменной
Figure 00000013
во множестве переменных V 1 согласно измененному значению
Figure 00000014
переменной
Figure 00000013
, и выполняет действие над V\V 1 путем изменения представления
Figure 00000017
каждой переменной
Figure 00000018
в V\V 1 согласно измененному значению
Figure 00000019
переменной состояния
Figure 00000020
.
Дополнительно, средство 903 представления действия может быть сконфигурировано, чтобы использовать множество переменных V 2 в качестве множества переменных V', если условие не выполняется. Это означает, что средство 903 представления действия выполняет действие над V 2 путем изменения представления
Figure 00000012
каждой переменной
Figure 00000013
во множестве переменных V 2 согласно измененному значению
Figure 00000014
переменной
Figure 00000013
и выполняет действие над V\V 2 путем изменения представления
Figure 00000017
каждой переменной
Figure 00000018
в V\V 2 согласно измененному значению
Figure 00000019
переменной состояния
Figure 00000020
.
Некоторые из переменных могут быть изменены условным сегментом кода независимо от того, выполняется условие или нет. В таком случае множество переменных V 1 и множество переменных V 2 имеют пересечение V 3, причем
Figure 00000024
. Действие изменяет значение каждой переменной
Figure 00000025
множества V 3 согласно функции f m , если условие выполняется, и согласно функции g m , если условие не выполняется. Средство представления действия сконфигурировано, чтобы представлять эти действия посредством действия, которое определяет представление
Figure 00000026
каждой измененной переменной
Figure 00000025
из множества V 3 так, что, если условие выполняется,
Figure 00000027
и
Figure 00000028
, но если условие не выполняется,
Figure 00000029
и
Figure 00000030
. Здесь h m является отображением из
Figure 00000011
в W.
Средство 903 представления действия может осуществляться посредством операций поиска. С этой целью одна или несколько таблиц соответствия могут быть подготовлены и сохранены в памяти системы. То, выполняется ли условие, не обязательно должно быть определено явным образом системой. В действительности ввод может приниматься для значений, которые определяют условие. Одна или несколько таблиц соответствия могут отображать эти входные значения вместе с представлениями в соответствующие измененные представления. Средство 903 представления действия может, таким образом, быть сконфигурировано, чтобы вызывать поиск представлений
Figure 00000167
, соответствующих вводу в отношении условия и представлений
Figure 00000005
, с использованием по меньшей мере одной таблицы соответствия, которая отображает кортеж ввода в отношении условия и представлений
Figure 00000005
в соответствующие представления
Figure 00000167
.
Средство 903 представления действия может также осуществляться посредством одной или нескольких операций перестановки, которые были описаны выше со ссылками на фиг.3. Средство 903 представления действия может быть сконфигурировано, чтобы идентифицировать одну или несколько входных переменных, которые определяют условие b, и может содержать первый блок 305 перестановки, блок 307 оценки функции и/или второй блок 306 перестановки, как описано выше, для каждой из переменных во множестве переменных
Figure 00000001
.
Средство 902 представления значения и средство 903 представления действия, описанные выше, могут операционно объединяться с блоком 601 преобразования, описанным выше. Блок 601 преобразования представляет вложенную условную операцию, задействующую первый набор вложенных условий, посредством функционально эквивалентной последовательности невложенных условных операций, задействующих второй набор условий. Например, последовательность невложенных условных операций может генерироваться блоком 601 преобразования путем обработки вложенной условной операции. Каждая из получающихся в результате невложенных условных операций может быть по отдельности представлена средством 903 представления действия изложенным способом.
Фиг.10 изображает способ скрытия изменения во множестве переменных
Figure 00000001
программы. На этапе 1001 значение
Figure 00000002
переменной
Figure 00000003
из переменных
Figure 00000004
, причем w является элементом множества W, представляется представлением
Figure 00000005
, причем
Figure 00000006
и
Figure 00000005
является элементом множества представлений
Figure 00000007
, причем
Figure 00000008
является переменной состояния, которая является элементом множества
Figure 00000009
и которая обеспечивает избыточность представлению
Figure 00000005
для
Figure 00000002
, и
Figure 00000010
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество. На этапе 1002 действие над значениями подмножества V' из V представляется посредством действия над V' и действия над V\V', чтобы получить обновленные представления
Figure 00000062
, для
Figure 00000060
, причем
Figure 00000016
является взаимно-однозначным криптографическим отображением из
Figure 00000011
в предварительно определенное множество, и причем действие над V' сконфигурировано для изменения представления
Figure 00000012
каждой переменной
Figure 00000013
во множестве переменных V' согласно измененному значению
Figure 00000014
переменной
Figure 00000013
, и действие над V\V' сконфигурировано для изменения представления
Figure 00000017
каждой переменной
Figure 00000018
в V\V' согласно измененному значению
Figure 00000019
of
Figure 00000020
.
Следует понимать, что изобретение также применимо к компьютерным программам, в частности к компьютерным программам на или в носителе, выполненном с возможностью вводить изобретение в осуществление на практике. Вариант осуществления, относящийся к компьютерному программному продукту, содержит машиноисполняемые инструкции, соответствующие каждому этапу обработки по меньшей мере одного из способов, изложенных здесь. Эти инструкции могут подразделяться на подпрограммы и/или сохраняться в одном или нескольких файлах, которые могут быть связаны статически или динамически. Другой вариант осуществления, относящийся к компьютерному программному продукту, содержит машиноисполняемые инструкции, соответствующие каждому блоку по меньшей мере одной из систем и/или продуктов, изложенных здесь. Эти инструкции могут подразделяться на подпрограммы и/или сохраняться в одном или нескольких файлах, которые могут быть связаны статически или динамически.
Носитель компьютерной программы может быть любым объектом или устройством с возможностью переноса программы. Например, носитель может включать в себя носитель данных, такой как ROM, например CD-ROM или полупроводниковая ROM, или магнитный носитель записи. Кроме того, носитель может быть передаваемым носителем, таким как электрический или оптический сигнал, который может переноситься по электрическому или оптическому кабелю или посредством радио или других средств. Когда программа осуществляется в таком сигнале, носитель может быть составлен таким кабелем или другим устройством или средством. Альтернативно, носитель может быть интегральной цепью, в которую программа встроена, причем интегральная цепь выполнена с возможностью выполнять актуальный способ или использоваться в его выполнении.
Следует заметить, что вышеупомянутые варианты осуществления иллюстрируют, а не ограничивают изобретение, и что специалисты в области техники смогут спроектировать множество альтернативных вариантов осуществления без выхода за пределы объема прилагаемой формулы изобретения. В формуле изобретения любые позиционные обозначения, помещенные в скобках, не должны толковаться как ограничивающие пункт формулы. Использование глагола "содержать" и его спряжений не исключает наличия элементов или этапов помимо упомянутых в пункте формулы. Упоминание элемента в единственном числе не исключает наличия множества таких элементов. Изобретение может осуществляться посредством аппаратных средств, содержащих несколько обособленных элементов, и посредством подходящим образом запрограммированного компьютера. В пункте устройства, перечисляющем несколько средств, несколько из этих средств могут осуществляться одним и тем же элементом аппаратных средств. Сам факт того, что конкретные меры перечислены во взаимно различных зависимых пунктах формулы изобретения, не указывает, что комбинация этих мер не может использоваться выгодным образом.

Claims (37)

1. Система для скрытия изменения во множестве переменных
Figure 00000168
программы, содержащая:
средство (902) представления значения для представления значения
Figure 00000169
переменной
Figure 00000170
из переменных
Figure 00000171
, причем
Figure 00000172
является элементом множества
Figure 00000173
, посредством представления
Figure 00000174
, причем
Figure 00000175
и
Figure 00000174
является элементом множества представлений
Figure 00000176
, причем
Figure 00000177
является переменной состояния, которая является элементом множества
Figure 00000178
и которая обеспечивает избыточность представлению
Figure 00000174
для
Figure 00000169
, и
Figure 00000179
является взаимно-однозначным криптографическим отображением из
Figure 00000180
в предварительно определенное множество; и
средство (903) представления действия для представления действия над значениями переменных в подмножестве
Figure 00000181
множества переменных
Figure 00000182
посредством действия над
Figure 00000181
и действия над
Figure 00000183
, чтобы получить обновленные представления
Figure 00000184
, для
Figure 00000185
, причем
Figure 00000186
является взаимно-однозначным криптографическим отображением из
Figure 00000180
в предварительно определенное множество, и причем упомянутое действие над
Figure 00000181
предназначено для изменения представления
Figure 00000187
каждой переменной
Figure 00000188
во множестве переменных
Figure 00000181
согласно измененному значению
Figure 00000189
переменной
Figure 00000188
, и
упомянутое действие над
Figure 00000183
предназначено для изменения представления
Figure 00000190
каждой переменной
Figure 00000191
в
Figure 00000183
согласно измененному значению
Figure 00000192
переменной состояния
Figure 00000193
.
2. Система по п.1, в которой упомянутое действие над значениями переменных в подмножестве
Figure 00000181
содержит условный (if) оператор, который определяет действие над множеством переменных
Figure 00000194
, если условие выполняется, и действие над множеством переменных
Figure 00000195
, если условие не выполняется, причем множество переменных
Figure 00000194
является подмножеством множества переменных
Figure 00000182
, и множество переменных
Figure 00000195
также является подмножеством множества переменных
Figure 00000182
, и средство (903) представления действия выполнено с возможностью использовать множество переменных
Figure 00000194
в качестве множества переменных
Figure 00000181
, если условие выполняется, и использовать множество переменных
Figure 00000195
в качестве множества переменных
Figure 00000181
, если условие не выполняется.
3. Система по п.2, в которой множество переменных
Figure 00000194
и множество переменных
Figure 00000195
имеют пересечение
Figure 00000196
переменных, которые подвергаются обоим из действия над множеством переменных
Figure 00000194
и действия над множеством переменных
Figure 00000195
, такое что
Figure 00000197
, причем упомянутое действие изменяет каждую переменную
Figure 00000198
множества
Figure 00000196
согласно функции
Figure 00000199
, если условие выполняется, и согласно функции
Figure 00000200
, если условие не выполняется, причем средство представления действия выполнено с возможностью определять представление
Figure 00000201
каждой переменной
Figure 00000198
множества
Figure 00000196
так, что на основе того, выполняется ли условие, либо
Figure 00000202
и
Figure 00000203
, либо
Figure 00000204
и
Figure 00000205
,
причем
Figure 00000206
является отображением из
Figure 00000180
в
Figure 00000173
.
4. Система по п.1, в которой средство (903) представления действия выполнено с возможностью вызывать поиск представлений
Figure 00000207
, соответствующих вводу в отношении условия и представлений
Figure 00000174
, с использованием по меньшей мере одной таблицы соответствия, которая отображает кортеж ввода в отношении условия и представлений
Figure 00000174
в соответствующие представления
Figure 00000207
.
5. Система по п.1, в которой
Figure 00000208
и в которой средство (903) представления действия выполнено с возможностью идентифицировать одну или несколько входных переменных, которые определяют условие b, при этом средство (103) представления действия содержит первый блок (305) перестановки для выполнения скрытой операции перестановки на основе по меньшей мере одного представления r, где
Figure 00000209
, переменной
Figure 00000170
во множестве
Figure 00000182
и одной или нескольких входных переменных, так что для
Figure 00000210
и q
Figure 00000211
при
Figure 00000212
Figure 00000213
при этом
Figure 00000214
является взаимно-однозначным криптографическим отображением из
Figure 00000180
в предварительно определенное множество, причем
Figure 00000214
отличается от
Figure 00000179
, при этом
Figure 00000215
является представлением,
и/или второй блок (306) перестановки для выполнения скрытой операции перестановки на основе представления
Figure 00000216
и одной или нескольких переменных, так что для
Figure 00000217
и q
Figure 00000211
при
Figure 00000218
Figure 00000219
при этом
Figure 00000220
является взаимно-однозначным криптографическим отображением из
Figure 00000180
в предварительно определенное множество, причем
Figure 00000220
отличается от
Figure 00000186
, и
Figure 00000221
является обновленным представлением
Figure 00000222
.
6. Система по п.5, в которой средство (103) представления действия содержит блок (307) оценки функции для вычисления функции, чтобы получить представление
Figure 00000223
на основе представления
Figure 00000215
такое, что для
Figure 00000217
и q
Figure 00000211
при
Figure 00000224
Figure 00000225
причем f является отображением, определенным над
Figure 00000173
, и g является отображением, определенным над
Figure 00000173
.
7. Система по п.5 или 6, в которой
Figure 00000226
и
Figure 00000227
.
8. Система по п.3, в которой
Figure 00000228
для всех значений
Figure 00000172
и
Figure 00000229
и по меньшей мере одного значения m в
Figure 00000230
.
9. Система по п.1, в которой упомянутое действие над
Figure 00000181
предназначено для изменения представления
Figure 00000187
каждой переменной
Figure 00000188
во множестве переменных
Figure 00000181
, так что
Figure 00000231
и
Figure 00000232
, и
причем упомянутое действие над
Figure 00000183
предназначено для изменения представления
Figure 00000190
каждой переменной
Figure 00000191
в
Figure 00000183
, так что
Figure 00000233
и
Figure 00000234
;
при этом
Figure 00000235
, для
Figure 00000185
, является функцией, определенной над
Figure 00000173
, и
Figure 00000236
, для каждой переменной
Figure 00000191
в
Figure 00000183
, является функцией, отображающей элементы
Figure 00000180
в
Figure 00000173
.
10. Система по п.2 или 3, дополнительно содержащая блок (601) преобразования для представления вложенной условной операции, задействующей первый набор вложенных условий, посредством функционально эквивалентной последовательности невложенных условных операций, задействующих второй набор условий.
11. Система по п.10, в которой блок (601) преобразования выполнен с возможностью:
комбинировать (701) соответственные выражения соответственных условных ветвей вложенной условной операции в члены вспомогательного выражения, каковые соответственные выражения ассоциированы с альтернативными значениями, которые должны быть присвоены конкретной переменной;
повторять (702) этап комбинирования соответственных выражений соответственных условных ветвей в члены вспомогательного выражения, с тем чтобы сгенерировался набор вспомогательных выражений, в котором члены скомбинированы различными способами,
генерировать код (703), чтобы оценить вспомогательные выражения и сохранить их результаты; и
генерировать код (704), чтобы комбинировать результаты вспомогательных выражений в зависимости от комбинированного условия, причем комбинированное условие является комбинацией набора условий, так что члены, соответствующие ветвям, которые неактуальны ввиду условия, взаимно уничтожаются.
12. Система по п.10, в которой средство (903) представления действия выполнено с возможностью идентифицировать по меньшей мере одну условную операцию из последовательности невложенных условных операций и соответствующее условие из второго набора условий, причем средство (903) представления действия выполнено с возможностью использовать идентифицированную условную операцию в качестве действия и идентифицированное соответствующее условие в качестве условия условного оператора.
13. Способ скрытия изменения во множестве переменных
Figure 00000168
программы, содержащий этапы, на которых:
представляют (1001) значение
Figure 00000169
переменной
Figure 00000170
из переменных
Figure 00000171
, причем
Figure 00000172
является элементом множества
Figure 00000173
, посредством представления
Figure 00000174
, причем
Figure 00000175
, и
Figure 00000174
является элементом множества представлений
Figure 00000176
, при этом
Figure 00000177
является переменной состояния, которая является элементом множества
Figure 00000178
и которая обеспечивает избыточность представлению
Figure 00000174
для
Figure 00000237
, и
Figure 00000179
является взаимно-однозначным криптографическим отображением из
Figure 00000180
в предварительно определенное множество; и
представляют (1002) действие над значениями подмножества
Figure 00000181
множества переменных
Figure 00000182
посредством действия над
Figure 00000181
и действия над
Figure 00000183
, чтобы получить обновленные представления
Figure 00000184
, для
Figure 00000185
, причем
Figure 00000186
является взаимно-однозначным криптографическим отображением из
Figure 00000180
в предварительно определенное множество, при этом
упомянутое действие над
Figure 00000181
предназначено для изменения представления
Figure 00000187
каждой переменной
Figure 00000188
во множестве переменных
Figure 00000181
согласно измененному значению
Figure 00000189
переменной
Figure 00000188
, и
упомянутое действие над
Figure 00000183
предназначено для изменения представления
Figure 00000190
каждой переменной
Figure 00000191
в
Figure 00000183
согласно измененному значению
Figure 00000192
для
Figure 00000238
.
14. Машиночитаемый носитель, на котором сохранен программный код, который при его исполнении процессором предписывает процессору выполнять способ по п.13.
RU2017126073A 2014-12-22 2015-12-08 Скрытие исполнения программы RU2715021C2 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP14199750 2014-12-22
EP14199750.2 2014-12-22
PCT/EP2015/078894 WO2016102180A1 (en) 2014-12-22 2015-12-08 Hiding of a program execution

Publications (3)

Publication Number Publication Date
RU2017126073A RU2017126073A (ru) 2019-01-24
RU2017126073A3 RU2017126073A3 (ru) 2019-07-17
RU2715021C2 true RU2715021C2 (ru) 2020-02-21

Family

ID=52272903

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2017126073A RU2715021C2 (ru) 2014-12-22 2015-12-08 Скрытие исполнения программы

Country Status (6)

Country Link
US (1) US10685096B2 (ru)
EP (1) EP3238113B1 (ru)
JP (1) JP6303073B2 (ru)
CN (1) CN107113160B (ru)
RU (1) RU2715021C2 (ru)
WO (1) WO2016102180A1 (ru)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL2015599B1 (en) * 2015-10-12 2017-05-02 Koninklijke Philips Nv A cryptographic device and an encoding device.

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070039048A1 (en) * 2005-08-12 2007-02-15 Microsoft Corporation Obfuscating computer code to prevent an attack
US7383443B2 (en) * 2002-06-27 2008-06-03 Microsoft Corporation System and method for obfuscating code using instruction replacement scheme
US20100251378A1 (en) * 2006-12-21 2010-09-30 Telefonaktiebolaget L M Ericsson (Publ) Obfuscating Computer Program Code
RU2012131957A (ru) * 2011-07-26 2014-01-27 Крокус Текнолоджи Са Способ применения контрмер против атак по сторонним каналам
US8756435B2 (en) * 2012-03-02 2014-06-17 Apple Inc. Obfuscation of control flow of software
US8874928B2 (en) * 2008-10-31 2014-10-28 Apple Inc. System and method for obfuscating constants in a computer program

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6594761B1 (en) 1999-06-09 2003-07-15 Cloakware Corporation Tamper resistant software encoding
CA2327911A1 (en) 2000-12-08 2002-06-08 Cloakware Corporation Obscuring functions in computer software
EP1947584B1 (en) * 2006-12-21 2009-05-27 Telefonaktiebolaget LM Ericsson (publ) Obfuscating computer program code
JP4924177B2 (ja) * 2007-04-23 2012-04-25 富士ゼロックス株式会社 プログラム難読化装置及びプログラム
EP2240857A4 (en) 2007-12-21 2013-12-25 Univ Virginia Patent Found SYSTEM, METHOD AND COMPUTER PROGRAM FOR PROTECTING SOFTWARE THROUGH ANTI-FALSIFICATION AND OBSCURING TRANSFORMATIONS
JP2011018119A (ja) * 2009-07-07 2011-01-27 Fuji Xerox Co Ltd プログラム難読化装置及びプログラム
JP5229166B2 (ja) 2009-09-03 2013-07-03 富士通株式会社 通信方法、中継装置、端末装置および基地局
US8386803B2 (en) * 2009-11-18 2013-02-26 Apple Inc. System and method for data obfuscation based on discrete logarithm properties
US8665270B2 (en) * 2010-12-16 2014-03-04 Csi Ricerca & Ambiente Srl Method of determining implicit hidden features of phenomena which can be represented by a point distribution in a space
US8751823B2 (en) * 2011-08-01 2014-06-10 Apple Inc. System and method for branch function based obfuscation
US10191754B2 (en) 2012-01-09 2019-01-29 Koninklijke Philips N.V. Virtual machine device having key driven obfuscation and method
CN104919750B (zh) 2012-12-21 2017-06-06 皇家飞利浦有限公司 计算关于函数‑输入值的数据函数的计算设备和方法
EP2936727A1 (en) 2012-12-21 2015-10-28 Koninklijke Philips N.V. Computing device comprising a table network
KR20140097927A (ko) 2013-01-30 2014-08-07 삼성전자주식회사 소프트웨어의 보안을 높이는 방법
CN104123503B (zh) * 2014-06-25 2017-02-15 中国人民解放军国防科学技术大学 Sat问题求解外包过程中的cnf公式数据保护方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7383443B2 (en) * 2002-06-27 2008-06-03 Microsoft Corporation System and method for obfuscating code using instruction replacement scheme
US20070039048A1 (en) * 2005-08-12 2007-02-15 Microsoft Corporation Obfuscating computer code to prevent an attack
US20100251378A1 (en) * 2006-12-21 2010-09-30 Telefonaktiebolaget L M Ericsson (Publ) Obfuscating Computer Program Code
US8874928B2 (en) * 2008-10-31 2014-10-28 Apple Inc. System and method for obfuscating constants in a computer program
RU2012131957A (ru) * 2011-07-26 2014-01-27 Крокус Текнолоджи Са Способ применения контрмер против атак по сторонним каналам
US8756435B2 (en) * 2012-03-02 2014-06-17 Apple Inc. Obfuscation of control flow of software

Also Published As

Publication number Publication date
EP3238113B1 (en) 2018-09-26
CN107113160A (zh) 2017-08-29
US20180357396A1 (en) 2018-12-13
BR112017013083A2 (pt) 2018-01-02
RU2017126073A (ru) 2019-01-24
JP2018501578A (ja) 2018-01-18
JP6303073B2 (ja) 2018-03-28
WO2016102180A1 (en) 2016-06-30
CN107113160B (zh) 2020-05-15
RU2017126073A3 (ru) 2019-07-17
US10685096B2 (en) 2020-06-16
EP3238113A1 (en) 2017-11-01

Similar Documents

Publication Publication Date Title
RU2676454C2 (ru) Вычислительное устройство, содержащее сеть таблиц
RU2661308C2 (ru) Вычислительное устройство, конфигурируемое с помощью табличной сети
WO2018015325A1 (en) Device and method for performing obfuscated arithmetic
CN106464484B (zh) 预定函数的混淆执行
Schlögl et al. eNNclave: Offline inference with model confidentiality
RU2680761C1 (ru) Безопасные преобразования данных
Dolev et al. Secret shared random access machine
JP6554103B2 (ja) 暗号アルゴリズムで使用されるときに秘密データを保護する方法
RU2715021C2 (ru) Скрытие исполнения программы
EP3391264B1 (en) Calculating device and method
Yuan et al. Secure integrated circuit design via hybrid cloud
Kuang et al. Exploit dynamic data flows to protect software against semantic attacks
Maeng et al. Approximating ReLU on a Reduced Ring for Efficient MPC-based Private Inference
Huang et al. Efficient Privacy-Preserving Machine Learning with Lightweight Trusted Hardware
Roos Virtual Outsourcing of Verifiable Computation with Function Hiding
JP2011018119A (ja) プログラム難読化装置及びプログラム
BR112017013083B1 (pt) Sistema para ocultar uma alteração e método para ocultar uma alteração