В. Р. Гинзбург Перевод с английского



Pdf көрінісі
бет84/203
Дата26.09.2024
өлшемі2,74 Mb.
#145829
1   ...   80   81   82   83   84   85   86   87   ...   203
Байланысты:
практическая криптография


Глава 9. Проблемы реализации. Часть I
казалось бы, очень простое правило может решить половину проблем без-
опасности вашей системы.
9.4.5
Тестирование
Развернутое тестирование — обязательная часть любого хорошего про-
цесса разработки программного обеспечения. Тестирование помогает найти
ошибки в коде программы, однако оно бессильно в поиске “дыр” безопасно-
сти. Никогда не путайте тестирование с анализом безопасности. Эти процессы
прекрасно дополняют друг друга, но между ними нет ничего общего.
Существует два типа тестов, которые должны быть реализованы при раз-
работке каждого программного продукта. Первый из них — это общий на-
бор тестов, разработанных на основе функциональных спецификаций моду-
ля. В идеале один программист должен реализовать модуль, а другой — те-
сты для этого модуля. И тот и другой работают на основе функциональных
спецификаций. Любое непонимание между ними означает, что спецификации
нуждаются в прояснении. Общие тесты должны по возможности охватывать
весь спектр операций, выполняемых модулем. Для одних модулей это про-
сто, для других же тестовая программа должна полностью симулировать все
окружение. В большинстве наших проектов код тестов имеет практически
такой же размер, что и код самой системы, и как-нибудь улучшить эту ситу-
ацию не представляется возможным.
Второй набор тестов разрабатывается самим автором модуля. Эти те-
сты предназначены для проверки каких-либо ограничений реализации. На-
пример, если внутренние механизмы модуля используют буфер размером
4 Кбайт, то дополнительная проверка границ в начале и в конце буфера по-
может выявить любые ошибки, связанные с управлением буфером. Иногда
для разработки подобных конкретных тестов требуется хорошо знать внут-
реннюю структуру модуля.
Мы часто пишем последовательности тестов, основанные на применении
генератора случайных чисел. Более подробно генераторы псевдослучайных
чисел (pseudorandom number generator — PRNG) рассматриваются в главе 10,
“Генерация случайных чисел”. Использование генератора псевдослучайных
чисел позволяет легко получать большое количество тестов. Если мы сохра-
ним начальное число, которое использовалось генератором псевдослучайных
чисел, то сможем повторить ту же последовательность тестов, что очень удоб-
но для тестирования и отладки. Дальнейшие детали этого процесса зависят
от специфики тестируемого модуля.
И наконец, чрезвычайно полезно создать какой-нибудь “быстрый тест”, ко-
торый будет выполняться при каждом запуске программы. В одном из своих
последних проектов Нильс должен был реализовать шифр AES. При запуске


9.5. Атаки с использованием побочных каналов
173
этой системы код инициализации “прогоняет” AES на нескольких тестовых
событиях и проверяет, соответствуют ли полученные результаты заранее из-
вестным правильным ответам. Если в процессе дальнейшей разработки при-
ложения код AES начнет работать нестабильно, быстрый тест Нильса сразу
же выявит проблемы.
9.5
Атаки с использованием побочных каналов
Существует целый класс атак, называемых
атаками с использованием по-
бочных каналов (side-channel attacks)
[48]. Такие атаки становятся возможны-
ми, когда у злоумышленника появляется дополнительный канал информации
об интересующей его системе. Например, злоумышленник может измерить,
сколько времени уходит у системы на то, чтобы зашифровать сообщение.
Если криптографический алгоритм встроен в смарт-карту, злоумышленник
может узнать, сколько электричества потребляет смарт-карта в течение опре-
деленного времени. В качестве побочных каналов могут выступать магнит-
ные поля, радиоизлучение, потребление энергии, время выполнения операции
и даже помехи, вызываемые на других каналах данных.
Неудивительно, что атаки с использованием побочных каналов часто ока-
зываются удачными по отношению к системам, которые проектировались без
учета таких атак. Особенно успешными в этой области оказались
атаки из-
мерения энергии (power attacks)
, применявшиеся для взлома смарт-карт [56].
Защитить систему от всех видов атак с использованием побочных ка-
налов очень сложно, а то и вообще невозможно. Тем не менее существует
несколько простых мер предосторожности, которые позволяют значительно
снизить риск нападения. Когда-то давным-давно Нильс работал над внед-
рением криптографических механизмов в смарт-карты. В то время одно из
правил проектирования требовало, чтобы последовательность, в которой про-
цессор выполняет инструкции, зависела только от той информации, которая
и так известна злоумышленнику. Это сводило на нет назначение
тайминг-
атак
(
timing attacks
— атаки, основанные на сравнительных измерениях вре-
мени) и значительно усложняло проведение атак измерения энергии, потому
что анализ последовательности выполняемых инструкций больше не позво-
лял получить никаких сведений о неизвестной информации. Разумеется, это
не полное решение проблемы, и современные приемы измерения энергии лег-
ко справляются со взломом тогдашних смарт-карт. Тем не менее это было
лучшее, что мы могли сделать для защиты смарт-карт в те дни. Спасение от
атак с использованием побочных каналов всегда подразумевает применение
некоторой комбинации контрмер. Одни из них осуществляются посредством


174

Достарыңызбен бөлісу:
1   ...   80   81   82   83   84   85   86   87   ...   203




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет