RU2708439C1 - Вычислительное устройство и способ - Google Patents

Вычислительное устройство и способ Download PDF

Info

Publication number
RU2708439C1
RU2708439C1 RU2018125885A RU2018125885A RU2708439C1 RU 2708439 C1 RU2708439 C1 RU 2708439C1 RU 2018125885 A RU2018125885 A RU 2018125885A RU 2018125885 A RU2018125885 A RU 2018125885A RU 2708439 C1 RU2708439 C1 RU 2708439C1
Authority
RU
Russia
Prior art keywords
selection
variables
evaluation
function
input
Prior art date
Application number
RU2018125885A
Other languages
English (en)
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 Конинклейке Филипс Н.В.
Application granted granted Critical
Publication of RU2708439C1 publication Critical patent/RU2708439C1/ru

Links

Images

Classifications

    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • 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
    • 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/34Encoding or coding, e.g. Huffman coding or error correction
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y04INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
    • Y04SSYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
    • Y04S40/00Systems for electrical power generation, transmission, distribution or end-user application management characterised by the use of communication or information technologies, or communication or information technology specific aspects supporting them
    • Y04S40/20Information technology specific aspects, e.g. CAD, simulation, modelling, system security

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Complex Calculations (AREA)
  • Storage Device Security (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Группа изобретений относится к области вычислительной техники и может быть использована для защиты программного обеспечения от взлома. Техническим результатом является повышение защищенности. Вычислительное устройство (200) выполнено с возможностью оценивания функции данных (S), отображающей некоторое количество (n) входных переменных в некоторое количество выходных переменных (m). Вычислительное устройство содержит механизм выбора (220), в качестве входа принимающий переменные выбора, и механизм оценки (210), выполненный с возможностью приема одной или нескольких переменных оценки и оценивания функций оценки по принятым переменным оценки, при этом функция оценки в качестве входа принимает переменные оценки. 3 н. и 11 з.п. ф-лы, 15 ил., 2 табл.

Description

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Изобретение относится к вычислительному устройству, вычислительному способу, компьютерной программе и машиночитаемому носителю.
УРОВЕНЬ ТЕХНИКИ
В модели "белого ящика" взломщик может получить полное управление над программным обеспечением, которое работает на вычислительном устройстве, например, смартфоне или ПК. Цель криптографии типа "белого ящика" - защищать программную реализацию от такого взломщика.
Когда в модели "белого ящика" нужно защитить криптографическую схему, задействующую ключи, это обычно подразумевает, что атакующий, у которого есть доступ и полное управление защитным программным обеспечением и его средой исполнения, не должен извлечь никакую ценную информацию о ключах.
Одним из способов избежать получения атакующим доступа к ключам в информации является реализация части или всего чувствительного алгоритма в виде сети таблиц. Таблицы оперируют кодированными переменными. Атакующему будет трудно определить, какую операцию выполняет таблица, так как у него нет сведений о кодировании. Замена операций обращениями к таблице обычно увеличивает размер кода. Кроме того, некоторые контрмеры для дополнительной защиты таблиц приводят к дополнительному увеличению размера кода.
Например, одной возможной атакой для получения информации о ключах, когда у атакующего есть доступ к работающей реализации, является так называемая коллизионная атака, где атакующий измеряет зависящую от ключа переменную в разных прогонах на разных входных данных. Атакующий собирает статистику о коллизиях, то есть переменных, принимающих одинаковое значение в разных прогонах на разных сообщениях. В конечном счете атакующий может собрать достаточно информации для извлечения ключа. Примером такой атаки является Анализ взаимной информации (MIA).
Чтобы защититься от коллизионной атаки, можно представить переменную w с помощью n долей
Figure 00000001
, чтобы коллизию на w можно было обнаружить только из коллизий на полном наборе
Figure 00000002
. Так как последнее будет обладать меньшей вероятностью, коллизионные атаки становятся труднее. Вычисление долей приводит к тому, что размер таблицы опять значительно увеличивается.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Предоставляется вычислительное устройство, выполненное с возможностью оценивания функции данных, отображающей некоторое количество входных переменных в некоторое количество выходных переменных. Функция данных организована в вычислительном устройстве в виде вычисления, содержащего функции выбора и функции оценки. Входные переменные разбиваются на одну или несколько переменных выбора и одну или несколько переменных оценки. Для каждой конкретной комбинации значений переменных выбора задается соответствующая функция выбора и функция оценки.
Вычислительное устройство содержит
- механизм выбора, выполненный с возможностью приема одной или нескольких переменных выбора и оценивания функций выбора по принятым переменным выбора; при этом функция выбора в качестве входа принимает переменные выбора, а выход функции выбора указывает, равны ли переменные выбора, принятые в функции выбора, конкретной комбинации значений, соответствующих функции выбора,
- механизм оценки, выполненный с возможностью приема одной или нескольких переменных оценки и оценивания функций оценки по принятым переменным оценки, при этом функция оценки в качестве входа принимает переменные оценки, а выход функции оценки представляет собой выход функции данных, у которой входом является объединение переменных оценки и конкретной комбинации значений переменных выбора, соответствующих функции оценки, и
- комбинационный механизм, выполненный с возможностью комбинации выходов механизма выбора и механизма оценки в выход функции данных для входных переменных.
Обе функции оценки и выбора принимают в качестве входа меньше входных данных, чем функция данных. В результате уменьшается размер кода для реализации функций оценки и выбора. Это особенно важно в реализации "белого ящика", в которой функции оценки и/или выбора реализуются в виде таблиц или сетей таблиц, потому что это требует меньших таблиц. Хотя может увеличиться размер схемы в результате разделения в переменных оценки и выбора, размер кода уменьшается. Кроме того, функции выбора являются очень простыми функциями, которые легко осуществить в реализации на основе многочлена, например, они могут использоваться, когда переменные представляются в виде нескольких кодированных долей. Поскольку функции выбора одинаковы для разных функций данных, их можно повторно использовать для нескольких функций данных; это дополнительно уменьшает размер кода.
В варианте осуществления переменные выбора дополнительно разбиваются на несколько групп переменных выбора, при этом функция выбора организована в вычислительном устройстве в виде произведения нескольких подфункций выбора, причем каждая соответствует группе из нескольких групп переменных выбора, при этом подфункция выбора в качестве входа принимает переменные выбора в группе, а выход подфункции выбора указывает, равны ли принятые переменные выбора конкретной комбинации значений в группе, соответствующей функции выбора.
Дальнейшее подразделение переменных выбора дополнительно уменьшает размер кода для реализации механизма выбора.
Механизм выбора побуждает выбор правильной функции оценки на основе переменных выбора. Механизм оценки оценивает результат функции данных по разным возможным значениям переменных выбора и переменных оценки. Функция оценки требует в качестве входа только переменные оценки. Переменные оценки дополняются в функции оценки конкретной комбинацией значений переменной выбора, которые соответствуют функции оценки. Хотя это увеличит количество функций оценки, это уменьшит размер таких функций.
Механизм выбора можно реализовать в виде системы выбора; например, в виде схемы и/или подходящего программного обеспечения, работающего в процессоре. Механизм оценки можно реализовать в виде системы оценки; например, в виде схемы и/или подходящего программного обеспечения, работающего в процессоре. Например, упомянутое программное обеспечение может содержать несколько операций табличного поиска в сети таблиц.
В варианте осуществления одна или несколько входных переменных кодируются. Фактически можно кодировать все переменные выбора и оценки. Оперирование кодированными переменными может проводиться с помощью таблиц, которые кодируются для одинакового кодирования.
Важным способом кодирования переменных, в частности, переменных выбора и оценки является кодирование переменных в виде множества кодированных долей. Операции могут исполняться над кодированными таким образом переменными путем представления операции в виде многочлена в конечном поле. Многочлен может оцениваться с использованием таблиц, которые представляют операции вроде сложения и умножения. Преимуществом этого типа кодирования является то, что таблицы для сложения и умножения могут повторно использоваться на всем протяжении оценки многочлена. Это дополнительно уменьшает размер кода.
Вычислительное устройство является электронным устройством, например, мобильным электронным устройством, например, мобильным телефоном. Вычислительное устройство может быть телевизионной приставкой, смарт-картой, компьютером и т. п.
Описанный в этом документе способ вычисления может применяться в широком диапазоне практических применений. Такие практические применения включают в себя криптографические применения. Например, подписание, дешифрование и шифрование и т.п. информации могут осуществляться в программном обеспечении без разглашения ключа, используемого для выполнения криптографической операции. Например, вычислительное устройство может использоваться для чувствительных приложений, например, использующих собственный алгоритм. Увеличивается трудность обратной разработки программного обеспечения для атакующего.
Способ в соответствии с изобретением можно реализовать на компьютере в виде реализуемого компьютером способа, или в специализированных аппаратных средствах, либо в их сочетании. Исполняемый код для способа в соответствии с изобретением можно сохранить в компьютерном программном продукте. Примеры компьютерных программных продуктов включают в себя запоминающие устройства, оптические запоминающие устройства, интегральные схемы, серверы, онлайновое программное обеспечение и т. п. Предпочтительно, чтобы компьютерный программный продукт был выполнен в виде программного кода в неизменяемой со временем форме, сохраненного на машиночитаемом носителе, для выполнения способа в соответствии с изобретением, когда упомянутый программный продукт исполняется на компьютере.
В предпочтительном варианте осуществления компьютерная программа выполнена в виде кода компьютерной программы, приспособленного для выполнения всех этапов способа в соответствии с изобретением, когда компьютерную программу прогоняют на компьютере. Предпочтительно, чтобы компьютерная программа была воплощена на машиночитаемом носителе.
Другой аспект изобретения предоставляет способ обеспечения загрузки компьютерной программы. Этот аспект используется, когда компьютерная программа отправляется, например, в App Store от Apple, Play Store от Google или Windows Store от Microsoft, и когда компьютерная программа доступна для загрузки из такого магазина.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Дополнительные подробности, аспекты и варианты осуществления изобретения только в качестве примера будут описываться со ссылкой на чертежи. Элементы на фигурах иллюстрируются для простоты и ясности и необязательно нарисованы в масштабе. На фигурах элементы, которые соответствуют уже описанным элементам, могут иметь одинаковые номера ссылок. На чертежах
Фиг. 1 схематически показывает пример функции данных,
Фиг. 2a схематически показывает пример варианта осуществления вычислительного устройства,
Фиг. 2b схематически показывает пример варианта осуществления механизма оценки,
Фиг. 2c схематически показывает пример варианта осуществления механизма выбора,
Фиг. 2d схематически показывает пример варианта осуществления механизма выбора,
Фиг. 2e схематически показывает пример варианта осуществления вычислительного устройства,
Фиг. 3 схематически иллюстрирует пример кодирования переменной,
Фиг. 4a схематически показывает пример варианта осуществления сети таблиц,
Фиг. 4b схематически показывает пример варианта осуществления сети таблиц,
Фиг. 5a схематически показывает блок-схему последовательности операций для вычислительного способа,
Фиг. 5b схематически показывает блок-схему последовательности операций для вычислительного способа,
Фиг. 6a схематически показывает пример варианта осуществления блочного шифра DES,
Фиг. 6b схематически показывает пример варианта осуществления цикловой функции DES,
Фиг. 7a схематически показывает машиночитаемый носитель с записываемой частью, содержащей компьютерную программу в соответствии с вариантом осуществления,
Фиг. 7b схематически показывает представление процессорной системы в соответствии с вариантом осуществления.
ПОДРОБНОЕ ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
Хотя данное изобретение допускает вариант осуществления во многих разных видах, один или несколько конкретных вариантов осуществления показаны на чертежах и будут подробно описаны в этом документе с пониманием того, что настоящее раскрытие изобретения нужно рассматривать как пример принципов изобретения, и оно не имеет целью ограничить изобретение показанными и описанными конкретными вариантами осуществления.
В дальнейшем элементы вариантов осуществления для понимания описываются в действии. Однако станет очевидно, что соответствующие элементы выполнены с возможностью выполнения функций, описываемых как выполняемые ими.
Кроме того, изобретение не ограничивается вариантами осуществления, и изобретение заключено в каждом без исключения новом признаке или комбинации признаков, описанных выше или перечисленных во взаимно разных зависимых пунктах формулы изобретения.
Фиг. 6a, которая скопирована из FIPS 46-3, иллюстрирует, в частности, блочный шифр DES и блочные шифры вообще. Блочный шифр принимает вход 610 блочного шифра, на который действует последовательность циклов блочного шифра; в случае DES проводится 16 циклов для тройного DES 48. Первый цикл блочного шифра действует на вход 610 блочного шифра, каждый из следующих циклов действует на выход предыдущих циклов. В цикле блочного шифра цикловая функция f применяется к части выхода предыдущего цикла. Вход блочного шифра обладает неким размером данных, в случае DES - 64 разряда. Каждый цикл блочного шифра изменяет свой вход цикла блочного шифра для создания выхода цикла блочного шифра. Вход и выход цикла блочного шифра обладают одинаковым размером данных. Отметим, что DES содержит начальную перестановку и обратную начальную перестановку в начале и конце блочного шифра. Они не имеют криптографической значимости, поскольку не зависят от ключа.
Стандарт шифрования данных описывает блочное кодирование с ключом 64-разрядного блока. Ключ формально содержит 64 разряда, но только 56 его разрядов фактически используются в шифровании. Шифрование и дешифрование использует 16 итераций, называемых циклами. В цикле r,
Figure 00000003
, используется 48-разрядный ключ цикла
Figure 00000004
, разряды которого являются (зависящим от цикла) подмножеством 56 разрядов ключа.
Цикловая функция f DES иллюстрируется на фиг. 6b и имеет вид:
Figure 00000005
Здесь P является перестановкой 32 разрядов, а E является картой расширения, которая отображает строки разрядов с длиной 32 в строки разрядов с длиной 48 путем дублирования половины разрядов. S-блок S отображает строки разрядов с длиной 48 в строки разрядов с длиной 32, действуя по группам на 6-разрядные подстроки:
Figure 00000006
где каждый S-блок
Figure 00000007
отображает строки разрядов с длиной 6 в строки разрядов с длиной 4, а || обозначает сцепление. На фиг. 6b вход S-блока
Figure 00000008
обозначен ссылкой 611, выход обозначен ссылкой 612.
S-блоки (блоки подстановок) широко применяются в блочных шифрах для увеличения запутывания Шеннона в блочном шифре. S-блок особенно подходит для его кодирования в виде функции данных в соответствии с вариантом осуществления. Дешифрование выполняется путем обратного хода, то есть снизу вверх. Обратная цикловая функция имеет вид
Figure 00000009
Так как DES использует ключ только из 56 разрядов, возможен поиск по всему ключевому пространству; однако восстановление ключей с использованием атаки дифференциальных искажений, особенно на программную реализацию, будет на порядки быстрее. Тройной DES использует три 56-разрядных ключа
Figure 00000010
и шифрует путем выполнения сначала шифрования DES с ключом
Figure 00000011
, с последующим дешифрованием DES с ключом
Figure 00000012
, с последующим шифрованием DES с ключом
Figure 00000013
.
DES будет использоваться в этом документе в качестве основного примера блочного шифра, а S-блоки DES - в качестве главного примера функции данных. Конечно, варианты осуществления на основе DES всесторонне проверены, и было обнаружено, что кодирования типа "белого ящика" в DES значительно меньше в варианте осуществления, как дополнительно задается ниже. Результаты по DES прямо переносятся на тройной DES, так как S-блоки являются такими же, как в DES. Другие варианты осуществления применяются к другим блочным шифрам, например к AES, и в частности к их S-блоку (блокам). AES не относится к типу Фейстеля, как DES, но является блочным шифром подстановочно-перестановочной сети (SPN). S-блок DES имеет больше входов, чем выходов (6 против 4), тогда как S-блок в AES имеет равное количество входов и выходов.
Вообще, варианты осуществления объясняемой ниже системы также могут использоваться для других функций, например, которые требуют защищенную реализацию. Например, с использованием варианта осуществления можно реализовать базисные элементы типа хэшей или кодов аутентификации сообщений и т. п.
Фиг. 1 схематически показывает пример функции 100 данных. Функция S данных отображает некоторое количество (n) входных переменных 110 в некоторое количество (m) выходных переменных 120. Например, функция данных может быть S-блоком вроде S-блока в DES. Входами функции 100 данных могут быть разряды, например, в случае S-блока DES может быть 6 входных разрядов и 4 выходных разряда. В случае S-блока AES может быть 8 входных и выходных разрядов. Количество разрядов может быть разным, например, 8 входных разрядов и 4 выходных разряда, и т. п.
Ниже представим функцию 100 данных как функцию вида
Figure 00000014
. То есть из математического поля с
Figure 00000015
элементами в поле с
Figure 00000016
элементами. Может быть n=m, например, как в S-блоке AES. Особенно выгодны варианты осуществления, в которых m<n, поскольку они допускают выполнение всех вычислений в меньшем поле
Figure 00000017
; на функции с m<n будем ссылаться как на "конические" функции, поскольку диапазон строго меньше области определения. Если используются не разряды, а, скажем, переменные, которые принимают больше 2 разных значений, то соответственно может использоваться большее поле для выполнения в нем вычислений.
Фиг. 2a схематически показывает пример варианта осуществления вычислительного устройства 200. Реализация функции данных из фиг. 1 может потребовать много памяти, особенно если используется кодирование входа и/или выходов. Например, в реализации типа "белого ящика" функцию данных из фиг. 1 можно реализовать в виде единой таблицы. Однако даже для случая S-блока DES объем данных в такой таблице может быстро увеличиваться. Например, если каждый разряд кодируется как 16 долей, и каждая доля дополнительно имеет разряд состояния, насчитывая в итоге 16 разрядов состояния (больше информации о возможных кодированиях см. ниже), входной размера S-блока раздувается до
Figure 00000018
разрядов. Это означает, что единая таблица была бы невозможно большой, содержащей
Figure 00000019
записей. Соответственно, есть потребность в другом способе кодировать функцию данных, которая может надежно кодироваться в "белом ящике" и помимо этого требует меньше пространства хранения.
Вычислительное устройство 200 выполнено с возможностью приема входных данных 211. Входные данные 211 могут быть вроде входов функции 100 данных. Входы могут кодироваться. Входные данные 211 могут быть многоразрядными. Входные данные 211 также можно брать из некоторого другого поля, скажем
Figure 00000020
(поле с 4 элементами), вместо разрядов. Входные переменные разбиваются на одну или несколько переменных выбора и одну или несколько переменных оценки. В принципе, возможно любое разбиение, но разные выборы будут обладать разным компромиссом. Вообще говоря, увеличение количества разрядов выбора приведет к меньшему размеру реализации, тогда как выбор меньшего количества разрядов выбора приведет к быстрой реализации. Размер реализации относится к размеру хранения реализации, в частности, к общему размеру таблицы, используемому в реализации типа "белого ящика". В свою очередь, большие таблицы приведут к промахам кэша и, соответственно, также к медленному исполнению. Функция 100 данных организована в вычислительном устройстве 200 в виде вычисления, содержащего функции выбора и функции оценки. Для каждой конкретной комбинации значений переменных выбора (v) задается соответствующая функция
Figure 00000021
выбора и функция
Figure 00000022
оценки. Чтобы избежать путаницы, отметим, что функция
Figure 00000022
оценки не обязательно должна относиться к любому из S-блоков DES; кроме того, индекс v здесь относится к переменным выбора.
Вычислительное устройство 200 содержит механизм 220 выбора. Механизм 220 выбора выполнен с возможностью приема одной или нескольких переменных 222 выбора. Входные переменные из входных переменных 211, которые являются переменными выбора, указываются ссылкой 222. Механизм 222 выбора выполнен с возможностью оценивания функций
Figure 00000023
выбора по принятым переменным выбора. Например, механизм 220 выбора может оценивать каждую из функций
Figure 00000023
выбора по каждой конкретной комбинации значений переменных выбора (v) для переменных выбора. Функция
Figure 00000023
выбора в качестве входа принимает переменные выбора, а выход функции выбора указывает, равны ли переменные выбора, принятые в функции выбора, конкретной комбинации значений (v), соответствующих функции выбора. Выход механизма выбора указывается ссылкой 224.
Функция выбора может быть дельта-функциями Кронекера за исключением того, что они могут иметь несколько входов. В математическом обозначении
Figure 00000024
обозначает:
Figure 00000025
В вышеприведенном примере i и j могут представлять несколько входов, например, для всех переменных выбора. Кроме того, функция выбора не обязательно должна возвращать результаты 0 и 1, хотя они удобны, но может использовать другие значения, в принципе можно использовать любые два разных значения, и размещаться где-нибудь еще в вычислительном устройстве 200.
Вычислительное устройство 200 содержит механизм 210 оценки. Механизм 210 оценки выполнен с возможностью приема одной или нескольких переменных 212 оценки и оценивания функций оценки по принятым переменным оценки. Входные переменные из входных переменных 211, которые являются переменными оценки, указываются ссылкой 212.
Функция оценки в качестве входа принимает переменные оценки, а выход функции оценки представляет собой выход функции данных, входом которой является объединение переменных оценки и конкретной комбинации значений переменных выбора, соответствующих функции оценки. Другими словами, функция оценки выдает результат, который выдала бы функция данных, если бы функция данных приняла в качестве входа переменные оценки вместе с конкретными значениями переменных выбора, которым соответствует функция оценки.
Идея в вариантах осуществления состоит в том, что функции выбора выбирают, какая конкретная комбинация значений переменных выбора присутствует на входе, и в определенном смысле выбирают правильную функцию оценки. Функции выбора являются очень простыми функциями для реализации. Функции выбора зависят только от количества разрядов выбора и могут быть одинаковыми для разных функций данных. Соответственно, функцию выбора можно повторно использовать для разных функций данных в одном и том же вычислительном устройстве.
Механизм оценки и механизм выбора также могут называться блоком оценки и блоком выбора.
Вычислительное устройство 200 содержит комбинационный механизм, выполненный с возможностью комбинации выходов механизма выбора и механизма оценки в выход функции данных для входных переменных. Например, комбинационный механизм может суммировать произведения (
Figure 00000026
) функции выбора (
Figure 00000021
) и функции оценки (
Figure 00000022
), соответствующие одной и той же конкретной комбинации значений. Если функция выбора дает значения 0 и 1, то это точно идентифицирует правильные функции оценки. Если функция выбора дает некоторые другие значения помимо 0 и 1, то может использоваться некоторая другая линейная комбинация функций выбора.
В варианте осуществления сумма берется по всем комбинациям значений переменных выбора (v). Таким образом, функция данных будет правильно эмулироваться для всех входных переменных. Однако если известно, что не может возникнуть некоторая комбинация переменных выбора, то сумму нужно взять только по возможным комбинациям переменных выбора. Это дополнительно уменьшит размер вычислительного устройства.
Ниже приводится математическое описание варианта осуществления для дополнительного разъяснения и пояснения примером.
Рассматриваемая функция данных является функцией
Figure 00000027
; отметим, что можно принять m<n. Выбираем положения
Figure 00000028
в качестве переменных выбора из набора входных положений (или переменных)
Figure 00000029
; пусть m оставшихся положений
Figure 00000030
содержат переменные оценки. Теперь для каждого
Figure 00000031
задаем функцию
Figure 00000032
, полагая
Figure 00000033
, где
Figure 00000034
для
Figure 00000035
и
Figure 00000036
для
Figure 00000037
. Другими словами, для каждого
Figure 00000038
функция
Figure 00000039
получается из S путем установки выбора n-m из входов в значения, заданные v. Чтобы вычислить S(x), рассмотрим значения входа x в n-m выбранных положениях; если тем значением является v, то применяем функцию
Figure 00000040
к оставшимся входным символам.
В защищенной, типа "белого ящика", оценке S(x) механизм выбора выбирает
Figure 00000041
, а затем возвращает результат
Figure 00000042
без раскрытия информации о входе x и выходе S(x). Комбинационный механизм 230 может использовать следующее тождество:
Figure 00000043
где
Figure 00000024
удовлетворяет
Figure 00000044
Фиг. 2b схематически показывает пример варианта осуществления механизма 210 оценки. Механизм 210 оценки может содержать несколько блоков оценки, реализующих функции оценки; показаны блоки 215 и 216 оценки. Блок оценки можно реализовать в виде таблицы, например, справочной таблицы, или в виде сети таблиц. Например, механизм оценки из фиг. 2b может оценивать каждую из функций оценки, включая функции 215 и 216, по переменным оценки, принятым в механизме 210 оценки. Правильный результат обязан быть включенным в функции оценки, если функции оценки включаются для каждой возможной комбинации значений функций выбора. Выбор правильного результата среди нескольких результатов нескольких функций оценки выполняется с помощью механизма выбора.
Фиг. 2c схематически показывает пример варианта осуществления механизма 220 выбора. Механизм 220 выбора может содержать несколько блоков выбора, реализующих функции выбора; показаны блоки 225 и 226 выбора. Блок выбора можно реализовать в виде таблицы, например, справочной таблицы, или в виде сети таблиц.
Фиг. 2d схематически показывает пример варианта осуществления механизма 220 выбора. В варианте осуществления переменные выбора могут дополнительно разбиваться на несколько групп переменных выбора. Тогда функцию выбора можно организовать в вычислительном устройстве 200 в виде произведения нескольких подфункций выбора, причем каждая соответствует группе из нескольких групп переменных выбора, при этом подфункция выбора в качестве входа принимает переменные выбора в группе, а выход подфункции выбора указывает, равны ли принятые переменные выбора конкретной комбинации значений в группе, соответствующей функции выбора.
Например, в механизме 220 выбора из фиг. 2d блок 225.1 выбора и блок 226.1 выбора могут принимать первую группу переменных выбора, тогда как блок 225.2 выбора и блок 226.2 выбора могут принимать вторую группу переменных выбора. Может быть больше 2 групп. При желании количество переменных выбора можно заполнить фиктивными переменными, скажем нулями (0), пока количество переменных выбора и фиктивных переменных кратно количеству групп; в последнем случае количество входов в блоке выбора может быть таким же. Комбинационный блок 227 выполнен с возможностью комбинации выходов блоков выбора, соответствующих одной и той же комбинации значений. Например, комбинационный блок 227 может комбинировать выходы комбинационных блоков 225.1 и 225.2, например, путем умножения или операции логического И.
Например, в варианте осуществления функция данных является конической функцией с n входными переменными и m выходными переменными (m<n). В варианте осуществления количество переменных оценки может выбираться как m, а количество переменных выбора как n-m. Количество групп переменных выбора выбирается как
Figure 00000045
. Эти выборы позволяют выполнять все вычисления в
Figure 00000046
, последнее, в свою очередь, позволяет чаще повторно использовать кодированные таблицы умножения и сложения, чем если бы вычисления требовались в нескольких разных полях. Например, если n=8 и m=3, то можно использовать две группы разрядов выбора с одним разрядом заполнения.
Ниже приводится математическое описание варианта осуществления для дополнительного разъяснения и пояснения примером. Чтобы обеспечить вычисление только на меньшем выходном поле
Figure 00000047
, разделим разряды выбора
Figure 00000048
на порции из m разрядов, например
Figure 00000049
где
Figure 00000050
и каждое
Figure 00000051
. Если n-m не делится на m, то заполняем разряды выбора ведущими нулями до тех пор, пока результирующее количество разрядов не поделится на m перед разделением. Если вместо разряда используются q-значные переменные, то
Figure 00000016
выше можно заменить
Figure 00000052
.
Из
Figure 00000053
, тогда и только тогда, когда оба
Figure 00000054
и
Figure 00000055
, получаем
Figure 00000056
Последний результат также можно указать как добавление логического сравнения:
Figure 00000057
. В этом уравнении операция "=" интерпретируется как логическая операция типа символа Кронекера, например, возвращающая 0 в случае неравенства и 1 в случае равенства. Логическое сравнение с тем же успехом может выполняться над кодированными переменными с использованием сети таблиц. Если используется больше 2 групп, то "2" в формуле можно заменить количеством групп.
В варианте осуществления механизм 220 выбора из фиг. 2d содержит функцию выбора для всех комбинаций значений для каждой из нескольких групп переменных выбора. Например, если имеется 8 переменных выбора, разделенных на две группы A и B переменных выбора, то механизм 220 выбора может содержать функции выбора для всех возможных комбинаций значений для группы A и функции выбора для всех возможных комбинаций значений для группы B. Чтобы эмулировать функцию выбора для конкретной комбинации значений для полного набора функций выбора, комбинационный блок 227 может быть выполнен с возможностью комбинации правильной функции выбора из группы A и из группы B. Функции выбора на группе переменных также могут выводить 0 и 1 для указания отсутствия или наличия совпадения. Эти значения можно легко комбинировать с умножением или сложением и т. п.
Механизм выбора может содержать несколько блоков выбора, реализующих функции выбора, например, несколько блоков выбора могут непосредственно представлять функции выбора либо могут представлять функцию выбора на группах переменных выбора.
Блоки выбора и/или блоки оценки можно реализовать в виде таблиц или сетей таблиц.
В варианте осуществления количество входных переменных (n) больше количества выходных переменных (m), при этом количество переменных оценки равно количеству выходных переменных. Количество переменных выбора может быть равно разности (n-m) между количеством входных переменных и количеством выходных переменных. Это позволяет выполнять все вычисления с использованием меньшего количества переменных, например, в поле
Figure 00000058
.
Существуют несколько способов кодировать переменную w. Переменная w может непосредственно соответствовать переменной выбора или оценки. Однако переменная w также может собирать несколько переменных. Например, вычислительное устройство 200 может быть выполнено с возможностью оперирования несколькими переменными. Например, в варианте осуществления переменные выбора, оценки и выходные переменные являются разрядными переменными, представляющими один разряд. В варианте осуществления несколько разрядных переменных можно комбинировать в более крупные переменные.
Например, в варианте осуществления переменная 310 может представлять 2 или 4 переменные выбора или оценки. Например, для конической функции большая переменная может содержать такое же количество разрядов, как и выходные переменные (m). (n-m) переменных выбора собираются в одну или несколько групп из (m) переменных, каждая из которых представляется в большей переменной.
Например, S-блок DES содержит 4 выходных разрядных переменных и 6 входных разрядных переменных. В этом случае большая переменная w может представлять 4 разряда. Входные разряды можно разбить на 4 разряда оценки, представленные одной большой 4-разрядной переменной, и 2 переменные выбора, которые также представляются одной (большой) 4-разрядной переменной.
Например, S-блок AES содержит 8 выходных разрядных переменных и 8 входных разрядных переменных. В этом случае большая переменная w также может представлять 4 разряда. Входные разряды можно разбить на 4 разряда оценки, представленные одной большей 4-разрядной переменной, и 4 переменные выбора, также представленные одной (большей) 4-разрядной переменной. Выход можно представить двумя большими 4-разрядными переменными. Ниже объясняется, как можно представить, является ли переменная w разрядной переменной или большей переменной.
Переменная w может кодироваться посредством отображения
Figure 00000059
. Кодирование является криптографическим кодированием и может выбираться случайно либо может быть шифрованием с использованием секретного ключа, и т. п. Атакующему неизвестно используемое кодирование. Когда обрабатывается переменная w, неявно предполагается кодирование в устройстве. Переменная также может кодироваться вместе с переменной s состояния,
Figure 00000060
, это дополнительно запутывает связь между w и кодированием. Более надежное кодирование разделяет переменную на несколько долей и кодирует каждую долю, предпочтительно вместе с переменной состояния. Хотя последний тип кодирования наиболее защищен, в этом типе кодирования особенно трудно комбинировать с представлением функции данных в виде сети таблиц. Фиг. 3 иллюстрирует способ кодирования переменной w, который использует несколько долей. Фиг. 3 показывает переменную 310 w и иллюстрирует, как w может кодироваться для использования в криптографическом устройстве, например криптографическом устройстве 200, чтобы избегать коллизий на w. Переменная 310 w распределяется по нескольким долям
Figure 00000061
. Разрядный размер w будем называть k. В варианте осуществления разрядный размер доли
Figure 00000061
равен разрядному размеру w. Разные переменные могут обладать разными разрядными размерами. Например, k может быть 1, 2, 4 или больше. В варианте осуществления k=1, 2, 3, 4, 5, 6, 7, 8 или больше. Показаны доли 321, 322 и 323.
Доли могут выбираться так, что
Figure 00000062
. В варианте осуществления эта сумма использует функцию XOR для суммирования, однако возможны и другие выборы. Например, сумма может использовать арифметическое сложение по модулю
Figure 00000063
.
В более общем виде может задаваться комбинирующая функция (
Figure 00000064
), которая отображает доли (
Figure 00000061
) в переменную (w). Комбинирующая функция может быть XOR или арифметическим сложением, упомянутым выше. Комбинирующая функция обладает свойством, что отображение из любой одиночной доли (
Figure 00000065
) в переменную (w), полученную путем фиксирования значений других долей (
Figure 00000066
), является биекцией. То есть функция
Figure 00000067
является биекцией; элементы
Figure 00000068
обозначают статическое значение. Это свойство гарантирует, что никакое подмножество долей не дает информацию о w. Существует много таких комбинирующих функций. Например, d может быть любой линейной комбинацией долей
Figure 00000069
, в которой коэффициенты
Figure 00000070
являются нечетными; сумма использует арифметическое сложение по модулю
Figure 00000071
. Комбинирующая функция может быть многочленом.
Фиг. 3 дополнительно показывает несколько состояний
Figure 00000072
. Показаны состояния 331, 332 и 333. Количество долей 321-323 такое же, как количество состояний 331-333. Состояния являются избыточными данными, которые вносят избыточность в кодирование переменной. Каждая из долей согласована с одним из состояний и кодируется в кодированную долю:
Figure 00000073
. В варианте осуществления кодирования
Figure 00000074
отличаются. Например, кодирования
Figure 00000074
могут случайно выбираться во время компиляции. Не является строго необходимым, чтобы кодирование было биективным, при условии, что оно обратимо по отношению к
Figure 00000061
, то есть с помощью сведений о
Figure 00000074
и
Figure 00000075
можно восстановить долю
Figure 00000061
. Тем не менее, в вариантах осуществления кодирования
Figure 00000074
являются биективными. Последнее является более практичным выбором при реализации и упрощает анализ. Как только решено, какие переменные будут кодироваться с какими кодированиями в какой момент, таблицы можно просто приспособить для учета кодирования. Использование состояний необязательно, но предпочтительно, так как состояния увеличивают запутывание, поскольку они допускают несколько представлений для одного и того же значения данных.
Фиг. 3 показывает, что доля 321 и состояние 331 кодируются посредством кодирования 361 в кодированную долю 341. Также доля 322 и состояние 332 кодируются посредством кодирования 362 в кодированную долю 342; доля 323 и состояние 333 кодируются посредством кодирования 363 в кодированную долю 343. Будем ссылаться на состояния и доли, которые кодируются вместе для представления переменной w, как на соответствующие той переменной.
Результатом являются несколько кодированных долей, из которых показаны кодированные доли 341, 342 и 343. В варианте осуществления переменная w представляется в криптографическом устройстве 200 в виде нескольких кодированных долей. В криптографическом устройстве не должны возникать ни некодированные доли 321-323, ни состояния 331-333.
Состояния сначала могут просто выбираться случайно, а позже обновляться посредством таких же процессов, которые обновляют переменную w. В варианте осуществления несколько состояний
Figure 00000072
, соответствующих одной и той же переменной w, выбираются так, что существует инъективное отображение 352, обозначенное как
Figure 00000076
, из входного сообщения M 310 в несколько состояний (
Figure 00000077
). Инъективное отображение обладает свойством, что
Figure 00000078
тогда и только тогда, когда
Figure 00000079
. В частности,
Figure 00000076
можно выбрать биективным, так как это более строгое условие подразумевает инъективность. Фиг. 3 показывает, как несколько состояний 331-333 зависят от входного сообщения 300 M, и инъективного отображения
Figure 00000076
352. Например, входное сообщение 300 может быть входным сообщением 610. Входное сообщение 300 может быть, например, входным сообщением, принятым извне устройства 200, например, входом в блочный шифр. Так как состояния кодируют входное сообщение M 300, разные M приведут к разным кодированным переменным:
Figure 00000080
.
Отображение 352 не должно быть явным при реализации криптографической функции для большинства или для всех переменных. Например, как только у кодированной переменной есть необходимая инъективная связь с входным сообщением, операции, выполняемые над частями долей
Figure 00000061
кодированной переменной, могут одновременно выполнять избыточные операции над частями состояний, которые сохраняют инъективную связь. Так как вычисления осуществляются в кодированной области определения, вычисления над состояниями нельзя отделить от вычислений над долями. Например, рассмотрим, что первая и вторая переменные
Figure 00000081
и
Figure 00000082
кодируются, как указано выше, в виде нескольких кодированных долей
Figure 00000083
и
Figure 00000084
. Предположим, что операция g над
Figure 00000081
и
Figure 00000082
вычисляет третью переменную
Figure 00000085
. Переменная
Figure 00000086
представляется в виде кодированных долей
Figure 00000087
. В варианте осуществления состояния, кодированные в
Figure 00000087
равны состояниям, кодированным в
Figure 00000083
или в
Figure 00000084
. В этом случае, если у входов есть необходимая связь со входным сообщением M, то таким будет и выход
Figure 00000086
. Таким образом, необходимую связь можно сохранить во всем вычислении. Операцию можно реализовать в виде сети таблиц для выполнения операции, которая, в свою очередь, может быть подсетью сети таблиц, реализующей криптографическую функцию.
Начальные переменные, например, которые непосредственно получаются из входного сообщения, могут быть приняты криптографическим устройством 200 в правильной кодированной форме. В качестве альтернативы устройство 200 может содержать кодирующее устройство, выполненное с возможностью кодирования входа.
Кодирование переменной w вместе с состоянием и/или в виде нескольких долей делает менее вероятным то, что есть коллизия на кодированном значении во время исполнения криптографической функции. Соответственно, здесь не возможна никакая коллизионная атака.
В практическом варианте осуществления не будет других представлений w помимо представления посредством кодированных долей. Кроме того, защита эффективнее, если таким образом защищается больше чувствительных переменных. Все переменные, которые зависят от ключа и от входного сообщения, предпочтительно защищаются. Чтобы предотвратить коллизионные атаки, не требуется, чтобы входные сообщения представлялись в виде кодированных долей перед тем, как выполняется операция с ключом. Однако гарантия того, что инъективное отображение существует и поддерживается, упрощается наличием входного сообщения, кодированного в виде нескольких наборов кодированных долей даже перед тем, как используется ключ.
Сети таблиц сами по себе известны из криптографии "белого ящика". См., например, "White-box cryptography and an AES implementation" под авторством Chow и др. Пример сети 420 таблиц показан на фиг. 4a, в этом случае - сеть таблиц для вычисления векторных произведений.
Сеть таблиц принимает один или несколько входов, например, входов 410, и создает один или несколько выходов, например, выходов 430. В сети 420 таблиц показано несколько справочных таблиц; показаны таблицы 421-424. Таблицы получают входы непосредственно из входов 410 и/или выходов других таблиц. Таблица может получать одиночный вход, два входа или больше двух входов.
Удобным способом преобразования вычисления над некодированными переменными w в вычисление над переменными w, кодированными в виде нескольких долей, предоставляется в "Higher-Order Masking Schemes for S-boxes" под авторством Carlet и др. Этот документ не обсуждает коллизионные атаки или кодирование с состояниями. Документ дальше называется как "Carlet". Carlet не предотвращает коллизию на переменной, кодированной в виде нескольких долей.
Ниже объясняется, как вычисление над переменной w, например, для вычисления значения D(w) функции, можно преобразовать в вычисление над переменной w, кодированной в несколько долей. Функция D может быть функцией данных, но такой же способ может использоваться для любого внутреннего этапа вычисления криптографической функции, например, сложения, умножения и т. п. Покажем, как создать сеть таблиц, которая вычисляет D(w) на долях. Сначала рассмотрим случай, в котором у D есть один вход w. Несколько состояний можно обрабатывать аналогично. Также сначала будем игнорировать состояния, позже покажем, как можно добавить состояния.
Если w представляется n долями
Figure 00000088
, то с тем же успехом хотим представить D(w) с помощью n долей, чтобы обеспечить результирующую переменную такой же защитой, как и w. Это возможно для любой функции путем использования следующих фактов.
Для демонстрации сначала предполагаем, что значение D(w), как и w, также является k-разрядным числом. k-разрядные числа можно считать элементами конечного поля Галуа
Figure 00000089
, а функцию D - функцией от
Figure 00000089
. Все функции в конечных полях являются многочленами, соответственно, для любой функции D от
Figure 00000089
существуют коэффициенты
Figure 00000090
, так что для любого w
Figure 00000091
Также функцию S(x) данных можно представить в виде многочлена от нескольких переменных:
Figure 00000092
где
Figure 00000093
обозначает набор многочленов, представляющий функции оценки
Figure 00000094
на
Figure 00000058
, а
Figure 00000095
- многочлены выбора, то есть набор многочленов, представляющий дельты
Figure 00000096
на
Figure 00000097
.
Многочлен D и многочлены
Figure 00000098
и
Figure 00000099
также можно выразить в виде вычисления над долями следующим образом. Пусть доли задаются
Figure 00000100
и
Figure 00000101
. Для простоты предположим, что сумма долей равна некодированным переменным. Сумма X и Y может кодироваться с долями
Figure 00000102
. Скалярное кратное
Figure 00000103
может кодироваться с долями
Figure 00000104
. В конечном счете пусть Z будет произведением X и Y. Зададим для
Figure 00000105
значения
Figure 00000106
и
Figure 00000107
.Возьмем для
Figure 00000106
случайный элемент из
Figure 00000089
, например, путем выбора случайной k-разрядной строки. В варианте осуществления случайное число для
Figure 00000106
получается путем выбора во время компиляции функция рандомизации
Figure 00000108
из входного сообщения M к
Figure 00000089
и задания
Figure 00000109
. Последнее обладает преимуществом в том, что избегают доверия к генератору случайных чисел во время исполнения. Только когда создается сеть таблиц, называемое временем компиляции, нужен источник случайности. Отметим, что Carlet опирается на случайность во время исполнения. Это открывает Carlet для манипуляции источником случайных чисел во время исполнения. В частности, генератор случайных чисел можно перехватить и заменить постоянными значениями.
Примем
Figure 00000110
; здесь порядок вычислений важен и указывается скобками. Теперь для
Figure 00000111
примем
Figure 00000112
.
Подсеть таблиц векторных произведений может вычислить
Figure 00000107
. Эти таблицы вычисляют два векторных произведения
Figure 00000113
и
Figure 00000114
.
В варианте осуществления функция
Figure 00000108
рандомизации для вычисления
Figure 00000106
реализуется в виде сети таблиц, принимающей в качестве входа входные сообщения. Это устраняет потребность в источнике случайных чисел во время исполнения.
Доли
Figure 00000115
теперь представляют произведение X и Y. Используя операции сложения, скалярного умножения и умножения, многочленное представление для S может быть выражено в виде операции над долями. Операцию над долями, в свою очередь, можно реализовать в виде справочной таблицы, принимающей в качестве входа одну или несколько долей и/или случайные числа.
Возможная сеть 420 таблиц для вычисления
Figure 00000107
иллюстрируется на фиг. 4a. Таблицы 421-424 взаимодействуют для вычисления
Figure 00000107
. Входы в сеть 420 таблиц показаны ссылкой 410. Выход сети 420 таблиц показан ссылкой 430.
Например, таблицы 421 и 422 могут быть выполнены с возможностью умножения своих входов, тогда как таблицы 423 и 424 могут быть выполнен с возможностью сложения своих входов. Отметим, что каждая из таблиц может использовать разные кодирования.
Фиг. 4b схематически показывает пример варианта осуществления сети 440 таблиц с умножением. Сеть 440 таблиц с умножением может создаваться с использованием приведенных выше формул для вычисления
Figure 00000116
. Сеть 440 таблиц с умножением выполнена с возможностью умножения переменной X, представленной в вычислительном устройстве 200, скажем, в его хранилище данных, в виде первого кратного кодированных долей (
Figure 00000075
), и второй переменной Y, представленной в виде второго кратного кодированных долей (
Figure 00000117
). Сеть таблиц с умножением действует на первое и второе кратное кодированных долей (
Figure 00000075
,
Figure 00000117
) и получает третье кратное кодированных долей (
Figure 00000118
), представляющее собой произведение первой и второй переменной. Отметим, что здесь верхние индексы относятся к долям, а не степени. Сеть 440 таблиц с умножением может быть частью сети таблиц для вычисления криптографической функции.
Сеть 440 таблиц с умножением может содержать подсети таблиц векторных произведений для вычисления векторных произведений,
Figure 00000113
. В варианте осуществления векторные произведения вычисляются парами
Figure 00000119
. Например, сеть 440 таблиц с умножением может содержать сеть 420 таблиц. Сеть 440 таблиц с умножением также может содержать сеть 450 таблиц для вычисления одной или нескольких функций
Figure 00000108
рандомизации. На фиг. 4b сеть 450 таблиц зависит от входного сообщения 110. Эта зависимость указана пунктирной линией для указания, что зависимость можно получить через посредника, например, переменные, сохраненные в хранилище данных. Сеть 440 таблиц может получать свои входы и хранить свои выходы в хранилище данных вычислительного устройства 200.
Таблицу, действующую на доли, можно преобразовать в таблицу, действующую на кодированные доли. Задаем s и t так, что для кодированной доли x имеем
Figure 00000120
. Функции s и t получают состояние и долю из x соответственно. Пусть задана таблица T для t(x). Тогда
Figure 00000121
задает таблицу для x, которая реализует таблицу T для части доли x и функцию P для части состояния. Функция P избыточна и может выбираться при создании сети таблиц, например, во время компиляции. Например, P может быть функцией тождества. Аналогичные построения возможны для нескольких входов. Используемое здесь кодирование
Figure 00000122
также называется входным кодированием. Кодирование Enc' называется выходным кодированием. Входное и выходное кодирования таблицы не должны быть одинаковыми при условии, что выходное кодирование, используемое для выхода таблицы, такое же, как входное кодирование следующей таблицы, которая использует упомянутый выход в качестве входа.
Фиг. 2e показывает вариант осуществления вычислительного устройства 200, например, которое описано в отношении фиг. 2a, содержащего хранилище 242 данных и хранилище 244 таблиц. Хранилище 242 данных выполнено с возможностью хранения переменных, на которые действует вычислительное устройство 200. В частности, хранилище 242 данных может хранить кодированные переменные, например несколько кодированных долей. Хранилище 242 таблиц выполнено с возможностью хранения одной или нескольких сетей таблиц для реализации механизма 220 выбора и механизма 230 оценки. Хранилище 242 данных и хранилище 244 таблиц могут быть электронным запоминающим устройством. Они могут быть двумя частями одного и того же запоминающего устройства. Хранилище 244 таблиц может быть энергонезависимым хранилищем. Хранилище 242 данных может быть энергозависимым хранилищем.
Вычислительное устройство 200 может содержать блок 243 управления, сконфигурированный для применения функции данных, например, как часть блочного шифра, к входному сообщению путем применения нескольких справочных таблиц в хранилище 244 таблиц к переменным, представленным в хранилище 242 данных. Например, хранилище 244 таблиц может дополнительно содержать команды, которые указывают порядок, в котором нужно применять таблицы к каким переменным.
Вычислительное устройство 200 может содержать сетевой интерфейс 250. Сетевой интерфейс 250 может быть выполнен с возможностью приема кодированных данных по компьютерной сети. Например, вычислительное устройство 200 может принимать зашифрованные данные, например, зашифрованное содержимое, которое дешифруется криптографическим устройством 200. Входные данные, принятые по сетевому интерфейсу 250, можно представить как кодированные доли, например, как описано выше. Это не является необходимым, так как кодирование может выполняться внутри устройства 200.
Как правило, устройство 200 содержит микропроцессор (не показан отдельно), который исполняет подходящее программное обеспечение, сохраненное в устройстве 200; например, это программное обеспечение может быть загружено и/или сохранено в соответствующем запоминающем устройстве, например, энергозависимом запоминающем устройстве, таком как RAM, или энергонезависимом запоминающем устройстве, таком как флэш-память (не показано отдельно). В качестве альтернативы устройства 200 можно полностью или частично реализовать в программируемой логике, например, в виде программируемой пользователем вентильной матрицы (FPGA). Устройства 200 можно полностью или частично реализовать в виде так называемой специализированной интегральной схемы (ASIC), то есть интегральной схемы (IC), настроенной на конкретное использование. Например, схемы можно реализовать в CMOS, например, с использованием языка описания аппаратных средств, такого как Verilog, VHDL и т. п.
В варианте осуществления устройство 200 содержит схему выбора, схему оценки и комбинационную схему. Устройство 200 может содержать дополнительные схемы, например схему выбора для групп переменных выбора, и т. п. Схемы реализуют соответствующие блоки и механизмы, описанные в этом документе. Схемы могут быть схемой процессора и схемой хранения, при этом схема процессора исполняет команды, представленные электронно в схемах хранения. Схемы также могут быть FPGA, ASIC или т. п.
Ниже обсуждаются влияния на размер кода для S-блоков DES после вышеупомянутого разбиения на разряды выбора и оценки. Сравнение выполняется со способом, раскрытым в "Higher-Order Masking Schemes for S-Boxes" под авторством Goubin и др.; дополнительно называемым Goubin, и на способ, раскрытый в "Fast evaluation of polynomials over binary finite fields and application to side-channel countermeasures" под авторством Coron и др.; дополнительно называемый Coron.
В Таблице 1 перечисляем три способа: прямой циклотомический способ от Goubin-а на
Figure 00000123
, способ CRV от Coron-а на
Figure 00000124
и решение в соответствии с вариантом осуществления на
Figure 00000125
, использующее 2 разряда выбора. Здесь k обозначает количество долей, используемое для представления переменной.
Умножения Сложения Всего табличных поисков
Goubin 11 62
Figure 00000126
Coron 4 92
Figure 00000127
Вариант осуществления 8 75
Figure 00000128
Таблица 1: Подсчет табличных поисков в трех способах.
В Таблице 2 подсчитывается количество байт, используемых для трех способов при применении к DES, где k=16 и каждая n-разрядная доля сопровождается 4-разрядным состоянием, означая, что каждая переменная на
Figure 00000129
представляется 16 долями с разрядным размером n+4. Из этого следует, что размер таблиц для сложения и умножения содержит
Figure 00000130
записей по (n+4) разрядов. Приводим результат как для реализации DES, в которой используются разные таблицы на основе разных кодирований для каждого табличного поиска, так и реализации, в которой таблицы и кодирования повторно используются. Здесь получаем n=6 для подхода Goubin и Coron, но n=4 в соответствии с вариантом осуществления, который разделяет 6-разрядный вход на два разряда выбора и четыре разряда оценки.
Всего табличных поисков Размер на таблицу Общий размер с повторно используемыми кодированиями Общий размер с разными кодированиями на каждый поиск
Goubin
Figure 00000131
Figure 00000132
разрядов
2,5 Мб 7,8 Гб
Coron
Figure 00000133
Figure 00000134
разрядов
2,5 Мб 4,2 Гб
Вариант осуществления
Figure 00000135
Figure 00000136
разрядов
128 Кб 323 Мб
Таблица 2: Подсчет количества байт, необходимых для хранения таблиц, используемых в реализации типа "белого ящика" на долях, когда k=16.
Отметим, что решение в соответствии с вариантом осуществления требует менее 10% памяти по сравнению с другими решениями. Результаты нижней строки следуют из приведенного выше обсуждения; ниже подробно объясняется, как общая теория может применяться к DES.
Стандарт шифрования данных содержит 8 S-блоков (
Figure 00000137
), отображающих 6-разрядные входы в 4-разрядные выходы. Ниже показываем, как создать арифметическую схему на
Figure 00000138
для оценивания каждого S-блока DES. Затем эта арифметическая схема может оцениваться с помощью арифметики долей, как объяснялось выше. Отметим, что v имеет размер 6-4=2 разряда. Поэтому его можно представить одиночным элементом в
Figure 00000139
, обозначенным как [v]. Количество разных значений на
Figure 00000140
у [v] равно
Figure 00000141
. После заполнения они равны
Figure 00000142
Figure 00000143
Figure 00000144
Figure 00000145
4 многочлена выбора
Figure 00000146
на
Figure 00000147
могут вычисляться следующим образом. Вычисляем
Figure 00000148
,
Figure 00000149
,
Figure 00000150
,
Figure 00000151
на
Figure 00000152
с помощью
Figure 00000153
Figure 00000154
Figure 00000155
Figure 00000156
Затем для каждого S-блока
Figure 00000157
выбираем первый и последний входные разряды в качестве переменных выбора, чтобы задать v, то есть на входе
Figure 00000158
задаем
Figure 00000159
. Затем вычисляем многочлены оценки
Figure 00000160
следующим образом:
Figure 00000161
В конечном счете для надежного вычисления
Figure 00000162
оценивается уравнение
Figure 00000163
где каждый многочлен оценивается на долях. Здесь
Figure 00000164
представляет
Figure 00000165
,
Figure 00000166
представляет
Figure 00000167
, и
Figure 00000168
представляет результат
Figure 00000169
.
Это решение требует 4 умножения на
Figure 00000170
для вычисления всех степеней r, необходимых
Figure 00000171
, с использованием циклотомического способа и 1 умножение для вычисления степеней l, необходимых для оценивания многочленов степени 3
Figure 00000172
. Затем необходимо 4 умножения для вычисления произведений
Figure 00000173
. В заключение это решение требует 9 умножений на
Figure 00000174
. Многочлены
Figure 00000175
требуют 15 сложений каждый, а многочлены
Figure 00000176
требуют 3 сложения каждый. Поэтому наше решение требует 4*15+4*3+3=75 сложений.
Фиг. 5a схематически показывает блок-схему последовательности операций для вычислительного способа 500. Вычислительный способ 500 выполнен с возможностью оценивания функции данных (S), отображающей некоторое количество (n) входных переменных в некоторое количество выходных переменных (m), при этом функция данных организована в вычислительном способе в виде вычисления, содержащего функции выбора и функции оценки, причем входные переменные разбиваются на одну или несколько переменных выбора и одну или несколько переменных оценки, для каждой конкретной комбинации значений переменных выбора (v) задается соответствующая функция выбора (
Figure 00000098
) и функция оценки (
Figure 00000099
). Вычислительный способ 500 содержит
часть 510 выбора, содержащую
- прием одной или нескольких переменных выбора, и
- оценивание функций выбора по принятым переменным выбора, при этом функция выбора в качестве входа принимает переменные выбора, а выход функции выбора указывает, равны ли переменные выбора, принятые в функции выбора, конкретной комбинации значений, соответствующих функции выбора,
часть 520 оценки, содержащую
- прием одной или нескольких переменных оценки, и
- оценивание функций оценки по принятым переменным оценки, при этом функция оценки в качестве входа принимает переменные оценки, а выход функции оценки представляет собой выход функции данных, входом которой является объединение переменных оценки и конкретной комбинации значений переменных выбора, соответствующих функции оценки, и
комбинационную часть 530, выполненную с возможностью комбинации выходов механизма выбора и механизма оценки в выход функции данных для входных переменных.
Дополнительный вариант осуществления вычислительного способа 550 содержит
- прием 560 входных переменных, предпочтительно кодированных в виде нескольких кодированных долей
- оценивание 570 многочленов выбора для каждой комбинации значений переменных выбора, со входом виде фактических принятых переменных выбора из принятых входных переменных,
- оценивание 580 многочленов оценки для каждой комбинации значений переменных выбора, со входом виде фактических принятых переменных оценки из принятых входных переменных,
- вычисление 590 комбинации многочленов выбора и оценки, например, путем умножения результатов многочленов выбора на результат соответствующих многочленов оценки и сложения результатов умножений.
Оценки 570 и 580 и вычисление 590 могут выполняться с помощью сети таблиц, оперирующей кодированными переменными.
Возможны многие разные способы исполнения способов 500 и 550, что будет очевидно специалисту в данной области техники. Например, может меняться порядок этапов, или некоторые этапы могут исполняться параллельно. Кроме того, между этапами можно вставить другие этапы способа. Вставленные этапы могут представлять собой уточнения способа, например описанные в этом документе, или могут быть не связаны со способом. Например, этапы 570 и 580 могут исполняться параллельно, по меньшей мере частично. Кроме того, заданный этап может быть не завершен полностью перед тем, как начинается следующий этап.
Способ в соответствии с изобретением может исполняться с использованием программного обеспечения, которое содержит команды для побуждения процессорной системы выполнить способ 500 и/или 550. Программное обеспечение может включать в себя только те этапы, которые выполняются конкретным подобъектом системы. Программное обеспечение может храниться на подходящем носителе информации, например жестком диске, дискете, запоминающем устройстве, оптическом диске и т. п. Программное обеспечение можно отправить в виде сигнала по проводу, или беспроводным способом, или с использованием сети передачи данных, например Интернета. Программное обеспечение можно сделать доступным для загрузки и/или для удаленного использования на сервере. Способ в соответствии с изобретением может исполняться с использованием потока двоичных сигналов, выполненного с возможностью конфигурирования программируемой логики, например программируемой пользователем вентильной матрицы (FPGA), для выполнения способа.
Станет понятно, что изобретение также распространяется на компьютерные программы, особенно на компьютерные программы на некотором носителе, приспособленном для применения изобретения на практике. Программа может быть в виде исходного кода, объектного кода, переходного кода между исходным и объектным кодом, например, в частично компилированном виде, или в любом другом виде, подходящем для использования в реализации способа в соответствии с изобретением. Вариант осуществления, относящийся к компьютерному программному продукту, содержит исполняемые компьютером команды, соответствующие каждому из этапов обработки по меньшей мере в одном из изложенных способов. Эти команды могут подразделяться на подпрограммы и/или храниться в одном или нескольких файлах, которые могут быть связаны статически или динамически. Другой вариант осуществления, относящийся к компьютерному программному продукту, содержит исполняемые компьютером команды, соответствующие каждому из средств по меньшей мере в одной из изложенных систем и/или продуктов.
Фиг. 7a показывает машиночитаемый носитель 1000 с записываемой частью 1010, содержащей компьютерную программу 1020, при этом компьютерная программа 1020 содержит команды для побуждения процессорной системы выполнить способ вычисления в соответствии с вариантом осуществления. Компьютерную программу 1020 можно воплотить на машиночитаемом носителе 1000 в виде физических меток или посредством намагничивания машиночитаемого носителя 1000. Однако с тем же успехом возможен любой другой подходящий вариант осуществления. Кроме того, станет понятно, что хотя машиночитаемый носитель 1000 показан здесь в виде оптического диска, машиночитаемый носитель 1000 может быть любым подходящим машиночитаемым носителем, например жестким диском, твердотельным запоминающим устройством, флэш-памятью и т. п., и может быть незаписываемым либо записываемым. Компьютерная программа 1020 содержит команды для побуждения процессорной системы выполнить упомянутый способ вычисления.
Фиг. 7b показывает на схематическом представлении процессорную систему 1140 в соответствии с вариантом осуществления. Процессорная система содержит одну или несколько интегральных схем 1110. Архитектура одной или нескольких интегральных схем 1110 схематически показана на фиг. 7b. Схема 1110 содержит блок 1120 обработки, например CPU, для выполнения компонентов компьютерной программы, чтобы исполнить способ в соответствии с вариантом осуществления и/или реализовать его модули или блоки. Схема 1110 содержит запоминающее устройство 1122 для хранения программного кода, данных и т. п. Часть запоминающего устройства 1122 может быть только для чтения. Схема 1110 может содержать элемент 1126 связи, например антенну, соединители или то и другое, и т. п. Схема 1110 может содержать специальную интегральную схему 1124 для выполнения части или всей обработки, заданной в способе. Процессор 1120, запоминающее устройство 1122, специальная ИС 1124 и элемент 1126 связи могут быть подключены друг к другу через межсоединение 1130, например шину. Процессорная система 1110 может быть выполнена с возможностью контактной и/или бесконтактной связи с использованием антенны и/или соединителей соответственно.
Следует отметить, что вышеупомянутые варианты осуществления скорее иллюстрируют, а не ограничивают изобретение, и специалисты в данной области техники смогут спроектировать многие альтернативные варианты осуществления.
В формуле изобретения любые знаки ссылок, помещенные в круглые скобки, не следует толковать как ограничивающие формулу изобретения. Использование глагола "содержать" и его спряжений не исключает наличия элементов или этапов помимо заявленных в формуле изобретения. Употребление элемента в единственном числе не исключает наличия множества таких элементов. Изобретение может быть реализовано посредством аппаратных средств, содержащих несколько отдельных элементов, и посредством соответствующим образом запрограммированного компьютера. В пункте формулы на устройство, перечисляющем несколько средств, некоторые из этих средств могут быть воплощены с помощью одного и того же элемента аппаратных средств. Сам факт, что некоторые критерии перечисляются во взаимно разных зависимых пунктах формулы изобретения, не указывает на то, что сочетание этих критериев не может использоваться с пользой.
В формуле изобретения ссылки в круглых скобках относятся к знакам ссылок на чертежах в вариантах осуществления или к формулам вариантов осуществления, соответственно повышая понятность формулы изобретения. Эти ссылки не следует толковать как ограничивающие формулу изобретения.

Claims (22)

1. Вычислительное устройство (200), выполненное с возможностью оценивания функции данных (S), отображающей некоторое количество (n) входных переменных в некоторое количество выходных переменных (m), при этом функция данных организована в вычислительном устройстве в виде вычисления, содержащего функции выбора и функции оценки, причем входные переменные разбиваются на одну или несколько переменных выбора и одну или несколько переменных оценки, для каждой конкретной комбинации значений переменных выбора (v) задается соответствующая функция выбора (
Figure 00000177
) и функция оценки (
Figure 00000178
),
при этом вычислительное устройство содержит
- механизм выбора (220), выполненный с возможностью приема одной или нескольких переменных выбора и оценивания функций выбора по принятым переменным выбора, при этом функция выбора в качестве входа принимает переменные выбора, а выход функции выбора указывает, равны ли переменные выбора, принятые в функции выбора, конкретной комбинации значений, соответствующих функции выбора,
- механизм оценки (210), выполненный с возможностью приема одной или нескольких переменных оценки и оценивания функций оценки по принятым переменным оценки, при этом функция оценки в качестве входа принимает переменные оценки, а выход функции оценки представляет собой выход функции данных, у которой входом является объединение переменных оценки и конкретной комбинации значений переменных выбора, соответствующих функции оценки, и
- комбинационный механизм (230), выполненный с возможностью комбинации выходов механизма выбора и механизма оценки в выход функции данных для входных переменных, при этом комбинационный механизм суммирует произведения (
Figure 00000179
) функции выбора (
Figure 00000177
) и функции оценки (
Figure 00000178
), соответствующие одной и той же конкретной комбинации значений, причем упомянутое суммирование проводится по всем комбинациям значений переменных выбора (v).
2. Вычислительное устройство по п.1, в котором механизм выбора содержит несколько блоков выбора, реализующих функции выбора, и/или в котором механизм оценки содержит несколько блоков оценки, реализующих функции оценки.
3. Вычислительное устройство по любому из предшествующих пунктов, в котором переменные выбора дополнительно разбиваются на несколько групп переменных выбора, при этом функция выбора организована в вычислительном устройстве в виде произведения нескольких подфункций выбора, причем каждая соответствует группе из нескольких групп переменных выбора, при этом подфункция выбора в качестве входа принимает переменные выбора в группе, а выход подфункции выбора указывает, равны ли принятые переменные выбора конкретной комбинации значений в группе, соответствующей функции выбора.
4. Вычислительное устройство по п. 1, в котором входные переменные и/или выходные переменные являются разрядами.
5. Вычислительное устройство по п. 1, организованное в виде блочного шифра, где функция данных является S-блоком блочного шифра.
6. Вычислительное устройство по п. 5, в котором блочный шифр является блочным шифром DES или тройного DES и в котором S-блок является одним из S-блоков DES.
7. Вычислительное устройство по п. 1, в котором количество входных переменных (n) больше количества выходных переменных (m), при этом количество переменных оценки равно количеству выходных переменных.
8. Вычислительное устройство по п. 1, в котором одна или несколько входных переменных кодируются.
9. Вычислительное устройство по п. 8, в котором кодированная входная переменная (
Figure 00000180
) кодируется в виде множества долей (
Figure 00000181
), в частности при этом кодированная входная переменная (
Figure 00000180
) кодируется в виде множества кодированных долей (
Figure 00000181
), точнее при этом множество долей (
Figure 00000181
) кодируются вместе с множеством состояний (
Figure 00000182
).
10. Вычислительное устройство по п. 1, в котором функция выбора реализуется в виде многочлена выбора и/или функция оценки реализуется в виде многочлена оценки.
11. Вычислительное устройство по п. 1, в котором функции выбора используются для нескольких функций данных.
12. Вычислительное устройство по п. 1, в котором механизм выбора, механизм оценки и/или комбинационный механизм реализуется в виде сети таблиц.
13. Вычислительный способ, выполненный с возможностью оценивания функции данных (S), отображающей некоторое количество (n) входных переменных в некоторое количество выходных переменных (m), при этом функция данных организована в вычислительном способе в виде вычисления, содержащего функции выбора и функции оценки, причем входные переменные разбиваются на одну или несколько переменных выбора и одну или несколько переменных оценки, для каждой конкретной комбинации значений переменных выбора (v) задается соответствующая функция выбора (
Figure 00000177
) и функция оценки (
Figure 00000178
),
при этом вычислительный способ содержит
- этап выбора, на котором принимают одну или несколько переменных выбора и оценивают функции выбора по принятым переменным выбора, при этом функция выбора в качестве входа принимает переменные выбора, а выход функции выбора указывает, равны ли переменные выбора, принятые в функции выбора, конкретной комбинации значений, соответствующих функции выбора,
- этап оценки, на котором принимают одну или несколько переменных оценки и оценивают функции оценки по принятым переменным оценки, при этом функция оценки в качестве входа принимает переменные оценки, а выход функции оценки представляет собой выход функции данных, у которой входом является объединение переменных оценки и конкретной комбинации значений переменных выбора, соответствующих функции оценки, и
- комбинационный этап, на котором комбинируют выходы механизма выбора и механизма оценки в выход функции данных для входных переменных, при этом комбинационный этап содержит этап, на котором суммируют произведения (
Figure 00000179
) функции выбора (
Figure 00000177
) и функции оценки (
Figure 00000178
), соответствующие одной и той же конкретной комбинации значений, причем упомянутое суммирование проводится по всем комбинациям значений переменных выбора (v).
14. Машиночитаемый носитель (1000), содержащий команды компьютерной программы (1020), выполненные с возможностью выполнения способа по п. 13, когда компьютерная программа выполняется на компьютере.
RU2018125885A 2015-12-15 2016-12-14 Вычислительное устройство и способ RU2708439C1 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP15200035 2015-12-15
EP15200035.2 2015-12-15
PCT/EP2016/081062 WO2017102879A1 (en) 2015-12-15 2016-12-14 A computation device and method

Publications (1)

Publication Number Publication Date
RU2708439C1 true RU2708439C1 (ru) 2019-12-06

Family

ID=55024786

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2018125885A RU2708439C1 (ru) 2015-12-15 2016-12-14 Вычислительное устройство и способ

Country Status (6)

Country Link
US (1) US11070358B2 (ru)
EP (1) EP3391583B1 (ru)
JP (1) JP6890589B2 (ru)
CN (1) CN108370311A (ru)
RU (1) RU2708439C1 (ru)
WO (1) WO2017102879A1 (ru)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3484093A1 (en) * 2017-11-10 2019-05-15 Koninklijke Philips N.V. A computation device and method
CN114168085B (zh) * 2021-12-16 2024-02-20 潍柴动力股份有限公司 变量处理方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5442306A (en) * 1994-09-09 1995-08-15 At&T Corp. Field programmable gate array using look-up tables, multiplexers and decoders
US20040139340A1 (en) * 2000-12-08 2004-07-15 Johnson Harold J System and method for protecting computer software from a white box attack
RU2370897C2 (ru) * 2003-12-11 2009-10-20 Кониклейке Филипс Электроникс Н.В. Система блочной криптографической защиты, использующая преобразования для сокрытия основной функции криптографической защиты каждого цикла шифрования
WO2014095772A1 (en) * 2012-12-21 2014-06-26 Koninklijke Philips N.V. Computing device comprising a table network
WO2015082212A1 (en) * 2013-12-05 2015-06-11 Koninklijke Philips N.V. A computing device for iterative application of table networks

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7346161B2 (en) 2000-01-26 2008-03-18 Fujitsu Limited Method and apparatus for designing cipher logic, and a computer product
KR100468338B1 (ko) 2000-03-09 2005-01-28 니뽄 덴신 덴와 가부시키가이샤 보조 변환을 이용한 블럭 암호 장치
WO2002003605A1 (en) 2000-07-04 2002-01-10 Koninklijke Philips Electronics N.V. Substitution-box for symmetric-key ciphers
KR100610367B1 (ko) 2004-06-19 2006-08-10 삼성전자주식회사 정보 누출 공격을 방지하기 위한 갈로아 필드 상의 곱셈방법 및 장치, 역변환 장치 그리고 aes 바이트 치환연산장치
US8091139B2 (en) 2007-11-01 2012-01-03 Discretix Technologies Ltd. System and method for masking arbitrary Boolean functions
KR20130018642A (ko) * 2009-11-13 2013-02-25 어데토 캐나다 코포레이션 적대적 실행 환경 내에서 정적 및 동적 공격들에 대하여 자바 바이트코드 코드를 보호하는 시스템 및 방법
EP2940919B1 (en) * 2014-04-28 2019-02-20 Nxp B.V. Realizing authorization via incorrect functional behavior of a white-box implementation
US9455833B2 (en) * 2014-04-28 2016-09-27 Nxp B.V. Behavioral fingerprint in a white-box implementation
US9380033B2 (en) * 2014-04-28 2016-06-28 Nxp B.V. Implementing use-dependent security settings in a single white-box implementation
NL2015599B1 (en) 2015-10-12 2017-05-02 Koninklijke Philips Nv A cryptographic device and an encoding device.

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5442306A (en) * 1994-09-09 1995-08-15 At&T Corp. Field programmable gate array using look-up tables, multiplexers and decoders
US20040139340A1 (en) * 2000-12-08 2004-07-15 Johnson Harold J System and method for protecting computer software from a white box attack
RU2370897C2 (ru) * 2003-12-11 2009-10-20 Кониклейке Филипс Электроникс Н.В. Система блочной криптографической защиты, использующая преобразования для сокрытия основной функции криптографической защиты каждого цикла шифрования
WO2014095772A1 (en) * 2012-12-21 2014-06-26 Koninklijke Philips N.V. Computing device comprising a table network
WO2015082212A1 (en) * 2013-12-05 2015-06-11 Koninklijke Philips N.V. A computing device for iterative application of table networks

Also Published As

Publication number Publication date
EP3391583B1 (en) 2019-07-24
US20200266973A1 (en) 2020-08-20
EP3391583A1 (en) 2018-10-24
US11070358B2 (en) 2021-07-20
JP2019504343A (ja) 2019-02-14
WO2017102879A1 (en) 2017-06-22
JP6890589B2 (ja) 2021-06-18
CN108370311A (zh) 2018-08-03

Similar Documents

Publication Publication Date Title
US11362802B2 (en) Cryptographic device arranged to compute a target block cipher
EP3469762B1 (en) Device and method to compute a block cipher
CN108141352B (zh) 密码设备、方法、装置和计算机可读介质和编码设备、方法、装置和计算机可读介质
JP7065888B6 (ja) 暗号装置及び方法
US20200097256A1 (en) A calculation device for encoded addition
EP3891925B1 (en) A computation device using shared shares
EP3188401A1 (en) Method and system for protecting a cryptographic operation
CN107534550B (zh) 密码设备、密码方法、计算设备和计算机可读存储介质
RU2708439C1 (ru) Вычислительное устройство и способ
KR20240125250A (ko) 경량 블록 암호 PIPO에 대한 Domain-Oriented Masking 적용 방법