How are we able to verify signatures using the public key?

I get that:

``````private key --ECDSA--> public key
private key + message --ECDSA-->signature
``````

But then how do we verify the signature with the public key?

Wouldn't we have to reverse-ECDSA the public key at some point during the process?

And if reverse-ECDSAing is possible, then wouldn't it be possible to get someone's private key from their public key?

It's impossible to reverse-ECDSA and get the private key from the public key. Think of it this way. One thing to understand is ECDSA is just a specific algorithm. So part of the algorithm, using elliptic curve cryptographic technique the public key is generated from the private key

``````Private key --ECC--> public key
``````

Alice and Bob both have a separate public-private key pair. Both know each other's public keys but don't know their private keys. Now suppose Bob wants to send prove his identity through the ECDSA procedure. So for the first part, Alice would just send a message to Bob. Now Bob would sign the message with his private key, in other words, he would encrypt the message with his private key.

``````message --Bob's Private Key--> signature digest
``````

Now, Alice would get the signature back. The only way to now to decrypt the signature is to use Bob's public key since it was signed with Bob's private key. After decrypting it Alice would get back the original message that she sent in the first place, and she can be sure it was Bob who signed the message cause only he has the private key that was used to sign this message.

``````signature digest --Bob's public Key--> message
``````

P. S. Notice that you don't have to think about Alice's public-private key pair in this example.