Способ защиты условного перехода, носитель информации, программа, защищенная система и процессор защиты для этого способа

Изобретение относится к способу защиты условного перехода от атак ввода ошибки, носителю информации и системе, защищенной от таких атак. Технический результат заключается в обеспечении защиты выполнения процессором инструкций от атак ввода ошибки. Такой результат достигается за счет того, что условный переход авторизует выполнение специфичной операции обработки для элемента D данных, если булево выражение между одним или больше операндами проверено, и, в противном случае, исключает выполнение специфичной операции обработки для элемента D данных, при этом а) рассчитывают (36, 48, 50; 84, 88, 90) элемент D' данных из элемента D данных и из операндов булева выражения таким образом, что элемент D' данных идентичен элементу D данных, если и только если булево выражение проверено, и таким образом, что элемент D' данных имеет другое значение, называемое недействительным значением, если булево выражение не проверено, причем элемент D' данных кодируют на несколько битов, и b) используют (56-92) элемент D' данных вместо элемента D данных во время любого выполнения специфичной операции обработки. 4 н. и 7 з.п. ф-лы, 4 ил.

 

Изобретение относится к способу защиты условного перехода от атак ввода ошибки, носителю информации и системе, защищенной от таких атак.

Термин "условный переход" обозначает инструкцию, которая позволяет выполнить специфичную операцию обработки для элемента D данных, только если булево выражение между одним или больше операндами проверено и в котором, если это не так, запрещается выполнение операции специфичной обработки для элемента D данных. В языках программирования высокого уровня эту инструкцию часто записывают в следующей форме: "if [булево выражение], then [специфичная обработка D], else [принятая по умолчанию обработка]". В определенных случаях принятая по умолчанию обработка отсутствует так, что выражение после "else" может быть исключено. Однако существует множество условных переходов в инструкциях, которые не обязательно записаны в форме "if…then…else…". Например, инструкция "переключения" может быть разбита на несколько условных переходов даже при том, что инструкции типа "if…then…else…" не появляются, когда она записана на языке высокого уровня. Более конкретно, на языке высокого уровня инструкция переключения может быть записана следующим образом:

переключатель (V) [

случай Vc: специфичная обработка 1,

случай V'c: специфичная обработка 2

значение по умолчанию: остановка

]

Термин "булево выражение" обозначает выражение, которое при его оценке возвращает либо значение "true" (истинное), или значение "false" (ложное). Говорят, что булево выражение проверено, если результат равен "true", и говорят, что оно не проверено, если результат равен "false". Результат оценки булева выражения поэтому представляет собой булеву величину, то есть величину, кодируемую с помощью одного бита информации.

Булев элемент данных определен как представляющий собой элемент данных, значение которого равно либо "true", или "false". Значение булева элемента данных поэтому систематически кодируется с помощью одного информационного бита. И, наоборот, не булев элемент данных представляет собой элемент данных, который может принимать, строго говоря, больше чем два разных значения. Не булев элемент данных поэтому не может быть систематически кодирован одним информационным битом.

Условный переход поэтому имеет ассоциированное булево выражение, содержащее один или больше операндов. Например, булево выражение может быть записано следующим образом:

- выражение равенства, которое возвращает значение "true", если операнды равны, и значение "false" в противном случае

- выражение неравенства, которое возвращает значение "true", если операнды отличаются, и значение "false" в противном случае

- выражение превосходства, которое возвращает значение "true", если первый операнд больше, чем второй операнд, и значение "false" в противном случае

- выражение подчиненности, которое возвращает значение "true", если первый операнд меньше, чем второй операнд, и значение "false", если нет.

Наконец, здесь термины "зашифрованный" или "шифрование" также обозначают любую операцию, направленную на то, чтобы сделать элемент данных непонятным для третьей стороны, которая не имеет информации, необходимой для восстановления исходного элемента данных. Как правило, сложные операции шифрования, то есть те, в которых используют существенное количество компьютерных ресурсов, используют алгоритм шифрования, параметры которого заданы ключом шифрования. В случае симметричного алгоритма ключ шифрования также может использоваться для дешифрования. В случае асимметричного алгоритма, ключ дешифрования отличается от ключа, используемого для шифрования. Алгоритм шифрования является либо открытым, или секретным. Ключ шифрования всегда является секретным, когда алгоритм представляет собой симметричный алгоритм шифрования, и, по меньшей мере, один из ключей, называемых частным ключом, является секретным, когда используется асимметричный алгоритм шифрования. Для данного алгоритма шифрования, чем длиннее ключ шифрования, тем выше уровень защиты. Например, ключи кодируют, по меньшей мере, на 32 бита и, предпочтительно, более чем на 128 битов для симметричного алгоритма AES (усовершенствованный стандарт шифрования) или более чем на 1024 бита для асимметричного алгоритма RSA (Rivest, Shamir & Adleman (Ривеста, Шамира и Адлемана)). Также существуют простые операции шифрования, то есть шифрование, для выполнения которого требуется меньше компьютерных ресурсов. Пример простого шифрования представляет собой маскирование элемента данных. Маскирование состоит, например, в объединении данных, которые должны быть замаскированы, со случайным числом, которое держат секретным.

