我们可以相信onetimesecret吗?

信息安全 密钥交换
2021-08-25 17:36:30

爱丽丝:我需要文件

Bob:当然,我想先加密它。请使用复制和粘贴方法将强 PGP 对称密钥放到https://onetimesecret.com/并将链接发送给我。

爱丽丝。完成,网址是 xxxxxxxx

Bob:很有趣,链接是空的。

爱丽丝:我知道,这只是一个测试,如果我能相信你……这里是正确的,xxxxxxxx

鲍勃:非常感谢。你在英国老大哥的最后一集中看过剪发的场景吗?

爱丽丝:我有什么?

Bob:Malika 以一种舒适的方式使用了理发器……

爱丽丝:嗯。

Bob:算了,这里是电子邮件附件,使用 AES128 算法进行了高度加密。玩得开心。

爱丽丝:也谢谢。别客气。再见

Alice 和 Bob 在他们之间使用了一项服务来交换密码。乍一看,他们做得很好。但他们必须相信这个网站曾经是秘密的。如果攻击者拥有该网站,他也知道 PGP 对称密钥。交换密钥的更好选择是什么?

4个回答

通过使用密码学,密钥交换通常在不使用外部服务的情况下完成。最流行的密钥交换算法是Diffie-Hellman

引用维基百科:

Diffie-Hellman 密钥交换方法允许彼此没有先验知识的两方在不安全的通道上共同建立共享密钥

如果您使用 Diffie-Hellman,请不要使用匿名版本,而是使用固定或临时 DH。看到这个答案

显然,不要为任何真实的东西(即自学之外)滚动你自己的密码学。为此使用 OpenSSL 之类的东西。

交换密钥的更好选择是什么?

以什么方式更好?安全?简单?

在安全的情况下,有多种密钥传输方法。

例如,通过电话提供 10 个字符,通过文本提供 10 个字符,通过 onetimesecret 提供更多,通过另一个网站提供更多(例如,https: //read-once.info )。

这样,即使其中一个网站/传输方法不受信任,它们也没有完整的密钥,而只有一小部分。

当然,除了纯文本,你也可以先用 Alice 的公钥加密。如果您愿意,您还可以提供无用(或不够)的信息,让 Alice 轻松找到正确的密钥。

例如,当完整密钥为“XYZ123ABC”(未使用“!@#”)时,通过不同的传输方式给Alice“ABC”、“123”、“!@#”和“XYZ”。

也就是说,让 Alice 置换所有给定的部分。

我不相信第三方存储秘密,但我确实喜欢能够通过 URL 链接共享的便利。

为了两全其美,我编写了 self-destruct-o ( https://self-destruct-o.control-alt-del.org/ )。

它在概念上类似于 onetimesecret,但有一些优点:

  • 在此处运行您自己的实例、代码和说明很简单:https ://github.com/marksteele/self-destruct-o
  • 无需服务器!(尽管您需要一个 Amazon AWS 帐户)。后端可以在免费层中运行!
  • 在为密钥提供密码时,它会从密码中派生出一个加密密钥,然后在您的浏览器中以 CBC 模式使用 AES-256 对值​​进行加密,然后再将其发送到后端服务。

您可以通过电子邮件发送链接,并通过第二个渠道(例如:电话、短信)分享密码,并确保没有人可以截获该秘密。

更多详细信息:https ://www.control-alt-del.org/post/one-time-password-sharing-securely/

有很多方法,如何正确共享密钥。例如,如果您设法验证了 PGP 公钥,则可以使用它进行加密。然而,这总是需要亲自进行一些验证才能完全安全。

但是,如果您想要一个最接近您的示例并且“足够安全”的解决方案,那么有一个名为privatebin的不错的服务。它是开源的,您可以自己托管它更重要的是,粘贴是在您的浏览器中使用对称密钥加密的,对称密钥是链接的一部分。它在收件人浏览器中被解密。因此,Privatebin 网站的所有者无法阅读您的粘贴,也无法看到您的对话并获取链接。

另一种选择是社会密码学,例如使用Deamonsaw社会密码学的工作方式是,您使用共享知识来制作密码层。因此,例如您要求其他人使用您第一次遇到的地方作为第一层的密码。然后你问他们第二个问题,依此类推,直到你确信只有正确的人才能知道所有的答案。