如何在丢失私钥后恢复端到端的加密数据?
我正在创建一个带有聊天功能的移动应用程序。因为我想确保它的安全,所以我会对消息和数据进行加密。我正在考虑使用端到端加密,但我有一些问题。每个用户都有私
解答动态
您找到了另一个平衡安全性和可用性的例子。如果您想要真正的E2E加密,最终用户需要负责他们的密钥和可能的消息备份。如果你不这样做,你会陷入一个灰色地带,所有东西都是E2E加密的,但有些功能允许恢复邮件。换言之,即使流量被加密,该软件仍然可以访问旧的消息-这在某种程度上挫败了E2E的观点。例如,WhatsApp选择实现一种功能,用户可以要求重新发送所有传递(接收)的消息,而发送者却不知道这一点。如果用户真的更换了智能手机,他们会自动恢复所有的旧信息。伟大的。。。但这意味着应用程序包含了系统请求将所有内容发送到恶意地址所需的所有内容。Glp…
说你是靠你自己。前提是您知道任何恢复选项都会降低总体安全性,这对您来说很好。如果你想说实话,你也应该提醒你的客户。。。不用太担心,他们中的大多数人都坚持要对所有发送或接收的邮件进行强E2E加密。但对他们中的大多数人来说,能够恢复他们的消息远比知道攻击者可以轻松访问它们重要得多。。。如果说了E2E加密和强加密这两个神奇的词,他们会很高兴的。
如果用户更换设备,重新安装应用程序,存储在客户端的私钥将丢失。我知道我可以为将来的消息创建新的密钥对,但是如何恢复旧的密钥对呢?
为什么要恢复旧的?生成新密钥并分发。私钥不应该离开生成它的设备。如果需要消息历史记录,请将其本地存储在用户设备上,而不是服务器上,并为用户提供备份选项。这大概就是Signal所做的。
我想把私钥存储在服务器上,但它根本就不安全。我以为在用用户密码加密私钥之后再存储私钥是安全的,因为我不知道用户密码,但是如果用户丢失了密码并用“丢失我的密码电子邮件”重新创建,也会失败。
不要为用户存储密钥。句号。这使得E2E有点毫无意义。
另一个问题是,如果发生法律问题,我不能把聊天日志交给,因为我没有解密的消息,或者我不知道如何解密,因为我没有私钥。
你不能交出任何你没有的东西。如果信息是E2E,而你不储存它们,你就没有什么可以给的了。这就是E2E的重点—提供商没有消息,也不能向任何人透露消息。
我建议您查看其他平台(如Matrix和Keybase)的实现也是。储存服务器上的私钥完全打破了使用e2ee的界限,因为服务器现在基本上可以查看所有的聊天记录。
我建议使用的是一种纸钥匙/种子短语(检查BI 9),它可以打印/写在纸上,甚至可以记忆,并且清楚地表明,丢失这个钥匙会导致无法访问旧的聊天记录。您可以选择允许用户对密钥进行云备份(我强烈反对),以满足那些不希望使用e2ee的用户的需要。如果是这样的话,我会鼓励通知其他用户。我还建议检查矩阵.org的多设备交叉签名的实现,关于如何允许多设备支持的指南。
我还建议阅读密钥库.io的博客文章[1][2][3][4][5]介绍了他们的系统是如何工作的。就我个人而言,我并不认为重新发明轮子有什么意义,矩阵.org的实现完全符合您的要求,你也可以用你自己的功能/网络应用程序(想想矩阵.org
大多数好的选择已经包含在前面的答案中。还有一个值得一提的选项:允许用户导出私钥,并将其存储在他们认为安全的地方,也许是在他们的密码管理器中。这种方法有几个缺点,但也有一些优点:它实现了可恢复性,而不会完全失去e2ee的作用,因为您的服务器永远无法访问私有服务器钥匙。开另一方面,它确实将私钥的安全给了用户,甚至比以前更多,并使他们面临网络钓鱼攻击,有人可能会试图诱使他们将私钥发送给对手。你必须考虑到你期望的用户群中有什么样的专业水平。如果你的目标是这个社区的人,这种方法可能是好的,但是如果你的目标是我们祖母的,我可能不会建议你这样做
- End
免责声明:
本页内容仅代表作者本人意见,若因此产生任何纠纷由作者本人负责,概与琴岛网公司无关。本页内容仅供参考,请您根据自身实际情况谨慎操作。尤其涉及您或第三方利益等事项,请咨询专业人士处理。