Атака по сторонним каналам



Предыдущая | Следующая

Атака по сторонним (или побочным) каналам (англ. side-channel attack) — класс атак, направленный на уязвимости в практической реализации криптосистемы. В отличие от теоретического криптоанализа, атака по сторонним каналам использует информацию о физических процессах в устройстве, которые не рассматриваются в теоретическом описании криптографического алгоритма. Хотя подобные атаки были хорошо известны уже в 1980-х годах, они получили широкое распространение после публикации результатов Полом Кохером[en] в 1996 году[1].

Содержание

  • 1Введение
  • 2Классификация атак
    • 2.1Контроль над вычислительным процессом
    • 2.2Способ доступа к системе
    • 2.3Применяемый метод анализа
  • 3Известные типы атак
    • 3.1Атака зондированием
    • 3.2Атаки по времени
    • 3.3Атаки по ошибкам вычислений
      • 3.3.1Методы воздействия
      • 3.3.2Типы ошибок
      • 3.3.3Примеры атак на ошибки вычислений
    • 3.4Атаки по энергопотреблению
    • 3.5Атаки по электромагнитному излучению
    • 3.6Акустические атаки
    • 3.7Атаки по видимому излучению
  • 4Методы противодействия
    • 4.1Экранирование
    • 4.2Добавление шума
    • 4.3Уравнивание времени выполнения операций
    • 4.4Балансировка энергопотребления
    • 4.5Устранение условных переходов
    • 4.6Независимость вычислений от данных
  • 5Примечания
  • 6Литература
  • 7Ссылки

Введение[править | править код]

Криптографический примитив[2] можно рассматривать с двух разных точек зрения: с одной стороны, это абстрактный математический объект (алгоритм, возможно параметризованный ключом, переводящий некоторый входной текст в выходной текст); с другой стороны, этот примитив в конечном счете должен быть реализован в программе, исполняемой на определённом процессоре, на определённом оборудовании, таким образом, он будет обладать определённой спецификой, присущей именно этой реализации.

«Классический» криптоанализ рассматривает криптографические примитивы с первой точки зрения. Второй подход используется в криптоанализе по побочным каналам. Среди параметров специфичных для конкретной реализации обычно используют время выполнения операций, потребляемую мощность, электромагнитное излучение, звуки, издаваемые устройством, и другие. Атаки по сторонним каналам обладают меньшей общностью чем традиционные атаки, основанные на математическом анализе криптографического алгоритма, но в то же время они существенно эффективнее. На текущий момент большинство осуществлённых на практике удачных атак используют слабости в реализации и размещении механизмов криптоалгоритма.[3]

Классификация атак[править | править код]

Атаки по сторонним каналам в литературе обычно классифицируют по следующим ортогональным признакам[4]:

Контроль над вычислительным процессом[править | править код]

В зависимости от степени воздействия на вычислительный процесс атаки можно разделить на:

  • Пассивные — атакующий получает необходимую информацию без заметного влияния на систему; система при этом продолжает функционировать как прежде.
  • Активные — атакующий реализует некоторое воздействие на систему, в результате которого изменяется её поведение; такое изменение может быть и неопределимым для атакуемой системы, но криптоаналитик в состоянии определить и использовать эту информацию.

Способ доступа к системе[править | править код]

В зависимости от уровня доступа[5] к аппаратному модулю можно выделить три класса атак[6]:

  • Агрессивные (англ. invasive) — вскрытие системы криптоаналитиком и получение прямого доступа к внутренним компонентам.
  • Полуагрессивные (англ. semi-invasive) — воздействие на внутренние компоненты происходит без непосредственного контакта с устройством: например с помощью лазерного луча[7].
  • Неагрессивные (англ. non-invasive) — без воздействия на исследуемую систему; используется только внешне доступная информация: например время вычисления или потребляемая энергия.

Следует заметить, что устройства обычно оборудуются защитными механизмами, защищающими от проникновения (агрессивных атак)[8]. Неагрессивные же атаки заметить и предотвратить практически невозможно. Неагрессивные атаки также более выгодны с экономической точки зрения: масштабные атаки почти не требуют увеличения стоимости оборудования.[7]

Применяемый метод анализа[править | править код]

В зависимости от методов, применяемых для анализа полученной информации, атаки по сторонним каналам можно поделить на[4]:

  • Простые (англ. simple side-channel attack) — исследование прямой зависимости между процессами в устройстве и полученной криптоаналитиком информацией; полезная информация в сигнале должна быть отделима от уровня шумов.
  • Разностные (англ. differential side-channel attack) — криптоаналитик использует статистические методы для исследования зависимости между входными данными и информацией, полученной по стороннему каналу; используется множество измерений, специальная обработка сигнала и коррекция ошибок[9].

