假设我想使用JavaScript Web Crypto API向Web应用程序添加客户端加密。我的应用程序的客户端将在将加密数据发送到服务器之前使用其密钥加密每个用户的数据,并解密服务器返回的数据以显示它。
用户如何为这样的应用程序存储密钥,而不会使用起来不方便?
是否有一些简单的方法可以将密钥存储在浏览器中?
或者每个用户是否必须将其密钥保存在其计算机上的本地文件中,并在每次登录时将其导入Web应用程序?他们可以使用像Apple Keychain这样的单独密码管理器吗?
答案 0 :(得分:1)
Web Cryptography Api的突破是为创建,使用和存储加密密钥提供本机支持,而不会泄露私钥的内容
总结:
您可以使用加密密钥,但其内容将为用户和程序员隐藏。请注意图像中的“cryptoKey”对象被浏览器隐藏
为什么不使用......
替代方案(@dandavis评论)
当必须从服务器隐藏数据时,这些解决方案是合适的。让服务器处理您需要的客户端数据(取决于密钥的类型)
对称密钥:您需要为服务器提供密钥本身(因此必须是可提取的),或者密码才能解密数据
不对称密钥:服务器使用密钥对(公共/私有)。服务器将公钥发送给客户端。从客户端发送到服务器的数据使用服务器公钥加密,并使用私钥解密。从服务器发送到客户端的数据使用客户端公钥加密,并使用客户端私钥解密。