主张美国机动车管理员协会(AAMVA)要求各州对驾照 PDF417 条形码加密签名,纽约(New York)和弗吉尼亚(Virginia)已用专有方式签名。移动驾照(mDL)或护照有公共标准,但两州执照只能由车辆管理部(DMV)核查。弗吉尼亚发校准表列出格式,仅提九十字符安全对象便止步,加利福尼亚(California)说明用 DMV 公钥验证真伪。任何州证件背面有标准 AAMVA PDF417 条形码,多为明文结构,如 DCS/DAC/DAD 为姓名,DBB/DBA/DBD 为出生、过期和签发日期。
正文
在之前《Insecure by Design》一文中,我主张AAMVA应要求各州对驾照上的PDF417条码进行密码学签名,并提到纽约和弗吉尼亚两州已用专有方式签名。移动驾照(mDL)或护照遵循公开标准,任何人都能验证,但纽约或弗吉尼亚的驾照只能由签发的DMV验证。弗吉尼亚发布过校准表,列出条码的AAMVA格式及本州子文件,提到一个“90字符安全对象”便止步。而加州按我的要求做了:发布的文档精确说明如何用DMV公钥核查加州证件真伪。
任何美国州证件背面都有标准AAMVA PDF417条码,大多是明文数据结构:三字母代码加值,如DCS/DAC/DAD为姓名,DBB/DBA/DBD为出生、过期、签发日期,DAQ为证号等。头部发行者识别号标明辖区:636000弗吉尼亚,636001纽约,636004北卡,636014加州。
有趣的是辖区特定子文件,前缀为Z加州字母(弗吉尼亚ZV,纽约ZN,加州ZC)。AAMVA保留这些子文件供各州添加内容,通用扫描器读强制子文件时会跳过它们。
2025年10月1日加州DMV在新闻稿宣布新证件设计,多数内容是常规物理防伪特征,其中提到:“DMV将在卡背两个条码之一添加数字安全签名。加州将是首批添加此类数字签名的州之一。”加州不自制证件,外包给IDEMIA,后者生产全美约61%辖区的证件。IDEMIA很可能为加州开发此签名系统,做得极好。加州ZC子文件内是完整的W3C Verifiable Credential Barcode,用CBOR-LD压缩,ecdsa-xi-2023密码套件签名。被签内容明确:位串选择哪些AAMVA字段覆盖,按代码加值格式换行连接、排序、哈希。凭证指向did:web:credentials.dmv.ca.gov,解析为DMV域名下普通JSON文档,含条码签名公钥#vm-vcb-1,一个普通P-256公钥供人下载。加州甚至提供开源验证器及有效和吊销的测试条码,任何人可自己运行验证。
加州宣布条码含签名后,直到次年四月才发布文档说明签什么、覆盖字段、验证者如何重建、密钥在哪。约六个月,加州处于和纽约、弗吉尼亚同样境地:真实密码签名、真实卡流通、公开宣布,DMV外却无法验证。至少我曾这么以为。
加拿大钞票公司(CBN)为五州制造证件:纽约、弗吉尼亚、北卡、南卡、威斯康星。我发现CBN实际为全部五州实现数字签名,不止纽约弗吉尼亚。我没有南卡或威斯康星条码,但有人解码确认字段存在。此签名基本无用,因无法验证。CBN安全特征里是Ascii85编码字符串,去掉编码是短二进制blob,为DER结构:含两个256位INTEGER的SEQUENCE。两个256位整数r和s的SEQUENCE正是P-256曲线(secp256r1)上ECDSA签名的典型编码。这些blob因卡不同为70、71或72字节,正是ECDSA产生的长度,因为r、s是随机整数,DER按高位是否置位增减前导字节。三张真实纽约卡、一张北卡、六张弗吉尼亚样本全都符合此结构。
ECDSA有特定性质:给定签名和所签消息,可数学恢复出生成它的公钥。每签名得一组候选密钥,但若有同一签署者的多个签名,真实密钥是它们共享的唯一候选。但恢复密钥需确切签名消息,而它完全未文档化。我暴力尝试数十万种顺序格式,最终搞清:不同于加州,这里全部内容被签,签名字段本身是被签消息一部分。签名前编码器用占位符0填充该字段(重复至字段确切长度),签署含占位符的整个负载,再将真实签名写其上。验证时需把占位符放回去。纽约卡负载484字节,ZNB值在393至483字节。验证步骤:
- 逐字节取解码后负载。
- 用同长0覆盖签名值:payload[:393] + b"0" * 90 + payload[483:]。
- SHA-256结果。
- 用ECDSA P-256对DER签名验证摘要。
三张纽约卡产生一个三对都同意的密钥;六张弗吉尼亚样本产生一个十五对都同意的密钥。我仅一张北卡样本,需两张定位密钥,若你有未覆盖州的两张可自己恢复。恢复的公钥:纽约 IIN 636001 字段 ZNB:02851d63a281796be0ca11189f03028abf80e032838f83215889b9e708eac16482;弗吉尼亚 IIN 636000 字段 ZVA:02d0f2823d63c854566c5da2cb07e114dbad16f874c2422f74806fe3e2f4775f1d。两者都是压缩形式P-256公钥,我手头每张卡都能对它们验证。姓氏改一个字节就能立即检测为伪造。公钥本应发布,恢复它只能验证不能伪造。
我做了个小演示检查加州、纽约、弗吉尼亚签名:拍照条码即可验证。它解码PDF417,解析任辖区AAMVA格式,验证有三州签名。全部浏览器运行,我不会看到图像或提取数据。密钥按辖区,构造跨供应商各州共享。弗吉尼亚签名用纽约密钥验失败,反之亦然,这是正确设计,意味着一州被攻破不会拖垮其他。
我用完成的验证器对付假冒纽约样本:肉眼看其条码克隆得不错,同484字节负载长、同子文件目录、同字段宽填充、同卡修订日。更重要的是ZNB非空非乱码,含格式良好的71字节DER ECDSA签名,正确Ascii85编码,前缀长度合理。但它瞬间密码验证失败,因用别人密钥签的。
州不自己设计条码,他们招标采购,极少数公司造出印刷品。CBN为五州:纽约、北卡、南卡、弗吉尼亚、威斯康星。IDEMIA为51个美国辖区中31个生产。
加州卡由IDEMIA根据2022年授标的12年合同制造,2025年10月开始发行所有加州证件。可验证凭证条码是IDEMIA与加州DMV建卡设计的一部分。所以开放、文档化、公开可验证的实现不是加州特有的美德,而是一家供应商已建好、发货并在最大州规模运行的产品。
问题是它没运到其他地方。IDEMIA生产的31个辖区中,恰有一个有可验证签名条码的公开证据。这特性没扩散,约束明显不是工程,因为工程已完成并在31个中最大的运行。2025年8月IDEMIA为德州推出重设计驾照,公告列安全特征:防篡改聚碳酸酯、激光雕刻、触感表面、德州形光学可变窗、REAL ID星标。全是人类眯眼验卡的物理防伪,无数字签名提及。
IDEMIA已解决此问题,应推广到各处。工程做完、标准发布、信任设施在加州生产运行。每个后续无此功能的卡项目都是选择,且奇怪,因特性已完成付费。可验证条码应是他们签的每合同的默认条目,而非州得知道去要的溢价。
加拿大钞票公司应文档化已建的东西。这便宜得多,因CBN无需建任何东西,缺的只是网站一页:这是被签消息构造,这是每州公钥。那是介于保护无人和保护每个扫卡者之间的周末文档。
这绕回《Insecure by Design》结尾。我问条码可否得真实签名,这些州答案是有,且没关系,因为签名是公共行为否则什么也不是。加州通过服务大半国家的同供应商,安静演示整件事做对,同数学,在多数美国人实际带的证件上,并发布密钥证明。技术从不是障碍,它完成躺在产品目录。被验证的意愿才是障碍,且仍是。
评论
讨论整体偏技术性好奇,多数人认可「条形码里藏着可验证签名」这件事本身有意思,但质疑文章标题把「恢复公钥」说成「恢复签名密钥」;另一条分歧线是这种防伪到底有多大实用价值——能不能挡住假照片+真条形码的组合,以及该不该为它牺牲设计上的简洁。
质疑标题说的「恢复签名密钥」,实际只能拿到公钥
- 文章正文只说能从条形码推出公钥,而公钥本来就是可以随便公开分发的,把它揣在手里不构成任何威胁;拿公钥伪造出别人私钥签过的数据,恰恰是公钥密码学要防住的事(较多人) > 公钥密码学的全部意义就是:公钥可以交给最坏的敌人也不会有麻烦。(@simoncion)
- 不理解为啥有人觉得披露公钥是坏事,那就是它的用途;量子计算的威胁真实存在,但真到那一天,身份验证已经不是优先问题(较多人)
认为条形码不含照片,防伪意义有限
- 除非照片本身也被放进条形码并一起签名,否则整套方案几乎白搭:几百张真实证件泄露就能覆盖头发、眼睛、肤色、身高体重这些可辨识维度,泄露量再大一点,连「已泄露证件」的黑名单都会产生大量误判(较多人)
- 假照片配一个有效条形码,按目前的检查流程应该照样通过,除非存在一套外人看不到的证件照二次比对系统(较多人)
- 假证的真实卖点是「能扫」,便利店一律扫码且不太看长相,反而是酒吧和餐厅会拦人(少数人)
批评签名流程里用占位符再覆写的取巧做法
- 先填等长占位符、把占位符一起签、再把真签名覆盖上去、验证时把占位符塞回去——这种让加密层感知被签数据结构的做法很糟糕,安全实现应该保持笨拙(较多人)
类比纸币防伪,可验证二维码能提高伪造门槛
- 同样的思路可以搬到纸币上:给钞票序列号做可验证的二维码数字签名,伪造者在密码学上很难迈过去(少数人)
认为第三方 App 式数字身份不如这种设计
- 这种把验证能力放进证件本身、不依赖某个应用的思路,比英国那套动辄要求装第三方 App(还不是政府自己做的)的方案好得多(少数人)
认为功劳该归给可验证凭证库的作者
- 该被感谢的是可验证凭证库的作者,而不是采用它的厂商;真正的方向是让「拥有」这件事本身可数字验证,靠一张实体证件代理所有权,只是把风险转嫁给国家,并让社工与欺诈继续存在(少数人)
有价值的补充
- 原文已有人做了网络存档,说明讨论热度上来后大家会先备份再评论。
- 有人提醒作者:博客排版很好读,唯独那套像素化等宽字体伤眼睛(少数人)。
- 帖内标题写了「恢复美国驾照条形码的签名密钥」,但这句副标题并不在博客原文里,是提交到论坛时被加上去的——这也是上面那轮质疑的源头。
- 「我来 HN,是为了学到自己从没想过要知道的东西」这条代表了当天的社区情绪:话题冷门,但大家乐在其中。