********* 快速入门 ********* OpenPGP-Web 是一个符合 OpenPGP 标准的非对称加密程序,如果您了解非对称加密算法或之前使用过 GnuPG 您可以跳过此章节。 关于公钥加密算法(非对称加密算法) ---------------------------------- 一些名词的简单解释: ^^^^^^^^^^^^^^^^^^^^ * 公钥:此密钥是公开的,别人可以使用此密钥对信息进行加密,加密后的信息只能使用与公钥相对应的私钥解密;由你的私钥签名的信息也只能由相对应的公钥进行验证。 * 私钥:**此密钥需要严格保密** ,私钥可以解密由相对应公钥加密的信息,也可以对信息进行数字签名。 * 吊销密钥: **此密钥也需要严格保密** ,如果你的私钥发生泄露,你可以用此密钥撤销别人对你的公钥的信任。 * 密钥对:指相配套的公钥和私钥和吊销密钥。 * 数字签名:数字签名就是使用私钥对被签名的信息生成一段特殊信息,这段信息只能由这把私钥生成并可以由相对应的公钥验证, 如果信息被篡改,那么验证就会发现问题。所以数字签名保证了信息的不可篡改性和不可抵赖性。 * 明文:未被加密的信息。 * 密文:被加密的信息。 关于OpenPGP ------------ OpenPGP 是一种加密的标准,并不是一种特定的软件。 这个加密标准由IETF(Internet Engineering Task Force)制定, 标准原文见 `RFC4880 `_。 根据这个标准有很多的相关的软件的实现,本程序就是其中的一个实现,在所有实现中最出名的就是 ``GnuPG`` , 所有符合 OpenPGP 标准的实现都可以相互兼容,也就是说你使用本程序加密的信息是可以用 GnuPG 及其他符合 OpenPGP 规范的程序进行解密, 同理,使用 GnuPG 及其他符合 OpenPGP 规范的程序加密的信息也可以用本程序解密。 OpenPGP-Web 使用方法 --------------------- 1.如何生成密钥对 ^^^^^^^^^^^^^^^^^ 1. 进入 ``密钥管理`` 中的 ``生成密钥对``。 2. 在 ``姓名`` 处输入你的姓名,在 ``电子邮件`` 处输入你的电子邮件(如果你没有你可以将此项留空),在 ``私钥密码`` 处输入你要设置的私钥密码。 3. 上述设置完成后,点击 ``确认生成此密钥`` ,这时程序就会开始生成密钥对,生成过程中可能会需要一些时间,但应该会在30秒内完成。 4. 密钥对生成后,你可以在下方选择复制密钥或保存密钥。 2.如何给别人加密信息 ^^^^^^^^^^^^^^^^^^^^^ 1. 取得别人的公钥并在 ``密钥管理`` 中的 ``添加密钥`` 导入密钥。 2. 回到主页面,进入 ``文本加密`` 。 3. 在 ``请选择公钥`` 处选择对方的公钥。 4. 在 ``请选择私钥`` 处选择你要签名用的私钥并在下方输入私钥密码,如果你没有私钥或不想进行数字签名,你可以勾选 ``禁用签名`` 。 5. 在 ``请输入要加密信息`` 中输入你要加密的信息,输入完成后,点击 ``加密和签名`` (如果禁用签名则为 ``加密`` ), 加密完成后,在下方就会出现加密后的信息,你现在就可以把这个信息发送给对方。 3.如何解密被加密的信息 ^^^^^^^^^^^^^^^^^^^^^^^ 1. 如果你已经添加了私钥,可以直接看第二点。在 ``密钥管理`` 中的 ``添加密钥`` 添加相对应的私钥。 2. 回到主界面,进入 ``文本解密或验证签名`` 。 3. 在 ``请粘贴密文或明文签名`` 处输入被加密的信息,完成后点击 ``解密或验证签名(文本)`` 或 ``解密或验证签名(二进制)`` ,然后在弹出框中输入私钥密码,如果没有错误,界面下方就会出现解密后的信息或下载链接。 4.如何创建明文签名 ^^^^^^^^^^^^^^^^^^^ 1. 按上述步骤添加私钥。 2. 进入 ``创建明文签名`` ,在 ``请选择私钥`` 处选择签名使用的私钥并输入私钥密码。 3. 在 ``请输入要签名的信息`` 处输入要签名的信息,完成后点击 ``签名`` ,这时界面下方就会出现签名后的信息。 5.如何验证明文签名 ^^^^^^^^^^^^^^^^^^^ 1. 添加签名者的公钥。 2. 进入 ``文本解密或验证签名`` 。 3. 在 ``请粘贴密文或明文签名`` 处粘贴要验证的明文签名,完成后点击 ``解密或验证签名`` ,如果没有错误则会在界面下方显示 ``签名有效`` 否则就会出现相应的报错信息。 6.关于密钥尺寸 ^^^^^^^^^^^^^^ .. note:: 对RSA来说,密钥尺寸越大在私钥不泄露的情况下安全期限就越长,但加密解密的速度也就越慢,密钥的大小也越大。通常情况下2048位的密钥已经够用了。 .. warning:: curve25519 是基于椭圆曲线的密码,现在的兼容性还不是很好(本程序已全面兼容) 密钥与安全期限的关系: ============= ======================================= 密钥位数 安全期限 ============= ======================================= 2048 在2030年之前被认为是安全的 3072 在2040年之前被认为是安全的 4096 在2040年之后若干年内也被认为是安全的 curve25519 在2040年之后若干年内也被认为是安全的 ============= ======================================= 7.如何迁移密钥 ^^^^^^^^^^^^^^^ .. note:: 拥有密钥的设备(通常是当前正在使用的浏览器或设备),我们用 A 来表示,没有密钥(即将导入密钥的设备或浏览器)我们用 B 表示。 因为每一对密钥都可以说是独一无二的,所以当你打算更换浏览器或者在不同的设备上使用同一对密钥,你就需要把你目前使用的密钥迁移到其他设备或浏览器中。 具体方法如下: 1. 进入 A 中的密钥管理,选择导出密钥,导出你要导出的私钥 2. 进入 B 中的密钥管理,选择导入私钥,导入你刚刚导出的私钥 3. 重复 1,2 步,直到你迁移完了所有你想要迁移的私钥 4. 进入 A 中的密钥管理,选择导出密钥,导出你要导出的公钥 5. 进入 B 中的密钥管理,选择导入公钥,导入你刚刚导出的公钥 6. 重复 4,5 步,直到你迁移完了所有你想要迁移的公钥 现在你就可以在 B 设备上使用原来的密钥进行加密解密了 8.对称加密 ^^^^^^^^^^^ 1.使用密码加密 ''''''''''''''' 在 ``使用密码加密文本`` 中输入你要加密的信息以及使用的密码,再点击加密即可 2.解密使用密码加密的信息 ''''''''''''''''''''''''' 直接在 ``文本解密或验证签名`` 中操作即可 如何判断对方发过来的是公钥、私钥、密文还是签名 ----------------------------------------------- 判断的方法很简单,只要看文本的开头或结尾就可以了,具体可以参照下面的表格 ====================================== ======================================= ============= 开头 结尾 类型 ====================================== ======================================= ============= -----BEGIN PGP PUBLIC KEY BLOCK----- -----END PGP PUBLIC KEY BLOCK----- 公钥 -----BEGIN PGP PRIVATE KEY BLOCK----- -----END PGP PRIVATE KEY BLOCK----- 私钥 -----BEGIN PGP MESSAGE----- -----END PGP MESSAGE----- 加密信息 -----BEGIN PGP SIGNED MESSAGE----- -----END PGP SIGNED MESSAGE----- 签名信息 -----BEGIN PGP SIGNATURE----- -----END PGP SIGNATURE----- 签名 ====================================== ======================================= ============= 关于本程序的安全性 ------------------- 本程序的加密解密以及签名操作使用的是 OpenPGP.js 库,这个库经过了多次的安全审核,安全性是可以保证的。 本程序的其他部分是由我编写的,所有的操作和数据均在你使用的浏览器中保存,不会有任何数据被上传到网络, 程序的源代码都可以在 https://github.com/Longhao-Chen/OpenPGP-Web 找到,欢迎进行审核。