Рейтинг:1

Является ли процесс проверки в ECDSA таким же или отличается от процесса проверки в RSA?

флаг nl

Насколько я понимаю, с парой ключей RSA Алиса, у которой есть закрытый ключ, может зашифровать сообщение в подпись. Затем она отправит подпись вместе со своим первоначальным сообщением Бобу. Затем Боб сможет использовать открытый ключ Алисы для расшифровки подписи, которая затем вернет сообщение. Затем расшифрованное сообщение будет сравниваться с исходным сообщением. Если они совпадают, это доказывает Бобу, что сообщение действительно было от Алисы.

С другой стороны, с парой ключей ECDSA процесс проверки такой же, как и с парами ключей RSA? То есть путем сравнения расшифрованного сообщения с исходным сообщением, чтобы увидеть, совпадают ли они?

Что меня смущает, так это то, что, исходя из того, что я понял, как ECDSA используется в контрактах блокчейна, например, вместо того, чтобы сравнивать расшифрованное сообщение из открытого ключа и исходное сообщение, ECDSA, похоже, вместо этого сравнивает открытый ключ. . Он способен восстановить открытый ключ из подписи и проверить. Боб сравнил бы, что восстановленный открытый ключ из подписи такой же, как открытый ключ Алисы.

Является ли процесс проверки в ECDSA таким же, как в RSA? Или процесс проверки отличается от RSA и похож на то, как он используется в смарт-контрактах на блокчейнах?

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

Вкратце: процесс проверки подписи в 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 или другими рандомизированными подписями.

Рейтинг:1
флаг it

Алиса... зашифровать сообщение в подпись.

Строго говоря, подпись отличается от шифрования! Например. для RSA вы используете открытый ключ для шифрования сообщения, но для подписи вы используете закрытый ключ.

Более того, проверка ECC полностью отличается от RSA, поскольку они имеют разные математические характеристики. Одним из примеров является то, что для RSA вы должны использовать хорошую схему заполнения, чтобы избежать различных типов атак. Но ECDSA это не нужно.

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

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