Schneier的安全忠告
上QQ阅读APP看书,第一时间看更新

第4章 安全与科技

NSA的密码能力

最初发表于Wired.com(2013年9月4日)

斯诺登最新披露的文件是关于美国情报部门的“黑色预算”项目。《华盛顿邮报》发布的寥寥数页报道中藏有许多信息,包括美国情报局局长James Clapper对此的介绍。他给出了一个暗示:“另外,我们在开创性的密码分析能力方面加大投入,以便击败对手的加密算法,并利用互联网流量。”

老实说,我对此是将信将疑的。无论NSA的锦囊妙计是什么,密码学的数学部分仍然会是加密系统中最安全的部分。我更担忧的是设计得糟糕的加密产品、软件漏洞、糟糕的密码、与NSA合作却泄露全部或部分密钥的公司,以及不安全的计算机和网络。这些才是真正的漏洞所在,也是NSA应该花费大量精力的地方。

这不是我们第一次听到这个传闻。NSA长期观察员James Bamford在去年发表于WIRED的一篇文章中写道:

“据参与此项目的另一位高级官员透露,几年前NSA在它的密码分析学破译能力方面取得了巨大的突破,或者说是破解了曾经深不可测的复杂加密系统。这些加密系统不仅被世界各国政府使用,也被美国的许多普通用户使用。”

我们没有来自Clapper、斯诺登或是Bamford的消息来源的更多消息,但是我们可以推测一下。

很可能NSA拥有某些新的数学运算能力能破解一个或是多个流行的加密算法,如AES、Twofish、Serpent、3DES。这不是第一次发生这种事情。追溯到20世纪70年代,NSA知道某种不为学术界所知的称为“差分密码分析”的密码分析技术。该技术破解了很多我们曾认为安全的学术以及商业化的加密算法。在20世纪90年代早期我们学到了更多,并且现在设计的算法能够抵抗这种技术。

NSA非常可能拥有学术界所不知道的新技术。即使如此,此类技术不太可能导致能够破解真正加密后的明文的攻击。

破解加密算法最简单方式是暴力破解密钥。这种攻击的复杂度是2n,其中n是密钥的长度。所有的密码分析攻击都可以看作这种方法的捷径。由于暴力破解的效率与密钥长度直接相关,因此这些攻击方法有效地缩短了密钥长度。所以举例来说,如果针对DES的最佳攻击方法的复杂度是239,那么可以有效地把DES算法的56位密钥缩短了17位。

如今暴力破解的实际上限是80位。然而,可把这个作为指导来表明某种攻击方法必须有多好才能够破解现代的加密算法。目前,加密算法最少也有128位的密钥。这意味着NSA的任何密码分析突破方法都必须至少有效地减少48位密钥长度,以便破解是可实现的。

然而,还需要更多的前置条件。该DES攻击方法需要不切实际的70TB的明文,这些明文被我们试图破解的密钥加密过。其他的数学攻击方法需要类似数量的数据。为了能够有效地解密实际的网络流量,NSA需要的攻击方法能够破解常见的已知明文的Word文档,还有更多其他格式的文档。

所以尽管NSA拥有学术界不具备的对称加密算法的密码分析能力,但把这应用于对数据的实际攻击是不可能的。

更具可能性的是NSA取得了某种数学上的突破,能影响一个或多个公钥算法。在涉及公钥算法的密码分析时有许多数学技巧,并且没有理论能证明那些技巧的强大之处有上限。

在过去几十年中,人们有规律地在因子分解方面取得突破,这允许我们破解更大的公钥。今天我们使用的大部分公钥加密算法涉及椭圆曲线算法,在数学上对该算法的突破更为成熟。假设NSA在这个领域拥有某种不为学术界了解的技术是合理的。当然NSA在推广椭圆曲线加密算法这个事实也表明它能够更轻松地破解它们。

如果是这样的话,解决办法很简单:增加密钥长度。

假设NSA没有完全在破解公钥算法上取得突破——并且这是一个合理的假想——很容易使用更长的密钥来领先NSA几步。我们已经努力逐步淘汰1024位的RSA密钥,转而支持2048位密钥。很可能我们需要“跳得更远”并且考虑3072位密钥。或许我们应该在椭圆曲线算法上更加偏执一些,并且使用500位以上的密钥长度。

最后一个不切实际的可能:量子计算机。量子计算机在学术界仍然处于实验室阶段,但是在理论上可以快速地破解常见的公钥加密算法。无论密钥长度有多长,都能有效地将任何对称算法的密钥长度减半。我认为NSA极不可能已经开发出能够执行实现该目标所需的海量计算的量子计算机,但是这是可能的。防御方法很简单——继续使用基于共享密钥的对称加密算法并使用256位的密钥。

在NSA内部有句明言:“密码分析总是在变得更好,不会变得更糟”。如果认为在2013年我们已经发现了密码学中所有能被发现的数学突破,那就太天真了。还有很多等我们突破,并且这种状况会持续数个世纪。

NSA处于一个优势位置,它能充分利用学术界发现的公开发布的所有信息,以及它秘密发现的一切。

NSA许多全职人员来思考这个问题。根据“黑色预算”概要,35 000名研究人员和每年110亿资金只是国防部旗下密码学项目的一部分,其中4%的资金(4亿4千万美元)被用于“研究与技术”(Research and Technology)项目。

那可是巨额资金,可能比地球上每个人花在密码学研究上的投入加起来还要多。我确信那会导致许多有趣的并且偶尔会是开创性的密码分析的研究成果,其中一些甚至可能是实用的。

尽管如此,我还是相信数学。