考虑为您的评论附上PGP签名
# 前言
前几天看到了「皓子的小站」博主发的一篇博文「请一定要回复博客下的匿名评论!对于博主和评论者有关匿名评论的倡议」并与博主交流之后,发现目前博客广泛使用的匿名评论系统有严重的冒用风险,
即:游客只需要填写邮箱但很多评论系统并没有验证所填邮箱的所有权。
如果冒充者知道了被冒充者的邮箱与平时所使用的昵称,则完全可以在其他博主评论区下冒充被冒充者进行恶意评论。
而如果使用 PGP 对评论内容进行 PGP 签名,则可以很好的解决这个问题。
虽然可以通过让评论系统支持发送邮箱验证码来进行所有权验证,但 PGP 可以在不便于登录邮箱的时候使用(需要搭配物理安全密钥使用)
# 开始
# Windows
在 Windows 上,我们可以通过 Keloparta
进行这个操作。(安装 gpg4win
附带)
PGP 密钥的前期准备等工作这里不再阐述了,网络上已有大量相关教程。
打开 Keloparta
,选择 记事本
,接着点击 收件人
,这里我们将 为我加密
和 为他人加密
取消勾选,仅使用签名功能,否则别人因为没有私钥而无法看见我们想要发送的内容。
完成上面步骤后即可返回 记事本
,将自己想要签名的内容输入在记事本内,然后点击 签名记事本
,输入私钥的密码完成签名,最后就会获得类似于下面的一串文字:
1 | -----BEGIN PGP SIGNED MESSAGE----- |
大家可以试试验证签名(公钥在 Me
页面)
PGP SIGNED MESSAGE
部分为你刚刚填写需要被签名的内容, PGP SIGNATURE
部分则为签名。
校验签名也很简单,首先将对方的公钥导入 Keloparta
,此步骤非常重要,关系着签名是否可信!!!
因此一定要从信任来源下载对方的签名(例如博主提供的具有 TLS 加密(HTTPS)的下载链接),毕竟 PGP 需要自己维护信任链,因此信任链的构建十分重要(不像 SSL 证书可以依赖上游 CA 证书机构)。
导入证书时也最好校验一下对方公钥的指纹是否和对方所提供的信息一致,否则千万不要导入!!!
导入完成后将带有签名的信息复制进 记事本
,然后点击 解密/验证记事本内容
,验证通过则会显示 有效的签名
并显示由谁签名,如下图:
信任等级可以由自己设定,因为是我自己的公钥所以肯定设置为绝对信任。
经过签名的信息哪怕有 1byte 的修改都会导致校验失败,例如我将中文的 !
改为英文的 !
,经过校验后将会显示下图:
想要篡改信息的唯一办法就是对修改后的信息重新签名,而重新签名则需要私钥,因此需要妥善保管好私钥!!!(有条件可以买一个物理安全密钥,国产的 CanoKey 也就一百多块钱,不仅认证方便安全性也很高)
一旦私钥泄露请尽快吊销原 PGP 公钥,否则可能会被他人冒用!!!
# Linux
# Desktop
桌面版的 Linux 也有 kleopatra,操作方式和 Windows 版的大同小异。
# CLI(不推荐)
不建议在虚拟机或远程系统中使用智能卡,可能会出现无法识别智能卡的情况。
# 签名
使用智能卡可能需要先安装 scdaemon
、
1 | sudo apt install scdaemon |
然后重启 gpg-agent
:
1 | pkill gpg-agent |
如果不重启代理可能会出现 gpg: selecting card failed: No such device
。
不使用智能卡则无需关心上面步骤。
首先准备一个文件用来存放想要签名的文本
1 | touch test |
创建完成后将想要签名的文本写入文件
1 | nano test |
这里看自己喜好,vim,vi 也行
签名:
1 | gpg --clearsign test |
输入密码完成签名后将会在当前文件夹下生成一个 test.asc
文件
1 | cat test.acs |
即可查看已签名的内容
1 | -----BEGIN PGP SIGNED MESSAGE----- |
# 验证
首先导入对方的公钥
1 | gpg --import [公钥文件] |
然后将对方带有签名的文本保存在一个文件中,这里以 test.acs
作为演示
输入以下命令进行校验:
1 | gpg --verify test.asc |
校验成功将会出戏下方类似文字:
这里因为我使用的新的 Linux 机器所以没设置信任公钥,输入下面命令可以对该公钥进行编辑:(可选)
1 | gpg --edit-key [Key的ID] |
然后会让你选择信任等级
因为是我自己的密钥,所以我选择等级为 5 的绝对信任
1 | Please decide how far you trust this user to correctly verify other users' keys |
Use this card to join MyBlog and participate in a pleasant discussion together .
Welcome to GoodBoyboy 's Blog,wish you a nice day .