Все материалы сюжета:

Это — вторая статья из цикла «Криптография под прицелом» Романа Коркикяна. Также стоит прочесть:

Задумывался ли ты когда-нибудь, что физические параметры вычислительного устройства меняются в процессе выполнения алгоритма? Более того, по этим изменениям можно определить шаг выполнения алгоритма и даже обрабатываемые данные, включая секретные ключи. Если нет, то эта статья для тебя. Она расскажет, как, измеряя потребляемую энергию, можно «заснять» исполнение криптографического алгоритма и как из этих снимков получить ключи шифров.

 

Вместо введения

Человек постоянно пользуется эффектами, которые проявляются при взаимодействии объектов, чтобы судить о свойствах самих объектов. С помощью такого подхода, например, было открыто строение атома. В начале XX века не было возможности увидеть сам атом, поэтому его строение представлялось в виде «булочки с изюмом», где в качестве изюма выступали электроны. Эта модель использовалась как основная до тех пор, пока Резерфорд и Гейгер не провели эксперимент по рассеиванию альфа-частиц в тонких пластинах. Эксперимент не позволил увидеть строение атома, но по второстепенному эффекту ученые смогли догадаться, что модель «булочки с изюмом» не работает. Другим очевидным примером служит вычисление объема тела произвольной формы. Самое простое, что можно сделать, — это опустить такое тело в воду и рассчитать объем по новому уровню воды. Похожие методы можно применить и для взлома криптографических алгоритмов.

