I always thought that only the person(s) in possession of the private key to an address would be able to spend or change state for that account. But by using the recover technique rather than the normal way of doing it, I’m not so sure that the statement holds.
Consider the following example:
- Construct a valid transaction and sign it normally.
- Change some part of the message. This should invalidate the signature
- Run the public key recovery on the signature from step 1 and the now modified message. This will produce a random address that I do not know the private key of
- Send funds to the random address from step 3. Now, in Bitcoin my funds would be gone and no longer in my control as I do not know the private key of the random address I sent to.
- BUT, for Ethereum, if I send the modified message with the invalid signature, a node will get it, derive the same random address and will see that the account has enough funds to pay any instrinsic gas and will process the message and thus change the world state (the nonce of the account will get incremented at the very least)
So i’ve now successfully modified the state of an account I do not know the private key to.
Is this scenario possible? If so, what benefit is there in using the recovery technique vs. the normal way?
Thanks
∀T : ∀pr : S(G(T, pr)) ≡ A(pr)
My understanding of this is that the hash of the public key that corresponds to the private key (pr) used to sign the message (in step 1), must be the same as what is derived by the recovery technique. In this case it would not be. – user36103 Mar 19 '18 at 23:39