What you’ll be able to explain
- State what signature verification establishes and what it cannot establish.
01 / Understand
A signed instruction can still be a bad instruction
Suppose a club uses a signing key to authorize room bookings. The message says “Reserve room B for Thursday.” A verifier checks the signature using the club’s known public key and the exact message bytes.
Successful verification supports a narrow conclusion: under the scheme’s security assumptions, the signature is valid for that message and public key. It does not establish that room B is available, that Thursday is a sensible choice, or that the signer has not been tricked.
Key identity matters. If an attacker sends their own public key along with a perfectly valid signature, the math may check out while the association with the club is false. The verifier needs a trustworthy reason to use that particular public key.
A signature is bound to what was signed
Change the message after signing and verification normally fails. But the scope is exactly the data covered by the signature scheme and signing process. If the application signs only a booking number, the room and day might remain outside the signed statement.
Bitcoin adds protocol-specific rules for the data committed to by transaction signatures. The existence of a signature should not be read as “every displayed field was necessarily authorized in the way I assume.” Developers need to understand the relevant signature-hash mode and script rules.
The idea, at a glance
Sign
A signing algorithm uses secret material and a message.
Verify
Check signature, message, and expected public key.
Decide
Apply authorization, context, and business rules.
02 / Explore
Four questions that belong beside verification
- Which key? Is it the expected key, and how was that association established?
- Which message? Are the displayed fields the same bytes or structured data covered by the signature?
- Which context? Could the signed statement be replayed in a different setting?
- Which authority? Do the application’s rules allow this key to make this change?
For the club, a signed string saying approve:42 is ambiguous unless both sides agree what 42 identifies. Adding context, object identity, and suitable freshness rules is an application design task. There is no universal message template that solves every replay problem.
Bitcoin uses more than one signature scheme. ECDSA appears in established spending types, while BIP 340 defines Schnorr signatures used in the Taproot family of rules. Our lesson explains the relationship between signing and verification without implementing either scheme.
A compromised key can create signatures that verify. Verification does not report whether the human intended the action, whether the device was secure, or whether the signer is trustworthy. Those are separate operational and social questions.
03 / Build
Design the statement before the signature
Write two versions of a fictional club approval:
Version A: approve
Version B: Club demo / booking 42 / room B / Thursday / revision 3
List what a verifier can distinguish in version B that was absent in A. Expected answers include the application context, the object, and the particular revision. This is a reasoning exercise, not a secure serialization standard.
Now imagine a valid signature for version B sent with a public key the club has never seen. Should the application approve the booking? Expected result: no automatic approval. It first needs an authorized key association and its other business checks. Cryptographic validity is one input to that decision.
Pause & explain
Can a stolen private key produce a signature that verifies?
Try explaining it in your own words before opening the answer.
Compare your explanation
Yes. The verification algorithm checks the signature against the message and public key. It does not know whether a legitimate human or an attacker used the private key.
Sources & scope
Primary references behind this explanation. Worked examples and diagrams are original teaching material.
- 01BIP 340 — Schnorr signatures for secp256k1 ↗
Bitcoin Schnorr signing and verification. This does not imply all Bitcoin spends use the same signature scheme.
- 02Bitcoin developer guide — Transactions ↗
Input references, output conditions, and change. Historical examples use P2PKH; modern script types differ.
Where this explanation stops
- No real signature is produced. Signing scopes and verification algorithms depend on the protocol.
Keep unfolding
Private keys, public keys, and addresses What actually happens when you send bitcoin?