1. 前言
如果你是扫二维码进入的本篇文章,感谢你收到我的卡片并愿意探究验证方式,这张卡片采用了一些很好玩的内容做了防伪。
对于这一技术我写了一篇文章进行介绍:现在还没写完,先随便放个链接 写完了,点这里!! 如果你也有兴趣的话欢迎基于这一想法继续改进。
2. 卡片介绍
2.1 正面(呼号信息面)
该面左上角为NFC标志,提醒您这是一个NFC卡片。旁边是一只洛天依,她很可爱,我想让你们都看看。再往右为卡片名称以及和正常卡片一样的位置信息介绍。下方是我的呼号,在2的上方我放置了一个LED灯,在刷卡的时候这个贴片LED会亮起。右侧是一个100欧的电阻(LED灯用)以及一个NTAG216芯片。
该芯片内存储了不可篡改的QSL信息,详情请查看3.1
2.2 背面(传统QSL信息面)
该面和正常的QSL卡片相同,用于记录通联信息。下方的两个二维码,一个指向本文,另一个为RSA加密的公钥,后续解密会用到。详情请查看3.1
卡片的正反面均覆盖了铜线构成的线圈,作为NFC卡片的天线。
3. 信息读取与信息验证
3.1 信息读取
由于该卡片为NFC卡,所以您可以使用任何带有全功能NFC的设备贴近卡片来读取信息。(苹果设备除外,Apple没有给用户开放NFC使用权限)
Android端建议使用NFC Tools Plus。
安装可以读取卡片信息的软件后,打开NFC,贴近卡片,看到卡片的灯亮即为读取成功。
您将会在您的软件内看到类似如下内容:
其中 QSL-INFO
为精简过的卡面上记载的通联信息,与卡面记载一般相同。
SING
为经过我私钥加密的通联信息,源文本与上方相同。
PUBLIC-KEY
为用于解密信息的公钥,可以用这段文字去解密上方我加密的内容。
3.2 信息验证
该卡片内信息的内容具有不可篡改性。卡片已经被设置禁止写入,正常情况下,QSL-INFO
即为正确的通联信息。
当然,如果对信息的真实性存疑,可以使用下方的 SING
和 PUBLIC-KEY
对信息进行验证。
(publickey
在QSL卡片上有二维码提供备份)
3.2.1 使用在线工具验证
如果您没有代码基础,您可以使用这个在线工具进行验证。
您需要做的只有:复制 SING
PUBLIC-KEY
中的内容,点击解密即可:
将解密后的内容与原QSL-INFO
内容对比,如完全一致则代表未被篡改。
如发现有不一致的地方则原内容被篡改,请以解密后的内容为准。
3.2.2 使用Openssl命令行解密
既然你选择了这种方法,想必也不需要我教你
openssl rsautl -decrypt -pubin -inkey public.pem -in encrypted.txt -out decrypted.txt
这是一段代码示例,你需要在电脑里安装了Openssl的情况下,把公钥存储为public.pem
,加密的文本村存储为encrypted.txt
后,在该目录下输入以上命令。
该命令会使用将public.pem
解密encrypted.txt
并将解密后的结果存储为decrypted.txt
。
然后的步骤就与上一步相同:
将解密后的内容与原QSL-INFO
内容对比,如完全一致则代表未被篡改。
如发现有不一致的地方则原内容被篡改,请以解密后的内容为准。
4.原理简介
该卡片是我自己画的PCB板,将线圈预先埋在pcb内(感谢嘉立创),制作出来板子后自行焊接NFC芯片(采用恩智浦216芯片,可以存储888字节的数据)以及led灯,方便用户识别刷卡状态。
将NFC芯片内写入精简后的QSL信息,然后把写入的信息通过我手里的RSA私钥加密,得到的内容和公钥同时写入nfc卡片内,然后设置卡片为不可写入。
如QSL内容被篡改,也可以通过下方的验证信息来恢复篡改前的内容;如签名信息被篡改,无法解密或解密有误,则该卡片不可信;如公钥被篡改,可以通过卡面上的二维码获取备用公钥。这样就做到了电子卡片的不可篡改性,即使被篡改也可以被确定更正或宣布该卡片不可信。
5.相关阅读
在我没写完篇头的文章时,阅读以下内容会方便你理解:
Comments NOTHING