当攻击在 2003 年首次被描述时(通过时序分析的“坏填充”预言机),预期的攻击场景是一个电子邮件客户端(例如 Outlook Express),它定期(例如每分钟一次)连接到服务器以了解是否有一些新的邮件已到达(使用POP协议时无法通知您有新邮件;您必须轮询)。由于每个连接都以相同的身份验证阶段开始,因此目标密码在流中处于确定性、可重现的位置,并且由于 Outlook Express 在错误报告方面出了名的差(即它要么是静默的,要么只是更新一个长期存在的用户被训练忽略的错误弹出窗口),那么这是一个很好的攻击设置。
需要指出的重要一点是,此类攻击必须发生在解密点附近,即“有趣的数据”(密码)即将被解密的地方。在邮件服务器场景中,这是在服务器附近,而不是客户端。
“幸运十三”新增两个数据点:
它指出,针对定时攻击的常见防御(即,当填充错误时,表现得好像它很好并仍然计算 MAC)可能会泄漏一点(因为“假定填充”没有确切的长度“良好的填充”)。2003 年的初始攻击使用大约 1 毫秒的延迟,而新的泄漏大约短了一千倍,大约 1 微秒。
它表明,在实验室条件下(100 Mbit/s 以太网,目标和攻击者之间只有一个开关,数百万个措施),低至约 1 微秒的测量是可行的。
第一点当然很有趣。然而,我认为第二点存在这个根本缺陷:如果攻击者能够如此接近目标,那么他可以通过许多其他方式获胜。事实上,定时攻击是通过基于时间的数据泄漏从封闭系统中提取信息。我们密码学家倾向于专注于密码层,因为这是我们的工作,而密码学就是集中秘密:“密钥”是保密的本质,是一个非常有价值的目标。但是,加密的重点是保护敏感数据,任何对机密数据的处理都可能通过时间泄露其中的一部分。
在完整的数据处理堆栈中,SSL/TLS 层位于底层 TCP/IP 堆栈和以各种方式使用机密数据的“应用程序”之间。由于解密发生在 TLS 中,因此 TCP/IP 层只能看到加密的块,因此没有什么可以泄漏的。但是,如果认为泄漏可能只发生在 TLS 层中,那就太乐观了,近乎荒谬。完整的应用程序代码可能同样容易受到定时攻击。虽然对 TLS 本身的攻击更具新闻价值,但我声称对应用程序代码的攻击更有可能是毁灭性的。
综上所述,“幸运十三”攻击很有趣,但不太现实。关于定时攻击,TLS 层只是冰山一角。再进一步滥用这个比喻,担心“幸运十三”有点像担心泰坦尼克号上的腐蚀:从抽象的角度来看,这是一个有效的担忧,但不像其他与划船有关的问题那么紧迫。