RU2696334C1 - Устройство и способ вычисления блочного шифра - Google Patents

Устройство и способ вычисления блочного шифра Download PDF

Info

Publication number
RU2696334C1
RU2696334C1 RU2019104101A RU2019104101A RU2696334C1 RU 2696334 C1 RU2696334 C1 RU 2696334C1 RU 2019104101 A RU2019104101 A RU 2019104101A RU 2019104101 A RU2019104101 A RU 2019104101A RU 2696334 C1 RU2696334 C1 RU 2696334C1
Authority
RU
Russia
Prior art keywords
block encryption
rounds
block
additional
encryption
Prior art date
Application number
RU2019104101A
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 RU2696334C1 publication Critical patent/RU2696334C1/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/002Countermeasures against attacks on cryptographic mechanisms
    • 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/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • 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
    • H04L9/004Countermeasures against attacks on cryptographic mechanisms for fault attacks
    • 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
    • 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/12Details relating to cryptographic hardware or logic circuitry
    • 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/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

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

Description

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Изобретение относится к криптографическому устройству, выполненному с возможностью вычисления блочного шифра, криптографическому способу, предусматривающему вычисление блока, и компьютерно-считываемому носителю.
УРОВЕНЬ ТЕХНИКИ
В статье ʺA White-Box DES Implementation for DRM Applicationsʺ за авторством S. Chow и др. (именуемой ниже 'Chow' и включенной сюда посредством ссылки) представлена реализация белого ящика стандарта шифрования данных (DES). Реализация белого ящика является криптографической реализацией, призванной выдерживать атаку в контексте белого ящика. В контексте белого ящика взломщик полностью видит программную реализацию и выполнение. Тем не менее, даже при этих условиях реализация белого ящика служит для предотвращения извлечения секретных ключей из программы.
Chow формирует реализацию DES, которая целиком состоит из операций поиска в таблицах. Посредством нескольких промежуточных способов нормальный шифр преобразуется в реализацию в этой форме, что позволяет использовать сеть таблиц для вычисления DES. Благодаря кодированию таблиц в сети таблиц устойчивость системы к анализу и атаке повышается.
Хотя реализацию белого ящика с использованием сети таблиц трудно анализировать, табличная реализация блочного шифра все же может быть уязвима для некоторых атак. Авторы изобретения установили, что даже если ключ нельзя напрямую вывести из наблюдения переменных в реализации белого ящика, доступ к этим переменным можно использовать для выполнения атаки, ранее известной только из области физических атак.
Например, в статье ʺDifferential Fault Analysis of Secret Key Cryptosystemsʺ автора Biham и др. неустойчивые неисправности внедряются в смарт-карту посредством изменения напряжения электропитания, вследствие чего вычисление DES дает неверный результат. Посредством анализа ошибок, обусловленных неустойчивой неисправностью, получают информацию о секретном ключе.
Автор изобретения сделал вывод, что такие физические атаки на неисправность могут быть выполнены с возможностью атаки на реализацию белого ящика. Даже если невозможно получить секретную информацию из анализа переменных, видимых взломщику, взломщик имеет возможность вывода секретной информации посредством изменения кодированных переменных в попытке эмулировать физическую атаку. Намеренное изменение переменных действует как неустойчивая неисправность. Действительно, оказывается, что реализации белого ящика, устойчивые к другим атакам, специфическим для модели белого ящика, например, анализу памяти, конфликтным атакам, все же могут быть уязвимы к атаке на неисправность.
Контрмеры, принимаемые в уровне техники против различных атак на неисправность, продемонстрировали свою неэффективность в модели белого ящика; например, в патенте США US8386791B2, 'Secure data processing method based particularly on a cryptographic algorithm', включенном в данное описание в качестве ссылки. Блочный шифр DES применяется к входным данным дважды. Затем результаты двух вычислений сравниваются. Если они не равны, неисправность обнаружена.
В модели белого ящика эта контрмера легко обходится. Например, можно отключить второе выполнение, или сравнение, или можно внедрить одну и ту же неисправность в обе копии DES. Требуются новые контрмеры DFA, лучшее защищенные от атак в модели белого ящика.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Предложено устройство для вычисления блочного шифра. Результаты блочного шифрования вычисляются несколько раз и результаты объединяются. Благодаря вставке дополнительных раундов блочного шифрования до и после этапа объединения гарантируется, что неисправности распределяются в результате блочного шифрования. Эта структура сокращает информацию, которая может выводиться из наблюдаемого окончательного результата после внедрения неисправностей в любом месте программы. Неисправность, которая внедряется взломщиком в ключезависимом раунде блочного шифрования, выглядит менее явной в результате блочного шифрования. Таким образом, взломщик имеет меньшую возможность выводить из нее информацию, что усложняет атаки DFA.
Альтернативный способ, в котором атаки на неисправность могут быть предотвращены, предусматривает совместное вычисление повторного вычисления совместно с начальным вычислением с использованием совместно кодированных переменных, например, в которых переменные, которые используются в начальном вычислении, совместно кодируются переменными, используемыми в повторном вычислении. Это приводит к большим таблицам в табличной реализация или большому количеству полиномиальных коэффициентов в полиномиальной реализации. Такое совместное кодирование не обязательно во всех вариантах осуществления. В результате, становятся возможны меньшие реализации, например, с меньшими таблицами.
Другим преимуществом вариантов осуществления, согласно изобретению, является более эффективное распределение, поскольку в настоящем изобретении любой раунд блочного шифрования после неисправности добавляет в распределение неисправности по результату блочного шифрования. Вклад в распределение вносят не только дополнительные раунды блочного шифрования, но любой раунд после неисправности, включающий в себя любые традиционные раунды блочного шифрования. В результате требуется меньше дополнительных раундов.
Устройство блочного шифрования является электронным устройством. Например, это может быть мобильное электронное устройство, например, мобильный телефон. Устройство может представлять собой телевизионную приставку, смарт-карту, компьютер и т.д. Описанные здесь устройство и способ вычисления блочного шифра могут применяться в широком диапазоне практических применений. Такие практические применения включают в себя: управление цифровыми правами, финансовые применения, компьютерная безопасность и пр.
Способ согласно изобретению можно реализовать на компьютере как компьютерно-реализуемый способ или в специализированном оборудовании, или в их комбинации. Исполнимый код для способа согласно изобретению может храниться на компьютерном программном продукте. Примеры компьютерных программных продуктов включают в себя запоминающие устройства, оптические устройства хранения, интегральные схемы, серверы, онлайновое программное обеспечение и т.д. Предпочтительно, компьютерный программный продукт содержит невременный программный код, хранящийся на компьютерно-считываемом носителе для осуществления способа согласно изобретению, когда упомянутый программный продукт выполняется на компьютере.
В предпочтительном варианте осуществления компьютерная программа содержит компьютерный программный код, выполненный с возможностью осуществления всех этапов способа согласно изобретению, когда компьютерная программа выполняется на компьютере. Предпочтительно, компьютерная программа реализована на компьютерно-считываемом носителе.
Другой аспект изобретения предусматривает способ создания компьютерной программы, доступной для загрузки. Этот аспект используется, когда компьютерная программа выгружается, например, в App Store Apple, Play Store Google или Windows Store Microsoft, и когда компьютерная программа доступна для загрузки из такого магазина.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Дополнительные детали, аспекты и варианты осуществления изобретения будут описаны, исключительно в порядке примера, со ссылкой на чертежи. Элементы на чертежах проиллюстрированы для простоты и наглядности и не обязательно изображены в масштабе. На чертежах элементы, которые соответствуют ранее описанным элементам, могут иметь одинаковые ссылочные позиции. На чертежах
фиг. 1a схематически демонстрирует пример варианта осуществления криптографического устройства,
фиг. 1b схематически демонстрирует пример варианта осуществления криптографического устройства,
фиг. 1c схематически демонстрирует пример варианта осуществления криптографического устройства,
фиг. 2 схематически демонстрирует пример варианта осуществления криптографического устройства,
фиг. 3 схематически демонстрирует пример варианта осуществления криптографического способа,
фиг. 4 схематически демонстрирует пример традиционного вычисления блочного шифра,
фиг. 5a схематически демонстрирует пример варианта осуществления вычисления блочного шифра,
фиг. 5b схематически демонстрирует пример варианта осуществления вычисления блочного шифра,
фиг. 6a схематически демонстрирует компьютерно-считываемый носитель, имеющий записываемую часть, содержащую компьютерную программу согласно варианту осуществления,
фиг. 6b схематически демонстрирует представление процессорной системы согласно варианту осуществления.
Перечень ссылочных позиций на фиг. 1-2:
100, 101, 102 криптографическое устройство
105 входной интерфейс
110 входное сообщение
120, 121, 122 модуль начального раунда блочного шифрования
131, 132, 133 модуль окончательного раунда блочного шифрования
141, 142, 143 модуль дополнительного раунда блочного шифрования
151, 152, 153 промежуточный результат блочного шифрования
161, 162, 163 модуль усредняющей функции
170 модуль суммирования
180 модуль обратного дополнительного раунда блочного шифрования
190 результат блочного шифрования
195 выходной интерфейс
200 криптографическое устройство
231, 232 модуль окончательного раунда блочного шифрования
241, 242 модуль дополнительного раунда блочного шифрования
246, 247 модуль еще одного дополнительного раунда блочного шифрования
251, 252 дополнительный промежуточный результат блочного шифрования
261, 262 дополнительный модуль усредняющей функции
270 модуль суммирования
280 модуль обратного еще одного дополнительного раунда блочного шифрования
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
Хотя это изобретение допускает многие различные варианты осуществления, в чертежах показаны и далее будут подробно описаны один или более конкретных вариантов осуществления, с учетом того, что настоящее раскрытие следует рассматривать в порядке иллюстрации принципов изобретения, но не ограничения изобретения конкретными показанными и описанными вариантами осуществления.
В дальнейшем для ясности элементы вариантов осуществления описаны в ходе эксплуатации. Однако, будет очевидно, что соответствующие элементы выполнены с возможностью осуществления функций, описанных как осуществляемые ими.
Дополнительно, изобретение не ограничивается этими вариантами осуществления, и изобретение заключается в каждом признаке новизны или комбинации признаков, описанных здесь или указанных в различных зависимых пунктах формулы изобретения.
Фиг. 4 представляет традиционное вычисление, которое преобразует входные данные
Figure 00000001
в выходные данные
Figure 00000002
посредством последовательного применения раундовых функций
Figure 00000003
. Промежуточные состояния обозначены
Figure 00000004
. В этом конкретном примере предусмотрено 10 раундов, как в AES-128, но аналогичные графики можно построить для вычислений, которые используют другое количество раундов, как в AES-192 (12 раундов), AES-256 (14 раундов) или DES (16 раундов). Во всех этих вычислениях раундовые функции являются открытыми функциями, которые зависят от ключа раунда.
Взломщик, который сталкивался с реализацией этого вычисления, например, компьютерной программой, должен иметь возможность считывать ключи раундов из компьютерной памяти, пока программа выполняется. Однако, программист может защититься от этой атаки посредством анализа памяти посредством кодирования всех переменных, в частности, ключей раундов, в программе. Взломщик может попытаться осуществить обратный инжениринг кодирования и, таким образом, извлечь ключ раунда, но обычно существуют более простые способы извлечения ключа, которые не требуют обратного инжениринга. Одним из этих способов является атака DFA.
В атаке DFA взломщик вставляет неисправность, т.е. изменяет переменную, где-либо в программе, и наблюдает результат этого изменения на выходе. Изменение выхода позволят выявить часть ключа раунда последнего раунда.
Для конкретизации, вернемся к примеру AES-128, изображенному на фиг. 4. Существует 10 раундов и 11 ключей раундов
Figure 00000005
. Вычисление выходного результата
Figure 00000006
из входных данных
Figure 00000007
осуществляется следующим образом:
Figure 00000008
Figure 00000009
где для раундов с 0 по 8 раундовая функция задается как
Figure 00000010
и последняя раундовая функция
Figure 00000011
задается как
Figure 00000012
Если взломщик изменяет переменную программы, которая кодирует единственный байт из последнего раунда, например, байт
Figure 00000013
,
Figure 00000014
или
Figure 00000015
, то два выходных результата отличаются единственным байтом, и никакой информации о ключе не выявляется. Если взломщик изменяет переменную, которая кодирует единственный байт из одного из раундов с
Figure 00000016
по
Figure 00000017
, то изменяется весь выходной результат, и выводить информацию о каком-либо из ключей раундов непрактично. Если же взломщик изменяет переменную, которая кодирует единственный байт предпоследнего раунда, например, байт
Figure 00000018
или
Figure 00000019
, то выходы
Figure 00000020
(без внедренных неисправностей) и
Figure 00000021
(с внедренными неисправностями) отличаются четырьмя из шестнадцати байтов (благодаря операции MixColumns), и для этих выходов
Figure 00000022
и
Figure 00000023
отличаются в точности одним байтом. Это ограничивает возможные значения четырех байтов
Figure 00000024
в позициях, где
Figure 00000025
и
Figure 00000026
отличаются. Применение разных изменений к одной и той же переменной программы даст разные ограничения для одних и тех же четырех байтов, и обычно лишь несколько таких внедрений неисправностей требуются для однозначного определения четырех байтов
Figure 00000027
. Другие байты
Figure 00000028
находятся атаками DFA на другие переменные в раунде 8.
Фиг. 1a схематически демонстрирует пример варианта осуществления криптографического устройства 100. Криптографическое устройство 100 выполнено с возможностью вычисления блочного шифра. Устройство 100 содержит входной интерфейс 105, выполненный с возможностью приема входного сообщения, на котором нужно вычислять блочный шифр. Существует много входных интерфейсов, пригодных для приема входного сообщения в устройстве, примеры которых приведены ниже. Устройство 100 также содержит схему процессора. Схема процессора выполнена с возможностью обработки принятого входного сообщения для получения выходного сообщения, которое представляет результат блочного шифрования.
Выполнение блочного шифрования осуществляется в схеме процессора, примеры которой показаны здесь. На фиг. 1a, 1b, 1c и 2 показаны функциональные модули, которые могут быть функциональными модулями схемы процессора. Например, фиг. 1a можно использовать как образец возможной функциональной организации схемы процессора. Схема процессора не показана отдельно от модулей на фиг. 1a. Например, функциональные модули, показанные на фиг. 1a, могут быть полностью или частично реализованы в компьютерных инструкциях, которые хранятся на устройстве 100, например, в электронной памяти устройства 100, и выполняются микропроцессором устройства 100. В смешанных вариантах осуществления функциональные модули реализованы частично в оборудовании, например, как сопроцессоры, например, криптосопроцессоры, и частично в программном обеспечении, хранящемся и выполняемом на устройстве 100.
Блочные шифры работают посредством последовательного применения множественных обратимых раундов к входным данным. Например, может поддерживаться внутреннее состояние. Следующее внутреннее состояние получается из текущего внутреннего состояния посредством применения следующего раунда к текущему внутреннему состоянию. Начальное внутреннее состояние выводится из входного сообщения. Результат блочного шифрования получается из окончательного внутреннего состояния. Например, раунд блочного шифрования может увеличивать запутанность и рассеивание во внутреннем состоянии. Запутывание и рассеивание являются двумя свойствами раундов блочного шифрования, первоначально идентифицированными Клодом Шенноном. Даже если запутывание и рассеивание, обусловленные блочным шифром ограничены, с использованием множественных блочных шифров их результаты компаундируются. Например, раунд блочного шифрования может содержать множественные функции, применяющиеся к внутреннему состоянию; по меньшей мере одна из которых выполнена с возможностью увеличения запутывания, например, блок подстановок или массив блоков подстановок, и по меньшей мере одна из которых выполнена с возможностью увеличения рассеивания, например, перестановка или линейное преобразование внутреннего состояния.
В большинстве примеров будет использоваться блочный шифр AES. Усовершенствованный стандарт шифрования (AES) описан в Advanced Encryption Standard, Federal Information Processing Standards Publication 197, 2001. Однако варианты осуществления могут использовать любой блочный шифр, который использует множественные раунды, например, блочные шифры типа SLT (подстановка/линейное преобразование, также известные как подстановочно-перестановочная сеть (SPN)), например, AES (Rijndael), 3-Way, Kuznyechik, PRESENT, SAFER, SHARK, Square, и т.д., а также блочные шифры фейстелевского типа, например, DES, 3DES и т.д.
Входное сообщение 110, принятое входным интерфейсом 105, может иметь простой формат или кодироваться, например, кодироваться согласно секретному кодированию. Например, в случае AES входное сообщение может быть некодированным 16-байтовым сообщением. Блочный шифр, реализованный в устройстве 100, содержит множество раундов блочного шифрования, которые должны применяться к входному сообщению. Устройство 100 содержит модуль 120 начального раунда блочного шифрования и модуль 131 окончательного раунда блочного шифрования. Совместно модуль 120 начального раунда блочного шифрования и модуль 131 окончательного раунда блочного шифрования содержат все раунды блочного шифрования. Например, модуль 120 начального раунда блочного шифрования может быть выполнен с возможностью осуществления начальной части раундов блочного шифрования, и модуль 131 окончательного раунда блочного шифрования может содержать окончательную часть раундов блочного шифрования. Две части не должны содержать одно и то же количество раундов. Известно, что окончательные раунды блочного шифра более уязвимы для атак DFA. Раунды, подлежащие защите от атак DFA, находятся в модуле 131 окончательного раунда блочного шифрования, тогда как раунды, для которых не существует известных атак DFA, могут входить в модуль 120 начального раунда блочного шифрования. Например, если блочный шифр имеет 10 раундов, начальные 7 раундов могут осуществляться в модуле 120 начального раунда блочного шифрования, тогда как окончательные 3 раунда могут осуществляться в модуле 131 окончательного раунда блочного шифрования.
Согласно варианту осуществления изобретения, раунды блочного шифрования могут выполняться над кодированными данными, например, с использованием традиционной технологии белого ящика. Например, раунды блочного шифрования могут действовать в отношении внутренних состояний, которые кодируются. Например, внутренние данные, например, внутреннее состояние, могут содержать множественные элементы данных, например, байты или полубайты, каждый из которых кодируется. Например, кодирование может быть секретными кодировками, например, частными для устройства 100. Например, кодирование может выбираться во время компиляции. В принципе, любой элемент данных в любом раунде может кодироваться с использованием разного кодирования. Однако, возможно некоторое повторное использование. Например, некоторые раунды могут использовать те же кодировки, что и другие раунды. Это, в свою очередь, может приводить к уменьшению размера реализации. Кодирование может использовать различные дополнительные меры для повышения безопасности. Например, кодированный элемент данных может быть больше, чем некодированный элемент. Например, кодирование может использовать множественные доли, сумма которых является кодированным элементом данных. Отдельные доли могут кодироваться по отдельности. Например, элемент данных может кодироваться совместно с избыточными данными, например, значение соли, благодаря чему, много разных кодированных значений представляет одно и то же значение простых данных.
Реализация белого ящика может действовать в отношении кодированных данных с использованием поисковых таблиц, матричного умножения и пр. Реализация белого ящика также может осуществляться с использованием множественных взаимосвязанных полиномов, например, в конечном поле.
Например, раунд кодирования может осуществляться до первого раунда блочного шифрования для кодирования входного сообщения. Например, раунд декодирования может осуществляться после последнего раунда блочного шифрования. Таким образом, устройство 100 может действовать в отношении кодированных данных, даже если входные данные и выходные данные не кодированы. Например, согласно варианту осуществления, блочный шифр предназначен для операции дешифрования, например, как часть приложения управления цифровыми правами (DRM). С использованием устройства 100 приложение DRM может дешифровать контент, тем не менее, пользователь не способен извлекать ключ, которым зашифрован контент. Например, согласно варианту осуществления блочный шифр предназначен для операции шифрования, например, как часть финансового приложения, в котором блочный шифр можно использовать для подписания сообщений, например, с использованием MAC, например, CBC-MAC. Несмотря на то, что пользователь способен подписывать сообщения, он не способен извлекать ключ подписания.
Что интересно, реализацию блочного шифра белого ящика можно использовать для создания асимметричной криптографической системы из блочных шифров. Например, реализация белого ящика операции шифрования блочным шифром может быть опубликована таким образом, что любой может шифровать данные с его помощью, и только те, кому известен секретный ключ, используемый в реализации блочного шифра, могут дешифровать.
Устройство 100 дополнительно содержит модуль 141 дополнительного раунда блочного шифрования. Дополнительные раунды блочного шифрования могут, например, быть такими же, как раунды блочного шифрования, реализованные устройством 100, хотя с другим, например, не связанным, например, случайным ключом раунда. Дополнительные раунды блочного шифрования не обязательно должны быть раундами одного и того же блочного шифра. Например, согласно варианту осуществления раунды блочного шифрования, реализованные модулем 141 дополнительного раунда блочного шифрования, приводят к дополнительному запутыванию и/или рассеиванию во внутреннем состоянии, благодаря чему, атака на неисправность в раундах модуля 131 окончательного раунда блочного шифрования распределяются. Неисправность в этих раундах распределяется последующими раундами в модулях 131 (при наличии), модуле 141 и модуле 161 (см. ниже). Степень распределения неисправности можно увеличить посредством увеличения количества раундов блочного шифрования в модулях дополнительного раунда блочного шифрования. Посредством увеличения этого количества раундов можно гарантировать, что неисправность распределяется даже на полное внутреннее состояние. Например, такую высокую планку можно количественно выразить требованием, чтобы вероятность переключения любого конкретного бита в окончательном (простом) выходе в результате переключения единственного бита раунд модуля 131 составляла 50% +/- порог. Порог может составлять, например, 10%, или 1%, и т.д. Вероятность переключения может устанавливаться экспериментальным путем.
Например, раунд модуля 141 может состоять из объединения массива блоков подстановок, действующих на элементах данных, например, байтах внутреннего состояния, сопровождаемого произвольным, но фиксированным линейным преобразованием всего внутреннего состояния. Последний является примером раунда блочного шифрования, в котором не требуется явный ключ.
Заметим, что в конце модуля 131 вычисляется результат блочного шифрования, хотя в кодированной области. Тем не менее взломщику это не видно. В конце модуля 141 правильный результат искажается. В этот момент вычисляется первый промежуточный результат 151 блочного шифрования. Тот, кому известна реализация, например, раунды блочного шифрования, используемые в модуле 141, используемые кодировки и т.д., может реконструировать результат блочного шифрования из промежуточного результата 151 блочного шифрования, даже не зная ключ, используемый блочным шифром.
Эффективная защита от других атак белого ящика, например, атак, в которых переменные только наблюдаются, но не изменяются, могут базироваться на долях. Например, переменную
Figure 00000029
можно представить как кортеж
Figure 00000030
, который представляет переменную. Например, можно иметь
Figure 00000031
, в случае наличия
Figure 00000032
долей. Переменная
Figure 00000029
может быть элементом данных, например, байтом внутреннего состояния. Все элементы данных, например, байты, внутреннего состояния можно представить таким образом. Отдельные доли можно реализовать в программе белого ящика в кодированной форме,
Figure 00000033
, для некоторой биекции
Figure 00000034
. Реализация белого ящика с долями менее чувствительна к некоторым усовершенствованным атакам белого ящика, например, конфликтным атакам. Варианты осуществления добавляют защиту DFA в такую реализацию для сравнительно небольших дополнительных затрат, например, без слишком большого увеличения времени выполнения или размера таблицы.
Согласно варианту осуществления долевые представления используются в начальных раундах, например, в модуле 120, но не в более поздних раундах, например, в модулях 131, 132, 133, и т.д. Преимущество состоит в том, что сравнительно дорогостоящие доли используются в меньшем количестве раундов. Конфликтные атаки менее преимущественны в более поздних раундах, тогда как атаки DFA менее преимущественны в более ранних раундах, что снижает стоимость, в частности, размер таблицы, без большого ущерба для безопасности.
Устройство 100 выполнено с возможностью вычисления дополнительных промежуточных результатов блочного шифрования. На фиг. 1a показаны два дополнительных промежуточных результата блочного шифрования: промежуточные результаты 152 и 153 блочного шифрования. Возможно вычислять более двух дополнительных промежуточных результата блочного шифрования. На фиг. 1b показан вариант осуществления, в котором вычисляется только один дополнительный промежуточный результат блочного шифрования.
Для вычисления дополнительных промежуточных результатов блочного шифрования устройство 100 содержит модули дополнительного окончательного раунда блочного шифрования. На фиг. 1a показаны модули 132 и 133 окончательного раунда блочного шифрования. Модуль 120 начального раунда блочного шифрования и любой из модулей дополнительного окончательного раунда блочного шифрования содержат все раунды блочного шифрования. Модули дополнительного окончательного раунда блочного шифрования, например, модули 132 и 133 вычисляют одни и те же раунды блочного шифрования, что и модуль 131 окончательного раунда блочного шифрования, хотя они обычно будут делают это в разном кодировании. Модули дополнительного окончательного раунда блочного шифрования, таким образом, повторно вычисляют по меньшей мере один из окончательных раундов блочного шифрования из множества раундов блочного шифрования, например, раунды модуля 131. В конце модулей 132 и 133 результат блочного шифрования доступен хотя в кодировании, и все они должны быть равны результату модуля 131, если не было неисправностей.
После модулей 132 и 133 дополнительного окончательного раунда блочного шифрования применяются один или более дополнительных раундов блочного шифрования модуля 141. На фиг. 1a показаны модули 142 и 143 еще одного дополнительного раунда блочного шифрования, после модулей 132 и 133 соответственно. Модули еще одного дополнительного раунда блочного шифрования осуществляют те же раунды блочного шифрования, как и модуль 141 дополнительного раунда блочного шифрования. Результатами модулей еще одного дополнительного раунда блочного шифрования является дополнительный промежуточный результат 152 и 153 блочного шифрования. Помимо разного кодирования, и предполагая отсутствие возникновения неисправностей, все промежуточные результаты блочного шифрования, например, результаты 151, 152 и 153, будут равны.
Устройство 100 дополнительно содержит модули усредняющей функции. На фиг. 1a показаны модули 161, 162 и 163 усредняющей функции. Модули усредняющей функции применяют соответствующее множество усредняющих функций к множеству промежуточных результатов блочного шифрования. Множество усредняющих функций выбирается таким образом, что их сумма функций равна тождественной функции. Например, если обозначить усредняющие функции как
Figure 00000035
, и их входы как
Figure 00000029
, требование состоит в том, что
Figure 00000036
. Например, функцию
Figure 00000037
можно реализовать модулем 161 усредняющей функции, функцию
Figure 00000038
можно реализовать модулем 162 усредняющей функции, и функцию
Figure 00000039
можно реализовать модулем 163 усредняющей функции. Если существует три модуля усредняющей функции, получается
Figure 00000040
.
Усредняющие функции можно выбирать по-разному. Например, некоторые или даже все кроме одной из множества усредняющих функций можно выбирать произвольно из более крупного набора усредняющих функций. Окончательную усредняющую функцию можно вычислять как разность функций тождественной функции и упомянутых выбранных усредняющих функций. Например, можно задать окончательную функцию
Figure 00000041
, предполагая наличие
Figure 00000032
усредняющих функций.
Преимущественны различные варианты выбора для более крупного набора усредняющих функций. Например, можно выбирать усредняющие функции как функции, которые действуют покомпонентно в отношении элементов данных в промежуточных результатах блочного шифрования. Например, если промежуточным результатом блочного шифрования является последовательность элементов данных, например байтов,
Figure 00000042
, усредняющая функция может задаваться как
Figure 00000043
.
Другая возможность состоит в выборе усредняющих функций в качестве линейных операций. Например, линейные операции, действующие в отношении промежуточных результатов блочного шифрования. В этом случае промежуточные результаты блочного шифрования можно рассматривать как последовательность элементов данных, например, байтов, и линейные операции можно рассматривать как матрицу в соответствующем конечном поле, например,
Figure 00000044
в случае байтов. В частности, линейную операцию можно рассматривать как матрицу, действующую в отношении битов в промежуточном результате блочного шифрования, например, матрицу над
Figure 00000045
.
Еще один дополнительный вариант для выбора усредняющих функций состоит в их выборе из полиномов заранее определенной максимальной степени, например, полиномов 2 степени. Само по себе известно, как реализовать полиномиальные функции на побайтово кодированных значениях.
Заметим, что усредняющие функции можно реализовать с использованием той же технологии белого ящика, что и раунды, реализованные в различных модулях раунда блочного шифрования. Например, усредняющие функции можно реализовать как сеть таблиц, последовательность полиномиальных операций и т.д.
Хотя это не требуется для правильной работы, предпочтительно, чтобы по меньшей мере одна из множества усредняющих функций была обратима. Еще более предпочтительно, чтобы все из множества усредняющих функций были обратимы. Например, можно произвольно выбирать обратимые функции для большинства усредняющих функций и вычислять из них окончательную усредняющую функцию. Если определено, что окончательная усредняющая функция не является обратимой, некоторые или все из других усредняющих функций можно выбирать снова, пока все функции не станут обратимыми.
Результаты усредняющих функций суммируются в модуле 170 суммирования. Тип суммирования является таким же, как суммирование, используемое в определении усредняющей функции. Согласно варианту осуществления, модуль 170 суммирования использует операцию XOR; хотя возможны другие операции суммирования, например, естественное побайтовое арифметическое суммирование. В зависимости от того, как выбираются усредняющие функции, результат суммирования будет такой же, как выходные данные любого из модулей дополнительного раунда блочного шифрования, например, такой же, как любой из промежуточных результатов блочного шифрования. Возникновение неисправности в любом из множества вычислений промежуточного результата блочного шифрования приводит к искажению окончательного результата блочного шифрования.
Например, рассмотрим неисправность в модуле 133. Любой раунд блочного шифрования после неисправности, например, в модуле 133, 143 и 180 вносит вклад в распределение неисправности по результату блочного шифрования. Поскольку неисправность влияет на все более крупную часть окончательного результата блочного шифрования, взломщику становится труднее выводить полезную информацию из неисправности. В идеале, неисправность влияет на все биты в окончательном результате блочного шифрования. Таким образом, в идеале для любого бита в окончательном результате блочного шифрования существует положительная вероятность того, что он изменяется в результате неисправности.
Устройство 100 содержит модуль 180 обратного дополнительного раунда блочного шифрования. Модуль 180 осуществляет обратное для раундов блочного шифрования модулей дополнительного раунда блочного шифрования, получая результат 190 блочного шифрования. Если неисправности не обнаружены, это будет правильный результат блочного шифрования. При желании модуль 180 обратного дополнительного раунда блочного шифрования также может отменять кодировки, таким образом, что правильный результат 190 блочного шифрования является простым. Выходной интерфейс 195 может быть выполнен с возможностью передачи результата 190 блочного шифрования.
Для сбивания с толку, когда вычисляются раунды блочного шифрования, вариант осуществления может включать в себя один или более пустых раундов. Пустые раунды могут быть включены в любой из раундов блочного шифрования. В частности, пустые раунды могут быть включены в модули окончательного раунда блочного шифрования, модули дополнительного раунда блочного шифрования и, возможно, даже в модули усредняющей функции. В качестве пустых раундов можно осуществлять один или более фактических раундов блочного шифрования, возможно с другим ключом раунда, сопровождаемые обратным раундов блочного шифрования. Пустой раунд также может быть раундом, который осуществляют тождественные операции, например, только изменяя кодирования от одной формы к другой.
Как упомянуто выше, в реализации белого ящика большинство или все промежуточные данные будут в кодированной форме. В частности, промежуточные результаты блочного шифрования будут кодироваться. Что интересно, согласно варианту осуществления разные промежуточные результаты блочного шифрования не кодируются совместно. Например, промежуточный результат 151 блочного шифрования кодируется независимо от промежуточного результата 152 и 153 блочного шифрования. Это является преимуществом, поскольку совместные кодировки требуют более крупных таблиц. Согласно варианту осуществления совместное кодирование не используется для любой переменной.
Помимо модели белого ящика существуют другие модели атаки. Криптографический примитив называется безопасным в модели черного ящика, если взломщик, который знает только входные данные и выходные данные примитива, не может повышать свои права, например, получать секретные ключи, шифровать сообщения, дешифровать сообщения и т.д. Однако, на практике взломщики часто не работают в модели черного ящика, и фактически имеют больше информации, чем просто входные данные и выходные данные. Например, в модели серого ящика, предполагается, что взломщик имеет доступ к некоторой информации, относящейся к выполнению примитива. Эти дополнительные источники информации называются 'побочными каналами'. Например, побочные каналы включают в себя продолжительность времени для выполнения операции, или величину потребляемой мощности и т.д. Модель белого ящика является соответственной, но еще более сильной моделью, поскольку взломщик имеет полный доступ ко всем внутренним переменным примитива.
Преднамеренное внедрение неисправностей является такой-же проблемой в сером ящике, как и в белом ящике. Соответственно, если требуется только предотвращение серого ящика, например, поскольку атаки типа белого ящика недоступны или слишком дорогостоящи на основе ресурсов взломщика, можно использовать описанные здесь варианты осуществления. В этом случае, некоторые из контрмер белого ящика, например, кодирование всех переменных, могут распределяться. Однако, остается преимущество искажения результата атак на неисправность, таким образом, что взломщик не может создавать помехи в отношении ключа на основании наблюдаемых выходных данных до и после неисправности.
Фиг. 1b схематически демонстрирует пример варианта осуществления криптографического устройства 101. Устройство 101 аналогично устройству 100 за исключением того, что вычисляются меньше промежуточных результатов блочного шифрования; на фиг. 1b вычисляются два промежуточных результата блочного шифрования: результаты 151 и 152. В результате, усредняющие функции 161 и 162 также адаптируются. Эти усредняющие функции выбираются таким образом, что их сумма функций равна тождеству. Заметим, что возможны также большее количество промежуточных результатов блочного шифрования, чем показано на фиг. 1a, например, посредством суммирования большего количества ветвей, например, ветви 132, 142, 162 и ветви 133, 143, 163. Если количество ветвей и количество промежуточных результатов блочного шифрования изменяется, усредняющие функции изменяются соответственно.
Фиг. 1c схематически демонстрирует пример варианта осуществления криптографического устройства 102. Устройство 102 аналогично устройству 100 за исключением того, что все раунды блочного шифрования повторно вычисляют не только количество окончательных раундов. Устройство 102 содержит модули 121 и 122 начального раунда блочного шифрования. Модули 121 и 122 осуществляют такое же вычисление, как модуль 120 начального раунда блочного шифрования, но могут делать это в разном кодировании.
Фиг. 2 схематически демонстрирует пример варианта осуществления криптографического устройства 200. Как и на фиг. 1a, на фиг. 2 показано вычисление трех промежуточных результатов блочного шифрования. Два из промежуточных результатов блочного шифрования вычисляются таким же образом, как на фиг. 1a, с использованием двух ветвей: 131-161 и 132-162, каждая из которых вычисляет промежуточный результат блочного шифрования. Для вычисления третьего промежуточного результата блочного шифрования используется более сложный подход.
Устройство 200 вычисляет множество дополнительных промежуточных результатов блочного шифрования, показаны результаты 251, 252. Эти дополнительные промежуточные результаты блочного шифрования усредняются с использованием дополнительных усредняющих функций в дополнительных модулях 261, 262 усредняющей функции. Однако, дополнительные промежуточные результаты 251, 252 блочного шифрования, которые вводят дополнительные усредняющие функции, не такие же, как промежуточные результаты 151 и 152 блочного шифрования, которые вводят модули 161 и 162 усредняющей функции, даже не при кодировании.
Устройство 200 содержит модули окончательного раунда блочного шифрования; показаны модули 231 и 232, они вычисляют те же раунды блочного шифрования, что и модуль 131. После модулей окончательного раунда блочного шифрования применяется модуль дополнительного раунда блочного шифрования; показаны модули 241 и 242 дополнительного раунда блочного шифрования. Эти модули вычисляют те же раунды блочного шифрования, что и модуль 141. Однако, в отличие от ветвей 131-161 и 132-162, после модулей 241 и 242 дополнительного раунда блочного шифрования, существует модуль еще одного дополнительного раунда блочного шифрования, показаны модули 246 и 247. Результатами модулей еще одного дополнительного раунда блочного шифрования являются дополнительное множество промежуточных результатов блочного шифрования.
Устройство 200 содержит дополнительные модули усредняющей функции, реализующие дополнительное множество усредняющих функций. Эти функции применяются к дополнительному множеству промежуточных результатов блочного шифрования. Дополнительное множество усредняющих функций выбирается таким образом, что их сумма функций равна тождественной функции. Устройство 200 содержит модуль 270 суммирования, выполненный с возможностью суммирования результатов дополнительного множества усредняющих функций. Если неисправности не имели место, результат модуля 270 суммирования такой же, как результат, например, модуля 246 еще одного дополнительного раунда блочного шифрования.
Устройство 200 содержит модуль 280 обратного еще одного дополнительного раунда блочного шифрования, выполненный с возможностью применения упомянутого обратного для раундов модуля 246 еще одного дополнительного раунда блочного шифрования к результату суммирования. В отсутствие ошибок, результатом является промежуточный результат блочного шифрования. Модуль 163 усредняющей функции применяется к результату суммирования. Модули 161, 162 и 163 усредняющей функции выбираются таким образом, что их сумма функций является тождеством.
В различных вариантах осуществления устройств 100, 101, 102 и 200 входной интерфейс можно выбирать из различных альтернатив. Например, входной интерфейс может быть сетевым интерфейсом к локальной или глобальной сети, например, интернету, интерфейсом хранилища к внутреннему или внешнему хранилищу данных, клавиатурой, интерфейсом приложений (API) и т.д. Выходной интерфейс может быть соответствующим, например, сетевым интерфейсом к локальной или глобальной сети, например, интернету, интерфейсом хранилища к внутреннему или внешнему хранилищу данных, клавиатурой, интерфейсом приложений (API) и т.д. Выходным интерфейсом также может быть дисплей, принтер и т.д.
Устройства 100, 101, 102 и 200 могут иметь пользовательский интерфейс, который может включать в себя общеизвестные элементы, например, одну или более кнопок, клавиатуру, дисплей, экран касания и т.д. Пользовательский интерфейс может быть выполнен с возможностью обеспечения пользовательского взаимодействия для выполнения действия блочного шифра, например, шифрования или дешифрования, например, для хранимых или принятых данных на устройстве.
Хранилище 110 может быть реализовано в качестве электронной памяти, например, флэш-памяти или магнитной памяти, например, жесткого диска и т.п. Хранилище 110 может содержать множественные дискретные памяти, совместно образующие хранилище 110. Хранилище 110 также может быть временной памятью, например, RAM. В случае временного хранилища 110, хранилище 110 содержит некоторые средства для получения данных до использования, например, посредством их получения по необязательному сетевому соединению (не показано).
Обычно, каждое из устройств 100, 101, 102, 200 содержит микропроцессор (отдельно не показанный), который выполняет надлежащее программное обеспечение, хранящееся на устройстве; например, это программное обеспечение может загружаться и/или сохраняться в соответствующей памяти, например, энергозависимой памяти, такой как RAM или энергонезависимой памяти, такой как флэш (отдельно не показана). Альтернативно, устройства могут полностью или частично быть реализованы в программируемой логике, например, в виде вентильной матрицы, программируемой пользователем (FPGA). Устройства могут быть реализованы полностью или частично в виде так называемой специализированной интегральной схемы (ASIC), т.е. интегральной схемы (IC), приспособленной для конкретного использования. Например, схемы могут быть реализованы в CMOS, например, с использованием языка описания оборудования, например, Verilog, VHDL и т.д.
Согласно варианту осуществления, устройство может содержать схему входного интерфейса, схему модуля начального раунда блочного шифрования, две или более схемы модуля окончательного раунда блочного шифрования, две или более схемы модуля дополнительного раунда блочного шифрования, две или более схемы модуля усредняющей функции, схему модуля суммирования, схему модуля обратного дополнительного раунда блочного шифрования, схему выходного интерфейса. Вариант осуществления также может содержать, две или более схемы модуля еще одних дополнительных раундов блочного шифрования, две или более схемы дополнительного модуля усредняющей функции, схему дополнительного модуля суммирования, схему модуля обратного еще одного дополнительного раунда блочного шифрования и т.д. Схемы реализуют описанные здесь соответствующие модули. Схемы могут представлять собой схему процессора и схему хранилища, причем схема процессора исполняет инструкции, представленные электронно в схемах хранилища.
Схему процессора можно реализовать в распределенном режиме, например, в виде множественных схем подпроцессора. Хранилище может быть распределено по множественным распределенным подхранилищам. Часть или вся память может быть электронной памятью, магнитной памятью и т.д. Например, хранилище может иметь энергозависимую и энергонезависимую часть. Часть хранилища может быть только считываемой.
Фиг. 3 схематически демонстрирует пример варианта осуществления криптографического способа 300. Способ 300 является криптографическим способом выполненным с возможностью вычисления блочного шифра на входном сообщении 110. Способ 300 может исполняться на электронном устройстве, например, компьютере и/или устройстве, таком как устройстве 100, 101, 102 или 200. Блочный шифр содержит множество раундов блочного шифрования. Способ 300 содержит
- прием 310 входного сообщения, например, по входному интерфейсу, например, входное сообщение может приниматься от компьютерной программы, например, которая использует блочный шифр, например, для шифрования или дешифрования,
- вычисление 320 множества промежуточных результатов блочного шифрования. Промежуточные результаты блочного шифрования вычисляются в некотором количестве ветвей, которые могут быть независимы друг от друга. В каждой ветви вычисляется промежуточный результат блочного шифрования. Способ 300 содержит первую ветвь, в которой вычисляется первый промежуточный результат блочного шифрования. Способ 300 содержит применение 330 множества раундов блочного шифрования после входного сообщения, сопровождаемых одним или более дополнительными раундами блочного шифрования. Дополнительные промежуточные результаты блочного шифрования вычисляются в дополнительных ветвях. Способ 300 содержит повторное вычисление 340 по меньшей мере одного из окончательных раундов блочного шифрования из множества раундов блочного шифрования, сопровождаемых одним или несколькими дополнительными раундами блочного шифрования. Увеличение количества повторных вычислений, повышает безопасность.
- применение 350 множества усредняющих функций к множеству промежуточных результатов блочного шифрования, причем множество усредняющих функций выбирается таким образом, что их сумма функций равна тождественной функции,
- суммирование 360 результатов множества усредняющих функций, и
- применение 370 обратного для одного или более дополнительных раундов блочного шифрования, результат 190 блочного шифрования получается из результата упомянутого обратного.
Возможны многие разные способы исполнения способа, что будет очевидно специалисту в данной области техники. Например, порядок этапов может изменяться, или некоторые этапы могут исполняться параллельно. Кроме того, между этапами можно вставлять другие этапы способа. Вставленные этапы могут представлять уточнения способа, такие, как описанные здесь, или могут быть не связаны со способом. Например, некоторые или все из разных ветвей могут исполняться, по меньшей мере, частично, параллельно. Кроме того, данный этап может не заканчиваться полностью до начала следующего этапа.
Способ согласно изобретению, может выполняться с использованием программного обеспечения, которое содержит инструкции, предписывающие процессорной системе осуществлять способ 300. Программное обеспечение может включать в себя только этапы, выполняемые конкретной подсущностью системы. Программное обеспечение может храниться на пригодном носителе данных, например, жестком диске, флоппи-диске, в памяти, на оптическом диске и т.д. Программное обеспечение может отправляться как сигнал по проводам, или посредством беспроводной связи, или с использованием сети данных, например, интернета. Программное обеспечение можно сделать доступным для загрузки и/или для удаленного использования на сервере. Способ согласно изобретению, может исполняться с использованием битового потока, позволяющего конфигурировать программируемую логику, например, вентильную матрицу, программируемую пользователем (FPGA), для осуществления способа.
Очевидно, что изобретение также распространяется на компьютерные программы, в частности, компьютерные программы на или в носителе, выполненном с возможностью практического применения изобретения. Программа может иметь форму исходного кода, объектного кода, промежуточного источника кода и объектного кода, например, в частично скомпилированной форме, или в любой другой форме, пригодной для использования в реализации способа согласно изобретению. Вариант осуществления, относящийся к компьютерному программному продукту, содержит компьютерно-исполнимые инструкции, соответствующие каждому из этапов обработки по меньшей мере одного из описанных способов. Эти инструкции могут быть подразделены на подпроцедуры и/или храниться в одном или более файлах, которые могут быть связаны статически или динамически. Другой вариант осуществления, относящийся к компьютерному программному продукту, содержит компьютерно-исполнимые инструкции, соответствующие каждому из средств по меньшей мере одного из описанных систем и/или продуктов.
Ниже рассмотрены дополнительные варианты осуществления, которые можно реализовать на электронных устройствах. Варианты осуществления, раскрытые ниже, включают в себя один или более из следующих признаков:
1. вычисление делится на множественные ветви, каждая из которых содержит раунды, подверженные атаке DFA;
2. переменные в каждой ветви кодируются отдельно, разные ветви должны использовать разные кодировки, так, что не очевидно, какие раунды в разных ветвях одинаковы;
3. в каждой ветви, пустые раунды, т.е. пары из двух последовательных раундов обратных друг другу, могут быть вставлены между нормальными раундами;
4. в каждой ветви выполняются дополнительные раунды, для достижения рассеивания внедренной неисправности, например, полного рассеивания по всем байтам;
5. ветви, которые выполнили одни и те же раунды, 'усредняются'; их байты объединяются таким образом, что в отсутствие ошибки, внедренной в любую из этих ветвей и в случае, когда все эти ветви вычислили один и тот же результат (в разных кодировках), результатом усреднения является другое кодирование этого же результата;
6. после усреднения, дополнительные раунды инвертируются, пока не получатся выходные данные.
Результат этапов 5 и 6 состоит в том, что, пока в точности одна и та же неисправность не будет внедрена во все экземпляры раунда, который подвержен атаке DFA, взломщик не увидит изменения в выходных дынных, которое он ожидает, и DFA, как объяснено со ссылкой на фиг. 4, не будет работать. Другими словами, если существуют
Figure 00000046
ветвей, которые содержат раунд, чувствительный к DFA, взломщик должен внедрять правильные неисправности в каждую из этих ветвей. На фиг. 5a представлен вариант осуществления, в котором используется две ветви, а также один дополнительный раунд
Figure 00000047
. На фиг. 5b представлен более развернутый пример, в котором используется пять ветвей, а также три дополнительных раундовых функции
Figure 00000048
,
Figure 00000049
и
Figure 00000050
. В одну из ветвей также вставлена пара пустых раундов (
Figure 00000051
и его обратное).
Фиг. 5a демонстрирует вариант осуществления, для которого в атаке DFA две неисправности должны быть внедрены. Начиная с раунда 7, вычисление осуществляется дважды с использованием разных кодировок. Кодировки не указаны на фигуре. Это означает, что
Figure 00000052
такой же, как
Figure 00000053
. Дополнительный раунд
Figure 00000054
должен , совместно с MixColumns в раунде 8 распределять эффект ошибки, внедренной в
Figure 00000055
или
Figure 00000056
, по всем байтам
Figure 00000057
или
Figure 00000058
- напомним, что в AES-128,
Figure 00000059
не использует MixColumns и, таким образом, перемещает эффект ошибки, но не распределяет ее по множественным байтам. Хорошим вариантом является выбор случайного
Figure 00000060
и допущение
Figure 00000061
. В отсутствие внедренной неисправности, эта схема вычисляет те же выходные данные, что и схема из фиг. 4. Результаты из двух ветвей, обозначенных
Figure 00000062
и
Figure 00000063
, усредняются до
Figure 00000064
, где
Figure 00000065
- произвольное обратимое отображение на пространстве состояний, отображающим со свойством, что
Figure 00000066
, где
Figure 00000067
обозначает тождественное отображение, также является обратимым. Затем
Figure 00000068
если и только если
Figure 00000069
, откуда следует, что одна и та же неисправность должна внедряться в обе ветви.
Фиг. 5b демонстрирует более развернутый вариант осуществления, для которого в атаке DFA должно внедряться пять неисправностей. Результаты после раунда 12 из двух ветвей объединяются с использованием обратимых отображений
Figure 00000070
и
Figure 00000071
, применяется обратное для
Figure 00000072
, и результат этого действия объединяется с результатами трех других ветвей с использованием различных обратимых отображений
Figure 00000073
,
Figure 00000074
,
Figure 00000075
и
Figure 00000076
. Наконец, раунды 11 и 10 инвертируются для получения выходных данных.
На фиг. 6a показан компьютерно-считываемый носитель 1000, имеющий записываемую часть 1010, содержащую компьютерную программу 1020, причем компьютерная программа 1020 содержит инструкции, предписывающие процессорной системе осуществлять способ для вычисления блочного шифра, согласно варианту осуществления. Компьютерная программа 1020 может быть реализована на компьютерно-считываемом носителе 1000 в виде физических меток или посредством намагничения компьютерно-считываемого носителя 1000. Однако, допустим и любой другой пригодный вариант осуществления. Кроме того, очевидно, что, хотя компьютерно-считываемый носитель 1000 показан здесь как оптический диск, компьютерно-считываемый носитель 1000 может быть любым пригодным компьютерно-считываемым носителем, например, жестким диском, твердотельной памятью, флеш-памятью, и т.д., и может быть незаписываемым или записываемым. Компьютерная программа 1020 содержит инструкции для предписания процессорной системе осуществлять упомянутый способ для вычисления блочного шифра.
На фиг. 6b показана схема процессорной системы 1140 согласно варианту осуществления криптографического устройства для вычисления блочного шифра. Процессорная система содержит одну или более интегральных схем 1110. Архитектура одной или более интегральных схем 1110 схематически показана на фиг. 6b. Схема 1110 содержит модуль 1120 обработки, например, CPU, для выполнения компонентов компьютерной программы для осуществления способа согласно варианту осуществления и/или реализации ее модулей или блоков. Схема 1110 содержит память 1122 для хранения программного кода, данных и т.д. Часть памяти 1122 может быть только для чтения. Схема 1110 может содержать элемент 1126 связи, например, антенну, соединители или оба, и пр. Схема 1110 может содержать специализированную интегральную схему 1124 для осуществления полностью или частично обработки, заданной в способе. Процессор 1120, память 1122, специализированная IC 1124 и элемент 1126 связи могут быть соединены друг с другом через межсоединение 1130, например, шину. Процессорная система 1110 может быть приспособлена для контактной и/или бесконтактной связи, с использованием антенны и/или соединителей, соответственно.
Например, согласно варианту осуществления, устройство для вычисления блочного шифра может содержать схему процессора и схему памяти, причем процессор выполнен с возможностью исполнения программного обеспечения, хранящегося в схеме памяти. Например, схемой процессора может быть процессор Intel Core i7, ARM Cortex-R8 и т.д. Согласно варианту осуществления, схема процессора может быть ARM Cortex M0. Схема памяти может быть схемой ROM или энергонезависимой памятью, например, флэш-памятью. Схема памяти может быть энергозависимой памятью, например, памятью SRAM. В последнем случае, устройство может содержать энергонезависимый интерфейс программного обеспечения, например, жесткий диск, сетевой интерфейс и т.д., выполненный с возможностью обеспечения программного обеспечения.
Следует отметить, что вышеупомянутые варианты осуществления иллюстрируют, а не ограничивают изобретение, и что специалисты в данной области техники смогут разработать многие альтернативные варианты осуществления.
В формуле изобретения, никакие ссылочные позиции, заключенные в скобки, не следует рассматривать как ограничение формулы изобретения. Использование глагола "содержат" и его спряжений не исключает наличия элементов или этапов, отличных от указанных в формуле изобретения. Употребление наименования элемента в единственном числе не исключает наличия множества таких элементов. Изобретение можно реализовать посредством оборудования, содержащего несколько различных элементов, и посредством надлежащим образом запрограммированного компьютера. В пункте устройства, где перечислено несколько средств, некоторые из этих средств могут быть реализованы одним и тем же элементом оборудования. Лишь тот факт, что некоторые меры упомянуты в отличающихся друг от друга зависимых пунктах формулы изобретения, не указывает, что комбинация этих мер не может быть выгодно использована.
В формуле изобретения ссылки в скобках относятся к ссылочным позициям на чертежах, иллюстрирующих варианты осуществления, или к формулам вариантов осуществления, таким образом, увеличивая понятность формулы изобретения. Эти ссылки не следует рассматривать как ограничивающие формулу изобретения.