Атака ввода ошибки, так же известная как "атака ошибки", состоит в вынуждении процессора не выполнять инструкции или выполнять их плохо. Например, с этой целью преднамеренно нарушают окружающие условия процессора. Например, процессор подвергают неожиданному повышению температуры или модификации сигнала электропитания, или сигнала тактовой частоты. Также возможно подвергать процессор воздействию лазерным импульсом, электромагнитным излучением или облучением радиоактивными частицами.

Ошибки, возникающие во время выполнения программы, приводят к модификациям, в частности случайным модификациям битов данных или к переключениям инструкции. Например, такие ошибки могут привести к модификации адреса, переданного как аргумент в инструкцию перехода, или модификации самой инструкции перехода.

Условные переходы особенно восприимчивы к атакам этого типа. Действительно, атака ввода ошибки может привести к активации выполнения определенной обработки, независимо от оценки булева выражения, ассоциированного с условным переходом. Все такие переходы в большей степени восприимчивы к атакам способа такого типа, поскольку они находятся, или их выполняют в процедуре защиты решения такой как, например, проверка цифровой подписи, проверка MAC (KAC, код аутентификации сообщения) или проверка на непротиворечивость, выполняемая во время хеш-функции.

Различные подходы были предложены для защиты перехода от атак ввода ошибки. В таких подходах, по существу, используется избыточность инструкций для того, чтобы сделать невыполнение условного перехода более трудным в программе. В заявке на патент WO 2007/006887 описан пример решения такого типа.

Однако воплощение таких решений является все еще трудновыполнимым, в частности, поскольку в них часто требуется определенная организация памяти процессора.

Изобретение направлено на преодоление этого недостатка путем предложения способа защиты условного перехода от атак ввода ошибки, который является более простым для выполнения.

Задача изобретения, поэтому, состоит в разработке способа такого типа, в котором выполнение условного перехода производят, используя следующую последовательность операций:

а) рассчитывают небулев элемент D' данных из элемента D данных и из операндов булева выражения таким образом, что элемент D' данных идентичен элементу D данных, если и только если булево выражение будет проверено, и таким образом, что элемент D' данных имеет другое значение, называемое неправильным значением, если булево выражение не будет проверено, причем элемент D' данных кодируют по нескольким битам, и

b) используют элемент D' данных вместо элемента D данных во время любого выполнения конкретной операции обработки.

В представленном выше способе условный переход заменяют последовательностью операций а) и b), независимо от того, проверено ли булево выражение. Это приводит поэтому к замене двух переходов (переходу, выполняемому, если булево выражение дает результат "true", и переходу, выполняемому, если булево выражение дает результат "false") условного перехода, воплощенного в форме, "if…then…else…" одним переходом. Таким образом, становится возможным систематически выполнять специфичную обработку. Однако в описанном выше способе это не обеспечивает защиту данной программы. Действительно, если булево выражение между операндами проверено, тогда выполняют специфичную обработку для действительного элемента D данных. В противном случае, если булево выражение не проверено, или если произошла атака ввода ошибки, тогда, в худшем случае, специфичная обработка будет выполнена для другого значения и приведет к получению результата, который невозможно применять или который является бесполезным. Такое выполнение специфичной операции обработки для такого недействительного значения элемента D' данных не дает дополнительной информации по сравнению со случаем, если бы такая специфичная операция обработка не была бы выполнена. Такое недействительное значение элемента D' данных, возможно, даже может привести к блокированию выполнения специфичной операции обработки, если такая операция обработки не имеет требуемого формата.

Таким образом, атака ошибки для этой части программы обязательно обречена на ввод ошибки. Действительно, путем модификации выполняемого кода инструкции или модификации значения исходного указателя, обозначающего инструкцию, требуемую для выполнения, такая атака может привести к модификации значения элемента D' данных. Если значение элемента D' данных будет модифицировано в результате атаки ввода ошибки, величина, полученная таким образом, по всей вероятности, будет недействительной. Таким образом, тот факт, что специфичная операция обработки будет выполнена для недействительной величины элемента D' данных, не имеет какой-либо значимости и не наносит ущерба защите программы.

Наконец, операции а) и b) могут быть очень легко выполнены на языке высокого уровня программирования, например языке С, C++ или Java. Таким образом, вариант выполнения описанного выше способа особенно прост и не требует обращения к каким-либо конкретным адресам памяти.

Варианты выполнения в соответствии с данным способом могут содержать одну или больше из следующих характеристик:

- расчет элемента D' данных содержит:

c) преобразование, используя обратимую функцию, элемента D данных для получения другого элемента D* данных, из которого невозможно восстановить данные D без какой-либо другой информации,

d) строят элемент D' данных из элемента D* данных и из операндов булева выражения таким образом, чтобы элемент D' данных был идентичен элементу D данных, если и только если булево выражение проверено, и таким образом, что элемент D' данных имеет другое значение, называемое недействительным значением, если булево выражение не проверено;

- способ содержит комбинацию операндов, используемых для оценки булева выражения, для получения небулева результата R, имеющего значение X, если и только если булево выражение проверено, причем результат R кодируют в нескольких битах;

