Tho*_*nin 46
如果不确定使用带有128位密钥的AES(也称为"Rijndael").如果你已经开发出某种关于密钥大小的迷信,那么你可以通过选择更大的密钥来满足你的非理性条件,例如192或256位; 额外的成本并不高(AES-256的工作负载为+ 40%,与AES-128相比,实际上需要一个非常快速的网络来观察这种差异).
请注意,无论选择何种密钥大小,AES的正确mcrypt密码始终是MCRYPT_RIJNDAEL_128.这是因为AES标准指的是具有128位块大小的Rijndael密码的风格.如果需要AES-256,则需要使用MCRYPT_RIJNDAEL_128256位(32字节)密钥,而不是MCRYPT_RIJNDAEL_256.
AES于1998年出版,并于2001年被美国政府采纳为联邦标准,现在没有出现任何弱点.后来发现了一些数学属性,但它们并没有影响实际的安全性; 大多数情况下,他们强调我们对AES安全的原因有一些相对准确的了解.没有任何其他对称加密算法能够获得比AES更多的关注(成千上万的有才华的密码学家).
大多数安全问题来自加密算法的使用方式,而不是算法本身.使用正确的链接模式,添加MAC,管理填充,并且大多数都安全地处理密钥.如果你把所有这一切都弄好了(这比它看起来要棘手得多)那么就是时候担心选择Rijndael,Twofish等等.
小智 5
除了Thomas Pornin的出色答案之外,您还必须考虑您在"安全性"(机密性/完整性/真实性/可用性)方面要实现的目标.
对于每个案例,您都需要解决几个问题,例如......这适用于哪些人?它在哪里以及为什么被使用(你在保护什么)?这意味着持续多久?等等
例如,当数据实际上仅持续20-30分钟时,对于256位操作的完全连续加密会话数据可能没有意义.一个安全的128位算法将接近两倍的速度,或至少使用较少的时钟周期,并且就像(如果不是更多)安全一样.
使用弱密钥方法加密意味着持续很长时间的东西(如机密文档或文件,私钥等......)也没有意义.您有时需要多种算法,并进行某种身份验证并正确使用填充.我根据客户要求使用多种算法(主要是twofish,AES,RSA)定期加密和签名内容.
不要忘记(就像托马斯指出的那样),你可以不安全地实施一种安全的方法(或方法).由于每个公式的大量变体等等,实际实现"安全"的东西可能很棘手.
通常,某些东西与解锁它的关键一样安全.如果我将汽车钥匙留在汽车中并且汽车已解锁,则钥匙不安全且任何走过的人都可以打开.具有良好分散的32个字符键的Blowfish将与今天的其他任何东西一样安全.然而,一个3字符的键可以在眨眼之间被打破.
| 归档时间: |
|
| 查看次数: |
17247 次 |
| 最近记录: |