Я генерирую случайное сообщение м
отправляется на устройство, которое вычисляет сиг(м, приватный ключ)
с secp256k1
. Затем он выполняет HTTP-вызов GET, чтобы поделиться обоими pubKey
и знак
с цель аутентификации.
(м
остается закрытым для меня и генерируется случайным образом для каждого нового запроса аутентификации. РЕДАКТИРОВАТЬ: в терминах криптографии это можно было бы назвать «вызовом»?)
Я хочу получить постоянный секрет от м
и знак
, м'
и знак
, м''
и знак ''
и так далее.
Моей первой мыслью было использовать восстановление открытого ключа ECDSA, которое каждый раз детерминировано выдавало бы одни и те же данные (открытый ключ). Это сработает, но есть проблемы:
- Насколько я понимаю, восстановление открытого ключа ECDSA может вернуть 0, 1 или 2 возможных точки EC (открытые ключи).
- Устройство выполнило HTTP-вызов с открытым ключом в URL-адресе (даже через SSL оно может быть подвержено атакам).
Если бы восстановление открытого ключа вернуло 2 открытых ключа, тот, который не используется устройством, был бы идеальным. Но как часто можно получить 2 открытых ключа?
Существуют ли альтернативные методы с любыми криптографическими инструментами для надежного получения секрета для любого заданного м
и знак
? Спасибо!