- операция с) представляет собой операцию шифрования элемента D данных, используя алгоритм шифрования и величину X как ключ шифрования для получения элемента D* данных, и во время операции d) элемент D* данных дешифруют, используя алгоритм дешифрования, и результат R как ключ дешифрования для построения элемента D* данных;

- значение Х представляет функцию элемента D данных;

- операция с) представляет собой операцию для маскирования элемента данных D с помощью случайного числа;

- способ содержит:

- перед расчетом элемента D* данных к элементу D данных добавляют дополнительные биты в соответствии с известным синтаксисом для получения элемента D данных с неидентифицируемым синтаксисом;

- рассчитывают элемент D' данных из элемента D данных с идентифицируемым синтаксисом,

- перед выполнением операции специфичной обработки или во время ее выполнения проверяют синтаксис элемента D' данных для детектирования выполнения атаки ввода ошибки;

- булево выражение, ассоциированное с условным переходом, представляет собой выражение равенства среди нескольких операндов.

Данный вариант выполнения способа, кроме того, имеет следующие преимущества:

- преобразование элемента D данных в элемент D* данных защищает элемент D данных, таким образом повышая защиту способа,

- шифрование элемента D данных с помощью алгоритма шифрования и ключа шифрования позволяет передать результат операции а) в процессор, используя незащищенную сеть передачи информации,

- генерирование ключа шифрования, который представляет собой функцию элемента D данных, во время операции а) повышает защиту способа,

- использование операции маскирования в качестве операции шифрования повышает скорость выполнения этого способа,

- подсчет появления ошибок синтаксиса активирует меру противодействия в случае повторных атак ввода ошибки или в случае повторяющихся ошибок в булевом выражении, которые не приводят к ошибкам во внутреннем формате элемента D данных, образующихся во время генерирования этого элемента данных, что также ведет к активации этой меры противодействия.

Цель изобретения также состоит в разработке носителя записи информации и компьютерной программы, содержащей инструкции для выполнения операций а) и b) описанного выше способа, когда эти инструкции выполняют с помощью электронного компьютера.

Цель изобретения также состоит в разработке системы, защищенной от атак ввода ошибки при условном переходе, такая система содержит:

- средство для расчета элемента D' данных из элемента D данных и из операндов булева выражения таким образом, что элемент D' данных идентичен элементу D данных, если и только если булево выражение проверено, и так, что элемент D' данных имеет другое значение, называемое недействительным значением, если булево выражение не проверено, причем элемент D' данных кодируют на несколько битов, и

- модуль (20), выполненный с возможностью выполнения данной специфичной операции обработки с элементом D' данных вместо элемента D данных всякий раз, когда должна быть выполнена специфичная операция обработки.

Варианты выполнения данной системы могут содержать следующую характеристику:

- средство расчета содержит процессор защиты, выполненный с возможностью выполнения, по меньшей мере, одной из операций для расчета элемента D' данных.

Данные варианты выполнения системы, кроме того, имеют следующее преимущество:

- использование процессора защиты повышает защищенность системы.

Цель изобретения также состоит в разработке процессора защиты, который может быть воплощен в упомянутой выше защищенной системе.

Изобретение будет более понятным из следующего описания, которое приведено исключительно в качестве неполного примера и выполнено со ссылкой на чертежи,

где на фиг.1 представлена схематичная иллюстрация архитектуры системы, защищенной от атак ввода ошибки, направленных против условного перехода,

на фиг.2 показана блок-схема последовательности операций способа защиты условного перехода от атак ввода ошибки, воплощенного в системе по фиг.1,

на фиг.3 схематично показана иллюстрация другой архитектуры системы, защищенной от атак ввода ошибки, направленных против условного перехода, и

на фиг.4 показана блок-схема последовательности операций другого способа для защиты условного перехода от атак ввода ошибки, воплощенного в системе по фиг.3.

На этих чертежах одинаковые номера ссылочных позиций используют для обозначения одинаковых элементов.

Здесь, в данном описании, характеристики и функции, хорошо известные специалистам в данной области техники, не будут описаны подробно.

На фиг.1 показана система 2, защищенная от атак ввода ошибки, направленных против условного перехода. Здесь такая система 2 имеет удаленный сервер 4, соединенный с вычислительным модулем 6 сетью 8 передачи информации.

Сервер 4 имеет модуль 10 шифрования. Этот модуль 10, в частности, выполнен с возможностью формирования цифровой подписи с приложением для элемента D данных. Сервер 4 выполнен с возможностью передачи данных D, сопровождаемых их цифровой подписью, в модуль 6 через сеть 8.

Сеть 8 представляет собой незащищенную сеть передачи информации, такую как сеть, известная как "Интернет".

Модуль 6 представляет собой, например, незащищенный вычислительный модуль, например компьютер или декодер мультимедийной программы. Модуль 6 является незащищенным, поскольку программа, которую он выполняет, может быть декомпилирована без какой-либо трудности.

Модуль 6 подключен к процессору 12 защиты. В таком процессоре доступ к инструкциям и к выполняемому коду сделан трудным. В частности, декомпиляция выполняемой программы преднамеренно сделана очень трудной. Например, процессор 12 защиты представляет собой карту с микросхемой.

