我刚刚读到了Stanford Javascript Crypto Library (jsfiddle example),它完全用javascript支持SHA256、AES和其他标准加密方案。这个库看起来很不错,但我不知道它有什么合理的用例。
正如some questions已经指出的,客户端加密不是将安全数据传递到服务器的安全方法。应该改用HTTPS。那么,有没有项目可以从客户端加密中受益,或者需要客户端加密呢?
发布于 2011-08-19 23:05:28
用例1
那local storage呢?您可能想要存储一些数据,但加密它,以便计算机的其他用户无法访问它?
例如:
H110某些数据存储在本地(使用HTTPS进行加密)用户稍后会返回站点。<代码>H215<代码>H116用户通过HTTPS连接对用户进行身份验证。<代码>H219<代码>H120服务器提供用户的加密password.
如果您有一个胖客户端,其中有大量(敏感)数据需要跨会话使用,并且由于大小的原因,从服务器提供数据是不可行的,那么这可能会很有用。我想不出有那么多这样的例子...
在应用程序的用户生成敏感数据,并且这些数据不需要(或不应该)发送到(或存储在)服务器的情况下,它也很有用。
作为一个应用示例,您可以将用户的信用卡详细信息存储在本地并加密,然后使用JS将其自动输入到表单中。您可以通过存储数据服务器端来实现这一点,并以这种方式提供预先填充的表单,但使用这种方法,您不必将他们的信用卡详细信息存储在服务器上(在某些国家,这方面有严格的法律)。显然,在用户机器上存储加密的信用卡详细信息是否比存储在服务器端更多或更少的安全风险是有争议的。
很可能有一个更好的应用示例...
我不知道有任何现有的项目使用这种技术。
用例2
如何通过密码共享来提升HTTPS的性能?
例如:
这个用例可能并不值得,因为HTTPS通常具有可接受的性能级别,但如果您需要挤出一点速度,则会有所帮助。
用例3
Host proof storage。您可以在客户端加密数据,然后将其发送到服务器。服务器可以存储和共享数据,但在不知道客户端私钥的情况下,它无法解密数据。这被认为是lastpass等服务的基础。
发布于 2011-08-19 23:06:26
就像客户端上的任何东西一样,您可以使用混淆来使临时用户更难窥视内部,但由于客户端还需要解密器的副本,因此也没有什么可以阻止用户自己使用解密器。
JavaScript是一个不安全的环境,句号。
发布于 2011-08-19 23:22:43
我想到的一个用途就是防止主机攻击。这是您希望在服务器上存储数据或通过服务器存储和转发数据,但不允许服务器访问数据的位置。
客户端可以在将数据传输到服务器之前对数据进行加密,并将私钥或至少私钥的密码保存在本地。
我相信这是lastpass等服务的基础。
https://stackoverflow.com/questions/7123511
复制相似问题