Рейтинг:3

Подпись Шнорра в два этапа, известные уязвимости

флаг in

Мы стремимся выполнять все вычисления для подписи Шнорра, точнее EC-FSDSA (BIP340-Schnorr), внутри безопасного элемента, за исключением операции хеширования, которая не поддерживается и должна выполняться вне безопасного элемента. .

Предположим, что подпись следующая: д = закрытый ключ R = k.G = Q (уникальный случайный ключ, источник TRNG внутри защищенного элемента, может использоваться только один раз) и

S знак равно k + d . Н( Q | Р | М )

Шаги будут следующими:

  1. сгенерировать и получить Q и получить Q и P в качестве вывода из безопасного элемента
  2. вычислить и повторно ввести H(Q | P | M) в безопасный элемент
  3. завершить и вывести S = ​​k + d . Н( Q | Р | М )

Предполагая, что безопасный элемент функционирует как оракул, и злоумышленник может внедрить H( Q | P | M ) = "1" и, таким образом, извлечь k + d (он не может внедрить H( Q | P | M ) = "0" с тем же k, он постоянно меняется), без ограничений, будет ли он уязвим? Кто-нибудь читал обсуждения на эту тему?

Для ясности отметим, что наша цель — оценить возможность угадать закрытый ключ (d), спрятанный в защищенном элементе, с неограниченной возможностью вычисления S=k + d*(any_integer_you_choose) . Защищенный элемент может выполнять только скалярное умножение, генерировать псевдослучайные (k), но, к сожалению, не некоторые специфические хэш-функции. Таким образом, он должен быть рассчитан снаружи и повторно введен, что потенциально может открыть уязвимости.

В этом упражнении мы предполагаем, что элементы безопасности, которые скрывают (d), могут выполнять неограниченное количество вычислений S независимо от того, чем является (H), и находятся в руках злоумышленника с полным доступом к криптографическим вычислениям на S = k + d.H. Злоумышленник не может контролировать k, который генерируется внутри защищенного элемента, используется только один раз и всегда скрыт. С другой стороны, атакующий может игнорировать (Q | P | M) и может выбрать любой (H) для отправки защищенному элементу для вычисления S= k+d.H, таким образом выбрав H=0,1,2,3.. например, и получить S1=k1+d1, S2=k2+d*2 и т. д. взамен, без ограничения попыток. Даже если он всегда запутан разными случайными значениями k, поможет ли это вам угадать (d)?....

(Тогда вы можете спросить: если у злоумышленника есть доступ к вычислениям в (d), то это все равно, что иметь (d). Ну, не совсем так, как злоумышленник может тайно извлечь (d) и дождаться варианта использования позже)

Maarten Bodewes avatar
флаг in
Привет сармлюк и добро пожаловать. Обратите внимание, что этот сайт поддерживает MathJax, поэтому должно быть возможно [создавать красиво отформатированные формулы] (https://crypto.meta.stackexchange.com/a/1070/1172).
Manish Adhikari avatar
флаг us
Я не знаю ни одного сценария атаки, когда злоумышленник вводит $H(Q|P|M)$, можете ли вы четко описать, как он это делает? $Q$ выбирается подписывающей стороной, и хеш также изначально рассчитывается ею. В атаке с выбранным сообщением злоумышленник должен найти $M$ s.t. $H(Q|P|M)$ = 1, и это без знания $Q$. Даже если бы $Q$ можно было предсказать по какой-то волшебной причине, злоумышленнику пришлось бы выполнить предварительную атаку на $H$, чтобы найти такие $M$.

Ответить или комментировать

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