加密算法的安全性如何衡量,用同样的加密算法,操作多次次比一次更安全吗?

比如f(f(x))与f(x)
关注者
5
被浏览
2,699

2 个回答

可以参见NIST SP 800-57标准,你暗含的意思其实是针对对称加密,一般来说用不同密钥多次加密会更安全一些,但安全强度不一定跟加密次数成线性关系,比如DES强度为56bit,用俩密钥加两轮的话,强度并没有达到112bit,在中间相遇攻击下,它的强度只相当于57bit。

更有甚者,如果一个对称算法构成一个群的话,也就是说任意两个密钥K1和K2,都存在一个等效密钥K3,使得 E(K3, P) = E(K2, E(K1, P)),那它加密多少次都不会更安全。

PS: 这里说的(最大)安全强度,意思是破解一个算法密钥所需的最大计算量,例如AES-128的密钥和块长度都是128bit,而目前又没有比穷举更好的破解方法,那它的强度就是128 bit,敌手最多需要穷举2^128个密钥才能破解。

PRF (伪随机函数) 的安全性就是在明文已知的情况下,用任何有效算法甄别出一串随机数和一串明文加密之后的密文的概率几乎为0。

操作多次不会比一次更加安全,使用DES加密,同样的密钥加密三次的安全性不大于加密一次的安全性(可见相关文章),但是3DES这种另说。

如果你有需要提高一定过程中的加密系统的安全性,可以考虑

  1. 使用更加安全的加密算法例如AES,或者计算时间可能更长的操作(类似PKDF)
  2. 使用更长的密钥 (安全性大多都和密钥长度正相关)