[RFC] QSL 卡片的数字签名
最近几天重新研究了一下,提出几点想法
这个 qsl signature 的具体场景是不是更多的对 一张 QSL Card 进行签名?
如果是的话,是不是可以强制要求签名有效载荷只包含一条 Record?
理论上来说,一张 QSL Card 基本上不可能写很多信息,如果是不同的通联组合,如 Mode 不同,那么交换双方一般会采用多张 QSL Card 进行
另外这个数字签名办法可能更像一个 Specification,日后随着时间的演进,如果出现性能更好的更 compat 的签名和 hash 算法,可以考虑进行替换,最好采用一个版本系统对它进行追踪,在具体签名的字段设置上也应该设置上对应的版本字段,以方便 client 进行版本兼容(不过这个版本字段应该都设置上了)
最后,本文大量引用了 openssh PROTOCOL.sshsig 文档作为其前置知识,但是最后的参考资料却没有引用,这里附上网址
- AD2AG
- 已编辑
erjiaqing
试了一下 GPG,一个 detached 签名需要 119 字节,介于完整签名的 168 字节和精简签名的 54 字节。并且 GPG 签名保留了签名时间戳和签名密钥信息。感觉可以放进 2.0x2.0 cm 的区域。
另外,有没有考虑过别的形式的二维码,比如 PDF417 这种宽度换高度的二维码,就可以把他挤在角落里了。或者像护照信息页最下方的可机读区域一样,用一些方便 OCR 的字体来直接打印 base45/64 的内容。
例:一个 GPG detached signature
gpg --list-packets .\test.sig
# off=0 ctb=88 tag=2 hlen=2 plen=117
:signature packet: algo 22, keyid XXXXXXXXXXXXXXXX
version 4, created 1688418964, md5len 0, sigclass 0x00
digest algo 10, begin of digest 45 3a
hashed subpkt 33 len 21 (issuer fpr v4 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)
hashed subpkt 2 len 4 (sig created 2023-07-03)
subpkt 16 len 8 (issuer key ID XXXXXXXXXXXXXXXX)
data: [253 bits]
data: [256 bits]
AD2AG
PDF417 感觉识别有点困难,我用 qq 和微信还有手机自带是扫描功能,只有微信能扫描,但是是按商品码扫的,出来不了有效信息
还是得考虑一下解码难易度
Yofoa-Film-Studio
考虑到用了签名算法之类的,要么是做微信小程序,要么是自制的 Android/iOS 程序,应该都可以直接用 PDF417 解码库来获得信息。感觉无论是 QR 还是 PDF417,最终都是调用解码库,解码难易度应该不是问题。
我主要不确定的是 PDF417 是不是对针式打印机友好。
AD2AG
用户侧考虑肯定是越简单越好
然后验证可以不局限于 app,HTML 现在也可以调用摄像头拍照然后本地解码 https://github.com/mebjas/html5-qrcode
这个有意思 支持一下
PGP 方便, 或者用 S/MIME 邮箱
有 demo 了不,以及公钥如何分发
- BG6TOE
- 已编辑
做了一个 DEMO https://qsl.matsu.dev/#/
生成:https://qsl.matsu.dev/#/signer
QR Code 的 payload 有所不同,实际上的 payload 是:
base45("BG6TOE-QSLV1" || <public key> || <ed25519 signature>)
代码比较糙,整理一下再开源