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

时间:2015-02-26 21:46:03

标签: javascript cryptography encryption-symmetric webcryptoapi

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

有没有办法保护浏览器上的这个键免受书签或浏览器插件的攻击或用户在浏览器上单步调试javascript调试器?或至少使攻击者成为一个稍微困难的问题。

编辑:问题的背景是EME规范中指定的HTML Video DRM。有一个ClearKey api是该标准的一部分,并且不需要来自WideVine或FairPlay等的封闭源插件。但是,正如多个响应指出的那样,ClearKey无法得到保护。 (遗憾的是,这意味着使用propinent DRM插件)。

2 个答案:

答案 0 :(得分:6)

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

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

在一个非常简单的比例上,他们可以放弃一些断点或在javascript控制台中放置一些prints。如果他们想要更高级,他们可以使用wireshark之​​类的工具来查看数据来自电线。

现在,如果您要向他们发送未经过解密的加密数据,并且它是高度加密的,那么它的 不是坏的。但是,如果你永远不会在他们身边解密它,那么你甚至将它发送给谁?

答案 1 :(得分:6)

同意不能这样做。您可以使用非对称加密来完成。但我会回到你为什么要这样做 - 如果连接是SSL加密的,没有理由这样做。