跳到正文

PGP 消息加密

PGP Message Tool

用一个口令在浏览器里完成 OpenPGP 消息的加解密——RFC 4880 对称模式(AES-256、SHA-256 S2K、MDC),和 gpg -c 互通;公钥加密和签名还没做。

对称 OpenPGP——`gpg -c`——是在你们之间有一个可以分享的密码短语、却没有任何密钥基础设施时,递给别人一段加密文本最简单的方式。这里在浏览器里做的正是 OpenPGP 的这一面,而对它不做的那一面,也刻意说得明白。

🔒 完全在你的浏览器里运行pgpgpgencryptsign

加密和解密都在这个标签页里完成。口令、消息和文件都不会到服务器上去。

  • 只做口令(对称)模式 —— 和 gpg -c 一样的格式(RFC 4880:AES-256、SHA-256 S2K、MDC),所以 gpg 做的消息在这里能打开,这里做的消息用 gpg --decrypt 也能打开。公钥加密和签名验证没有做。

得通过另一条渠道告诉收件人的那个秘密。

或者拖一个文件进来

有文件在的时候,加密的是文件而不是消息。结果是装甲文本(.asc)。

怎么用

  1. 粘贴消息并设置密码短语

    密码短语用 OpenPGP 的 S2K 函数(SHA-256,迭代并加盐)转成密钥,消息在它之下用 AES-256 加密。

  2. 发送带铠装的块

    输出是标准的 `-----BEGIN PGP MESSAGE-----` 块,所以粘进邮件或工单里不会损坏。

  3. 在这里或用 gpg 解密

    这是 RFC 4880 的对称模式,所以接收方机器上的 `gpg -d` 能读它,这个页面也能读 `gpg -c` 产出的东西。解密时会检查 MDC,所以篡改会导致失败,而不是悄悄成功。

常见问题

能用别人的公钥加密吗?

这里不能。只有密码短语模式——没有公钥加密,没有密钥生成,没有签名,也没有签名验证。需要这些的话用 GnuPG;一个半成品的公钥 OpenPGP 实现比没有更糟。

密码短语怎么交给接收方?

不要放在同一条消息里——那正是这套方案的整个失败模式。换一条渠道,或者用阅后即焚密语工具。

消息会到达服务器吗?

不会。加密和解密都在标签页里运行,任何时候都没有请求。

gpg 说“no valid OpenPGP data found”。

铠装块几乎可以肯定被重排过了——邮件客户端折行、聊天软件插空格,都会破坏 base64。用附件或者代码块发送。

可以从这些接进来

接下来

这些工具吃得下当前工具的产出,结果可以直接送过去。