Skip to content

← 返回 NFC.cool Blog

用手机读取护照里的 NFC 芯片

一本电子护照旁边放着一部手机,屏幕上显示着证件里存储的照片和一个表示真实的对勾

上一次坐飞机时,我在其中一台自助护照闸机前站了一会儿,就是那种玻璃隔间:你把护照放到读取器上,抬头看向摄像头,然后等着那道门决定要不要放你进去。这得花上一小会儿。而就在那一小会儿里,我发现自己在琢磨这台机器到底在做什么。它读的并不是印在纸页上的内容,而是在跟藏在我护照封皮里的那枚小芯片对话。

我靠读取 NFC 芯片谋生已经好多年了。我知道那枚芯片就在里面,只是从来没拿自己的 App 对着它读过。站在那道闸机前,一件事真的让我有点不是滋味:边检的一台机器都能读我的护照,NFC.cool 却读不了。

而 NFC.cool 想要消除的,正是这种别扭。我给它定的目标一直很简单,也带点固执:做一款你能装进手机里的、最好用的 NFC 读取器,把 NFC 真正能做的事全都支持上,同时又不把它变成一件你得有工程学位才拿得动的工具。护照芯片差不多就是”NFC 能做的一切”里最极致的那一档了。所以我把它做进去了。

现在,NFC.cool Tools 已经能在 iPhone 和 Android 上读取电子护照、身份证或居留许可里的芯片了。它会把芯片里存储的照片和个人信息显示给你看,并告诉你这份证件看起来是不是真实的。下面就讲讲它是怎么运作的,以及它有哪些局限,我也照实说。


不先证明证件在你手上,芯片就一个字都不肯说

这一点常常让人意外:你没法只是拿手机在护照上方晃一晃就把它读出来。这枚芯片是被特意锁住的。除非你递给它一把钥匙,否则它一个字都不会吐露,而这把钥匙就印在你自己的证件上。

我觉得这是个很妙的设计。它意味着,当你的护照安静地待在口袋或包里时,没有人能偷偷把它读出来。唯一的进入方式,是你手里已经翻开了这份证件,因为那把钥匙正是用印在它上面的信息拼出来的:证件号码、你的出生日期,以及有效期。

所以 App 会先问你要的,正是这三样东西,方式有两种。你可以把摄像头对准机读区,也就是护照照片页底部、或者身份证背面那一条密密麻麻的 <<< 字符,NFC.cool 会像机场闸机那样用光学方式把它读出来。或者,如果证件磨损了、光线又不好,你也可以手动把这三个值输进去。不管用哪种方式,一旦 App 拿到了钥匙,它就会请你把手机顶端贴到证件上,真正的芯片读取这才开始。如果你曾好奇过 NFC 在 iPhone 上到底是怎么运作的,这其实就是同一套近距离握手,只不过另一头换成了一枚挑剔得多的芯片。

芯片里读出来的是什么

几秒钟后,你就会看到这枚芯片一直以来所承载的东西:签发机关存进去的你的照片、你的姓名、国籍、证件号码、你的出生日期和有效期,某些证件上还会多一点信息,比如出生地、签发机关,以及签发日期。这跟边检柜台调取的是同一批数据,只不过现在它捧在你自己手里。

你读取的每一份证件,都会被存进 App 里一个叫”我的证件”的小卡包,方便你日后回看。这个卡包就存在你的设备上,在 iPhone 上它通过你自己的 iCloud 同步。它不会传到我这里,也不会传到我的任何服务器上。面对这么私密的东西,这不是我会轻描淡写带过的细节。

这份证件是真的吗?

我最满意的部分是真伪校验。一枚现代护照芯片可不只是一张存储卡。签发国会为它的内容签名,有点像把一枚火漆印章压进这些数据里。NFC.cool 会去检查这枚印章:芯片里的内容自签发以来没有被改动过,签名在数学上是有效的,而且它能追溯到一个 App 认得的、真实存在的签发机关。更好一些的芯片还能证明自己是原厂的那块硅片、而不是复制品,只要芯片支持,App 也会把这一点一并查了。

不过,关于措辞,我给自己立过一个承诺。这个 App 永远不会把你的护照称作”假的”。如果每一项检查都通过了,它会说这份证件看起来是真实的。如果有什么对不上,或者更常见的情况是,它单纯因为那个国家不在 App 内置的名单里而无法确认签发方,那么它就会说自己无法验证,然后就到此为止。“我没法核验这个”和”这是伪造的”是两句截然不同的话,而在你的身份证件这么严肃的事情上,我不愿意把它们混为一谈。

它做不到的那些事

下面几句大实话,因为对这类功能来说,含糊其辞反倒是帮倒忙。

它能读很多种证件,但我没法保证每一种都能读。我拿来自不同国家的一大堆护照和证件卡测过,大多数都读得很顺利,可这世界上的证件并不是完全统一的,你手里那本说不定就是个例外。如果哪一份死活读不出,通常问题出在证件上,而不是你身上。

它只读它被允许读的部分,多一点都不读。有些芯片里还存着指纹或虹膜数据,而这些数据被锁在只有政府查验系统才握有的钥匙后面,那不是一款消费级 App 能拿到的东西,也不是我希望它拿到的东西。NFC.cool 从不去碰它们。它读的是人脸照片和那些印在证件上的信息,而这恰恰正是设计上就该让手持证件的本人能读到的那部分。

另外,它需要一部带 NFC 的手机,读取时手机要稳稳地贴在证件上。芯片很小,连接也很娇气,手机一滑就得重新开始读。读完之前,请让证件平整地贴着手机的顶端别动。


我还是会时不时想起机场那道闸机。现代旅行里那一整套安检的排场,而它的正中心,是一枚小小的 NFC 芯片在小心翼翼地完成一次握手,跟我这些年一直用来读取和写入标签的,是同一种握手。而现在,你口袋里的这台读取器也能做到了。

如果你想看看自己的护照一直悄悄承载着什么,护照与证件读取器就在 NFC.cool Tools 里,支持 iPhoneAndroid,就挨着我为 NFC 做的其他一切。翻开你的护照,把它贴到手机上,去见一见那个一直住在芯片里的你。