-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
GnuPG是面向个人的数字签名和加密软件。本文介绍gpg使用中涉及的一些概念,具体的使用说明见官网。
官方网站: https://gnupg.org/
零、非对称加密
非对称加密是一种有趣的加密手段,我持有一个密钥对,其中一个公开(公钥),另一个不公开(私钥)。你要向我发送密信,并不需要事先约定密码(以省去一系列麻烦),直接用我的公钥加密,我就可以通过我的私钥解开。
一、数字签名
互联网上,乃至现实生活中,一个比较麻烦的问题是:如何证明“我”是“我”?比如在这个不通过邮件注册的2049bbs,有一天,你忘记了你的密码,你应该通过什么凭据来向管理员证明你真的是那个你呢?把这个问题推而广之:要如何在保证匿名性的同时,证明身份的连贯性呢?
这时就需要引入数字签名技术。数字签名,就是将非对称加密的过程反过来,将我的明文,用我的私钥加密,大家用我的公钥解开,然后和我的明文比对一致,就说明这则消息真的是我发送的。
二、信任模型
假设私钥存储、使用得很安全,数字签名可以验证一则信息真的是该公钥的持有者发送的。那么如何将一个公钥对应到一个身份上呢?
一种方式是通过一个第三方权威机构(CA)进行认证,证明公钥属于某人。另一种办法是信任链,签名别人的公钥,形成一个信任网络,来证明公钥属于某人。然而想要同时保持匿名性,就不能用这些办法。
如果你长期在2049bbs用某个id发布信息,如果2049本身始终没有受到攻击,https连接过程完整,那么大家就基本可以确定这个消息是你发送的。如果发生意料之中的意外,比如老大哥用高级的黑客手段入侵这里发布假消息,事情就麻烦了。但是,如果你长期用某个密钥对签名你的信息,大家就能知道某个公钥可以对应到你头上。如果老大哥假冒你的身份发送假消息,由于没有签名,或者签名错误,大家很快就能识别出来。
进一步的,如果这里被老大哥摧毁了,在新搭建的论坛,大家能够通过你的数字签名认出你是以前论坛的某某某。
三、碎碎念
- 这些密码学方法的一切可靠性都是建立在你的电脑本身没有问题的假设之上的。如果你安装了老大哥生产的电幕程序(比如QQ),如果它偷取你的私钥,事情就要打个问号。 2) 现在的硬件发展日新月异,所以在用GPG创建密钥对的时候,一定要选最长的密钥位数。
四、我的GPG公钥
(GnuPG是OpenPGP标准的一种实现。我这个公钥用的ECC算法,并不知道是不是被其他OpenPGP实现支持)
- -----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEWv0YPxYJKwYBBAHaRw8BAQdABR/MqGFOWADxMi4hZbW4cF9y0AD7KtV1m9/N V33Doc+0JUxvdmVGb3JtdWxhIDxMb3ZlRm9ybXVsYUAyMDQ5YmJzLnh5ej6IkAQT FggAOBYhBEjG+6GscGtshKWQoVgepmZ2LdKRBQJa/Rg/AhsDBQsJCAcCBhUKCQgL AgQWAgMBAh4BAheAAAoJEFgepmZ2LdKRxV0A/iviT9o99n8USbf75+ZUHjW+edjI 8R1XZ8g09AdKnajPAP0Qpbs2WkaY+z0iYu22we09cYynchGRE5Myvrh2NqUmALg4 BFr9GD8SCisGAQQBl1UBBQEBB0DDg8X+w25T1FBIPAlbSZJbmyGeJaaFxfR18a4V kN3lRQMBCAeIeAQYFggAIBYhBEjG+6GscGtshKWQoVgepmZ2LdKRBQJa/Rg/AhsM AAoJEFgepmZ2LdKRzWYBAKrNYIakENfZXF31QpHNHPVREcWjx9IxBsraye327sOE AP0aRPVtvexuedndCeHhp/GIblT1Lh2bakC0eP6rTjtXBQ== =UVZ/
- -----END PGP PUBLIC KEY BLOCK-----
-----BEGIN PGP SIGNATURE-----
iI4EARYIADYWIQRIxvuhrHBrbISlkKFYHqZmdi3SkQUCWv0qUBgcbG92ZWZvcm11 bGFAMjA0OWJicy54eXoACgkQWB6mZnYt0pEUIQEAyQedER2kNzJr2OW4mVBSMuOO M1w2LNw6eiDdzXGsrfsBAJ+JXohZLKMvh4Czag5Lu4BKCyrnqB9ZTNdslLhORzoK =F9Yv -----END PGP SIGNATURE-----