Рейтинг:1

Какие данные можно получить из подписи и сообщения ECDSA?

флаг ru

Я генерирую случайное сообщение м отправляется на устройство, которое вычисляет сиг(м, приватный ключ) с secp256k1. Затем он выполняет HTTP-вызов GET, чтобы поделиться обоими pubKey и знак с цель аутентификации.

(м остается закрытым для меня и генерируется случайным образом для каждого нового запроса аутентификации. РЕДАКТИРОВАТЬ: в терминах криптографии это можно было бы назвать «вызовом»?)

Я хочу получить постоянный секрет от м и знак, м' и знак, м'' и знак '' и так далее.

Моей первой мыслью было использовать восстановление открытого ключа ECDSA, которое каждый раз детерминировано выдавало бы одни и те же данные (открытый ключ). Это сработает, но есть проблемы:

  • Насколько я понимаю, восстановление открытого ключа ECDSA может вернуть 0, 1 или 2 возможных точки EC (открытые ключи).
  • Устройство выполнило HTTP-вызов с открытым ключом в URL-адресе (даже через SSL оно может быть подвержено атакам).

Если бы восстановление открытого ключа вернуло 2 открытых ключа, тот, который не используется устройством, был бы идеальным. Но как часто можно получить 2 открытых ключа?

Существуют ли альтернативные методы с любыми криптографическими инструментами для надежного получения секрета для любого заданного м и знак? Спасибо!

флаг ru
Заранее извиняюсь, если я неправильно использовал некоторые термины, я крипто n00b
Maarten Bodewes avatar
флаг in
Открытый ключ следует считать открытым, и чтобы он был полезен для аутентификации, ему также нужно доверять. Совместное использование открытого ключа и подписи, созданной с помощью этого ключа, не имеет никакого смысла. Подпись также считается общедоступной, поэтому, если вы можете получить открытый ключ, вы не можете использовать его как секретный. Может быть, было бы лучше, если бы вы описали, чего вы хотите достичь.
флаг ru
Я хочу использовать [lnurl-auth](https://github.com/fiatjaf/lnurl-rfc/blob/luds/04.md), который использует закрытый ключ биткойн для получения и подписи вызовов, которые используются в качестве доказательства при подписании в веб-сайты. Я хочу использовать его, но локально, чтобы автоматически вычислять мои пароли. По сути, как менеджер паролей. И если это работает, поделитесь этим с другими.
флаг ru
Поскольку сообщение (которое является частным) вместе с подписью (которая является общедоступной) требуется для поиска неиспользованного, неопубликованного открытого ключа, я подумал, что это имеет смысл.
meshcollider avatar
флаг gb
Вы не можете проверить подпись, если не знаете сообщение $m$. Для проверки требуется открытый ключ, сообщение и сама подпись.
флаг ru
@meshcollider Позвольте мне уточнить: сообщение `m` является личным для меня, я знаю это, я сгенерировал его случайным образом. Устройство считывает его (через QR-код) и выводит открытый ключ и подпись. Затем у меня есть три части для проверки подписи, так что теперь я знаю, что устройство (пользователь) является тем, кем он себя называет. Поможет ли это с моим первоначальным вопросом?
флаг ru
Может быть, мое использование слова «сообщение» сбивает с толку? В спецификации они используют слово «вызов», так что, возможно, это делает его более понятным.
poncho avatar
флаг my
Могу ли я предположить, что было бы чище начать с описания проблемы, а не вашего решения. Чего вы пытаетесь достичь? Каковы ваши ресурсы? Какие у вас цели безопасности?

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

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