为Crypto-js提供值

时间:2017-07-07 14:35:52

标签: angularjs cryptojs

我有CyryptoJs工作(作为服务),但我不认为我正在观察它的最佳实践。

RangeBegin=20,4~4,2~6,2

secretKey 可能不应该像那样暴露。什么是提供这种价值的聪明方法?

1 个答案:

答案 0 :(得分:0)

存在一些安全问题。

  1. 加密密钥对每个用户都必须是唯一的。

  2. 使用全长密钥:AES,128,192或256位。

  3. 最好使用从CSPRNG(密码安全随机数生成器)获得的随机字节的全长加密密钥。

  4. 使用字符串作为密钥,尤其是短密钥则不安全。如果您需要用户输入密码,请使用密钥派生功能(如PBKDF2(基于密码的密钥派生功能2))来派生安全加密密钥。

  5. 需要提供IV(初始化向量),它必须是来自每个加密唯一的CSPRNG的随机字节数组。只需在加密数据前加上IV,以便在解密过程中使用,它不需要保密。

  6. 最好完全指定所有加密参数,例如模式和填充,以实现互操作性。

  7. 如果有可能输入错误的密钥或攻击者替换文件添加加密身份验证。

  8. 为加密数据添加版本指示器,以便将来在必要时进行更改。

  9. 最后,您将如何存储加密密钥,没有简单的答案。