2016年密码学最大的实践发展,就是安全传输层协议(TLS)1.3版。TLS是应用广泛的重要加密协议,也是安全互联网通信的基础。在数百位研究人员和工程师长达数年的钻研之后,新的TLS设计从密码学的角度看终于可被认为是完工了。该协议如今支持Firefox、Chrome和Opera。虽然看起来像是个小版本升级,TLS1.3却是TLS1.2的重大再设计(1.2版已存世8年有余)。事实上,最富争议的问题之一,是要不要改个名字来表明TLS1.3所做的重大改进呢?
用户从哪儿感受到TLS1.3?速度!TLS1.3就是为速度而生,尤其是大幅减少了重复连接时数据发送前的网络往返通信数量,最低可减至1次往返(1-RTT)乃至0次。这些理念之前已经以实验形式出现过——QUIC协议(谷歌制定的一种基于UDP的低时延互联网传输层协议)和早期TLS中。但作为TLS1.3默认行为的一部分,它们很快就会得到广泛应用。这意味着延迟减少和网页加载速度的加快。
另外,TLS1.3应将成为安全智慧的显着改进。它吸收了TLS几十年实践中的两大主要教训。首先,该协议摒弃了对一些旧协议功能和过时加密算法的支持,大幅瘦身。其次,TLS1.3引入了模式检查,用以在很多旧版TLS和SSL中查找漏洞。TLS1.3在标准化过程中经历加密社区的广泛分析,而不是等到协议被广泛部署难以修补的时候才这么做。
对后量子加密的要求仍在继续
加密社区一直在努力尝试从当今算法(其中很多在实用量子计算机出现后就会变得彻底不安全)迁移到后量子加密。
自去年年底美国国家标准与技术协会(NIST)发布了后量子算法标准化计划,算法转型便受到了大幅推动。NIST在今年2月公布了首份工作报告,并在8月发布了一份召集算法提案的草案。研究人员一直在争论后量子算法的目标到底该是什么(以及,双椭圆曲线(DualEC)标准后门事件之后,NIST是否还应在后量子算法标准化过程中担任领导角色)。
同时,谷歌在实用性实验中采用了新希望(NewHope)后量子密钥交换算法,来保护谷歌服务器和Chrome浏览器之间的真实流量。这是后量子加密在现实世界中的首例部署应用。该实验的结果表明,计算成本几乎可以忽略不计,但因更大的密钥规模导致的带宽消耗有所增加。另一队研究人员采用不同的算法,向TLS协议中加入了量子阻抗的密钥交换。
关于后量子加密,我们不知道的东西还很多,但我们已开始探索其实际工程意义。
关于给加密算法安后门的新思考
很长时间里,设计表面安全但暗藏后门的加密系统,一直是争议焦点。((“盗码学(kleptography)”一次在1996年被创造出来,用以描述此类概念。)但斯诺登的揭秘,尤其是DUAL_EC伪随机数字生成器被NSA故意安置后门的消息,激发了对加密算法后门安置方法的更多研究。法国和美国研究人员组成的一个团队就发表了一篇论文,展示了技巧地选择素数可使离散对数计算变得简单容易,足以破坏Diffie-Hellman密钥交换的安全性。
更糟的是,这种后门素数无法与其他随机选择的素数相区别。
RFC5114:NIST的又一后门加密标准?
说到后门,今年还发现了另一个可能被后门了的标准:RFC5114。该很少为人所知的标准是在2008编写的,某种程度上,这玩意儿一直很神秘。该协议是由国防承包商BBN编写的,目的是标准化NIST之前公布的某些参数。它定义了8个Diffie-Hellman组,可用于与互联网工程任务组(IETF)的协议协同工作,提供互联网通信安全性。最终,这些密钥进入到了一些广泛使用的加密库中,比如OpenSSL和BouncyCastle(java平台轻量级加密包)。然而,其中一些组被发现十分可疑:没有提供对产生过程和方法的任何说明(意味着可能被后门了),只要参数没有被仔细审查,便无力对抗小组约束攻击。
虽然没有切实证据,这还是导致了该标准是否被故意后门的一些争论。作为回应,该标准的其中一位作者声明称,这有部分原因是为了给一位实习生一个“相对容易”的项目来完成。NIST的一名密码学家声称,该标准不过是写来给使用曲线算法的人提供测试数据的,“当然不是作为给实际使用或采纳的人的建议”。该不良标准正是因其无能而提出的可能性无疑是存在的,但围绕它的质疑,凸显出一直以来对NIST作为密码标准化机构的信任缺失。
美国总统大选暴露密码可否认性问题
可否认性,及其对立面——不可抵赖性,是加密通信可具有的两个基本技术特性:系统应该向局外人提供证据证明消息是由特定发送者发送的吗(不可抵赖性)?或者,系统应确保任何局外人都能根据需要修改记录(可否认性)以便被泄通信不会牵连其他?这些属性的现实必要性,是加密社区长久以来的争议重灾区。2016总统大选的新闻报道所掩盖掉的,是不可抵赖性出其不意的崛起。资深民主党政客们,包括副总统候选人蒂姆·凯恩及前DNC主席丹娜·布拉齐尔,正式声明称被泄DNC电子邮件是被篡改过的。
然而,网络侦探们很快证实,电邮是以hillaryclinton.com邮件服务器的正确密钥,经域名密钥识别邮件协议(DKIM)签署的。关于这些签名,有很多防止误解的说明:其中一些邮件来自不支持DKIM的外部地址,因而可能被修改过,DKIM只断言特定邮件服务器发送了消息(而不是某个个人用户),所以,有可能是hillaryclinton.com的DKIM密钥被盗或被恶意内部人士使用了,被泄邮件缓存也有可能被故意漏掉了某些邮件(DKIM证据不会揭露这个的)。然而,这可能是我们在不可抵赖加密证据的价值(或无价值)中所有的最引人瞩目的数据点了。
攻击只会变得更好
一系列新型改进版攻击已被发现。其中值得注意的是:
HEIST攻击改进了之前BREACH和CRIME等Oracle压缩攻击的通用性,可通过恶意JavaScript从网页盗取敏感数据。尽管因为此类攻击的风险而在2014年就决定从TLS1.3中完全摒弃对压缩的支持,这一漏洞还是进一步显示出了往HTTP之类复杂协议中添加加密功能的困难性。
DROWN攻击利用几十岁高龄的SSLv2协议漏洞,破坏Web服务器的RSA签名密钥。如很多之前的TLS/SSL攻击(POODLE、FREAK等等),DROWN依赖的是现代Web浏览器已不支持的老旧协议。然而,这依然是很现实的重大缺陷,因为攻击者可以用此方法盗取Web服务器上那与现代客户端所用相同的密钥。该攻击再一次提醒了我们:维持对过时加密协议的支持是有多不安全!
Sweet32攻击显示出:64比特块密码(着名的三重DES和Blowfish)以CBC模式使用时,无法抵御碰撞攻击。生日悖论告诉我们,只需观察大约2^(64/2)=2^32个加密块——即32GB数据,就可以1/2的概率找到碰撞。这再一次暴露出,早该抛弃的遗留密码却依然在约1%的加密Web流量中被使用。
可能有点点远离实际系统,新攻击在某些配对友好的椭圆曲线族中被发现,包括了流行的Barreto-Naehrig曲线。虽然当今互联网加密中并没有广泛使用配对友好的曲线算法,它们却是一系列高级加密系统的基础,比如Zcash中用到的高效零知识证明,或Pond使用的组签名。
安全随机性依然是密码系统中的脆弱点:只要不能产生真正随机的数字,就不能创建真正不可预测的密钥。GnuPG项目(广泛使用的PGP软件维护者)宣称修复了Libcrypt随机数产生方法中的缺陷,堵上了这个存在了18年的漏洞。虽然实际利用该漏洞并不容易,此类攻击显露出PRNG库中的微小漏洞可因从未导致功能上的可见损失而隐身数十年之久。
吐故纳新:HTTPS仍在缓慢坚实的路上
HTTPS正慢慢变得更加安全:
SHA-1散列函数在2016年就达美国法定最低饮酒年龄了——21岁,但是没人会庆祝这个生日。相反,我们正逐渐逼近让这个过时算法退休的终点。有那么点点令人惊讶的是,今年并没有发现任何SHA-1碰撞攻击——算法被攻破的无可辩驳的明证。不过,浏览器厂商可不会等到真出现碰撞。微软、谷歌、Mozilla,全都宣称2017年起自己的浏览器不再接受SHA-1证书。虽然还需要一段时间,对SHA-A的协同抛弃,依然是加密社区的大胜利。据观察,浏览器市场激励厂商不擅自移除不安全旧协议,因此,厂商在SHA-1被完全攻破之前达成弃用时间线是个积极的迹象。
对证书透明性(CT)的支持继续增长。CT是设计来提供哪些证书被颁发给哪些域名的公开记录协议。今年6月1日开始,所有赛门铁克颁发的证书就被包含到CT记录中(会被Chrome和Firefox拒绝)。网站可用Chrome的HSTS预加载列表(Firefox也用)来选择要求CT。就在本周,Facebook发布了首个基于Web的CT记录监视工具。
RFC7748,椭圆曲线Curve25519和Curve448(“金发姑娘”)的标准化,终于完成了。这两个曲线算法在TLS1.3中可用,提供更快的表现,作为P-256之类NIST支持的经典曲线算法集的替代选择。
获取更多专业资讯
微信扫一扫