密码分析员拥有下列信息:
(1)加密/解密算法;
(2)加密消息;
(3)关于密钥长度的知识(即密钥之为0~1000亿的值)。
攻击者可以编写一个计算机程序,每秒钟测试多个密钥。最好的情况下,攻击者第一次就可以找到密钥;最差情况下,要试1000亿次。通常情况下,找到密钥的时间介于这两者之间。根据数学原理,密钥在平均进行密钥范围的一半测试时找到,但这只是一个准则,再具体情形中不一定适用。
在计算机中,密钥范围对应于密钥长度,加密密钥的强度用密钥长度测量。密钥长度的单位是位,表示为二进制系统。为了防止蛮力攻击,要有一定的密钥长度,是攻击者无法在指定时间内破译。而密钥长度每增加一位,攻击者需要的操作就翻倍。对于56位密钥,搜索密钥范围的1%就要一秒钟,而搜索密钥范围的一半就要一分钟。根据这些情况,不同密钥长度时搜索密钥范围的1%和一半索要的时间如下表所示:
密钥长度(位) | 搜索密钥范围的1%所需时间 | 搜索密钥范围的一半所需时间 |
---|---|---|
56 | 1s | 1min |
57 | 2s | 2min |
58 | 4s | 4min |
64 | 4.2min | 4.2h |
72 | 17.9h | 44.8day |
80 | 190.9day | 31.4year |
90 | 535year | 32100year |
128 | 1.46 × 1 0 15 y e a r 1.46\times 10^{15}year 1.46×1015year | 8 × 1 0 16 y e a r 8\times 10^{16}year 8×1016year |
显然,128位密钥是相当安全的,因为 2 128 2^{128} 2128表示大约有340 000 000 000 000 000 000 000 000 000 000 000 000个密钥,目前计算机无法破解。但是,随着计算机能力与技术改进,也许,几年后128位密钥会被破解。根据大爆炸理论认为宇宙已经经过的时间不到 2 24 2^{24} 224千年,比密钥搜索时间短的多,因此512位密钥总是安全的。