Рейтинг:3

Могу ли я обойтись без генерации 512-битного k (и d) для ECDSA на основе P-521?

флаг vu

Я занимаюсь реализацией библиотеки криптографии для любителей, и я нахожусь в той части, где реализуется криптография на основе эллиптических кривых. Я уже внедрил и протестировал ECDSA с P-256 и P-384, где статические и эфемерные закрытые ключи 256-битные и 384-битные, пока все хорошо.

Меня беспокоит P-521. Я планирую генерировать 512-битный статический ($д$) и эфемерные ключи ($к$) для упрощения реализации, поскольку большинство хеш-функций (за исключением XOF) имеют не более 512-битных выходных данных (я не использую хеш-функции для прямой генерации ключей, я просто выделяю пространство стека в соответствии с длиной вывода типичных хеш-функций). ).

Если я сделаю это, результирующий компонент подписи $s$ может иметь какую-то предвзятость, но поскольку произведение $d \cdot k^{-1}$ переполнится $n$, у меня есть псевдовера, что это не слишком серьезная проблема.

Поэтому я задаю 2 связанных вопроса:

Q1: можно ли обойтись без генерации 512-битных статических и эфемерных ключей для ECDSA через P-521 и не навредить безопасности?

Q2: для общего случая при заданном простом модуле $n$, противник дан $s = k \cdot r + d \pmod n$ и $г$, куда $д$ является статическим и $г$ детерминистически случайно вычисляется из $к$; обе $к$ и $д$ иметь меньше, чем $\lceil {\log_2{n} \более 4} \rceil$ верхние части обрублены; может ли противник получить какую-либо часть $д$ или же $к$?

kelalaka avatar
флаг in
Почему бы вам не выбрать одинаковые случайные биты? Планируете ли вы создать секретный ключ $d$ из пароля пользователя? Разве $s = k^{-1} (z + rd)$ Вы планируете реализовать детерминированную ECDSA?
DannyNiu avatar
флаг vu
@kelalaka Вы упустили мою мысль. Я планирую генерировать только 512-битную энтропию на кривой P-521, но не уверен, что это безопасно.
kelalaka avatar
флаг in
Я знаю об этом. Я просто спрашиваю, зачем тебе это?
DannyNiu avatar
флаг vu
@kelalaka, чтобы упростить реализацию, как я сказал в вопросе. 521-битный ключ требует дополнительной маскировки после генерации 65 случайных байтов, поэтому я хотел бы пропустить это. Это также экономит немного места в стеке и лучше подходит для выравнивания данных.
DannyNiu avatar
флаг vu
@kelalaka Я использовал другую формулу во втором вопросе, потому что ее легче анализировать, и ее результат легче применить к другой формуле DSS, или, по крайней мере, я так думал.
kelalaka avatar
флаг in
Разве вы еще не знаете о [Как работает «атака с предвзятостью-k» на (EC) DSA?] (https://crypto.stackexchange.com/q/44644/18298)
DannyNiu avatar
флаг vu
Ну, я не слишком хорошо разбираюсь в крипто-математике, и я думал, что это будет другой вид предвзятости.
kelalaka avatar
флаг in
Вот видео https://www.youtube.com/watch?v=6ssTlSSIJQE
Рейтинг:6
флаг ru

Не делай этого!

Предубеждения в одноразовых номерах ECDSA для нескольких подписей со временем приведут к утечке ключа подписи. См., например, бумагу Предвзятый одноразовый смысл: решетчатые атаки против слабых подписей ECDSA в криптовалютах Брейнера и Хенингера.

Общая проблема Q2 известна как проблема скрытых чисел, и именно эта проблема решается в статье, когда несколько $г$ и $s$ предоставлены.

Рейтинг:4
флаг cn

Нет! Даже создание 520-битного $к$ скорее всего, это уязвимость, которую можно использовать.

Результат 2020 года по этой теме: LadderLeak: взлом ECDSA с утечкой менее одного бита одноразового номера. В §5 обсуждается оценка стоимости атаки: это практически невозможно для однобитового смещения выше P256, но большие смещения позволяют проводить более дешевые атаки, а атаки со временем становятся только лучше.

Использовать детерминированный ECDSA если у вас нет веских причин для использования рандомизированного ECDSA. Детерминированный ECDSA может использовать HMAC_DRBG как черный ящик: вам просто нужно создать экземпляр HMAC_DRBG с необходимыми параметрами. Преимущество того, что это детерминированный алгоритм, заключается в том, что если ваши тесты с известным ответом дают ожидаемые результаты, у вас есть довольно высокая степень уверенности в том, что вы правильно его реализовали.Большинство систем, использующих подписи, в любом случае имеют RNG, а HMAC_DRBG — довольно хороший DRBG (не самый быстрый, но относительно простой в реализации и совместимый с FIPS).

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

DannyNiu avatar
флаг vu
Спасибо. Мой проект имеет модульный набор реализации кривых hash, prng и ecc, и каждый компонент можно легко использовать повторно. Я заинтересован в том, чтобы не сделать ошибку безопасности при добавлении p521 к существующим p256 и p384.
kelalaka avatar
флаг in
Хочу отметить, что LadderLeak использует сайд-канал для улучшения 2-битных смещений до $

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

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