是否有将公钥打印为条形码的标准?

信息安全 验证 协议 相信
2021-09-03 02:38:48

是否有存储打印在纸上的公钥的标准?比如说,我想在密钥签署方分发带有我的公钥的名片,以帮助建立信任网络

我的理解是,在计算机文件中存储公钥的标准是:将该密钥作为一长串十六进制数字存储在 PKCS #12 格式的文件中。

我想我可以简单地在纸上打印出一长串十六进制数字(用于确认来自其他来源的公钥的短公钥指纹——请参阅“我应该如何分发我的公钥? ”——或者也许打印整个完整的公钥)。然后我的朋友可以手动输入它们。但是,如果我在名片上打印包含相同数据的某种条形码,例如“数据矩阵代码”或“阿兹特克代码”或“二维码”。

是否有将公钥打印为条形码的标准?

是否有将公钥指纹打印为条形码的标准?

2个回答

绝对可以打印一个二维码来显示公钥。RSA Key 的模数(例如 1024 位/128 字节)可以转换为 base64 编码字符串,并转换为可以打印在名片上的 QR 码。

将面临的挑战是:

  1. base64 编码数据的长度约为 160 或更大;这将增加二维码的密度。条形码的大小需要增加,并且将其放入名片中将是一个挑战。
  2. 能够扫描如此大容量代码的具有二维码扫描仪的移动设备的数量将会减少。硬件扫描仪可以做到,但移动扫描仪会遇到困难。

更简单的选择应该是(如果您使用的是 CA 颁发的证书)是对证书序列号和可以从中获取证书的 CA 的 URL 进行编码。在这种情况下,二维码中的数据将非常少,并且可以很容易地被移动设备扫描。你可以有一个可以解码条形码的电脑软件;点击 URL 并在系统中安装证书。

我不知道任何标准,但是使用OPENPGP4FPR包含密钥的 OpenPGP 指纹的方案创建 QR 码是很常见的(而不是整个 pubkey 本身,可以简单地从密钥服务器中检索)。

有关如何创建此类 QR 码的更多信息,请参阅此 Stackexchange 答案。