Claims (32)

1. Криптографическое устройство (100), выполненное с возможностью вычисления блочного шифра в отношении входного сообщения (110), причем блочный шифр содержит множество раундов (
Figure 00000077
) блочного шифрования, причем устройство содержит
- входной интерфейс (105), выполненный с возможностью приема входного сообщения,
- схему процессора, выполненную с возможностью
-- вычисления множества промежуточных результатов блочного шифрования посредством
--- вычисления первого промежуточного результата (151) блочного шифрования из множества промежуточных результатов блочного шифрования посредством применения множества раундов (
Figure 00000078
) блочного шифрования после входного сообщения, сопровождаемых одним или более дополнительными раундами (
Figure 00000079
;
Figure 00000080
) блочного шифрования, и
--- вычисления дополнительных промежуточных результатов (152, 153) блочного шифрования из множества промежуточных результатов блочного шифрования посредством повторного вычисления по меньшей мере одного из окончательных раундов блочного шифрования из множества раундов (
Figure 00000081
блочного шифрования, сопровождаемых одним или несколькими дополнительными раундами (
Figure 00000079
;
Figure 00000080
) блочного шифрования,
-- применения множества усредняющих функций (
Figure 00000082
к множеству промежуточных результатов блочного шифрования, причем множество усредняющих функций выбирается таким образом, что их сумма функций равна тождественной функции,
-- суммирования результатов множества усредняющих функций, и
-- применения обратного для одного или более дополнительных раундов блочного шифрования, причем результат (190) блочного шифрования получается из результата упомянутого обратного.
2. Криптографическое устройство по п. 1, причем дополнительный раунд блочного шифрования получают из раунда блочного шифрования из множества раундов блочного шифрования посредством изменения ключа раунда.
3. Криптографическое устройство по любому из предыдущих пунктов, в котором по меньшей мере одна из множества усредняющих функций обратима.
4. Криптографическое устройство по любому из предыдущих пунктов, в котором промежуточный результат блочного шифрования содержит множественные элементы данных, причем усредняющая функция действует покомпонентно на элементах данных.
5. Криптографическое устройство по любому из предыдущих пунктов, в котором усредняющая функция линейна.
6. Криптографическое устройство по любому из предыдущих пунктов, в котором все кроме одной из множества усредняющих функций выбираются произвольно из более крупного набора усредняющих функций и при этом окончательная усредняющая функция вычисляется как разность функций тождественной функции и упомянутых выбранных усредняющих функций.
7. Криптографическое устройство по любому из предыдущих пунктов, в котором применение множества раундов блочного шифрования содержит применение одного или более пустых раундов.
8. Криптографическое устройство по любому из предыдущих пунктов, в котором по меньшей мере один из промежуточных результатов блочного шифрования вычисляется на кодированных переменных, причем упомянутые переменные совместно не кодируются.
9. Криптографическое устройство по любому из предыдущих пунктов, в котором кодируется множество промежуточных результатов блочного шифрования, которые равны после кодирования.
10. Криптографическое устройство (100) по любому из предыдущих пунктов, в котором схема процессора выполнена с возможностью
- вычисления дополнительных промежуточных результатов блочного шифрования посредством
-- вычисления дополнительного множества промежуточных результатов блочного шифрования посредством повторного вычисления по меньшей мере одного из окончательных раундов блочного шифрования множества раундов (
Figure 00000081
блочного шифрования, сопровождаемых одним или несколькими дополнительными раундами (
Figure 00000079
) блочного шифрования, сопровождаемыми одним или несколькими еще одними дополнительными (
Figure 00000083
) раундами блочного шифрования,
- применения дополнительного множества усредняющих функций (
Figure 00000082
к дополнительному множеству промежуточных результатов блочного шифрования, причем дополнительное множество усредняющих функций выбирается таким образом, что их сумма функций равна тождественной функции,
- суммирования результатов дополнительного множества усредняющих функций, и
- применения обратного для одного или нескольких еще одних дополнительных раундов блочного шифрования.
11. Криптографический способ (300), выполненный с возможностью вычисления блочного шифра в отношении входного сообщения (110), причем блочный шифр содержит множество раундов (
Figure 00000078
) блочного шифрования, причем способ содержит этапы, на которых
- принимают (310) входное сообщение,
- вычисляют (320) множество промежуточных результатов блочного шифрования посредством
--- вычисления первого промежуточного результата (151) блочного шифрования из множества промежуточных результатов блочного шифрования посредством применения (330) множества раундов (
Figure 00000078
) блочного шифрования после входного сообщения, сопровождаемых одним или несколькими дополнительными раундами (
Figure 00000079
;
Figure 00000080
) блочного шифрования, и
--- вычисления дополнительных промежуточных результатов (152, 153) блочного шифрования из множества промежуточных результатов блочного шифрования посредством повторного вычисления (340) по меньшей мере одного из окончательных раундов блочного шифрования из множества раундов (
Figure 00000081
блочного шифрования, сопровождаемых одним или несколькими дополнительными раундами (
Figure 00000079
;
Figure 00000080
) блочного шифрования,
-- применения (350) множества усредняющих функций (
Figure 00000082
к множеству промежуточных результатов блочного шифрования, причем множество усредняющих функций выбирается таким образом, что их сумма функций равна тождественной функции,
-- суммирования (360) результатов множества усредняющих функций, и
-- применения (370) обратного для одного или нескольких дополнительных раундов блочного шифрования, причем результат (190) блочного шифрования получается из результата упомянутого обратного.
12. Компьютерно-считываемый носитель (1000), содержащий временные или невременные данные (1020), представляющие инструкции, предписывающие процессорной системе осуществлять способ по п. 11.
RU2019104101A 2017-06-09 2018-05-31 Устройство и способ вычисления блочного шифра RU2696334C1 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP17175161.3A EP3413500A1 (en) 2017-06-09 2017-06-09 Device and method to compute a block cipher
EP17175161.3 2017-06-09
PCT/EP2018/064321 WO2018224382A1 (en) 2017-06-09 2018-05-31 Device and method to compute a block cipher

Publications (1)

Publication Number Publication Date
RU2696334C1 true RU2696334C1 (ru) 2019-08-01

Family

ID=59034565

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2019104101A RU2696334C1 (ru) 2017-06-09 2018-05-31 Устройство и способ вычисления блочного шифра

Country Status (7)

Country Link
US (1) US10790962B2 (ru)
EP (2) EP3413500A1 (ru)
JP (1) JP6782864B2 (ru)
CN (1) CN109661792B (ru)
BR (1) BR112019003039A2 (ru)
RU (1) RU2696334C1 (ru)
WO (1) WO2018224382A1 (ru)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL2015745B1 (en) * 2015-11-09 2017-05-26 Koninklijke Philips Nv A cryptographic device arranged to compute a target block cipher.
EP3407528A1 (en) 2017-05-24 2018-11-28 Koninklijke Philips N.V. Cryptographic device and method
FR3078464A1 (fr) * 2018-02-26 2019-08-30 Stmicroelectronics (Rousset) Sas Procede et circuit de mise en oeuvre d'une table de substitution
FR3078463A1 (fr) * 2018-02-26 2019-08-30 Stmicroelectronics (Rousset) Sas Procede et dispositif de realisation d'operations en table de substitution
US11218291B2 (en) * 2018-02-26 2022-01-04 Stmicroelectronics (Rousset) Sas Method and circuit for performing a substitution operation
EP3664359A1 (en) * 2018-12-07 2020-06-10 Koninklijke Philips N.V. A computation device using shared shares
JP7383985B2 (ja) * 2019-10-30 2023-11-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
JPWO2022102555A1 (ru) 2020-11-12 2022-05-19

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8386791B2 (en) * 2004-03-11 2013-02-26 Oberthur Technologies Secure data processing method based particularly on a cryptographic algorithm
US20160048689A1 (en) * 2013-03-27 2016-02-18 Irdeto B.V. Tamper resistant cryptographic algorithm implementation
WO2017080769A1 (en) * 2015-11-09 2017-05-18 Koninklijke Philips N.V. A cryptographic device arranged to compute a target block cipher
RU2015151343A (ru) * 2013-05-01 2017-06-06 Конинклейке Филипс Н.В. Электронное устройство блочного шифрования, подходящее для обфускации

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7280658B2 (en) * 2001-06-01 2007-10-09 International Business Machines Corporation Systems, methods, and computer program products for accelerated dynamic protection of data
EP2293487A1 (en) * 2009-09-08 2011-03-09 Thomson Licensing A method of diversification of a round function of an encryption algorithm
EP2506174B1 (en) * 2011-03-30 2019-01-09 Irdeto B.V. Enabling a software application to be executed on a hardware device
US10359996B2 (en) * 2013-02-28 2019-07-23 Koninklijke Philips N.V. Random number generator and stream cipher
CN105099666A (zh) * 2015-06-26 2015-11-25 中国科学院信息工程研究所 混淆轮边界的白盒密码系统和方法
NL2015599B1 (en) * 2015-10-12 2017-05-02 Koninklijke Philips Nv A cryptographic device and an encoding device.

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8386791B2 (en) * 2004-03-11 2013-02-26 Oberthur Technologies Secure data processing method based particularly on a cryptographic algorithm
US20160048689A1 (en) * 2013-03-27 2016-02-18 Irdeto B.V. Tamper resistant cryptographic algorithm implementation
RU2015151343A (ru) * 2013-05-01 2017-06-06 Конинклейке Филипс Н.В. Электронное устройство блочного шифрования, подходящее для обфускации
WO2017080769A1 (en) * 2015-11-09 2017-05-18 Koninklijke Philips N.V. A cryptographic device arranged to compute a target block cipher

Also Published As

Publication number Publication date
EP3469762B1 (en) 2019-10-02
WO2018224382A1 (en) 2018-12-13
US10790962B2 (en) 2020-09-29
US20200092081A1 (en) 2020-03-19
JP6782864B2 (ja) 2020-11-11
CN109661792B (zh) 2020-03-10
JP2020522753A (ja) 2020-07-30
EP3413500A1 (en) 2018-12-12
EP3469762A1 (en) 2019-04-17
BR112019003039A2 (pt) 2019-05-14
CN109661792A (zh) 2019-04-19

Similar Documents

Publication Publication Date Title
RU2696334C1 (ru) Устройство и способ вычисления блочного шифра
US11362802B2 (en) Cryptographic device arranged to compute a target block cipher
JP7065888B6 (ja) 暗号装置及び方法
RU2692419C1 (ru) Криптографическое устройство и кодирующее устройство
JP6788610B2 (ja) ブロック・サイファーを計算するための暗号装置
RU2708439C1 (ru) Вычислительное устройство и способ