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