对于一个密码算法,很难精确的定量描述它的安全性,常见的定性安全模型主要包括以下内容。
1.无条件安全性。假设攻击者有不受限的计算资源,在此模式下,只有当密钥与明文的大小相同时,安全的加密才存在。每个固定的密钥只能用来加密个明文消息,所以无条件的安全性对实用的分组密码来说不是有用的模式。
2.多项式安全性。与无条件安全性构成鲜明对比,假设攻击者的计算资源是有限的,具体而言,假定攻击者有一个运行多项式时间的概率算法,根据攻击密码系统的可行性来考虑密码系统的安全性。这个模式起源于复杂性理论,基于攻击者仅有多项式的计算资源的假定。该模式常考虑最坏的情况,渐近地分析确定一个密码的多项式攻击是否存在,然而,即使这种攻击存在,仍不能保证这种攻击是实际可操作的。
3.“可证明”的安全性。一般这意味着两件事情:第一,若可以证实破译一个分组密码与解决某个大家都知道的困难问题一样困难,则该密码可认为是安全的;第二,一个分组密码可被证明抗击某种已知的攻击。然而,应强调这并不意味密码可抗击所有的攻击,所以把“可证明”加上引号,以免被误解。
4.实际的安全性。在这种模式下,若一个最好的攻击方法需要的计算资源超出安全边界过多,则可认为该密码是实际安全的。对不同的已知攻击,可分别测试其所需的时间与空间资源,然后估计其强度。在分析具体的密码时,这种模式提供更多的信息,虽然它不能抗击未知攻击。
5.历史的安全性。由密码吸引的注意力的量来估测密码安全水平是非常有用的。然而,也应注意到,密码强度并不总是依据它存在的时间来测量的。
由于大多数情况是在“实际安全性”的模式下考虑问题,因此常根据密码攻击要用的时间、存储、数据复杂性来测量攻击成功的水平。对一个N bit的分组密码,应重点考虑下列复杂度。
·数据复杂度:进行一个攻击所要输入的数据量。
·处理复杂度:实施一个攻击用的时间。
·存储复杂度:需要存储容量。
一般来说,攻击复杂度取三者之中最大的。这个规则也有例外,而且还要考虑相关攻击者的环境。一般来说,目前存储的需要对大多数攻击者来说都不太现实,所以认为存储比时间更昂贵。