Известные типы атак[править | править код]

Атака зондированием[править | править код]

Атака зондированием (англ. probing attack) — агрессивная пассивная простая атака. Для получения информации устройство вскрывается, с помощью оптического микроскопа исследуется печатная плата и устанавливаются щупы на проводники, по которым идут сигналы, или же с помощью микроскопа[10] исследуется состояние ячеек памяти[11].[12] Процесс упрощается при использовании зондирующей установки, включающей в себя микроскопы и микроманипуляторы для установки щупов на поверхности чипа. Такие установки используются в полупроводниковой промышленности для тестирования образцов продукции; цена на вторичном рынке составляет порядка 10000$.[11] Чтобы упростить наблюдение криптоаналитик обычно замедляет тактовую частоту работы устройства[13].

Атаки по времени[править | править код]

Основная статья: Атака по времени

Атака по времени (англ. timing attack) — первая из широко известных атак по сторонним каналам, предложенная Полом Кохером в 1996 году[14] и применённая на практике против алгоритма RSA в 1998 году[15]. Атака основана на предположении, что различные операции выполняются в устройстве за различное время, в зависимости от поданных входных данных. Таким образом, измеряя время вычислений и проводя статистический анализ данных, можно получить полную информацию о секретном ключе.

Выделяют степени подверженности алгоритмов данному типу атак[16]:

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

Одной из разновидностей атак по времени также являются атаки на кэш (англ. cache-based attacks). Данный тип атак основывается на измерениях времени и частоты промахов в кэш процессора и направлен на программные реализации шифров[17].

Атаки по времени также могут применяться удалённо. Так, например, известны атаки по сети на сервера использующие OpenSSL[18].

Из распространенных алгоритмов атаке по времени подвержены DES, AES,[19] IDEA, RC5.[14]

Атаки по ошибкам вычислений[править | править код]

Атака по ошибкам вычислений (англ. fault–induction attack) — активная атака. Основная идея — осуществление различных воздействий на шифратор с целью возникновения искажения информации на некоторых этапах шифрования. Управляя этими искажениями и сравнивая результаты на разных этапах работы устройства, криптоаналитик может восстановить секретный ключ. Изучение атак на основе ошибок вычислений обычно разделяется на две ветви: одна изучает теоретические возможности для осуществления различных ошибок в исполнении алгоритма, другая исследует методы воздействия для реализации этих ошибок в конкретных устройствах.

Методы воздействия[править | править код]

Наиболее распространенные методы воздействия[20]:

  • Изменение напряжения питания криптосистемы. Отклонения в питании, сильно превышающие заданные производителем нормы, могут привести к ошибкам на определённых этапах работы, не мешая устройству в целом завершить процесс шифрования[21].
  • Изменение конструкции шифратора (нарушение электрических контактов).
  • Изменение тактовой частоты шифрующего устройства. При точном управлении отклонением тактовой частоты от заданной нормы можно добиться полного изменения выполнения инструкций в устройстве, вплоть до невыполнения выбранной инструкции.[22] Такие атаки особенно применимы к смарт-картам, тактовый сигнал для которых задаётся внешним генератором.
  • Воздействие лазерным лучом или сфокусированным световым пучком. С помощью такого воздействия можно изменять состояние ячеек памяти и влиять на условные переходы в исполнении кода.[7]
  • Воздействие переменным магнитным полем. Переменное магнитное поле вызывает в цепях устройства вихревые токи, которые могут изменять состояние ячеек памяти.
  • Помещение устройства в сильное электромагнитное поле.
  • Повышение температуры некоторой части шифратора.

Типы ошибок[править | править код]

Атаки по ошибкам вычислений могут быть классифицированы по типу полученной ошибки[20]:

  • Постоянные или переменные ошибки. Постоянные ошибки влияют на всём времени исполнения алгоритма, например фиксирование значения в памяти или изменение пути прохождения сигнала. Переменные ошибки отражаются только на определённых этапах работы.
  • Место возникновения ошибки: локальная ошибка, например изменения ячейки памяти, или ошибка в произвольном месте устройства, например атака с помощью электромагнитного поля.
  • Время воздействия: некоторые атаки требуют применения воздействия в строго определённое время, как например изменения тактовой частоты, другие же позволяют осуществлять атаку в более широком диапазоне времени работы.
  • Тип ошибки: смена значения бита, установка фиксированного значения, смена значения группы битов целиком, изменения потока исполнения команд и другие.

Примеры атак на ошибки вычислений[править | править код]

