免费工具

为收件人加密

用密码加密的难处在于密码总得想办法送过去——而且要比消息本身送得更安全。这里不需要:收件人把自己的公钥公布一次,你用它加密,只有他能用自己的私钥读出来。事先什么都不用约定。

密钥和加密都在你的浏览器里计算。密钥和文字我们都看不到。

留空——收件人能读,但不知道是谁发的。填上密钥——他能看到是用谁的密钥加密的,而这无法伪造。

密钥和消息都不会发往任何地方:全部在这个标签页里计算。

两个人之间怎么用

收件人来到这里,生成一对密钥,把公钥公布出去——放在网站上、个人资料里、置顶消息里。私钥自己留着。任何想给他写信的人拿这个公钥加密消息,然后把得到的那一行哪怕发在公开聊天里都行。只有私钥的主人能读它。

公钥只能用来加密——不能用来解密,所以分发它是安全的。这正是和密码的根本区别:在密码方案里,同一个秘密既上锁又开锁,所以不得不把它传来传去。

唯一的薄弱点

不在算法,而在你从哪里拿到的公钥。能在半路篡改消息的人也能篡改密钥——那样你就是在给他加密,他读完再转给真正的收件人,谁也察觉不到。所以密钥不能来自和通信相同的渠道:要来自收件人的网站、置顶消息、名片,或者他本人。

相关工具: 给消息签名,如果要证明一段公开文字的作者; 用密码加密文字,如果确实有共享密码;还有 加密文件.

密钥和消息我们都不保存

就像 VPN 本身不保存访问日志一样:真要交,也没有什么可交。

原理 →

常见问题

guest@404vpn:~$ cat box-faq.md
[01] $ 这比用密码加密好在哪?
> 好在不需要共享秘密。密码得通过另一条渠道送过去,和陌生人之间这几乎是无解的。这里收件人把公钥公布一次——放在网站上或个人资料里——任何人都能给他写信。公钥不是秘密:用它只能加密,不能解密。
[02] $ 两种模式——匿名和署名——是什么?
> 匿名:每条消息都生成一次性的密钥对,发送方根本不需要自己的密钥。收件人能读消息,但不知道是谁发的。署名:你用自己的私钥,收件人能看到是用哪个密钥加密的——这无法伪造。第一种适合写给陌生的收件人,第二种适合在意“谁在写”的通信。
[03] $ 我把私钥弄丢了。消息还能恢复吗?
> 不能。私钥是读它们的唯一办法,而它从来没在我们这里。如果不想丢密钥,就从口令推导它:那样记住口令就够了。但那样盐对所有人都一样,否则密钥就无法重现——也就是说,短口令等于把密钥交了出去。
[04] $ 公钥是在同一个聊天里发给我的。这够吗?
> 不够。能篡改消息的人也能篡改里面的密钥——那样你就是在给他加密。密钥必须来自已经用别的方式得到过确认的地方:收件人的网站、频道的置顶消息、名片。这不是吹毛求疵,而是整套方案唯一的薄弱点。
[05] $ 你们会保存密钥或消息吗?
> 不会。页面工作时一个网络请求都不发——全部在这个标签页里计算。密钥、明文、密文,我们一样都看不到。