蓝天背景下的金属菱形网格围栏

一张驾照背面的条码里有什么

美国各州驾照背面的 PDF417 条码遵循 AAMVA 标准,大部分字段是明文的三字母编码加取值:姓名、出生日期、到期日、证件号。剩下的部分里,标准专门留了一块由各州自行使用的子文件区,用来放自己的东西。

纽约与弗吉尼亚在这块区域里放了数字签名,但做法是私有的。也就是说,这张证件明明带着密码学签名,除了发证的车管局自己,没有人能验证它。

加州做了另一件事

去年 10 月,加州车管局发布新版证件,宣布会在背面条码里加入数字签名。今年 4 月他们公布了技术文档:签名覆盖哪些字段、按什么顺序拼接再哈希、去哪里取公钥,写得清清楚楚。公钥挂在车管局自己的域名下,是一把普通的 P-256 公钥,任何人可以下载;官方还提供了开源验证器和测试样本。这样一来,一台手机就能判断一张加州证件是不是真的。

研究者把没公开的那些补上了

安全研究者 Ryan Fahey 顺着这条线索去看了加拿大印钞公司为纽约、弗吉尼亚、北卡、南卡、威斯康星五个州做的证件,发现五个州其实都实现了签名,只是没有任何文档说明签名到底覆盖什么内容。

他用 ECDSA 的一个性质把公钥算了回来:已知签名和它签的原文,可以反推出产生它的公钥。难点在于「原文」从未公开——他试了几十万种拼接方式,最后弄明白这套实现是连签名域一起签的:签名前先把签名字段填成固定长度的零,签完之后再覆盖成真实签名。按这个规则,三张纽约卡指向同一把钥,六个弗吉尼亚样本的十五对签名也指向同一把钥。至于伪造卡:字段长度、结构、甚至签名本身的编码都仿得很像,用正确的公钥一验就露馅。

技术早就不是瓶颈

值得追一下的是:为 51 个辖区中的 31 个制卡的厂商,早就把「公开可验证」的版本做出来了,并且跑在人口最多的那个州。可它没有扩散出去。卡点不在工程,而在愿不愿意被验证。

签名是一件公共行为:不公布公钥的签名,等于没有签名。这句话对做电子证照、电子票据、防伪溯源的团队同样成立——先想清楚谁来验、拿什么验,再谈上链和密钥。