快速入门

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.关于密钥尺寸

注解

对RSA来说,密钥尺寸越大在私钥不泄露的情况下安全期限就越长,但加密解密的速度也就越慢,密钥的大小也越大。通常情况下2048位的密钥已经够用了。

警告

curve25519 是基于椭圆曲线的密码,现在的兼容性还不是很好(本程序已全面兼容)

密钥与安全期限的关系:

密钥位数

安全期限

2048

在2030年之前被认为是安全的

3072

在2040年之前被认为是安全的

4096

在2040年之后若干年内也被认为是安全的

curve25519

在2040年之后若干年内也被认为是安全的

7.如何迁移密钥

注解

拥有密钥的设备(通常是当前正在使用的浏览器或设备),我们用 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 找到,欢迎进行审核。