Skip to content
Free lab · Cryptography

Digital Signature Lab

A signature is not a checksum and signing is not encryption — it is a cryptographic proof that a specific message was produced by the holder of a private key. This lab runs real asymmetric signatures in your browser with the Web Crypto API: generate an RSA-PSS or ECDSA P-256 keypair, sign with the private key and verify with the public key, change one byte and watch verification fail closed, then catch the forgeries with real verify(). Then make the calls — modern algorithm, modern hash, single-purpose keys — and get graded.

The real job. More noise, a tighter clock.

0sPro

Work the signing bench

6 graded challenges that use real asymmetric signatures in your browser via the Web Crypto API — generate an RSA-PSS or ECDSA P-256 keypair, sign a message with the private key and verify it with the public key, tamper with the message and watch verification fail, and catch forged signatures with real verify(). Score on correct verify decisions plus the right algorithm and key-handling calls. Clear 75% to pass — finish under par for a speed bonus and a better grade.

Sign & verify
Tamper fails
Catch the forgery
Pick the algorithm
Key separation
PSS vs PKCS#1v1.5
TL;DR

What this lab is

  • A free, 100% in-browser cryptography lab that runs REAL asymmetric digital signatures via the Web Crypto API — no server, no account, nothing leaves your machine.
  • Generate an RSA-PSS (2048-bit) or ECDSA P-256 keypair, sign a message with the private key, and verify the signature with the public key.
  • Change one character of a signed message and watch verification fail — a signature is bound to the exact bytes via their hash, so tampering is caught (integrity).
  • Catch the forgery: judge several (message, signature, public key) tuples and confirm each with real crypto.subtle.verify — wrong key, swapped message and truncated signatures all fail.
  • Graded decisions drill the real lessons: pick a modern algorithm and key size (ECDSA P-256 / RSA-PSS ≥2048 with SHA-256), prefer PSS over PKCS#1 v1.5, keep signing and encryption keys separate, and never reuse an ECDSA nonce.

Frequently asked questions

What is the Digital Signature Lab?

A free, browser-based cryptography trainer that uses the real Web Crypto API (crypto.subtle) to perform asymmetric digital signatures. You generate an RSA-PSS or ECDSA P-256 keypair, sign and verify a message, tamper with the message to see verification fail, and work through a graded "catch the forgery" exercise plus decisions on algorithm choice, key separation and hashing. Everything runs client-side — nothing is sent to a server.

What does a verified digital signature actually prove?

That the exact message bytes were signed by the holder of the private key matching the public key you verified with, and have not changed since. That gives integrity (the content is unaltered), authenticity (it came from that key holder) and non-repudiation (they cannot plausibly deny signing it). Signing is not encryption — the message stays in the clear; the signature is the proof attached to it.

How do you tell a genuine signature from a forgery?

Only by verifying it. A signature is valid exactly when the presented public key, the precise message being checked, and a well-formed signature from the matching private key all line up. A forgery breaks that chain in one of several ways — signed by the wrong key, signed over a different message than the one shown, or a real signature with bytes mangled or truncated — and crypto.subtle.verify returns false for each. Trusting the sender label instead of the math is how signature spoofing works.

Which signature algorithm and key size should I use?

In 2026, ECDSA on P-256 or RSA using RSA-PSS with a 2048-bit-or-larger modulus, both with SHA-256. ECDSA gives small, fast signatures; RSA-PSS is preferred over the older PKCS#1 v1.5 padding for new designs. Avoid RSA-512, and avoid SHA-1 or MD5 under any signature — their collisions let an attacker move a valid signature onto a malicious message regardless of key size.

Is any of this sent to a server?

No. The lab is entirely client-side and uses your browser’s built-in Web Crypto implementation. Keys, messages and signatures stay in the page; your best grade is saved only in your own browser’s local storage.

🎉 New here? Use code WELCOME10 for 10% off any plan at checkout
Digital Signature Lab — Free Web Crypto Sign & Verify Trainer · PlayCISO