Процессор 12 имеет электронный компьютер 14, подключенный к запоминающему устройству 16. Компьютер 14 выполнен с возможностью выполнения инструкций, записанных в запоминающее устройство 16. С этой целью, запоминающее устройство 16 имеет инструкции, необходимые для выполнения способа по фиг.2.

Компьютер 14, в частности, выполнен с возможностью выполнения следующих модулей:

- модуля 17 дешифрования,

- модуля 18 объединения операндов булева выражения, и

- модуля 20, выполненного с возможностью выполнения специфичной операции обработки для элемента данных.

Модуль 10 и компьютер 14 формируют средство для расчета элемента D' данных, описанного более подробно со ссылкой на способ по фиг.2.

Работа системы 2 будет более подробно описана ниже со ссылкой на способ, представленный на фиг.2.

Способ по фиг.2 описан в конкретном случае передачи и проверки цифровой подписи с приложением. Такая цифровая подпись представлена в форме следующей тройки информационных элементов (D, D*, Dc),

где D представляет собой элемент данных, который должен быть кодирован с цифровой подписью на несколько битов,

D* представляет собой криптограмму элемента D данных,

Dc представляет собой элемент данных управления, который соответствует здесь цифровой подписи элемента D данных.

Способ начинается на этапе 30 для подписи элемента D данных. С этой целью, в операции 32, модуль 10 генерирует ключ K1 из элемента D данных, который должен быть подписан. С этой целью используют, например, следующую взаимозависимость:

K1=G(H(D)),

где G представляет собой любую неустановленную функцию, которая, предпочтительно, является секретной,

Н представляет собой хеш-функцию, которая строит цифровой отпечаток элемента D данных.

Ниже, в данном примере, функция G, например, представляет собой функцию идентичности. Функция Н представляет собой, например, хеш-функцию в соответствии с RSA-SHA1.

Затем, во время выполнения операции 34, элемент D данных форматируют таким образом, чтобы его синтаксис соответствовал этим конкретным правилам. Например, форматирование выполняют путем осуществления операции заполнения. Здесь такая операция заполнения состоит в конкатенации байтов, значения которых известны заранее, и после самого элемента D данных. Например, после такой операции 34 форматированный элемент данных представляет собой следующее:

0×29 || 0×09 || D || 0×19 || 0×80,

где условный знак 0x обозначает число в шестнадцатеричной системе счисления, и

- "||" представляет собой функцию конкатенации.

После форматирования элемента данных его шифруют в ходе операции 36 для получения криптограммы D*. Здесь криптограмму D* получают, используя следующую взаимосвязь:

D*=ESK1(D),

где ES представляет собой симметричный алгоритм шифрования, такой как AES или 3DES, и

К1 представляет собой ключ, генерируемый во время операции 32.

Алгоритм ES представляет собой обратимую функцию, и в результате его выполнения достигают преобразования элемента D данных для получения другого элемента данных, то есть криптограммы D*.

В конечном итоге, в операции 38 строят сигнал DC. Здесь такую цифровую подпись строят по следующей взаимосвязи:

DC=EAKpriv(H(D)),

где D представляет собой элемент данных, отформатированный в ходе выполнения операции 34,

Kpriv представляет собой частный ключ шифрования пары асимметричных ключей, и

Н представляет собой ту же хеш-функцию, использовавшуюся для генерирования ключа К1, и

ЕА представляет собой асимметричный алгоритм шифрования.

В конце этапа 30 цифровую подпись с приложением (D, D*, DC) передают на этапе 40 в модуль 6 по сети 8.

На этапе 42 модуль 6 принимает такую цифровую подпись и передает ее в процессор 12 для проверки на этапе 44 цифровой подписи элемента D данных.

Если проверка подтверждает аутентичность этой сигнатуры, для элемента D данных выполняют специфичную операцию обработки. В противном случае выполнение специфичной операции обработки для элемента D данных должно быть исключено. Таким образом получают чрезвычайно чувствительный условный переход. Здесь булево выражение, ассоциированное с таким условным переходом, представляет собой выражение, состоящее в том, что цифровой отпечаток Н (D) должен быть равен другому цифровому отпечатку Н' (DC). Отпечатки Н (D) и Н' (DC) поэтому представляют собой операнды такого булева выражения.

Такой этап 44 выполняют с помощью процессора 12. В начале этапа 44 при выполнении операции 46 процессор 12 рассчитывает цифровые отпечатки Н (D) и Н' (DC). Здесь отпечаток Н' (DC) получают в соответствии со следующей взаимосвязью:

H'(DC)=EA-1Kpub(DC),

где ЕА-1 представляет собой алгоритм дешифрования, ассоциированный с асимметричным алгоритмом ЕА шифрования, использовавшимся в операции 38,

Kpub представляет собой открытый ключ шифрования, соответствующий частному ключу Kpriv шифрования.

После расчета отпечатков Н (D) и Н' (DC), на этапе 48, модуль 18 комбинирует эти два отпечатка с помощью функции F для получения результата R таким образом, что значение R равно ключу K1, если отпечатки Н (D) и Н' (DC) равны, и отличается от ключа K1, если эти отпечатки Н (D) и Н' (DC) не равны. Результат R представляет собой небулеву величину, кодированную на таком же количестве битов, как и ключ K1, то есть, по меньшей мере, на 2 битах, и, предпочтительно, более чем на 32 битах. Например, результат R кодируют, по меньшей мере, на 128 битах для алгоритма EAS и, по меньшей мере, на 1024 битах для алгоритма RSA.

