Вкратце: процесс проверки подписи в ECDSA сильно отличается от процесса в RSA. Описание вопроса этих схем подписи неверно для ECDSA, приблизительно для RSA.
Алиса, у которой есть закрытый ключ, может зашифровать сообщение в подпись.
Это неправильная терминология. Алиса, владеющая секретным ключом, может подписать сообщение или трансформировать сообщение. Она нет шифровать, потому что шифрование направлено на то, чтобы сделать сообщение непонятным для злоумышленников, но в RSA преобразование $m\mapsto s=m^d\bmod n$ Алиса использовала закрытый ключ $(н,д)$ можно отменить с помощью $s\mapsto m=s^e\bmod n$ любым, у кого есть открытый ключ $(п,е)$, то есть любой со стандартной криптографической точки зрения. Таким образом, преобразование, выполненное для подписи, не квалифицируется как шифрование.
Затем Боб сможет использовать открытый ключ Алисы для расшифровки подписи, которая затем вернет сообщение. Затем расшифрованное сообщение будет сравниваться с исходным сообщением. Если они совпадают, это доказывает Бобу, что сообщение действительно было от Алисы.
Опять неправильная терминология. Вместо расшифровать там должен быть трансформировать обратно, и общая цель состоит в том, чтобы проверять сообщение против подписи и открытого ключа Алисы.
Помимо терминологии, две приведенные выше цитаты не соответствуют тому, как практикуется подпись RSA. При описанном методе размер сообщения ограничен, и в целом процедура небезопасна. Примеры среди многих атак:
- Сообщения $0$, $1$ и $n-1$ иметь тривиальные подписи (само сообщение), что позволяет сообщениям, которые Алиса никогда не подписывала, быть принятыми Бобом, когда они действительно пришли от противника.
- легко взять любой $s$ и открытый ключ, и подделать (обычно бессмысленное) сообщение $м$ какая подпись $s$, с тем же эффектом.
- Если противник создает сообщения $m_1$, $m_2$, $m_3$, $m_4$ с $m_1\cdot m_2=m_3\cdot m_4$, более поздняя имеет смысл, а три первых достаточно значимы, чтобы убедить Алису поставить подписи. $s_1$, $s_2$, $s_3$ из $m_1$, $m_2$, $m_3$, то противник может вычислить сигнатуру $s_4$ значимого $m_4$ как $s_4=s_1\cdot s_2\cdot{s_3}^{-1}\bmod n$. Это когда-нибудь возможно.
По этой причине подпись RSA не практикуется, как в вопросе. Обычно используется РСАССА-ПСС или же RSASSA-PKCS1-v1_5. И тогда генерация подписи и проверка подписи больше не работают, как шифрование/дешифрование (будь то шифрование RSA из учебника или шифрование RSA, как это практикуется, например, RSAES-OAEP, RSA-KEM или гибридное шифрование).
Что правильно, так это то, что при проверке подписи RSA (с приложением), как это практикуется, она вычисляет функцию подписи и открытого ключа, а затем сравнивает результат с сообщением (или некоторым его хэшем; в случае RSASSA-PSS, мульти- уровень хэша с добавлением необязательной соли).
С другой стороны, с парой ключей ECDSA процесс проверки такой же, как и с парами ключей RSA? То есть путем сравнения расшифрованного сообщения с исходным сообщением, чтобы увидеть, совпадают ли они?
Нет, при проверке подписи ECDSA это нет вычислил некоторую функцию подписи и открытого ключа, затем сравнил результат с сообщением (или его хэшем). Это работает по-другому: хэш сообщения является входом для вычисления, включающего подпись и открытый ключ, а не сравнивается с ним в конце.
…Похоже, что ECDSA сравнивает открытый ключ…
Ни нормальный ни чередовать Под это подходят методы проверки подписи ECDSA.
(ECDSA) может восстановить открытый ключ из подписи…
Типа: с помощью ECDSA можно восстановить рабочий открытый ключ из подписи и связанного с ней сообщения или его хэша. Это восстановление открытого ключа. Но эта операция не является частью того, как обычно выполняется проверка подписи. И у него есть ограничения:
Потенциально из подписи можно восстановить несколько открытых ключей-кандидатов. При небольших затратах подписывающая сторона может сгенерировать подпись ECDSA таким образом, что только один из открытых ключей-кандидатов будет жизнеспособным, и таким образом, чтобы верификатор имел очень небольшие дополнительные затраты на определение того, какой открытый ключ является правильным.
Я не могу точно сказать, будет ли восстановление открытого ключа ECDSA с последующим сравнением восстановленного открытого ключа с истинным открытым ключом надежным эквивалентом обычной проверки, и для каких кривых. Это вопрос чисто теоретического интереса, поскольку у нас есть стандартная проверка подписи.
Примечание. Для схем подписи RSA восстановление открытого ключа не является типичной функцией. Это возможно с RSASSA-PKCS1-v1_5 или другими детерминированными подписями, несколькими парами сообщение/подпись и общим выбором $е$; но это невозможно с некоторыми другими RSASSA-PSS или другими рандомизированными подписями.