Every problem with the laminated card follows from one moment: two seconds, a
moving bus, no signal. An app that phones a server fails exactly where students
are, which is on the churam with no bars. And a QR code on a screen solves
nothing, because a screenshot of a QR code is everybody’s pass.
What makes a screenshot fail
The wallet signs the current half-minute with a key generated non-extractable
inside the phone. A screenshot carries a signature for a half-minute that has
passed. The credential copied into a friend’s app carries the wrong device key.
Both are rejected by arithmetic rather than by a conductor’s judgement, which
matters, because the conductor is busy.
The scanner trusts exactly one key: the transport authority root. Institution
keys and conductor devices are both countersigned by it, so adding a college is
a signature rather than a database migration, and a forged key fails on a bus
with no network in sight.
Revocation without a list
The pass carries a 68-byte token from its own institution saying not revoked as
of this day, refreshed whenever the wallet has signal. A scanner refuses
anything older than a week. Revoking a pass means declining to sign it again.
Nothing is distributed to anyone, and the bus carries the same two kilobytes
whether Kerala has fifty thousand students or two million.
A signed serial list survives, shrunk to the one job it is actually good at:
same-day emergency revocation.
The part that carries the money
The concession is a subsidy the state owes the corporation, and today the claim
is an estimate the two of them argue about, because nobody holds a per-boarding
record anyone can audit.
Every acceptance writes a receipt signed by the conductor’s enrolled device.
The claim becomes a sum of signed receipts. The audit becomes a signature check
over the batch. And the fraud that offline verification genuinely cannot catch (the same pass
boarding in two districts thirty-five minutes apart) shows up as arithmetic at reconciliation instead of not showing up at all.
Offline acceptance and central accountability are normally a trade-off. Signed
receipts are how you get both.
The conductor never learns a name
A pseudonym, an institution and an entitlement decide the fare. Nothing else
should be readable by a stranger on a bus, so nothing else is in the credential.
Every rejection prints a sentence a conductor can read out. Not computer says
no. It says which check failed, and why.