Ниже приведен один пример функции F, имеющей такие свойства:

R=F(D, DC)=L(H(D))⊕L(H'(DC))⊕G(H(D)),

где L представляет собой секретную функцию, такую как хеш-функция (например, алгоритм RSA-SHA1), и

⊕ представляет собой операцию ИСКЛЮЧАЮЩЕЕ ИЛИ.

Следует понимать, что функция F (D, DC) обозначает значение G (Н(D)), когда Н (D) равно H'(DC), и совершенно другое значение, когда отпечатки Н (D) и Н' (DC) являются разными.

Затем при операции 50 модуль 16 дешифрует криптограмму D*, используя результат R, полученный в конце операции 48, для получения нового небулева элемента данных D'. Такая операция дешифрования также представляет собой операцию для построения элемента D' данных. Например, элемент D' данных получают с помощью следующих взаимозависимостей:

D'=ES-1R(D*),

где ES-1 представляет собой алгоритм дешифрования, ассоциированный с симметричным алгоритмом ES шифрования, использовавшимся в операции 36.

Таким образом, если результат R равен ключу K1, тогда элемент D' данных идентичен элементу D данных. И, наоборот, если результат R отличается от ключа K1, тогда элемент D' данных отличается от элемента D данных. Операции 36, 38 и 50 поэтому формируют операцию для вычисления элемента D' данных по элементу D данных и операндам H(D) и H'(DC) таким образом, что элемент D' данных идентичен элементу D данных, если и только если булево выражение проверено. В противном случае, элемент D' данных имеет другое значение, называемое недействительным значением.

Кроме того, поскольку элемент D' данных получают с использованием операции дешифрования, синтаксис элемента D' данных отличается от синтаксиса элемента D данных, когда результат R отличается от ключа K1.

Следовательно, если элемент D данных будет точно аутентифицирован по его цифровой подписи, то есть, если значения Н (D) и Н' (DC) равны, тогда элемент D' данных, поданный в конце этапа 44, будет идентичен элементу D данных. И, наоборот, если это условие не выполняется, то есть если на этапе 44 элемент D данных не был успешно аутентифицирован по цифровой подписи DC, тогда элемент D' данных, полученный в конце этапа 44, будет недействительным и будет отличаться от элемента D данных.

Затем, на этапе 52, процессор 12 проверяет синтаксис элемента D' данных. Если такой синтаксис не соответствует форматированию, применяемому на этапе 44, тогда он последовательно увеличивает счетчик ошибки. Если значение такого счетчика ошибки выходит за пределы заданного порогового значения S1, тогда процессор 12 переходит на этап 54 для применения мер противодействия. Например, мера противодействия может состоять в блокировании процессора 12 таким образом, чтобы сделать его непригодным для использования, даже с целью подтверждения аутентичности точно аутентифицированных данных. Другая возможная мера противодействия состоит в активации отображения предупреждающего сообщения.

Последовательное приращение счетчика ошибки может иметь несколько причин. Например, если процессор 12 подвергают атаке ввода ошибки, это может привести к ошибочному выполнению одной из операций 46-50 и, следовательно, при восстановлении, в конце этапа 44, к недействительному элементу D' данных. Недействительный элемент D' данных также получают, если полученная тройка (D, D*, DC) не была аутентифицирована, то есть, если цифровая подпись DC не соответствует индексу D.

Если значение счетчика ошибки находится ниже порогового значения S1, модуль 20 выполняет специфичную операцию обработки для элемента D' данных на этапе 56. Как правило, специфичная операция обработки содержит операцию 58 для проверки внутреннего формата элемента D' данных. Если этот формат является неправильным, поскольку, например, формат элемента D данных, принятый модулем 6, был неправильным, тогда специфичную операцию обработки останавливают и выполняют операцию 60 коррекции. Операция 60 может состоять, например, в запросе повторной отправки элемента D данных из сервера 4 в правильном формате.

В противном случае, то есть, если формат элемента D' данных правильный, выполнение специфичной операции обработки продолжают до конца.

Следует отметить, что атака ввода ошибки может быть выполнена во время операции 52 таким образом, что даже если элемент D' данных недействительный, операция специфичной обработки будет выполнена на этапе 56. Однако такая атака была бы проведена напрасно, поскольку на этапе 56 будет выполнена операция специфичной обработки для недействительного элемента D' данных. Теперь выполнение операции специфичной обработки для недействительного элемента D' данных может привести только к получению непригодных для употребления или ненужных результатов. Таким образом, такая атака также не создает опасности для защиты системы 2.

На фиг.3 показана другая система 70, защищенная от атаки ввода ошибки при условном переходе. Архитектура этой системы 70 идентична архитектуре системы 2, за исключением того, что процессор 12 заменен процессором 72 безопасности. Такой процессор 72 безопасности идентичен процессору 12 за исключением того, что он имеет, кроме того, модель 74 шифрования.

В системе 70, даже операция 36 шифрования может быть выполнена в процессоре 72. Таким образом, серверу 4 больше не требуется передавать криптограмму D* в процессор 72. Действительно, такой процессор 72 может легко восстановить ее из полученного элемента D данных и из функции Н. Это позволяет экономить полосу пропускания сети 8. В таком варианте выполнения набор вычислительных средств для расчета элемента D' данных затем размещают в процессоре защиты.

Кроме того, поскольку криптограмма D* встроена в процессор 72 и ее не принимают через незащищенную сеть, становится возможным построить такую криптограмму D*, используя не сложный алгоритм шифрования, а наоборот, простой алгоритм шифрования. Это позволяет выполнять условный переход с большей скоростью или с меньшими затратами компьютерных ресурсов.

Пример более быстро выполняемого способа такого рода для защиты условного перехода описан со ссылкой на фиг.4.

Вначале, процессор 72 в ходе операции 80 выводит случайное число R1. Во время этой операции 80 такое число R1 объединяют, используя операцию суммирования с байтом 0×01.

В операции 82 получают второе случайное число R2 и затем объединяют с байтом 0×01.

Остальная часть способа по фиг.4 описана на конкретном примере, в котором защищенный условный переход состоит в следующем:

"if А=В, then выполнить специфичную операцию обработки для элемента D данных"

Затем специфичную операцию 84 выполняют для объединения операндов А и В булева выражения условного перехода, используя функцию F, возвращающую величину X, если А=В, и другую величину, если А отличается от В. Например, операнды А и В объединяют, используя следующую функцию F:

F(А, В)=А-В

В такой функции F значение Х равно нулю, в то время как другие значения отличаются от 0. Такая функция F не возвращает булев результат. Таким образом может быть предусмотрено несколько битов для сохранения результата R.

В операции 86 результат R функции F(A, В) маскируют, комбинируя это значение со случайным числом R1. Например, операцию 86 маскирования выполняют, используя следующую взаимозависимость:

Y1=F(А, В)*R1

Затем, в операции 88, элемент D данных шифруют для получения криптограммы D*. Здесь применяемая операция шифрования представляет собой простую операцию шифрования. Например, она представляет собой просто маскирование элемента D данных, используя случайное число R2. Например, такое маскирование выполняют с помощью следующей взаимозависимости:

D*=R2⊕D

Простое шифрование такого рода таким образом представляет собой обратимую функцию, которая позволяет преобразовать элемент D данных в другой элемент D* данных.

После того как элемент D данных будет зашифрован, выполняют операцию 90 для дешифрования криптограммы D* путем ввода результата R функции F(A, В), полученного во время операции 84. Такая операция дешифрования представляет собой операцию для построения элемента D' данных. Например, на этапе 90, последовательно выполняют следующие инструкции:

Y1=D*+Y1

D'=Y1⊕R2

Следует понимать, что если операнды А и В равны друг другу, тогда элемент D' данных, полученный в конце операции 90, будет идентичен элементу D данных. И, наоборот, если операнды А и В разные, элемент D' данных, полученный в конце операции 90, будет отличаться от элемента D данных.

Затем способ систематично переходит к операции 92, на которой модуль 20 систематично выполняет специфичную операцию обработки для элемента D' данных, независимо от того, идентичен ли этот элемент D' данных элементу данных D.

Действительно, нет необходимости детектировать, что элемент D' данных является недействительным. Например, если процессор 72 используют для авторизации дескремблирования мультимедийной программы, факт предоставления недействительного элемента D' данных в декодер приводит к неправильному дескремблированию мультимедийной программы и, следовательно, к непонятному отображению на экране мультимедийной программы для пользователя. В этих обстоятельствах нет необходимости детектировать тот факт, что элемент D' данных является недействительным.

Способ по фиг.4 также иллюстрирует случай, в котором операнды булева выражения строят независимо от элемента D данных

Возможно множество других вариантов выполнения. Например, ключ K1 может быть построен отличающимся от описанного ключа или даже может быть постоянным.

Функции G, Н, Н' и алгоритмы ES и ЕА могут быть открытыми или секретными алгоритмами.

В случае, когда функция G секретная, функция F(D, DC) может быть выбрана следующим образом:

F(D, DC)=H(D)⊕H'(DC)⊕G(H(D)).

Функция F не обязательно представляет собой комбинацию булевых операций. Например, F может представлять собой полином.

Функция F, представленная здесь выше, была описана для конкретного случая, в котором проверяемое булево выражение для условного перехода представляет собой равенство. Однако описанное здесь также применимо к другим булевым выражениям. В частности, проверяемое булево выражение может представлять собой неравенство между двумя операндами А и В. Например, проверяемое булево выражение может быть представлено в следующем виде: А < В. В этом случае защита условного перехода, "if A < В then выполнить обработку D" делает необходимым найти функцию F(A, В), которая возвращает ключ K1, если операнд А строго меньше, чем операнд В и в противном случае другое значение. Пример такой функции F(A, В) представлен следующей последовательностью инструкций:

Y1=A-B;

If(Y1!=0) Then R=1+Y1/[(ABS(A-B)],

где ABS представляет собой математическую функцию, соответствующую абсолютному значению.

Следует понимать, что если А строго меньше, чем В, тогда разность A-B будет отрицательной и отношение Y1/[(ABS(A-B)], поэтому будет равно "-1" таким образом, что результат R, отправленный с этой функцией, будет равен нулю, если А < В. В противном случае результат R, отправленный обратно этой функцией F, не будет равен нулю. Используя такую функцию F вместо функции F в соответствии со способом на фиг.4, становится возможным выполнить условный переход: "if A < В then выполнить обработку D" защищенным образом. Условный переход, выполненный в соответствии с данным примером функции F (А, В), не является чувствительным условным переходом в том смысле, что, если будет предпринята атака ввода ошибки, результат функции F будет неправильным, так что элемент D' данных, используемый для специфичной обработки, будет недействительным. Поэтому такой переход не вводит слабое звено в алгоритм защиты.

Когда проверяемое булево выражение представляет собой разность между двумя операндами А и В, это приводит к последовательной проверке двух неравенств. Например, условный переход, "if A≠B then выполнить обработку D", также может быть записан в следующей форме:

if A < B then выполнить обработку D;

if A > B then выполнить обработку D;

Каждый из этих двух условных переходов может быть защищен, как представлено выше.

Предпочтительно, операнды булева выражения условного перехода представляют собой небулевы операнды.

Как вариант, могут быть исключены операции форматирования элемента D данных и проверки синтаксиса элемента D' данных.

Как вариант, операции для преобразования элемента D данных в другой элемент D* данных также могут быть исключены. В этом случае, элемент D' данных вычисляют с помощью формулы, в которой непосредственно объединяют операнды булева выражения с элементом D данных. Например, с этой целью можно использовать следующую формулу:

D'=A-B+D,

где А и В представляют собой операнды булева выражения "А=В".

То, что было описано здесь выше для случая защиты одного условного перехода, можно применять к инструкции типа "переключения". Более конкретно, инструкция переключателя такого типа может быть разбита на последовательность условных переходов, в которых можно применять описанный здесь способ. То, что было описано здесь, также применимо к любому условному переходу, независимо от того, должен ли он быть выполнен в защищенной процедуре или на выходе из такой процедуры.

Способ защиты, описанный здесь, также можно использовать, если булево выражение содержит несколько значений. Например, булево выражение может быть представлено следующим образом: А+В=С. В этом случае, функция F представляет собой функцию трех значений А, В и С и возвращает результат R. Например, функция F (А, В, С) может быть следующей:

F(A, В, С)=(Н(А+В)⊕Н(С))⊕G(Н(D)),

где Н представляет собой хеш-функцию и

G (Н(D)) представляет собой ключ K1.

По меньшей мере, один из операндов булева выражения представляет собой переменную, значение которой неизвестно заранее. И, наоборот, один или больше других операндов может быть постоянным. Таким образом, случай, в котором булево выражение содержит только один операнд, значение которого может быть "true" или "false", фактически представляет собой только конкретную форму случая, в котором булево выражение состоит в проверке равенства этого операнда А со значением "1" ("true") или "0" ("false"). Следовательно, этот случай представляет собой только конкретную форму булева выражения с операндом, который представляет собой переменную, и операндом В, который является постоянным.

Для данных D малого размера криптограмма D* также может быть получена путем шифрования элемента D данных с использованием частного ключа и асимметричного алгоритма шифрования. В этом случае модуль 6 или процессора 12 или 72 должен иметь соответствующий открытый ключ для дешифрования криптограммы D*. В этом контексте условный переход может быть выполнен защищенным способом путем шифрования открытого ключа с помощью ключа К1 и выполнения восстановления исходного открытого ключа с помощью функции F результата R, идентичного ключу K1. Другими словами, одну и ту же обработку применяют для открытого ключа, как для ключа, применявшегося для элемента D данных в способах по фиг.2 и 4.

Модуль 20 может быть выполнен в модуле 6.

Алгоритм ЕА асимметричного шифрования может быть выбран таким способом, чтобы он также представлял собой свой собственный ассоциированный алгоритм ЕА-1 дешифрования.

1. Способ защиты условного перехода от атак ввода ошибки, такой условный переход авторизует выполнение специфичной операции обработки для элемента D данных, если булево выражение между одним или больше операндами проверено и, в противном случае, исключает выполнение специфичной операции обработки для элемента D данных, отличающийся тем, что данный способ содержит выполнение условного перехода с использованием следующей последовательности операций:
a) вычисляют (36, 48, 50; 84, 88, 90) небулев элемент D' данных из элемента D данных и из операндов булева выражения таким образом, что элемент D' данных идентичен элементу D данных, если и только если булево выражение проверено, и таким образом, что элемент D' данных имеет другое значение, называемое недействительным значением, если булево выражение не проверено, причем элемент D' данных кодируют на несколько битов, и
b) используют (56; 92) элемент D' данных вместо элемента D данных во время любого выполнения специфичной операции обработки.

2. Способ по п.1, в котором расчет элемента D' данных содержит:
c) преобразуют (36; 38) с помощью обратимой функции элемента D данных для получения другого элемента D* данных, из которого невозможно восстановить данные D без какой-либо другой информации,
d) формируют (50; 90) элемент D' данных из элемента D* данных и из операндов булева выражения таким образом, что элемент D' данных идентичен элементу D данных, если и только если булево выражение проверено, и таким образом, что элемент D' данных имеет другое значение, называемое недействительным значением, если булево выражение не проверено.

