gpt4 book ai didi

javascript - 如何使用 'host-proof' 范例共享信息?

转载 作者:行者123 更新时间:2023-11-30 05:59:42 26 4
gpt4 key购买 nike

我正在尝试制作一个基于 Web 的安全密码管理和共享实用程序,这既是一种学术练习,也是为了充分理解和安全地使用它。

我真的很喜欢“主机证明”应用程序的想法,其中加密/解密是在客户端使用 javascript 完成的,并且只有加密信息才会离开浏览器,很像 PassPack 或 Clipperz。我想不通的是 Passpack 是如何设法让人们共享密码的。如果不通过服务器将纯文本或加密 key 传输给其他用户,我看不出如何做到这一点,这使得该过程从本质上打破了“主机证明”范例。

谁能指出我的解决方案?

最佳答案

要创建这样一个既有用又安全的系统,您至少需要克服三个主要障碍。

首先,用户必须在网络界面中输入他的私钥。 RSA key 通常至少有 1024 位长,因此即使您使用相对高效的 base64 编码(这可能是一个糟糕的选择,因为使用的许多字符在视觉上相似),用户也将不得不输入 171 个无意义的字符。使用键盘,这将是乏味且容易出错的。

其次,客户端运行的javascript代码来自网络服务器。您试图通过在客户端进行加密和解密来避免攻击者访问服务器上的明文密码的风险。但是如果攻击者可以访问存储在服务器上的明文密码,他们可能也有能力修改服务器发送的 javascript 代码。如果攻击者可以修改javascript代码,他们就可以使用修改后的代码来获取用户的 secret 。

最后,运行客户端代码的硬件和软件的安全性。如果用户使用的硬件和软件遭到破坏(例如使用键盘记录器),则可以在那里捕获 secret 。所以为了安全起见,用户将只能使用他控制的计算机。如果您只能使用您控制的计算机,那么基于 Web 的系统相对于传统客户端-服务器系统的许多优势都会被抵消。

如果你能解决这些问题,将公钥存储在服务器上作为 Inerdial 似乎是一个不错的选择,尽管你会遇到用户无法知道服务器发送的公钥是否正确的问题真正由他们想要向其提供密码的人控制,而不是由攻击者控制。

Nate Lawson 在 his Google Tech Talk 中提到了 javascript 密码学.

关于javascript - 如何使用 'host-proof' 范例共享信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9401786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com