УСТРОЙСТВО И СПОСОБ ВЫЧИСЛЕНИЯ БЛОЧНОГО ШИФРА
DEVICE AND METHOD FOR CALCULATING BLOCK CIPHER

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Изобретение относится к криптографическому устройству, выполненному с возможностью вычисления блочного шифра, криптографическому способу, предусматривающему вычисление блока, и компьютерно-считываемому носителю.
УРОВЕНЬ ТЕХНИКИ
В статье ʺ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 представляет традиционное вычисление, которое преобразует входные данные  в выходные данные  посредством последовательного применения раундовых функций . Промежуточные состояния обозначены . В этом конкретном примере предусмотрено 10 раундов, как в AES-128, но аналогичные графики можно построить для вычислений, которые используют другое количество раундов, как в AES-192 (12 раундов), AES-256 (14 раундов) или DES (16 раундов). Во всех этих вычислениях раундовые функции являются открытыми функциями, которые зависят от ключа раунда.
Взломщик, который сталкивался с реализацией этого вычисления, например, компьютерной программой, должен иметь возможность считывать ключи раундов из компьютерной памяти, пока программа выполняется. Однако, программист может защититься от этой атаки посредством анализа памяти посредством кодирования всех переменных, в частности, ключей раундов, в программе. Взломщик может попытаться осуществить обратный инжениринг кодирования и, таким образом, извлечь ключ раунда, но обычно существуют более простые способы извлечения ключа, которые не требуют обратного инжениринга. Одним из этих способов является атака DFA.
В атаке DFA взломщик вставляет неисправность, т.е. изменяет переменную, где-либо в программе, и наблюдает результат этого изменения на выходе. Изменение выхода позволят выявить часть ключа раунда последнего раунда.
Для конкретизации, вернемся к примеру AES-128, изображенному на фиг. 4. Существует 10 раундов и 11 ключей раундов . Вычисление выходного результата  из входных данных  осуществляется следующим образом:
где для раундов с 0 по 8 раундовая функция задается как
и последняя раундовая функция  задается как
Если взломщик изменяет переменную программы, которая кодирует единственный байт из последнего раунда, например, байт ,  или , то два выходных результата отличаются единственным байтом, и никакой информации о ключе не выявляется. Если взломщик изменяет переменную, которая кодирует единственный байт из одного из раундов с  по , то изменяется весь выходной результат, и выводить информацию о каком-либо из ключей раундов непрактично. Если же взломщик изменяет переменную, которая кодирует единственный байт предпоследнего раунда, например, байт  или , то выходы  (без внедренных неисправностей) и  (с внедренными неисправностями) отличаются четырьмя из шестнадцати байтов (благодаря операции MixColumns), и для этих выходов
и
отличаются в точности одним байтом. Это ограничивает возможные значения четырех байтов  в позициях, где  и  отличаются. Применение разных изменений к одной и той же переменной программы даст разные ограничения для одних и тех же четырех байтов, и обычно лишь несколько таких внедрений неисправностей требуются для однозначного определения четырех байтов . Другие байты  находятся атаками 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 блочного шифрования, даже не зная ключ, используемый блочным шифром.
Эффективная защита от других атак белого ящика, например, атак, в которых переменные только наблюдаются, но не изменяются, могут базироваться на долях. Например, переменную  можно представить как кортеж , который представляет переменную. Например, можно иметь , в случае наличия  долей. Переменная  может быть элементом данных, например, байтом внутреннего состояния. Все элементы данных, например, байты, внутреннего состояния можно представить таким образом. Отдельные доли можно реализовать в программе белого ящика в кодированной форме, , для некоторой биекции . Реализация белого ящика с долями менее чувствительна к некоторым усовершенствованным атакам белого ящика, например, конфликтным атакам. Варианты осуществления добавляют защиту 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 усредняющей функции. Модули усредняющей функции применяют соответствующее множество усредняющих функций к множеству промежуточных результатов блочного шифрования. Множество усредняющих функций выбирается таким образом, что их сумма функций равна тождественной функции. Например, если обозначить усредняющие функции как , и их входы как , требование состоит в том, что . Например, функцию  можно реализовать модулем 161 усредняющей функции, функцию  можно реализовать модулем 162 усредняющей функции, и функцию  можно реализовать модулем 163 усредняющей функции. Если существует три модуля усредняющей функции, получается .
Усредняющие функции можно выбирать по-разному. Например, некоторые или даже все кроме одной из множества усредняющих функций можно выбирать произвольно из более крупного набора усредняющих функций. Окончательную усредняющую функцию можно вычислять как разность функций тождественной функции и упомянутых выбранных усредняющих функций. Например, можно задать окончательную функцию , предполагая наличие  усредняющих функций.
Преимущественны различные варианты выбора для более крупного набора усредняющих функций. Например, можно выбирать усредняющие функции как функции, которые действуют покомпонентно в отношении элементов данных в промежуточных результатах блочного шифрования. Например, если промежуточным результатом блочного шифрования является последовательность элементов данных, например байтов, , усредняющая функция может задаваться как .
Другая возможность состоит в выборе усредняющих функций в качестве линейных операций. Например, линейные операции, действующие в отношении промежуточных результатов блочного шифрования. В этом случае промежуточные результаты блочного шифрования можно рассматривать как последовательность элементов данных, например, байтов, и линейные операции можно рассматривать как матрицу в соответствующем конечном поле, например,  в случае байтов. В частности, линейную операцию можно рассматривать как матрицу, действующую в отношении битов в промежуточном результате блочного шифрования, например, матрицу над .
Еще один дополнительный вариант для выбора усредняющих функций состоит в их выборе из полиномов заранее определенной максимальной степени, например, полиномов 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, не будет работать. Другими словами, если существуют  ветвей, которые содержат раунд, чувствительный к DFA, взломщик должен внедрять правильные неисправности в каждую из этих ветвей. На фиг. 5a представлен вариант осуществления, в котором используется две ветви, а также один дополнительный раунд . На фиг. 5b представлен более развернутый пример, в котором используется пять ветвей, а также три дополнительных раундовых функции ,  и . В одну из ветвей также вставлена пара пустых раундов ( и его обратное).
Фиг. 5a демонстрирует вариант осуществления, для которого в атаке DFA две неисправности должны быть внедрены. Начиная с раунда 7, вычисление осуществляется дважды с использованием разных кодировок. Кодировки не указаны на фигуре. Это означает, что  такой же, как . Дополнительный раунд должен , совместно с MixColumns в раунде 8 распределять эффект ошибки, внедренной в  или , по всем байтам  или  - напомним, что в AES-128,  не использует MixColumns и, таким образом, перемещает эффект ошибки, но не распределяет ее по множественным байтам. Хорошим вариантом является выбор случайного  и допущение . В отсутствие внедренной неисправности, эта схема вычисляет те же выходные данные, что и схема из фиг. 4. Результаты из двух ветвей, обозначенных  и , усредняются до , где  - произвольное обратимое отображение на пространстве состояний, отображающим со свойством, что , где  обозначает тождественное отображение, также является обратимым. Затем  если и только если , откуда следует, что одна и та же неисправность должна внедряться в обе ветви.
Фиг. 5b демонстрирует более развернутый вариант осуществления, для которого в атаке DFA должно внедряться пять неисправностей. Результаты после раунда 12 из двух ветвей объединяются с использованием обратимых отображений  и , применяется обратное для , и результат этого действия объединяется с результатами трех других ветвей с использованием различных обратимых отображений , ,  и . Наконец, раунды 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. В последнем случае, устройство может содержать энергонезависимый интерфейс программного обеспечения, например, жесткий диск, сетевой интерфейс и т.д., выполненный с возможностью обеспечения программного обеспечения.
Следует отметить, что вышеупомянутые варианты осуществления иллюстрируют, а не ограничивают изобретение, и что специалисты в данной области техники смогут разработать многие альтернативные варианты осуществления.
В формуле изобретения, никакие ссылочные позиции, заключенные в скобки, не следует рассматривать как ограничение формулы изобретения. Использование глагола "содержат" и его спряжений не исключает наличия элементов или этапов, отличных от указанных в формуле изобретения. Употребление наименования элемента в единственном числе не исключает наличия множества таких элементов. Изобретение можно реализовать посредством оборудования, содержащего несколько различных элементов, и посредством надлежащим образом запрограммированного компьютера. В пункте устройства, где перечислено несколько средств, некоторые из этих средств могут быть реализованы одним и тем же элементом оборудования. Лишь тот факт, что некоторые меры упомянуты в отличающихся друг от друга зависимых пунктах формулы изобретения, не указывает, что комбинация этих мер не может быть выгодно использована.
В формуле изобретения ссылки в скобках относятся к ссылочным позициям на чертежах, иллюстрирующих варианты осуществления, или к формулам вариантов осуществления, таким образом, увеличивая понятность формулы изобретения. Эти ссылки не следует рассматривать как ограничивающие формулу изобретения.