如何在浏览器上保护服务器的密钥?

How to protect a server's secret key on a browser?

在此用例中,服务器向浏览器发送一个加密的 blob,浏览器上的 javascript 随后从服务器请求解密密钥并将 blob 解密为可用内容。

有没有办法保护浏览器上的这个密钥免受小书签或浏览器插件的攻击,或者保护浏览器上的 javascript 调试器的用户?或者至少让它成为攻击者的一个稍微困难的问题。

编辑:问题的上下文是 HTML EME 规范中指定的视频 DRM。有一个 ClearKey api 是该标准的一部分,并且不需要 WideVine 或 FairPlay 等的闭源插件。但是正如多个响应所指出的那样,ClearKey 无法受到保护。 (不幸的是,这意味着使用专有的 DRM 插件)。

您无法保证任何数据到达客户端后的安全性。

没有办法做到这一点。一旦客户收到这个,特别是如果他们也收到解密密钥,他们就可以完全访问其中的所有秘密。

在非常简单的范围内,他们可以在 javascript 控制台中删除一些断点或放置一些 prints。如果他们想要更高级,他们可以使用 wireshark 等工具来查看通过网络传输的数据。

现在,如果您想向他们发送未解密且经过高度加密的加密数据,那么 还不错。但是,如果您永远不会在他们这边解密它,那么您发送它是为了什么?

同意无法完成。您可以使用非对称加密来做到这一点。但我会回到您这样做的原因 - 如果连接是 SSL 加密的,则没有理由这样做。