我正在加密一些需要留在客户端的数据,Salt,Key和IV也是如此。是否有一种在客户端处理此数据的标准方法,以防止人们发现它并加密您的数据?
我可以想到很多东西可以掩盖它们,但必须有一种行业标准的方法来解决这个问题。
答案 0 :(得分:1)
如果已知IV和盐,则没有额外的安全风险。 IV's可以安全存放,盐可以帮助prevent precomputation and rainbow tables。
所以你真的只是谈论关键。有几个解决方案,每个解决方案都有自己的权衡。在您的问题中,您只提到需要加密客户端上的数据。客户端不需要解密吗?
如果这是Windows客户端,您可以使用Data Protection API来保护用户凭据下的密钥。
使用密码短语保护密钥。如果您不介意每次客户端需要密钥时输入密码,这可以提供合理的保护,并且在大多数密码系统(如OpenPGP)中都支持它。
如果客户端只需要加密,则可以使用带公钥的混合方法(如OpenPGP)。在这种情况下,您只将公钥存储在客户端上,并将私钥存储在安全的地方。加密数据时,您将生成随机对称密钥,并在客户端的公钥下对其进行加密。现在,如果有人破坏了计算机,他们将无法解密任何会话密钥。
使用hardware security module或智能卡等专用硬件。这是最昂贵的路线,但根据您的威胁模型可能是可行的。