评价密码体制的安全性方法如下:
(1)无条件安全:尽管破译者提供了无限的资源,还是不能破译。该方法主要是针对破译者的计算资源无限制时的安全性考虑,实际上,除一次一密密码算法外,无条件安全算法是不存在的。而一次一密密码算法实际上也是不实用的,这是因为发送者与接收者必须有且好好保护一次一密的随机密钥,因此在当前的条件下操作并不现实。
(2)可证明安全性: 该方法是将加密算法的安全性归因于已经彻底研究的数学问题,这个数学问题证明目前很难解决问题,所以密码算法在当前可证明是安全的。但该方法也存在一些问题:只说明了安全和另一个问题相关性,一旦数学问题得到解决,加密算法就完全没有安全性了。
(3)计算安全性:是在目前的计算资源条件受限时,或用已存在的最佳的破译手段破译此密码算法的付出大于破译者的破译能力,或破译这个密码算法的难度与某个数学难题等同,因此该密码算法的安全是暂时的,也叫做实际安全性。若用最优的算法破译密码算法得至少N次操作,其中N是非常大的数,则可暂时表明这个密码算法是安全的。但该方法存在这样的问题,即没有已知的实际密码算法在该定义下被验证是安全的,一般的处理方法是用一些特定的破译方法研究计算上的安全性,如:穷举法。但这种方法对一种破译的安全结论并非对其他攻击方法也适用。
当前,由于破译与反破译存在较量,保密系统用户能做的全部努力就是满足以下准则中的一个或两个:
(1)破译密码算法的成本大于被加密信息的价值;
(2)破译密码的时间是不是比被加密信息有用的周期长。
如果满足上述两个准则之一,则可以认为该密码算法在实际上是安全的,困难就在怎样估算破译该密码算法需付出的成本或时间。
一般而言,破译现代密码算法主要有两种方法:
(1)蛮力破译,也称穷举破译,是用每种可能的密钥来尝试破译,直至取得了由密文至明文的可理解变换。
(2)利用算法中的点进行破译。对于一个密码算法,破译者在排除了密码算法没有弱点后,一般只可用蛮力破译进行攻击。
一般情况下,为使破译成功,用蛮力破译一定要试过全部可能的密钥的一半。密钥长度越大,密钥空间越大,强力解密所需的时间越长,相应地也说明该密码算法越安全。
由此可见,若要密码体制实际可用,须符合以下条件:
(1)每个加密函数与解密函数均可存在有效的解;
(2) 密钥长度越大,密钥空间越大,破解密码所需时间越长;
(3)密码体制安全的必要条件:穷举破译将是行不通的,也就是密钥空间特别大。