Рейтинг:3

Трюк Штрауса-Шамира с умножением EC на скаляр

флаг cn

Я изучаю ECDSA, и почти во всех довольно подробных статьях говорится об использовании трюка Штрауса-Шамира на этапе проверки.
Потом поискал и нашел это объяснение (больше похожее на констатацию) алгоритма, а затем этот другой pdf (стр. 7), который объясняет это немного подробнее. Но ни один из них не дает объяснения Почему оно работает.
Я хотел бы иметь какую-то демонстрацию или пример шаг за шагом? Все, что идет от Шамир-Страус для чайников до формальной демонстрации или ссылки на какие-либо работы для меня математика не должна быть проблемой.

fgrieu avatar
флаг ng
Вы понимаете, что базовый прием Шамира можно использовать в (не-EC) DSA для вычисления $g^u\,y^v\bmod p$ значительно быстрее, чем с помощью очевидного $(g^u\bmod p)\,(y ^v\bmod p)\bmod p$? Его можно было бы использовать и в ECDSA. Я думаю, что трюк Штрауса-Шамира является продолжением. Я не знаком с этим.
флаг cn
Боюсь, я не слышал об этом.
fgrieu avatar
флаг ng
Ах, я думаю, что трюк с Шамиром - полезный шаг. Перед этим: понимаете ли вы модульное возведение в степень на квадрат и умножение со сканированием экспоненты, начиная со старшего бита? Например. что можно вычислить $g^{21}\bmod p$ с помощью 4 модульных операций возведения в квадрат и 2 модульных умножений с промежуточными шагами $g^2\bmod p$, $g^4\bmod p$, $g^5\bmod p$, $g^{10}\bmod p$, $g^{20}\bmod p$ и, наконец, $g^{21}\bmod p$ ?
флаг cn
Я просматривал [этот вопрос] (https://math.stackexchange.com/questions/119374/modular-exponentiation-by-repeated-squaring), чтобы понять, что вы сказали, и пришел к выводу, что я вид получить идею позади него. $ g^{21} = g^{(10101)_2} = g^{16}*g^{4}*g $, поэтому вам нужно только вычислить $ g^{20} $, вычислив наименьшее число умножений наименьших степеней, чтобы получить результат. (Я до сих пор не понимаю трюк Шамира-Стросса с умножением EC на скаляр).
флаг cn
Но понимание того, что вы предложили, безусловно, дало мне некоторую информацию, чтобы попытаться глубже понять указанные ссылки, спасибо!
флаг pe
[Обзор Бернштейна] (https://cr.yp.to/papers/pippenger-20020118-retypeset20220327.pdf) по методам возведения в степень включает метод [Штрауса] (https://www.jstor.org/stable/2310929) в разделе 3.
Рейтинг:3
флаг ng

Я опишу стандартный прием Шамира, адаптированный к контексту Проверка подписи ECDSA. Отбрасывая некоторые индексы, вычислительно затратная часть вычислений $$u\cdot G+v\cdot Q$$ куда $u$ и $v$ являются (мы предполагаем, строго положительными) целыми числами, $G$ и $Q$ являются точками эллиптической кривой, а $+$ является точечное сложение (которое для упрощения я считаю черным ящиком, выполнение которого доминирует над вычислительными затратами). Напомним, что по определению $$u\cdot G=\underbrace{G+G+\ldots+G+G}_{u\text{terms}}$$

Хорошо подмечено $\mathbin\|u\mathbin\|$ для количества битов в целом $u$, это $\влево\lfloor\log_2(u)+1\вправо\rfloor$; то же самое для $\mathbin\|v\mathbin\|$.

Распространенный способ вычисления $u\cdotG$ это

  • установлен $ Р: = Г $
  • немного $b$ скопировано из двоичного представления $u$, начиная с индекса $\mathbin\|u\mathbin\|-1$ (первый бит справа от крайнего левого $1$ немного) до $0$ (самый правый бит)
    • установлен $Р:=Р+Р$
    • если $б=1$, установлен $R:=R+G$

Основной способ вычисления $u\cdot G+v\cdot Q$ было бы вычислить $u\cdotG$, тогда $v\cdot Q$ тем же методом, затем добавьте два результата. Трюк Шамира улучшает это:

  • установлен $Ч:=Г+К$
  • если $\mathbin\|u\mathbin\|>\mathbin\|v\mathbin\|$, установлен $ Р: = Г $;
  • иначе, если $\mathbin\|u\mathbin\|<\mathbin\|v\mathbin\|$, установлен $R:=Q$;
  • иначе (это если $\mathbin\|u\mathbin\|=\mathbin\|v\mathbin\|$ ), установлен $ Р: = Н $;
  • немного $b$ (отв. $с$) скопировано из бинарного представления $u$ (отв. $v$), с представлениями $u$ или же $v$ дополняется слева нулями по мере необходимости, по индексу от $\max(\mathbin\|u\mathbin\|,\mathbin\|v\mathbin\|)-1$ вплоть до $0$
    • установлен $Р:=Р+Р$
    • если $б=1$ и $с=0$, установлен $R:=R+G$
    • (иначе) если $б=0$ и $с=1$, установлен $R:=R+Q$
    • (иначе) если $б=1$ и $с=1$, установлен $ Р: = Р + Н $

Это утверждение почти эквивалентно приведенному в этот ответ под названием трюк Штрауса-Шамира (когда я знаю этот трюк как трюк Шамира). Вариант, который я даю, избегает необходимости знать нейтральную группу, но требует $\макс(и,в)>0$.

Корректность стандартного умножения точек и трюка Шамира можно формально доказать по индукции.

Для больших случайных $u$ и $v$ из $к$ биты, наивный алгоритм вычисления $u\cdot G+v\cdot Q$ работает в среднем $\примерно3k$ точечные добавления, трюк Шамира сводит это к $\приблизительно1.75k$, например, на 42% меньше (экономическая выгода ниже, в значительной степени из-за удвоения точки $Р:=Р+Р$ это самый быстрый вид добавления очков, и тот, который больше всего уменьшается). Возможны дальнейшие улучшения, например. группировка битов по два или чуть больше, возможно, со «скользящим окном», когда $б=0=с$.

Обратите внимание, что в контексте проверки подписи $u$, $v$, $G$ и $Q$ все они общедоступны, поэтому побочные каналы (синхронизация, потребляемая мощность, эмиссия, кэши…) не являются проблемой безопасности, поскольку они связаны с генерацией сигнатур.

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

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

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