PHP Mcrypt,它真的有多安全?

时间:2012-06-15 13:44:20

标签: php encryption mcrypt

目前我正在开发一个处理一些非常敏感的个人信息的项目,虽然它不是后备数字,但它仍然是敏感的个人信息,我想做我能做的一切来加密和存储这些信息。 mysql尽可能安全。所以现在我正在寻找可以处理这些敏感信息的一些安全措施。

我发现加密/解密字符串和文本块的一种简单方法是使用mcrypt。但是当我在stackoverflow上搜索mcrypt时,我注意到很多人都告诉mcrypt不是那么安全。

所以现在我想知道,它真的有多安全吗?如果安全地存储密钥,是否需要大量的黑客技能,比如专业技能,才能破解和解密存储的信息?我是否需要担心一个技能很少的黑客可以解密我将要存储在mysql服务器中的加密信息?那么破解用mcrypt加密的加密信息需要哪些技能?

如果Mcrypt不够用,那么使用gnupg扩展并不复杂的好选择是什么?

1 个答案:

答案 0 :(得分:17)

您可以遵循的小指南,以避免一些陷阱并提出一些建议。

  • 不要为两个不同的消息重复使用相同的加密密钥和初始化向量(IV)。
  

如果攻击者在传输过程中使用相同的密钥和IV拦截两条或更多邮件,那么这样做会冒明文行的风险。

  • 不要使用ECB模式; OFB和CTR模式稍好一些,但建议使用CBC或CFB模式。
  

不使用ECB的主要原因是因为此模式泄漏了有关可能破坏编码数据流的重复纯文本块的信息。

     

OFB和点击率更好,但他们遭受上述多次使用相同IV +组合键的安全问题。

     

CFB和CBC对IV +密钥重用的抵抗能力最强,但具有相同公共前缀的单独消息将泄露出所述前缀的长度。此外,CFB泄露了第一个不相同的纯文本块的差异。

  • 确保您拥有强大的加密密钥

      

    应从可打印的ASCII中选择(例如 not “my super strong secret key”); PBKDF2将是首选(很快就会得到本地支持,直到谷歌它)。很明显,这把钥匙必须保持安全;如果你失去它,再见数据。

  • 使用好的熵源生成初始化向量。

      

    当您致电mcrypt_create_iv()时,Mcrypt可以选择使用MCRYPT_DEV_RANDOM或MCRYPT_DEV_URANDOM。

希望这会对你有所帮助:)。