gpt4 book ai didi

javascript - 如何保护客户端使用的 AES 密码?

转载 作者:行者123 更新时间:2023-11-30 05:58:10 25 4
gpt4 key购买 nike

我想在这里使用斯坦福的 AES 实现:

http://crypto.stanford.edu/sjcl/

但是,如果我按照他们的建议使用它,它本质上是没有用的

SJCL is easy to use: simply run sjcl.encrypt("password", "data") to encrypt data, or sjcl.decrypt("password", "encrypted-data").

因为任何人都可以简单地加载我的网站,查看 java 脚本并使用密码以与我相同的方式解密数据。

我如何使这个解决方案有用?

最佳答案

经过更多的来回交流,我想我更了解您想了解的内容,足以给您答案。让我知道这是否是您要找的。

通常,管理对称 key 非常困难。对称密码有两个主要用途:

  • 保护存储数据的隐私以供同一个人日后使用。如果您使用在线备份服务,您确实希望您的数据在上传到在线服务之前在客户端被加密——您不希望他们以明文形式访问您的数据。但是,当您将来解密数据时,就是提供 key 的人。这意味着您可以将 key 存储在离线媒体(CD-R、USB 内存棒、SD 卡、显示器旁边的小笔记本......)或在线(浏览器 cookie、某种操作系统提供的钥匙串(keychain)或标准文件)上。 ..).

  • 在两方之间传输数据时保护数据隐私。一方加密数据,另一方解密数据。这就是 spy 通信的方式,TLS 如何提供 HTTPS 客户端到服务器的安全性,SSH 如何提供客户端到服务器的安全性。在这种情况下,双方需要同意将使用的 key ,这可以通过 Diffie-Hellman-Merkle Key Exchange 来完成。或使用 public-key encryption algorithm such as RSA允许一方以只能由另一方解密的方式加密随机生成的 session key 。

您找到的库看起来针对第一种情况进行了高度优化——允许用户加密他们的数据以供您存储并在以后为他们检索。因为他们使用 password based key derivation function它准备好通过简单地在键盘上键入来处理糟糕的密码——该功能将允许从人类可以(或将)在键盘上键入的内容构建更安全的 key 。

当然,它可以用于第二种情况,但假设您在具有完整 TLS 支持的浏览器中使用它,它可以提供端到端的安全性以防万一您选择同时使用客户端证书和服务器证书。

如果您选择允许用户通过您的软件存储加密数据,您一定要明确解密 key 的存储位置。我可以看到一个用例,让浏览器上的 cookie 存储 key ——这样用户在需要数据时不需要重新键入它。但是,如果他们更换机器或浏览器,他们将需要知道密码,以便再次检索数据。

但是,如果用户认为他们的数据是“安全的”,也许他们应该在每次要使用他们的数据时重新键入他们的 key 。这样,用户独自负责 key 的安全;允许暴露 cookie 数据或本地运行的恶意代码的浏览器缺陷不能简单地从磁盘读取 key 。

当然,所有这一切的缺点是没有一个简单的答案:您必须在存储密码的简单性不存储密码的安全性之间做出选择。 p>

关于javascript - 如何保护客户端使用的 AES 密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10559695/

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