В криптографии существует целый класс атак, называемых атаками по второстепенным каналам, которые используют физические параметры вычислительного устройства для определения ключей шифров. Основы атак были рассмотрены в предыдущей статье («Криптография под прицелом», #189), где секретный ключ алгоритма DES определялся по времени работы всего шифра. Если ты ее не читал, то настоятельно рекомендую это сделать, ибо в ней объясняется математическая составляющая атаки, а именно закон больших чисел Чебышева и коэффициент корреляции. В этой статье возвращаться к основам не будем, а больше сосредоточимся на микроэлектронике и статистике.

 

Скажи мне, как ты ешь, и я скажу… что ты ел

Для расширения кругозора в этот раз мы будем использовать алгоритм AES-128 (описание которого можно посмотреть тут). Код шифра был взят из Сети и выполнялся на 8-битовом микроконтроллере STM8 Discovery. В рассматриваемой реализации AES нет уязвимостей, о которых говорилось в предыдущей статье, поэтому будем полагать, что ты пока не нашел, как взламывать этот шифр.

Как мы уже говорили, исполнение алгоритма изменяет свойства вычислительного устройства. Если ты до сих пор этому не веришь, то посмотри на рис. 1 и скажи, видишь ли ты AES. На нем изображено измерение входного напряжения всего микроконтроллера, которое обычно обозначается как Vdd. Это напряжение используется для работы всех блоков STM8, включая ЦПУ, память, устройства ввода/вывода и другие подсистемы. Измерение было сделано с помощью цифрового осциллоскопа Picoscope 3207A, пропускная способность которого 250 МГц. В данном случае интервал между двумя точками равен 352 нс, а на графике всего 19 886 точек. Так как частота микроконтроллера 16 МГц (период 62,5 нс), то в среднем напряжение измерялось для каждого 5-го такта, тем не менее раунды и даже операции каждого раунда могут быть явно различены (таблица замещения Sbox, перестановка MixColumn, сложение с ключом). Данный осциллоскоп позволяет уменьшить интервал вплоть до 100 пс (правда, в этом случае одно измерение будет содержать около 70 миллионов точек).

Несмотря на то что алгоритм AES симметричный, он имеет различное число базовых операций: 11 сложений с ключом, по 10 операций таблицы замены (Sbox), и лишь 9 операций над колонками MixColumn. На рис. 2 красным цветом выделены 11 сложений с ключом, зеленым цветом — 10 операций замены и черным цветом — 9 операций MixColumn. В начале и конце алгоритма могут происходить копирование или инициализация, поэтому они выделены синим цветом. Вообще, измеренное напряжение позволяет определить очень многое:

  1. Начало и окончание работы шифра, которые позволяют определить время работы всего шифра.
  2. Начало и окончание работы каждого раунда, которые опять же позволяют определить время работы раунда.
  3. Операции каждого раунда: сложение с ключом, таблица замены Sbox и так далее.
Рис. 1. Потребление энергии при выполнении AES
Рис. 1. Потребление энергии при выполнении AES

 

Рис. 2. Потребление энергии при выполнении AES — разбор паттернов
Рис. 2. Потребление энергии при выполнении AES — разбор паттернов

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

 

МОПсы и их питание

Большинство современных вычислительных устройств создается по технологии КМОП (комплементарная структура металл — оксид — полупроводник). Технология замечательна тем, что микросхема практически не потребляет энергии в статическом состоянии, то есть когда не производится никаких вычислений. Это сделано для того, чтобы сберечь твой кошелек и позаботиться об окружающей среде, так как материалы для этой технологии (в основном кремний) широко распространены. Энергия в этом устройстве потребляется только в момент транзакции, то есть когда 1 заменяется на 0 или 0 заменяется на 1. Например, если на входы логического элемента И подаются два стабильных сигнала, то логический элемент не потребляет энергию (ну только самую малость). Если хотя бы одно входное значение изменяется, то происходит переключение транзисторов, которое требует энергии. Еще раз: если в течение минуты на вход элемента И подавались стабильные неизменные сигналы, то он не потреблял энергию, а вот если за эту минуту хотя бы один из входных сигналов поменялся, то в момент изменения энергия была затрачена на «пересчет» выходного значения. Таким образом, логические элементы — это один из потребителей энергии.

В микросхеме, помимо логических элементов, есть еще регистры, хранящие промежуточные значения вычислений. В отличие от логических элементов, для работы регистров требуется синхросигнал, который будет синхронизировать операции в микросхеме. Синхросигнал обычно имеет прямоугольную форму фиксированной частоты, например, STM8 Discovery использует 16 МГц, а современные процессоры от Intel и AMD способны работать выше 3,5 ГГц. Переключение регистра происходит следующим образом: на первый вход регистра подается сигнал от логических элементов, этот сигнал должен быть получен заранее и уже более не должен обновляться в данный такт. На второй вход регистра подается синхросигнал, в момент, когда синхросигнал переключается с низкого на высокое значение, происходит перезапись регистра и, соответственно, потребление энергии. Поэтому вторым и основным источником потребления энергии являются регистры памяти.

 

МОПсы и их поведение

На рис. 3 схематично изображена система любой инструкции или любого аппаратного дизайна. Есть регистры общего назначения R1 и R2, которые хранят промежуточные значения вычислений. Есть «облако» логических элементов, которое позволяет выполнять те или иные операции (сложение, умножение, операции сдвига и так далее). Облако логических элементов, равно как и регистры общего назначения, контролируется регистрами специального назначения. Именно они определяют, какая операция будет выполняться и в какой момент.

Рис. 3. Схема аппаратной реализации
Рис. 3. Схема аппаратной реализации

Предположим, мы хотим сложить значение регистров R1 (исходный текст) и R2 (ключ) и результат записать в регистр R1. Регистры специального назначения уже загружены, и они активировали нужные части микроконтроллера. На первом такте оба значения R1 и R2 отправляются в облако, где с помощью логических элементов складываются. Так как выполняется новая операция, то с распространением сигнала от R1 и R2 обновляется состояние логических элементов, и это вызывает потребление энергии. Затем, когда все логические элементы обновились и результат сложения отправился на вход R1, система замирает, и питание не потребляется до тех пор, пока на регистр R1 не пришел синхросигнал. В этот момент регистр обновился, и сразу же новое значение отправилось в облако логических элементов, тем самым вызвав новый всплеск в потребленной энергии. Если выполняется другая инструкция, то, возможно, ты увидишь всплеск другой формы (посмотри на паттерны на рис. 2, выделенные разным цветом), так как будут задействованы другие логические элементы.

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

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

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

 

Дифференциальный анализ питания. Теория

Первая атака через потребленную энергию была опубликована Полом Кохером в 1996 году, хотя, строго говоря, его нельзя назвать автором этого метода — на тот момент технологии атаки активно обсуждались в фидонете. Согласно неофициальным данным, уже в конце 80-х годов прошлого века наши спецслужбы профилировали выполнение каждой отдельной инструкции микроконтроллеров, то есть они могли сказать, какая инструкция соответствует данной кривой напряжения (а первые зарубежные опубликованные работы на эту тему появились лишь в середине 2000-х — посмотри Template Attacks), хотя, еще раз повторюсь, информация неофициальная.

Дифференциальный анализ питания основан на том, что энергия переключения из 0 в 1 отличается от энергии переключения из 1 в 0. Это очень незначительное предположение, и я смело заявляю, что оно верно для 100% полупроводниковых устройств, то есть для всех гаджетов, которые ты используешь каждый день. По крайней мере существует строгое доказательство того, что для КМОП-технологии это действительно так (вот книга, объясняющая это свойство КМОП-систем еще до появления анализа питания).

Дифференциальный анализ питания проходит в несколько этапов. Вначале определяется целевой регистр, то есть инструкция, результат работы которой ты будешь атаковать. Внимательно прочти еще раз, ты будешь атаковать не саму инструкцию, а ее результат, то есть значение, записываемое в регистр. Целевой регистр может использоваться несколько раз, и, как ты увидишь, это повлияет на атаку. Результат работы инструкции должен зависеть от известных тебе данных (исходных текстов или шифротекстов) и от неизвестного значения ключа. Для AES-128 обычно используют операции, связанные с одной таблицей замещения Sbox, так как в этом случае ключ можно искать побайтово, плюс Sbox нелинейная операция, и она позволяет быстрее отбросить неправильные значения ключей. Во время каждого шифрования измеряется кривая напряжения, затем с помощью известных данных и неизвестного ключа вычисляется значение целевого регистра (как это делается — объясняется ниже). Из этого значения выбирается один бит (например, первый), и все кривые напряжения разделяются на две группы. В первую группу (группа 1) входят те кривые, для которых этот бит установлен в 1, во вторую группу (группа 0) входят те кривые, для которых этот бит равен 0. Затем вычисляется среднее арифметическое каждой группы и рассматривается их разность, собственно поэтому анализ и называется дифференциальным. Если модель и ключ были верны, то на разности средних арифметических в тот момент, когда использовался результат моделируемого регистра, можно увидеть значительный всплеск. Теперь рассмотрим все более детально.

 

Дифференциальный анализ питания. Все об AES

Если нам доступны шифротексты, то мы можем моделировать результат Sbox последнего раунда. Мы знаем, что первый байт шифротекста вычислялся следующим образом: С(1) = Sbox[S9(1)] xor K10(1), где S9(1) — это первый байт результата работы девяти раундов, а K10(1) — это первый байт ключа последнего раунда. Согласно алгоритму AES, значение S9(1) должно быть получено, чтобы рассчитать конечное значение шифротекста, пропустить вычисление S9(1) невозможно, просто потому, что так задан алгоритм. Мы работаем с 8-битным микроконтроллером и незащищенной реализацией алгоритма AES, поэтому, скорее всего, значение S9(1) было получено и сохранено вначале в регистре (значение нужно получить, а все результаты вначале записываются в регистры общего назначения), а затем в стеке, чтобы использоваться в следующем раунде. Таким образом, мы определились с целевой инструкцией, которая зависит как от ключа, так и от шифротекста, плюс это нелинейная операция, что помогает в атаках по второстепенным каналам.

Давай выберем первый бит значения S9(1) = InvSbox[С(1) xor K10(1)], с помощью которого мы будем классифицировать кривые напряжения. Оставшиеся биты можно использовать для улучшения/ускорения вычисления ключа, но мы пока будем работать лишь с одним первым битом.

Помнишь, мы говорили, что энергия переключения из 1 в 0 и из 0 в 1 отличается. Мы можем смоделировать результат, который должен быть записан в регистр, но мы не знаем предыдущее значение регистра, поэтому точно не можем определить, было ли переключение или нет. На самом деле это и не нужно. Мы просто полагаем, что предыдущее значение регистра не зависело линейным образом от нового значения. Попробую объяснить на примере. У нас есть N шифротекстов. Так как алгоритм AES все перемешивает и переставляет, то примерно в половине случаев из этих N шифротекстов наш искомый бит будет равен 1, а в другой половине он равен 0. Предположим теперь, что предыдущее значение регистра хранило промежуточный «случайный» результат шифра (результат другой Sbox, к примеру). Когда наш моделируемый бит равен 1 в половине случаев, предыдущее значение регистра было 0 (то есть в четверти случаев от N), и примерно в четверти случаев переключение будет происходить, а в четверти нет. То же самое с нулем: в среднем переключение из 1 в 0 будет у N/4 шифрований, и в оставшейся части переключений не будет (0 перезапишет 0). Получается, что среди N шифрований будет N/4 переключений из 0 в 1 и примерно столько же переключений из 1 в 0.

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

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

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

Давай разберем, почему все остальные точки на разности средних арифметических будут стремиться к нулю. Это опять действует закон Чебышева: так как мы сортировали кривые с помощью нашего целевого регистра, то, скорее всего, все остальные инструкции будут случайным образом попадать в обе группы, следовательно, среднее арифметическое двух групп для всех остальных инструкций будет сходиться к одному и тому же значению. Таким образом, разность средних арифметических будет сходиться к нулю во всех точках, за исключением инструкций, которые тем или иным образом зависят от выбранного бита целевого регистра. Иногда, правда, можно встретить «призрачные» всплески. Они возникают в случае, если бит целевого регистра влияет на дальнейшие вычисления, но «призрачные» всплески можно использовать во благо, если понимать, откуда они берутся.

 

Дифференциальный анализ питания. Практика

Перейдем наконец от теории к практике. С помощью того же самого осциллоскопа было измерено напряжение для 10 тысяч шифрований. Чтобы убрать шумы, каждое шифрование выполнялось 1000 раз, а напряжение усреднялось. Дискретизация была увеличена в два раза, поэтому каждая кривая напряжения содержит 40 500 точек. Мы будем атаковать операцию, использующую значение регистра S9(1) = InvSbox[С(1) xor K10(1)]. Как ты потом убедишься, таких операций несколько. Для этого мы воспользуемся первым байтом каждого шифротекста и рассчитаем результаты регистра для всех шифрований и всех возможных значений байта ключа (см. табл.).

DPA

На основе значений из колонки 4 (первый бит S9(1) для ключа 0х00) таблицы мы отберем в группу 1 все кривые напряжений шифрований, для которых целевой бит S9(1) равен 1, а в группу 0 — все кривые напряжений шифрований, для которых этот бит равен 0. Теперь построим разность средних арифметических двух групп. Проделаем точно такую же операцию для оставшихся 255 ключей и построим их графики, как это сделано на рис. 4. Как видно из этого рисунка, у одного ключа есть значительный выброс ближе к концу шифрования, его увеличенное изображение показано на рис. 5.

Рис. 5. Увеличенный график для одного ключа при 1м целевом бите
Рис. 5. Увеличенный график для одного ключа при 1м целевом бите

На нем мы видим три всплеска (они пронумерованы от 1 до 3). Третий пик я бы объяснил тем, что значение S9(1) считывается из стека для вычисления Sbox, так как оно находится в зоне выполнения Sbox последнего раунда (от 6200 до 6420 — это зона Sbox и Shift Rows). А вот два предыдущих пика объяснить чуть сложнее. Второй пик связан с операцией сложения с ключом, когда значение S9(1) было непосредственно получено, а самый первый пик связан с операцией MixColumn (так как находится в зоне MixColumn). Здесь важно понимать, что сложение с ключом — это линейная операция, и если бит ключа равен 1, то до сложения с ключом значение битов из таблицы было точно противоположным. Если бит ключа равен 0, то биты до сложения с ключом были точно такие же. До сложения с ключом значение байта должно быть получено после операции MixColumn, и именно этот момент, когда происходит получение байта нашего ключа, мы видим на графике. Так как пик направлен в противоположную (отрицательную сторону), то, скорее всего, группы 1 и 0 поменялись местами (мы из меньшего вычитаем большее), то есть в группе 1 были все шифрования, для которых бит установлен в 0, а в группе 0 все шифрования, для которых бит установлен в 1. Это возможно в случае, если бит ключа равен 1, так как в этом случае наша модель из таблицы будет строго противоположной и это приведет к тому, что пик будет отрицательным.

Чтобы найти ключ, обычно строят график максимальных значений для ключа, как показано на рис. 6. Видно, что значение ключа 208=0хD0, наибольшее, и этот ключ, скорее всего, является верным.

Рис. 6. Максимальное значение разностей средних для ключей при первом целевом бите
Рис. 6. Максимальное значение разностей средних для ключей при первом целевом бите

Ради сравнения построим те же самые графики, но в качестве целевого бита выберем восьмой бит значения S9(1) (наименее значимый бит). Согласно предыдущим расчетам, этот бит должен быть равен 0, поэтому на рис. 8 мы должны увидеть первый пик в положительной зоне, а не в отрицательной, как это было для первого бита. Также мы должны получить тот же самый ключ, ибо он не менялся, а менялся лишь бит для атаки. Все пики должны быть в те же самые моменты времени, ибо сама операция место не поменяла. Картинки 7–8 получились согласно нашим гипотезам, плюс ко всему максимальное значение разности средних было получено для одного и того же значения ключа на разных целевых битах, поэтому, скорее всего, мы нашли правильный байт ключа (на микроконтроллере был ключ, взятый из стандарта AES, так что можешь проверить все его байты).

Рис. 7. Увеличенный график для одного ключа при восьмом целевом бите
Рис. 7. Увеличенный график для одного ключа при восьмом целевом бите
Рис. 8. Максимальное значение разностей средних для ключей при восьмом целевом бите
Рис. 8. Максимальное значение разностей средних для ключей при восьмом целевом бите

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

 

Что посмотреть?

Я уверен, что у тебя осталось множество вопросов по самой атаке. Предлагаю тебе поискать ответы в Сети. Для этого можно воспользоваться scholar.google.com и ключевыми словами: differential power analysis, power analysis attacks. Существует специальный сайт dpacontest.org, которые проводит соревнования по скорости и точности применения атак по второстепенным каналам. На этом сайте есть примеры кода и множество данных для атак. Ну и следи за различными событиями в России, где даются практикумы по этим атакам. Также советую взглянуть на материалы таких конференций, как COSADE, CHES и CARDIS.

 

Заключение

Ничто не происходит бесследно, в том числе выполнение криптографических алгоритмов. Во время исполнения шифров информация утекает по второстепенным каналам, например потребленной энергии. Чтобы произвести вычисление, нужно затратить энергию, поэтому полностью защититься от атак по второстепенным каналам невозможно, эта проблема фундаментальна. В статье показано, как в действительности проходит атака и как найти ключ шифра на примере AES-128, исполняемого на микроконтроллере STM8. Для нахождения ключа использовано минимум информации о модели потребленной энергии, но и ее было достаточно, чтобы успешно взломать алгоритм. Статья демонстрирует одну из первых атак, созданных в 1996 году, а с тех пор анализ по второстепенным каналам значительно эволюционировал. Частично улучшенные методы атаки будут рассмотрены в следующей статье, поэтому, как обычно, stay tuned…

Теги:

43 комментария

  1. 27.01.2015 at 19:23

    Уверен хорошая статья! Но я на 2й минуте чтения понял, что я не чего не понял.

  2. 27.01.2015 at 20:33

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

  3. 27.01.2015 at 22:18

    Скажи мне, как ты ешь, и я скажу…

    …свинья ты или нет.

  4. 28.01.2015 at 00:38

    Заголовок желтушный , никакой угрозы нет, автор сам НАМЕРЕННО вводит в ЗАБЛУЖДЕНИЕ читателей, но давайте по порядку

    Первая манипуляция автора :

    Автор использует 8-битный контроллер
    Микроконтроллер самый дешевый , рассчитан на низкое энергопотребление, и практически не имеет встроенной периферии , чтобы работать очень долго от одной батарейки

    Для реального проекта с AES производитель выберет другой контроллер, потому что процессор откровенно слаб при цене собратьев диапазона мощнее , и используется исключительно из-за энергопотребления, тот же STM32 на 72 Мгц выкинул бы этот метод в мусорник

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

    Манипуляция вторая:
    Автор использует свой код шифратора AES, то есть совсем свой, до последнего бита — у него он есть полностью до каждой инструкции, скомпилирован с нужными опциями (наверняка -O0, т.е. без оптимизаций), это значит что у него есть полностью прошивка конечного устройства (вмести с ключами) он знает как она находится в контроллере , как исполняется — проще говоря для другого процессора, другого компилятора , других опций компилятора алгоритм будет совсем другим. А говорить о том что у автора будет прошивка стороннего устройства просто смешно

    Манипуляция третья:
    Автор проводит 10 000 серий по 1000 шифрований , в каждом из которых он знает когда оно началось , и какие данные использовались ( входные или выходные )
    что в реальности просто не реально

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

    в данной статье Автор доказал, что он через жопу может _Угадать_ какие данные _ОН_ использовал в _СВОЁМ_ полностью подконтрольном устройстве, на специально отобранном для лучшего проведения именно этого опыта железе, в ходе миллионов испытаний — т.е. Сферического коня в вакууме

    • 28.01.2015 at 09:49

      Валентин!
      Заявки на сенсацию («ура, я научился ломать AES») лично я в этой публикации не увидел. ИМХО, автор всего лишь хотел показать широкой аудитории технологии криптоанализа, которые известны преимущественно узкому кругу специалистов.

      • 28.01.2015 at 10:37

        В чём проявляется технология криптоанализа в данном случае ? Я увидел ,что автор говорит «анализируя питание устройства вы можете получать данные о том, что внутри» , и привёл аргументы почему это не так. Автор намеренно выбрал такой пример который подогнан под метод, чтоб он в принципе хоть как-то работал , на реальном железе этот метод будет бесполезен. С таким же успехом можно было угадывать ключ , вероятность подбора примерно та же, что и взлом таким методом

        • 28.01.2015 at 12:20

          «Реальным железом» является чип внутри банковской карты, а совсем не 4000 МГц процессор, как тут некоторые почему-то решили.

          • 28.01.2015 at 13:38

            не вопрос — на чипе внутри банковской карты это тоже не будет работать 100% , потому что там сделан hardware offload (отдельный блок с DMA, и своей SRAM) для криптографии и параллельно исполняется код в ядре , внутреннее устройство карты не известно , алгоритм карты не известен с точностью до регистров, как описывает автор , манипуляции с входными данными крайне затруднены, потому как они попадают в карту через последовательный интерфейс и там вариантов как они находятся масса , есть/нет DMA, солятся они или нет, и много много чего . Тем более никто не говорил про 4Ггц , просто использовать чип 80% ресурсов которого будет отъедать только AES, на бизнес логику не остаётся практически ресурсов

            Так что у «некоторых» представление о реальном железе куда лучше чем у вас

            • 28.01.2015 at 15:14

              Именно потому, что у «некоторых» представления намного лучше, они и занимаются дифанализом, а не рассказывают в коментариях о том, как им ничего ни о чем не известно.

              • 28.01.2015 at 15:58

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

            • 28.01.2015 at 22:54

              SoC, определенно, сложнее атаковать, но не очень критично. Если вы думаете, как начать измерения, т.е. в какой момент начинать собирать кривые — то самый простой ответ, после отправки данных по интерфейсу. Скорее всего ваш микроконтроллер работает с постоянной частотой, поэтому «более менее» все операции синхронизированы, т.е. все кривые напряжения будут хорошо выстроены. Опять же, если это не так, то можно их немного «сжать-растянуть» или сдвинуть. Если есть возможность измерять ЭМ излучение, то можно синхронизироваться с внутренными операциями на чипе.

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

              Ваша интуиция говорит о том, что куча параллельных операций сделает атаку невозможной. Это, действительно, усложнит анализ, но не сильно (я объяснял это в первой статье, а здесь на сайте вы читаете вторую). Из-за того, что вы фактически будете усреднять значения напряжения, то по закону больших чисел Чебышева ваши шумы усреднятся. На пальцах объяснить сложно, нужно попробовать сделать самому. Т.е. я хочу сказать, что шумы на атаку, конечно, влияют, но не так сильно, как многим кажется.

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

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

      • 28.01.2015 at 22:41

        не_криптоаналитик, спасибо!

  5. 28.01.2015 at 01:00

    Ну в принцепи тут понятно, но реально ли перенести атаку на настоящий процессор, и сцука осцилографы дорогие)))) А так то норм.

    • 28.01.2015 at 09:08

      Дорогие- не то слово но..16 МГцный проц исследуют осциллоскопом с пропускной способностью 250 МГц…А если попробовать перенести атаку как говоришь на «настоящий» процессор-ну как я понял на проц от PC- а там частоты не 16….и даже не 100МГц…а Гигагерцы….то какой пропускной способностью должен обладать осциллоскоп…есть вообще такие в природе

      • 28.01.2015 at 09:54

        Подобные атаки, насколько мне известно, направлены в первую очередь против аппаратных шифраторов. Поэтому в чистом виде изложенное никто не будет переносить на «проц отPC».

        • 28.01.2015 at 11:13

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

          • 28.01.2015 at 22:31

            Теоретически возможно, но выше 800 МГц я никогда ничего не исследовал. Вы все правы, современные осциллоскомы стоят больше 1 млн. рублей. Плюс к ним нужные еще пробники хорошие, так что считайте что уже 2 млн. В домашних условиях можно поиграться лишь со смарт картами и медленными чипсетами.

            Вообще это цикл про аппаратные атаки, они используются, как правильно заметил не_криптоаналитик, в основном против аппаратных шифраторов. Хотя никто не запрещает использовать эти вещи против софта, в кончном счете софт выполняется аппаратно.

            Теперь самый сложный вопрос — по поводу современных процессоров от Intel. Теоретически это возможно, потому что один и тот же исходный текст я могу шифровать много раз (ну я так предполагаю), а современные осциллоскомы в режиме ETS (equivalent time sample) могут семплировать сигналы с частотой до 40ГГц, что в 10 раз больше частоты самого итела. Подтвердить не могу, сам не пробовал, может это вообще ложь и провокация. Но против смартфона — запросто.

        • 28.01.2015 at 16:06

          По поводу аппаратных шифраторов — все они выполнены не на архитектуре процессоров общего назначения а на архитектуре подобной FPGA — возьмем любое IP core для AES на FPGA — там за один такт шифруется 32 бита,и ядро тактируется в районе сотни мегагерц , при этом, если будет реальный процессор, за то же время процессор будет заниматься своими делами , данные будут прекидываться из разных областей памяти по DMA , а как шифратор всё сделает, он дёрнет прерывание процессору

  6. 28.01.2015 at 10:37

    Всего лишь два замечания. 1) Статья для начинающих, у которых есть лишние 1500 евро на аппаратуру. 2) Почти все «ходовые» микроконтроллеры имеют встроенный стабилизатор питания, так что фиг два их так хакнешь.

    • 28.01.2015 at 13:57

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

      • 28.01.2015 at 22:25

        Вы правы, вся эта ерунда происходит из-за потребления «тока», так как напряжение номинально одно и то же, например, 1.1В.

    • 28.01.2015 at 22:22

      1) Согласен. Вообще аппаратные атаки не дешевые, но железо это не софт. Есть несколько причин, по которым эти атаки проводят:
      а) Аппаратные атаки позволяют получать ключи шифров реализованных аппаратно и програмно (но нужен доступ к устройству).
      б) Железо не пропатчить и не обновить. Если вы смогли взломать аппаратную реализацию шифра, т.е. вытащить ключ, то этот ключ зачастую не может быть легко изменен.
      в) Серьезные игры требуют серьезного подхода. Криптография должна быть защищена дополнительно. Не достаточно просто реализовать шифр.

      2) Не знаю, что вы имеет в виду под стабилизатором питания (внешний? или внутренний на основе обратной связи), но просто в следюущий раз я буду измерять не питание, а электромагнитное излучение. Физических каналов утечки несколько, просто питание самое очевидное. Наберитесь терпения, я не могу объяснить все с нуля и сразу показать, что это работает на многих устройствах.

      • 28.01.2015 at 22:33

        А прокомментируйте ситуацию с реализацией на FPGA, когда происходит много шагов да один такт , и ситуацию когда у нас есть отдельные железный юнит внутри контроллера который который делает offload криптографии, а ядро параллельно выполняет другие задачи, ну и наверное про выделение самого процесса шифрования при работе устройства (если это побочная функция). И что будет в случае работы какой-то RTOS которая может посреди выполнения шифрования переключить задачу ?

        • 28.01.2015 at 23:15

          Много нужно прокомментировать =) вы по работе интересуетесь?!

          1) Много шагов за один такт? Если вы делаете 5 раундов AES за один такт, то атаки методом второстепенных каналов я бы не стал применять, а использовал бы метод индуцированных сбоев (хотя, конечно, все зависит от реализации, надо смотреть всегда индивидульно). Если вы делаете множество «шумящих» операций, то шумы усредняются. Даже очень большие шумы усредняются.

          2) Ваш пример с крипто акселератором типичный пример банковских смарт карт, set-top-box чипсетов и т.д. В теории, это зашумляет (но шумы усредняются), делает более сложной синхронизацию (но я могу использовать не питание, а ЭМ излучение расположенное очень локально над вашим шифратором). Операцию шифрования я выделаю следующим образом (на пальцах): шифрую один и тот же исходный текст (множество раз) и различные тексты (тоже множество раз) а затем сравниваю их статистически T-test, V-test методами. В момент, когда происходит шифрование ваши кривые напряжения будут сильно отличаться (это позволяет локализовать шифрование во времени). Есть и другие методы, но они требуют спец оборудования (фотодиод, например, чтобы понять где происходит выброс фотонов).

          3) Я уже запутался, что мы атакуем, аппаратную или програмную реализацию? Если RTOS переключает шифрование, то это конечно затруднит ситуацию — придется искать паттерны в снятых данных и апостериори их синхронизировать. Работа сложная, но автоматическая. Хотя, конечно, если RTOS может прерывать шифрование, то оно, очевидно, не критично для системы, может и ключ не надо искать. В любом случае, в случае десинхронизации я предпочитаю использовать атаки методом индуцированных сбоев.

          • 28.01.2015 at 23:50

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

            1 — С шумом давайте разберемся — под шумом понимается что в сете из 10к опытов параллельно с шифрованием выполняются другие задачи которые не повторяются — но ! как только у вас происходят параллельные операции которые связаны — тот же pipe когда у вас одновременно происходит 3 разных суммирования xor , перемещения из/в память , и масса чего ещё , которые повторяются из опыта в опыт, притом идентично — пока вы не построите модель которая в достаточном приближении это описывает вы не сможете отфильтровать ничего

            2 — очень локально расположенный фиксатор EM излучения конечно вариант , но — для начала нужно вскрыть чип кислотой , посмотреть где что , и на сколько точно вы сможете регистратор установить если у меня блок шифратора из 4х параллельных блоков с 10-этапным пайпом впритык стоят , вы сможете навестить на конкретный стэйдж конкретного блока ?

            3 — Ну, шифрование в принципе не является критическим моментом для большинства систем (можете привести обратный пример ? ) который ну никак нельзя прервать для того чтоб обработать другую задачу (пока в производительность укладываемся конечно)

            мы рассматриваем в принципе 3 варианта чисто хардварный , смешанный и софтовый

            софтовый самый простой в реализации и пожалуй самый простой во взломе но только если реализация такая как вы описали , линейная с последовательным исполнение , что не характерна для сложных систем, выполняющих большое количество задач — можете оценить насколько реально с помощью DPA взломать бокс с RTOS на которой крутится сотни задач одновременно на паре ядер ?

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

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

            Я и про метод индуцированных сбоев читал — вот только там тоже есть проблемка, по сути это «тыканье палкой» в систему, авось что-то интересное выпадет , но теперь представьте что у вас есть система, вроде банковских карт, питание и последовательный интерфейс,простой набор команд , которая позволяет послать данные и получить результат — скажите как долго придётся «тыкать» систему пока она выдаст вам ключ шифрования скрытый глубоко в мозгах

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

            • 29.01.2015 at 00:16

              Я боюсь, что не всегда смогу ответить на ваши вопросы. И не потому что нельзя, а просто потому что не знаю.

              1) Шумы. Мы меняем входные данные для того, чтобы немного изменить потребление. Так как модель строится лишь по малому количеству из них, то среди 10к мы выбираем те, у которых для нашей модели количество переключений бит для первого байта исходного текста (или шифротекста) одинакова. Так как остальные байты разные, то они будут «шуметь» по разному и идентичность как раз разрушается.

              2) Можно кислотой, можно с помощью такой дрилильной машинки =) ЦПУ видно практически всегда (если нет, то буду измерять ЭМ излучение без шифрования и с шифрованием, а затем сравнивать где оно поменялось). Если у вас не милитари чип, то скорее всего другие блоки тоже будут видны. Все зависит от конкретной ситуации. Я буду наводить на блок, а вот время меня интересует меньше — могу длительные измерения делать.

              3) Шифрование является критичным, если вы дешифруете из Flash или у вас Ram скрамблирована. В этом случае используются аппаратные решения, которые в осносном не прерывают шифрования. Софтверное шифрование можно прерывать, согласен. Просто используем другие виды атак в этом случае.

              Далее ваши вопросы требуют детального анализа. Я где-то писал выше, что в теории можно многое, но когда дело доходит до практики, то тут начинаются проблемы.

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

              Смешанный — конечно, зависит от реализации. Но проблем я не вижу. Либо вы выполняете один раунд в железе, как у Intel, а софтом группируете данные между раундами. Либо вы просто отправляете весь исходный текст на шифрование, а на выходе получаете шифротекст. Не вижу в этом случае разницы между смешанным и хардверным.

              Метод индуцированных сбоев это научный метод тыканья палкой. Требует недель настройки (зависит от семейства устройств) и секунд атаки. Один раз настроив, вы можете атаковать все семейство. «Как долго» — зависит от системы и алгоритма. RSA с реализацией CRT — одна ошибка в любом месте, т.е. пара минут на 8ми битовом чипе и пара часов на современных процессорах (настройка, не взлом, сам взлом пара секунд). AES-128 в софте на 8ми битовом чипе — пара часов настройки, на современных чипах — день, два дня настройки; в железе при частоте 500 МГц — неделя настройки. Сейчас я говорил про лазерный метод ввода ошибок.

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

              Я вас оставлю на сегодня, если вы не против. Спасибо за комментарии.

              • 29.01.2015 at 00:29

                1 — снова первый байт, да кто вам сказал что система оперирует байтами ?

                2 — вы не в состоянии управлять с шифрованием или без , не ваша система

                3 — да в этом случае является, только вы не в состоянии повлиять на входные данные и не можете контролировать «первый байт»

                4 — Система с RTOS не подконтрольна , это условие априори , если есть контроль такого уровня как изменение приоритетов то можно получить доступ куда проще

                5 — есть разница , не значительная , в том что выполняются коррелированные задачи

                ну, всё так всё, жаль вы на прошлый коммент не ответили , там как-раз всё самое интересное заключалось

                П.С. кстати я «The sorcerer’s apprentice guide to fault attacks» тоже читал 😉

                • 29.01.2015 at 01:02

                  Удалился мой последний комментарий… печаль

                  1) Ваша система в любом случае оперирует байтами, будь то 4 байта или 8 байт (32х битные или 64х битные регистры). Но суть не в этом. Сам алгоритм оперирует байтами, если вам удобнее. Операция Sbox происходит над байтами. Если вы хотите работать с 2мя байтам то таблица замещения увеличится в 256 раз. Я уже пытался объяснить, что если у вас одновременно обрабатываются 4 байта (32х битная система). То модель строится только по одному из них, остальные три вносят шум (близкий к нормальному из за того, что падение напряжения происходит пропоционально количеству переключенных бит, а биты распределены нормально). Модель зависит от известных данных (зачастую нам нужен лишь один байт) и неизвестного ключа.

                  В следующем номере будет статья объясняющая атаку на 64х битовую реализацию DES. Данные можно будет скачать с репозитария, а код будет в статье. У вас будет возможность проделать все самостоятельно.

                  2) — 5) вы сейчас пытаетесь изменить объект атаки. Это как разработать вирус под виндовс и спрашивать будет ли он работать под линукс. Нет не будет, там будет другой вирус.

                  «The sorcerer’s apprentice guide to fault attacks» написал David Naccache, поищите последнюю статью «Blind Fault Attack against SPN Ciphers» и посмотрите авторов.

                  • 29.01.2015 at 01:24

                    Не я пытаюсь менять объект атаки — вы вводите «допущения» относительно объекта как будто у вас больше доступа к нему чем будет в реальном мире , будь-то вы знаете его внутреннее состояние, либо можете на него влиять

                    Всё просто сводится к упрощению системы взлома

                    Вы просили реальный пример — давайте, вот недавно вышла PS4 в которой контент шифруется , имея в арсенале все методы вам доступные, и даже не доступные, но возможные (осцилоскопы любого разрешения, микроскопы, любое оборудование)

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

                    Вот в том то и будет отличие реального мира от упрощенной модели

                    Почитал статью , посмотрел авторов

                    The total number of faults to recover a key is the price to
                    pay for blindness (480,000 for a complete AES key)

      • 29.01.2015 at 10:14

        1) Мне не нужно объяснять, зачем проводят аппаратные атаки. Сам занимался когда-то 51-м микроконтроллером Atmel. Правда, задача стояла немного другая — получить дамп прошивки. И решилась безо всяких осциллоскопов. Просто статья для большинства выглядит как описание вкуса устриц с подробной инструкцией, как их нужно есть. 🙂
        2) По-моему, я ясно выразился: встроенный стабилизатор. Внешний можно попросту отпаять. И про различные каналы утечки я знаю. И про ЭМИ, и про временные задержки, и про анализ отказов. Кстати, а что будет, если в цепь питания вставить обычный ФНЧ? На высоких частотах габариты минимальны, а вот пики он порежет сильно? 🙂
        3) Эта статья, как и весь цикл, штука явно нужная. Очень бы желательно приводить примеры «подешевле», хотя я и понимаю, что это не всегда возможно.

  7. 28.01.2015 at 22:35

    Не согласен. Пусть будет хоть 128 битов за один такт (один раунд AES, например) при частоте 500 МГц — что изменится? Станет больше шума?! Так в том то и прикол, что шум (белый или цветной) не играет здесь большой роли. В общем если у вас нет явной защиты от аппаратных атак и вы не используете частоты выше 1 ГГц (т.е. когда мне лично с моим оборудование будет сложно такие сигналы измерять), то все хорошо атакуется.

    • 28.01.2015 at 22:53

      нет , дело не в шуме — дело в том что вы атакуете определённую операцию , дифференцированную , XOR регистров — как вы будете атаковать когда у вас будет 64 таки операции одновременно и не один раунд проходить а все одновременно ?

      • 28.01.2015 at 23:04

        Если мы все же говорим о последовательных операциях (не весь шифр за один такт), то можно построить модель на XOR и проверить, затем построить модель Sbox[K xor P] и проверить… Т.е. проверить вначале все стандартные модели, их не так много. Если и это не помогло, то надо обращаться к High Order DPA — пока не буду объяснять, что это, должно появиться в следующих статьях.

        Если вы проводите множество операций одновременно, то, конечно, это добавляет шумов. Но шумы (особенно белый) легко нивелируются либо усреднением, либо сбором больше данных (что в свой черед приведет к усреднению во время проверки модели). Усреднение работает из-за закона больших чисел Чебышева (я пытался объяснить это в первой статье, здесь на сайте лишь вторая).

        Теперь если вы вдруг каким то чудом смогли запихать все раунды AES в один такт (это называется pipelining). Во-первых, ваш «такт» будет очень медленным, во-вторых, вы займете в 10 раз больше места на кремнии (если мы говорим об AES). Ну и проатаковать такую реализацию будет крайне затруднительно. Все будет зависеть от вашей реализации Sbox, так как она самая «текучая». Я бы сказал, что даже на работе мы бы не смогли такое провернуть на данный момент. Мы бы просто поменяли атаку на метод индуцированных сбоев (что это такое — в следующих статьях).

        • 28.01.2015 at 23:20

          Вот , тут есть ошибка

          Про закон Чебышева я знаю прекрасно , на этом принципе базируется повышение точности за счёт оверсемплинга в АЦП — но в данном случае у нас не белый (который удаляется элементарно) и не цветной шум, то есть не случайно изменяющаяся величина или величина которая меняется по какой-то модели которая позволяет его отфильтровать или скомпенсировать математически — в данном случае вы шумом назвали n-экземпляр модели которую вы пытаетесь сломать, и вы допустим этим методом получаете что у вас меняют своё значение 64 бита из 128 — подскажете сколько времени к вас уйдёт угадать какие именно 64 бита ?

          Да, метод называется piplining, и не каким-то чудом — а вы гляньте , сейчас за денюжку спокойно можно купить эти IP Core с производительностью в 15+Gbs , да , в 10 раз больше места на кремнии — но при этом место займёт мизерно , и впихнуть его в процессор не составит особого труда

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

          • 28.01.2015 at 23:49

            Отличный комментарий.

            Вы правы насчет того, что мы моделируем лишь малую часть переключения битов. Давайте возьмем (для простоты) 16 битов и будет моделировать «ключ XOR вход». Вход вы знаете, ключ постоянный (положим 0x0101). Теперь рассмотрим следующие входые: 0x1300, 0x4351, 0x8542 … и 0x7189, 0x0635, 0x1467 и т.д. При сложении с ключом первый байт будет давать одинаковое количество переключения бит (т.е. 2 бита для первой группы и 3 бита для второй группы), а второй байт будет давать разное количество бит (1, 2, 3 — для первой группы, и 2, 3, 4 для второй). Мы строим модель по первому байту, т.е. мы группируем все наши рассматриваемые входные значения таким образом, чтобы количество переключений для первого байта было одинаковым (это и есть вес Хемминга), а второй байт у нас меняется произвольно и его распределение будет очень близко к нормальному (так как в байте 72 значений с весом хемминга 4, если я правильно помню). Из за этого я полагаю, что шумы будут усредняться. Может я не так понял ваш вопрос?! Я кстати, всегда заранее полагаю, какие именно биты/байты я использую для модели. Т.е. одновременно я атакую лишь данные для первого байта шифротекста (т.е. все модели зависят лишь от одного этого байта). Из-за того, что остальные байти разные — распределение шума будет близко к нормальному.

            Верю, можно. Мы даже с нашими коллегами аспирантами делали такое в свое время на FPGA. А где конкретно это использовать, это уже вопрос интересный. Вы знаете хоть одно массовое устройство с pipelining? Лично я ни разу не встречал.

            Вам интересно протестировать что-то конкретное?! Вы знаете, я могу много разглагольствовать вокруг да около, а в результате, когда мне дадут простую систему то я с ней ничего не сделаю. Поэтому мы можем продолжать обсуждать, или взять и попробовать. Тем более если лично я ничего не найду, то денег я не беру за такое.

            • 29.01.2015 at 00:11

              Я же говорю , мне по работе не надо , я из академического интереса
              в вашем примере есть недостаток — вы считаете что идёт обработка блоками по 1 байту (8-битными регистрами) , с тем же успехом можно использовать брутфорс — а что делать когда у вас 32/64 битные регистры ? да , сбрасываются 9 бит из 32 — но в каком из байтов вы без понятия. тут тоже как бы реалистично 4G с хвостиком вариантов , а для 64-битных регистров что делать ?
              Просто вы для примеров упрощаете сильно системы , потому оно всё и работает , потому что не такие большие объемы для переборов, вы сами сказали что лишь сократили возможность для перебора с изначальных 256

              Конечно знаю массовые устройства с пайплайнингом, и вы встречали и пользовались не раз — как по вашему HDCP работает в вашем телевизоре, видеокарте bluray проигрывателе, для передачи и кодирования/декодирования гигабит контента на лету ?

              Если хотите — можете попробовать ломануть HDCP (ну только без мастер ключей которые утекли в сеть) — вы же за неудачный результат денег не берёте , потому бояться мне нечего , хотя это реальная массовая доступная система — только ни один из ваших методов не даст ровным счётом ничего , максимум сокращение срока перебора с миллионов лет до сотен

              • 29.01.2015 at 00:35

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

                32/64 бита дают больше шумов. Статья (https://www.iacr.org/archive/ches2004/31560016/31560016.pdf) в ней говорится в том числе о 16ти и 32х битовых микроконтроллерах. На сайте (dpacontest.org) данные есть для 64битовой реализации DES (16 такотов одно шифрование) и для 128 битной реализации AES (10 тактов одно шифрование) выполненых на FPGA. Какие есть варианты защиты на 32х битовых микроконтроллерах (http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.91.9723&rep=rep1&type=pdf). Раз есть защита, значит есть и атака =)

                «да , сбрасываются 9 бит из 32 — но в каком из байтов вы без понятия» — модель строится таким образом, чтобы вы понимали сколько бит при данном байте ключа и при данном байте шифротекста будут изменяться. Остальные байты не учитываются они принимаются в качестве шумов. Если вы попытаетесь атаковать весь 32х битный регистр, то на это уйдет пару дней, именно поэтому модель строится меньшими частями по 8 бит. То же самое для 64х битных.

                Для примеров я конечно сильно упрощаю. А как вы хотите?! Но у меня есть такое ощущение, что вы не до конца разобрались как строятся модели.

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

                Вы знаете, я работаю в компании Nagra (Kudelski Security), которая занимается тем что поставляет IP для цифрового ТВ. Вот я ни раз не встречал pipeline реализации (т.е. когда шифр выполняется за один такт) ни в одном устройстве.

          • 29.01.2015 at 19:13

            А вот и первая: https://xakep.ru/2015/01/29/crypto-i-keys/ Сорри, что не в хронологическом порядке.

  8. 29.01.2015 at 10:19

    А эта статья претендует на «ненаучную»? Сильно 🙂

  9. 29.01.2015 at 12:19

    Роман, привет. Ничего не удаляли. Видимо, какой-то баг системы комментирования. Спасибо за наводку, посмотрим.

  10. 15.02.2015 at 23:22

    Да уж… теперь понятно, любое криптожелезо должно идти с генератором шума или негативной нагрузки, чтобы нейтрализовать такие утечки по ПЭМИН. Возможно, все серьезные девайсы таким снабжаются??

  11. maksimo

    31.05.2016 at 10:49

    ребята всем по привету! народ кто нить помогите ломануть майл почту, лог имеется, подробнее отвечу в лс.

Оставить мнение

Check Also

WTF is APT? Продвинутые атаки, хитрости и методы защиты

Наверняка ты уже читал о масштабных сетевых атаках, от которых пострадали банки, крупные п…