3. Способ по п.2, в котором:
- способ содержит комбинацию (48) операндов, используемых для оценки булева выражения таким образом, чтобы получить небулев результат R, имеющий величину X, если и только если булево выражение проверено, при этом результат R кодируют на несколько битов,
- операция с) представляет собой операцию шифрования (36) элемента D данных, используя алгоритм шифрования и значение Х как ключ шифрования для получения элемента D* данных, и
- во время операции d) элемент D* данных дешифруют (50), используя алгоритм дешифрования и результат R как ключ дешифрования для построения элемента D' данных.

4. Способ по п.3, в котором значение Х представляет собой функцию элемента D данных.

5. Способ по п.2, в котором операция с) представляет собой операцию маскирования (88) элемента D данных случайным числом.

6. Способ по п.1, в котором способ содержит:
- перед расчетом элемента D* данных с элементом D данных суммируют (34) дополнительные биты в соответствии с известным синтаксисом для получения элемента D данных с неидентифицируемым синтаксисом;
- рассчитывают элемент D' данных из элемента D данных с неидентифицируемым синтаксисом,
- перед выполнением специфичной операции обработки или во время ее выполнения проверяют (52) синтаксис элемента D' данных для детектирования выполнения атаки ввода ошибки.

7. Способ по любому одному из приведенных выше пунктов, в котором булево выражение представляет собой выражение равенства среди нескольких операндов.