Атаки на основе ошибок вычислений изучаются с 1996 года[23] и с тех пор почти для всех алгоритмов была показана возможность взлома с помощью такого типа атак. Среди известных алгоритмов можно выделить:

  • Атаки на RSA, использующие китайскую теорему об остатках[23][24]
  • Дифференциальный криптоанализ по ошибкам вычислений DES[25]
  • Криптоанализ AES[22]
  • Дифференциальный криптоанализ систем, основанных на эллиптических кривых[26]

Атаки по энергопотреблению[править | править код]

Атака по энергопотреблению (англ. power analysis attack) — пассивная атака, предложенная Полом Кохером в 1999 году[27]. Суть данной атаки состоит в том, что в процессе работы шифратора криптоаналитик с высокой точностью измеряет энергопотребление устройства и таким образом получает информацию о выполняемых в устройстве операциях и их параметрах. Так как питание устройства обычно предоставляется внешними источниками, такая атака очень легко осуществима: достаточно поставить последовательно в цепь питания резистор и точно измерять ток, проходящий через него. Другой способ — измерять изменения напряжения на выходах устройства в процессе шифрования[28].

Атаки по мощности отличаются высокой эффективностью с точки зрения затрат на криптоанализ. Так например простая атака по мощности (англ. simple power analysis) на смарт-карту осуществима за несколько секунд, а некоторые варианты разностных атак по мощности (англ. differential power analysis) позволяют получить секретный ключ всего за 15 измерений.[27]

Атаки по электромагнитному излучению[править | править код]

Атака по электромагнитному излучению (англ. electromagnetic analysis attacks) — пассивная атака. Электронные шифрующие устройства излучают электромагнитное излучение во время своей работы. Связывая определённые спектральные компоненты этого излучения с операциями выполняемыми в устройстве, можно получить достаточно информации для определения секретного ключа или самой обрабатываемой информации.

Примером этого вида атак является перехват ван Эйка осуществлённый в 1986 году. В дальнейшем атаки по электромагнитному излучению применялись к различным шифрам, таким как:

  • DES и RSA[29][30]
  • Реализации AES[31] и криптосистем на эллиптических кривых[32] на FPGA
  • Использования криптографических хеш-функций HMAC[33]

Акустические атаки[править | править код]

Основная статья: Акустический криптоанализ

Акустическая атака (англ. acoustic attack) — пассивная атака, направленная на получение информации из звуков производимых устройством. Исторически данный тип атак связывается с прослушкой работы принтеров и клавиатур,[34] но в последние годы были найдены уязвимости позволяющие использовать акустические атаки направленные на внутренние компоненты электронных шифраторов[35].

Атаки по видимому излучению[править | править код]

Атака по видимому излучению (англ. visible light attack) — пассивная атака, предложенная Маркусом Куном в 2002 году[36]. В своей работе он показал, что используя высокоточный датчик интенсивности света можно измерить изменения в интенсивности рассеянного от монитора света, и таким образом восстановить изображение на экране[37]. Данный тип атак также можно применить к шифраторам использующим светодиодные индикаторы, анализируя данные от которых можно получить информацию об операциях в устройстве[38].

Методы противодействия[править | править код]

Методы противодействия атакам по побочным каналам зависят от конкретной реализации алгоритма и необходимой степени защищённости устройства. Существуют официальные стандарты по защищённости криптографических устройств, такие как TEMPEST и FIPS. В литературе, посвящённой атакам по сторонним каналам, выделяют следующие общие методы противодействия[39]:

Экранирование[править | править код]

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

Добавление шума[править | править код]

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

Уравнивание времени выполнения операций[править | править код]

Чтобы криптоаналитик не смог провести атаку по времени исполнения все этапы шифрования в устройстве должны выполняться за одинаковое время. Добиться этого можно следующими способами:

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

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

Балансировка энергопотребления[править | править код]

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

Устранение условных переходов[править | править код]

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

Независимость вычислений от данных[править | править код]

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

  • Маскирование (англ. masking) — способ при котором к входным данным применяется некоторая маска, производятся вычисления и обратная коррекция маски. Таким образом при атаке по сторонним каналам криптоаналитик получит некоторое промежуточное значение, не раскрывающее входных данных.
  • Произведение вычислений вслепую (англ. blinding) — подход в криптографии, при котором устройство предоставляет функцию шифрования, не зная при этом реальных входных и выходных данных. Впервые подобный подход был применён к алгоритму RSA и основан на свойстве гомоморфности функции шифрования[40].

 

---

 

Достаточно интересная научная статья, о том, что получается по звуку нажатия клавиш определить какие именно клавиши нажимали. Также софт для этого.

https://people.eecs.berkeley.edu/~daw/papers/ssh-use01.pdf
https://github.com/ggerganov/kbd-audio