1
$\begingroup$

Section 4.1.6 of https://www.secg.org/sec1-v2.pdf describes a technique for recovering public keys from ECDSA signatures.

I guess Ethereum uses this. Like if you want to validate a particular transaction I guess you recover the public key and then verify that it matches the "address".

My question is... are there any other protocols that make use of this technique?

$\endgroup$
5
  • 1
    $\begingroup$ They use this to reduce the transaction; This is also useful in bandwidth constrained environments, when transmission of public keys cannot be afforded. This is from the doc. Therefore anyone can benefit this if they want to reduce the size of the transaction.. $\endgroup$
    – kelalaka
    Commented Jan 26, 2022 at 14:19
  • $\begingroup$ @kelalaka - if you're implementing your own protocol you can do anything you want but no SSH implementation supports this and I'd be surprised if SSL/TLS supports it. Like with SSH authentication you have the public key in the authorized_keys file. The idea of accepting a signature because it corresponds to a public key as opposed to a specific one is pretty absurd and it's bandwidth reduction properties don't change that. $\endgroup$
    – neubert
    Commented Jan 26, 2022 at 14:46
  • 2
    $\begingroup$ Neither SSH nor TLS is not bandwidth/transaction constrained . If the public key can be recovered uniquely, then one can check that it belongs to someone that has the Ethereum coin, otherwise, why should they accept the signature? This is purely reduce the transaction and especially the storage, nothing more. $\endgroup$
    – kelalaka
    Commented Jan 26, 2022 at 14:54
  • $\begingroup$ And also, 1.6.2. Verify that Q is the authentic public key. (For example, verify the signature of a certification authority in a certificate which has been truncated by the omission of Q from the certificate.) If Q is authenticated, stop and output Q. $\endgroup$
    – kelalaka
    Commented Jan 26, 2022 at 15:08
  • $\begingroup$ Well, +1 since there may other protocols that use this... $\endgroup$
    – kelalaka
    Commented Jan 26, 2022 at 18:07

1 Answer 1

1
$\begingroup$

Obviously I don't have a definitive list, but as well as Ethereum, I know that Bitcoin's libsecp256k1 library has a module for signatures with recoverable public keys (secp256k1_ecdsa_sign_recoverable). It is, however, not used on-chain in Bitcoin (the public keys are always provided explicitly when verifying signatures).

And the Bitcoin layer-2 "lightning network" has a public key recovery mechanism in its spec, see here (BOLT-11).

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.