现实的安全性
香农曾证明:本质上说,一次填充密码是唯一的完全安全的密码系统。所以我们知道至少在理论上,大多数实际的系统都是可以破译的。这并非意味着大多数实际系统都毫无用处。一个(理论上可以破译的)密码系统也是具有实用性的,只要使用者确信攻击者不会在所涉项目的掩蔽时间内成功破译该系统即可。
我们讨论过的密钥穷举搜索法是一种基本的攻击形式。在断定一个系统是否适用于某个特定的项目之前,预期密钥穷举搜索所需的时间要比掩蔽时间长得多,这是该系统必须迈过的一道“坎儿”。当然,我们已经知道,具有大量的密钥还不能保证系统的安全;因此,这个要求只能算是判断系统可否被接受的许多检验中的第一个标准。无论如何,如果连这第一步都不能通过,那很清楚该算法是不能用的。所以我们对密码系统的第一步“检验”就是尝试确定密钥穷举搜索所需时间是否足够长,换句话说,就是密钥的数量是否足够多。
为此,设计师需要对攻击者的可用资源和能力作一些假设。他们的首要任务是估计攻击者每试算一个密钥所需的时间。很清楚,这个时间与攻击者使用的是硬件还是软件有关。如果是硬件攻击,攻击者可能会使用特意建造的设备。若对这个时间估计过低,将会导致不安全性,而过高的估计又会使安全系统的花费大大超出实际所需。
幸运的攻击者在尝试密钥穷举搜索法时,可能第一次猜测就试出了密钥。使系统具有大量密钥的作用之一就是减少这种情况出现的概率。另一种极端是,一个倒霉透顶的攻击者一直试到最后一个才找出密钥。实际情形往往是,攻击者并不需要进行全部搜索就能找到密钥。用密钥搜索法找到密钥的预期时间大约接近于完成全部穷举搜索所需时间的一半。
有一点也许值得一提。假如攻击者有足够的资料,那么他们可能会很确信只有一个密钥能把所有已知明文转变为正确的密文。然而在很多情况下,穷举搜索全部完成后也不能确认出唯一正确的密钥,而只是缩小了正确密钥候选者的范围,此时需要更多的资料来作进一步的搜索。
一旦密钥的数目确定下来,密钥穷举搜索所需的时间就可给出安全水平的上界。在很多情形下,设计者的主要目的是努力确保其他类型的攻击成功的预期时间要超过这个上界。这绝不是一项容易的任务。我们已经指出过,时间是评估攻击能否成功的正确度量值。然而进行任何计算所需的时间还依赖于各种变数,诸如攻击者的工作效率、技术及数学能力等。工作效率与攻击者所能支配的财力相关,反过来,这种财力支持在很大程度上又随着攻击成功所能取得的预期利润不同而变化。此外,在某些环境中,像能否有效利用计算机存储装置等其他因素,对攻击者来说也都是十分重要的。考虑到上述种种因素,我们仍然可以肯定地说:如此复杂的判断方式,确实是判定一个给定的系统对某种特定的应用来说是否足够安全的标准手段。