8. Носитель записи информации, отличающийся тем, что содержит инструкции для выполнения операций а) и b) способа защиты по любому из пп.1-7, когда эти инструкции выполняют с помощью электронного компьютера.

9. Система, защищенная от атак ввода ошибки в условный переход, такой условный переход авторизует выполнение специфичной операции обработки для элемента D данных, если булево выражение между одним или больше операндами проверено и, в противном случае, исключает выполнение специфичной операции обработки для элемента данных D, отличающаяся тем, что система содержит:
- средство для расчета с помощью процессора защиты элемента D' данных из элемента D данных и операндов булева выражения таким образом, что элемент D' данных идентичен элементу D данных, если и только если булево выражение будет проверено, и таким образом, что элемент D' данных имеет другое значение, называемое недействительным значением, если булево выражение не будет проверено, причем элемент D' данных кодируют на несколько битов, и
- модуль (20), выполненный с возможностью выполнения такой специфичной операции обработки для элемента D' данных вместо элемента D данных всякий раз, когда должна быть выполнена специфичная операция обработки.

10. Система по п.9, причем процессор защиты выполнен с возможностью выполнения, по меньшей мере, одной из операций для расчета элемента D' данных.

11. Процессор защиты, выполненный с возможностью его выполнения в системе по п.9 или 10, отличающийся тем, что процессор защиты выполнен с возможностью выполнения, по меньшей мере, одной из операций для расчета элемента D' данных из элемента D данных и из операндов булева выражения таким образом, что элемент D' данных идентичен элементу D данных, если и только если булево выражение проверено, и таким образом, что элемент D' данных имеет другое значение, называемое недействительным значением, если булево выражение не проверено, причем элемент D' данных кодируют на несколько битов.



 

