斯诺登曝光了美国国家安全局与欧美多个国家的情报机构对网络通信的窃听行为,人们终于明白,网络根本没有安全可言,所有经过网络节点传输的数据都可能被拦截和破解,浏览器地址栏上显示加密传输的小锁也不再给人安全的印象,因为在情报机构需要的情况下,他们也同样可以对这些通信数据进行解码。目前,一些欧洲国家正寻求避免网络通信数据经过美国的网络节点传输的方法,或者试图通过立法来保障网络通信的安全。不过,恐怕这些政治上的努力最终仍无法阻止欧美各国情报机构的窃听行为,但是从技术上完全有可能实现,那就是使用完全正向保密(Perfect Forward Secrecy,简称PFS)技术。
按照斯诺登的说法,强大的加密技术将是应对全球监听的最佳保障。但目前互联网主要依赖HTTPS安全连接的加密强度是不够的。按照目前广泛采用的加密方式,首先,服务器发送一个公共密钥到浏览器,这个公共密钥与一个私有密钥相对应,可以通过私有密钥解开接下来浏览器使用服务器公共密钥加密的信息,并与浏览器握手建立连接,浏览器和服务器将商定一个会话密钥和加密方法,例如AES,接下来,服务器和浏览器之间就可以开始加密的通信。
私钥是薄弱点
至此,窃听加密通信的窃听者只能获得经过编码的“胡言乱语”,但是通过上面的介绍不难明白,如果得到了服务器的私钥,自然就不难从窃听到的数据中提取会话密钥,从而解密所有通信数据。因而,美国国家安全局非常希望能够从安全邮件服务Lavabit的创始人拉达尔·利维森(Ladar Levison)手上获取Lavabit的私有密钥,因为斯诺登使用的正是这个电子邮件服务。如果美国国家安全局能够获得Lavabit的私有密钥,自然就能够解密并阅读斯诺登的所有邮件。不过,利维森选择了关闭他的邮件服务,而不是将私有密钥交给美国国家安全局。
如果利维森的邮件服务使用完全正向保密(PFS)技术的话,他就不必这样做,因为PFS加密技术并不使用私钥。此外,在PFS加密通信中,并不需要通过互联网发送会话密钥,而是双方都通过纯粹的数学计算创建的。为此,PFS需要采用迪菲赫尔曼密钥交换(Diffie–Hellman key exchange,简称“D-H”)协议。通过D-H协议,服务器定义一个数学公式,其中既有设定的参数(一个素数及一个原根),也有不公开的随机数。双方将发送自己的计算结果并重复计算,一旦彼此的计算结果相同,这个数字将被作为对称加密的会话密钥。如果正确实施PFS加密,在通信结束之后会话密钥将被删除。任何人也无法对通信的内容进行解密,因为无论在浏览器还是服务器上都没有会话密钥。
数学封锁窃听者
NSA之类万能的窃听者自然是不难得到加密后的通信数据,同时也能够得到服务器的加密公式和参数,但是无法知道随机数,随机数在计算公式中被用作指数,要得出可能被用作会话密钥的数字,解密所有通信数据,窃听者将不得不尝试解决两个未知随机数的对数方程。这虽然不是不可能的事情,但是却是非常复杂的,并且服务器和浏览器使用的素数非常大,例如2 048位,因此可以保证窃听者无法通过蛮力计算出密钥。
除了经典的D-H协议,PFS还可以通过椭圆曲线密钥交换(ECDHE)协议产生密钥。该协议的数学方法较为复杂,因而,ECDH使用较小的素数就可以确保安全,这可以减轻CPU的负担以便更快地计算出会话密钥。几乎所有已知的浏览器都已经支持通过DHE和ECDHE实现PFS加密,但并没有与任何对称加密方法相结合。服务器的情况也是如此,很少的服务器选择使用PFS进行密钥交换。不过,考虑到目前日益严重的窃听风险,明年情况也可能完全改观。endprint