Похожие патенты:

Изобретение относится к вычислительной технике, а именно к способам области защиты компьютерного программного обеспечения. .

Изобретение относится к защите электронных ключей (паролей) и, в частности, к способу защиты ключей с этапом подтверждения ключа, который выполняется аппаратным обеспечением компьютера.

Изобретение относится к устройству считывания RFID для документа (106) с, по меньшей мере, одним RFID-чипом (112). .

Изобретение относится к области повышения информационной безопасности в компьютерных сетях, в частности к способам управления доступом к информационным ресурсам и сменным носителям информации.

Изобретение относится к способу и системе согласования возможностей безопасности при перемещении пользовательского оборудования (UE) из сети второго/третьего поколения (2G/3G) в сеть long term evolution (LTE).

Изобретение относится к структуре объекта, такого как карта, банкнота, ценные бумаги и т.п. .

Изобретение относится к защите от несанкционированного доступа к информации, хранимой в вычислительной сети, и может быть использовано в автоматизированных системах обработки информации.

Изобретение относится к сетям передачи данных, которые обеспечивают пользовательское оборудование прикладным исполнимым кодом

Изобретение относится к вычислительной технике

Изобретение относится к вычислительной технике, а именно к управляемому политиками делегированию учетных данных для единой регистрации в сети и защищенного доступа к приложениям, ресурсам и/или услугам в сетевом вычислительном окружении

Изобретение относится к некриптографическим способам защиты информации от несанкционированного доступа и может быть использовано в системах передачи данных в защищенном исполнении

Изобретение относится к способу, портативному устройству связи и компьютерным программным продуктам для разрешения прямого предоставления области обработки сообщений на сервере поставщика службы сообщений

Изобретение относится к антивирусным системам, в частности системам ускорения решения проблем за счет накопления статистической информации

Изобретение относится к области систем бортовой связи, в частности, летательного аппарата

Изобретение относится к области вычислительной техники, в частности к способу поддержки множества активных приложений в процессоре
Наверх