高速缓存时序攻击检测与防御—-应用于密码库和后量子密码

高速缓存时序攻击检测与防御

——应用于密码库和后量子密码

摘 要

随着幽灵攻击和熔断攻击的发布,高速缓存时序利用技术最近受到了大量的关注。一方面,现在人们已经很好地理解了源代码中的哪些模式会在时序方面造成可观测到的不平衡。另一方面,一些实际的攻击也已经被报道出来。但是漏洞和利用之间的确切关系到今天为止研究得还不够。在这篇文章中,我们提出了一种方法论来表征源代码中“非恒定时间”构造所引起的泄露。这种方法可以让我们恢复已知的攻击,并对可能出现的毁灭性的新攻击方法发出警告。

关键词: 高速缓存时序攻击,泄露检测,泄露属性,新攻击的发现

1 介绍

编写安全的加密软件是出了名的难,因为很多错误都能被攻击者转换为优势,从而真正地提取密码。例如,众所周知,计算的损坏会导致灾难性的错误。例如:

  • —利用中国剩余定理(CRTRSA)对RSA的Bellcore攻击。
  • —在AES(ISO/IEC 18033-3)上进行差分故障分析(DFA)
  • —签名方案中的验证跳过(回顾无意中复制和粘贴两个goto的情况)

执行中的任何错误(例如,可能产生缓存溢出),允许替换一个中间值(如Bellcore和DFA),确实会导致一次成功的密码分析。在签名方案中的验证跳过的情况,这个错误已经存在于源代码中,允许攻击者绕过密码学。

因此,必须编写正确的(没有错误的)加密软件。但是这并不足够,因为其他攻击仍然可以应用。通常情况下,侧信道攻击被认为特别具有威胁性。事实上,它们利用一些非功能性的但是可以观测到的由计算产生的侧信道效应来破解密码,并且非侵入性地还原出密码。这类攻击之所以让人害怕,是因为在大多数情况下,这类攻击是无法被检测到的。

有一种特殊的侧信道攻击受到了极大的关注,那就是所谓的高速缓存时序攻击。事实上,观测是直接在执行受害者代码的机器上实施的。因此,分辨率高,噪声低。此外,攻击者不需要拥有机器。攻击的先决条件只是能够像受害者一样使用密码服务。

通过监控共享资源的反应时间,攻击者可以了解到受害者是否一直在索取这种资源。共享资源通常是指多条管道,这些管道允许超线程计算,允许使用高速缓存进行数据,代码,地址转换(如内存管理单元MMUs),允许在动态随机存取存储器(DRAM)进行优化管理等。并非所有这些资源都被称为“高速缓存”,但仍然可以利用它们能被受害者和攻击者的并发使用请求所争夺的事实,让它们泄露可观测的信息。这种信息通常是以时序变化的形式来测量的,除了那些直接测量侧信道就足够的情况,例如,在硬件性能计数器中。有时,这种攻击会被重新定义,因为一些硬件特性(例如,分支预测,无序执行等)使得可以直接观察到的变化,与攻击者处理的一些内部变量有关。高速缓存时序攻击在操作上的使用,例如绕过内核级保护,创建隐蔽信道,攻击“飞地”(高速缓存的引用)中的代码等。图1描述了所谓的高速缓存时序攻击漏洞的全貌(在c代码层面)。

在这个框架中,攻击与被争夺的会泄露的资源联系在一起。调查论文也详细介绍了微架构和漏洞之间的关系。但是到今天为止,还不清楚时序偏差能被有效地利用到什么程度。这正是本文的目的所在。

本文其余部分的结构如下。在第二节中介绍了已知的利用方法,并将其归结为所谓的硬件偏差。然后是我们的贡献在第3节中:我们展示了一种评估高速缓存时序的严重性的方法。最后,我们在第4节给出了结论。一些代码的例子被归入附录A。
在这里插入图片描述
图 1,介绍了一个机密中的条件代码如何变现为可观测到的侧信道泄露,以及一些著名的利用方法。

2. 高速缓存时序问题

高速缓存时序对敏感变量的依赖性的相关问题会导致各种攻击,即:
在RSA上

  • 简单能量分析(水平泄露)
  • 归纳分析
  • 基于窗口化指数法的BigMac攻击

在ECDSA上

  • 由短nonces导致的LLL密码分析

在AES上

  • 时序攻击
  • 高阶时序攻击
  • 模板攻击
3.高速缓存时序分析方法
3.1 最先进的技术

对加密库的漏洞进行彻底的分析,尽管有很多人在讨论这个话题,但加密库需要更多的检查。事实上,应用的保护确实会对性能产生强烈的影响。例如,使用滑动窗口算法进行指数化计算,虽然知道会有泄露,但被认为难以利用。不过,使用完全规则的指数算法还是会让性能崩溃。因此出现了实际是否需要该对策的问题。这就促使攻击者更加努力,实际上已经提出了一种不那么抽象的关于密钥提取的方法。

后量子密码学(PQC)算法已经被分析出了存在泄露的问题。在[9,§5]中已经对造成泄露的受影响的部分进行了系统的分类:

  • –噪声采样操作,其中高斯噪声非常敏感

  • –不安全的伽罗华域操作,特别是在域的特征值为2的情况下

  • –可变时间误差校正算法

  • –使用不安全的大数库,例如GMP(GNU Multi-Precision,https://gmplib.org/)。

    现在让我们来探讨一下系统性的泄露发现方法。

3.2 方法介绍

所提出的方法一方面结合了静态分析和动态分析,另一方面结合了源代码分析和汇编分析。
步骤一: 静态分析。第一步是对源代码进行静态分析。代码被表示为一个抽象语法树(AST),敏感变量(密钥,但也包括所有参数,这些参数的信息允许恢复密钥,如加密协议中涉及的随机数/噪声)在树中传播。漏洞是敏感变量s和条件控制流操作(调用if(s){},for(i=0;i<s;++i){},while(s){}, and switch(s){},构造如图1所示)或条件表查找(调用y=T[s] and y=*(ptr+s),或者反之,构造如图1所示)的重合。

图二说明了MbedTLS的RSA签名中发现的漏洞。附录A中的列表1.2显示了一个实际的漏洞。如图2所示,漏洞列表可以根据其调用模式进行重新分组。事实上,对于一个多功能例程,可以有很多函数请求它。这一点非常值得关注,因为一个漏洞被执行的次数越多,它就越有可能泄露可利用的信息。实际上,我们要记住,高速缓存时序攻击面临着一个实际的挑战,因为:

  • –当应用于对抗非对称加密算法时,密钥通常是随机的,攻击必须在一次跟踪中成功。
  • –当应用于对抗对称加密算法时(例如参考[21]),密钥在多次操作中是不变
    的,但算法非常快(大约1000个时钟周期,攻击者的目标是提取数百位)。

步骤二: 汇编代码分析。第二步是分析编译C源代码后生成的汇编代码。目的是检查漏洞是否仍然存在。在某种情况下,
在这里插入图片描述
图 2 在MbedTLS源码中发现的RSA签名漏洞(由[20]提供)
在这里插入图片描述
表 1 将高速缓存时序漏洞的C操作翻译成汇编

编译器在生成汇编代码时,设法消除了这个问题(虽然是无意的)。表1说明了C结构在汇编中的典型翻译。从表1中可以看出,一些条件操作可以被翻译成恒定时间的汇编指令,比如cmov(条件移动,原子性)或者setcc(设置条件,原子性)。事实上,这些翻译对执行速度有好处:由于它们不会破坏控制流,它们可以加速执行而不用冒高速缓存或投机故障的风险。此外,这些翻译只发生在代码被编译时由优化选项的情况下(很矛盾)。对表的访问几乎可以肯定不是固定的,因为进行无条件表访问的技术(bitslicing,使用拉格朗日多项式对表进行外推,查找所有元素和通过地址指示器进行布尔掩码后的后续加值,等等)太过先进。此外,已知的保护表查找的策略具有极高的时效性开销,因此应手动添加。因此,从C语言到汇编语言,指针取消引用导致的漏洞仍然存在(除了非常小的表,例如两个条目)。关于汇编层面漏洞的进一步参考,请读者转到[18].

步骤3: 统计分析。最后,代码被动态执行,并在之前汇编确定为存在漏洞的行上设置断点。需要提取的信息如下:

  • –在运行代码的同时,计算出现的次数——如前所述,漏洞被执行的次数越多,被利用的机会就越多
  • –检查执行模式。如果它们的速度太快(例如,突发事件),可能很难单独测量它们。

在静态分析中识别出的漏洞的时间分布如图3所示(用Intel PIN获得),为800条最开始的指令(在3,679,883条构成完整的2048位 RSA中)
在这里插入图片描述
图 3 通过静态分析发现的RSA签名漏洞的激活时间(以指令数标示)

步骤4: 真实测试。理想情况下,这种方法是由现实世界的测量来完善的(例如,使用FLUSH+FLUSH[13]方法,就像Catalyzr[8]工具一样),以便评估哪些方面的泄露是可以利用得。实际上,关于查找表,有些访问是无法区分的,因为它们发生在高速缓存的同一行。最终检查可以验证风险是否真实存在。

3.3 方法应用

本文研究的是本文撰写时最新版本的MbedTLS库(2.14.0版本)。它的编写考虑到了安全性。事实上,作为一个例子,它的一些功能允许以一种不能被高速缓存攻击利用的方式进行条件操作。位于library/bignum.c中的函数mbedtls_mpi_safe_cond_assign(其中mpi表示multiprecision interger)提供了一个说明,并在附录A中给出了列表1.1.作为参考。

4. 结论

本文介绍了一种实用的方法,用于分析可观察到的高速缓存时间偏差及其可能被利用的情况。该方法包括几个步骤,即:在源代码中识别漏洞,在汇编代码中跟踪漏洞,统计漏洞的动态发生情况,最后利用FLUSH+FLUSH方法进行实测。

我们已经展示了已知的攻击是如何在软件加密库中复现的,并且我们指出了许多新的攻击(未被发现,但可能是毁灭性的)

鸣谢。这项工作得益于法国PIA(Projet d’Investissment d’Avenir)PISQ(Regroupement de l’Industrie pour la S´ecurit´ e post-Quantique)的资助。此外,这项工作还得到了TeamPlay(https:// teamplay-h2020.eu/)的部分资助,TeamPlay是欧盟Horizon20202研究和创新计划的一个项目,赠款协议为N◦ 779882。

附录A 从mbedTLS的安全和漏洞函数中摘录的一些内容

在这里插入图片描述

列表1.1. 条件赋值函数,它不显示赋值是否已经完成
在这里插入图片描述
列表1.2. 易受攻击的代码示例,静态识别(泄露在if语句中)

参考文献
  1. Bernstein, D.J., et al.: Sliding right into disaster: left-to-right sliding windows leak. In: Fischer, W., Homma, N. (eds.) CHES 2017. LNCS, vol. 10529, pp. 555–576. Springer, Cham (2017). https://doi.org/10.1007/978-3-319-66787-4 27
  2. Biham, E., Shamir, A.: Differential fault analysis of secret key cryptosystems. In: Kaliski, B.S. (ed.) CRYPTO 1997. LNCS, vol. 1294, pp. 513–525. Springer, Heidelberg (1997). https://doi.org/10.1007/BFb0052259
  3. Boneh, D., DeMillo, R.A., Lipton, R.J.: On the importance of checking cryptographic protocols for faults. In: Fumy, W. (ed.) EUROCRYPT 1997. LNCS, vol. 1233, pp. 37–51. Springer, Heidelberg (1997). https://doi.org/10.1007/3-54069053-0 4
  4. Brumley, B.B., Tuveri, N.: Remote timing attacks are still practical. In: Atluri, V., Diaz, C. (eds.) ESORICS 2011. LNCS, vol. 6879, pp. 355–371. Springer, Heidelberg (2011). https://doi.org/10.1007/978-3-642-23822-2 20
  5. Dall, F., et al.: CacheQuote: efficiently recovering long-term secrets of SGX EPID via cache attacks. IACR Trans. Cryptogr. Hardw. Embed. Syst. 2018(2), 171–191 (2018)
  6. Danger, J.-L., Debande, N., Guilley, S., Souissi, Y.: High-order timing attacks. In: Proceedings of the First Workshop on Cryptography and Security in Computing Systems, CS2 2014, pp. 7–12. ACM, New York (2014)
  7. Dugardin, M., Guilley, S., Danger, J.-L., Najm, Z., Rioul, O.: Correlated extrareductions defeat blinded regular exponentiation. In: Gierlichs, B., Poschmann, A.Y. (eds.) CHES 2016. LNCS, vol. 9813, pp. 3–22. Springer, Heidelberg (2016). https://doi.org/10.1007/978-3-662-53140-2 1
  8. Facon, A., Guilley, S., Lec’hvien, M., Marion, D., Perianin, T.: Binary data analysis for source code leakage assessment. In: Lanet, J.-L., Toma, C. (eds.) SECITC 2018. LNCS, vol. 11359, pp. 391–409. Springer, Cham (2019). https://doi.org/10.1007/ 978-3-030-12942-2 30
  9. Facon, A., Guilley, S., Lec’hvien, M., Schaub, A., Souissi, Y.: Detecting cachetiming vulnerabilities in post-quantum cryptography algorithms. In: 3rd IEEE International Verification and Security Workshop, IVSW 2018, Costa Brava, Spain, 2–4 July 2018, pp. 7–12. IEEE (2018)
  10. Garc´ıa, C.P., Brumley, B.B., Yarom, Y.: Make sure DSA signing exponentiations really are constant-time. In: Weippl, E.R., et al. [22], pp. 1639–1650
  11. Ge, Q., Yarom, Y., Cock, D., Heiser, G.: A survey of microarchitectural timing attacks and countermeasures on contemporary hardware. J. Cryptographic Eng. 8(1), 1–27 (2018)
  12. Gruss, D., Maurice, C., Fogh, A., Lipp, M., Mangard, S.: Prefetch side-channel attacks: bypassing SMAP and kernel ASLR. In: Weippl, E.R., et al. [22], pp. 368– 379
  13. Gruss, D., Maurice, C., Wagner, K., Mangard, S.: Flush+Flush: a fast and stealthy cache attack. In: Caballero, J., Zurutuza, U., Rodr´ıguez, R.J. (eds.) DIMVA 2016. LNCS, vol. 9721, pp. 279–299. Springer, Cham (2016). https://doi.org/10.1007/ 978-3-319-40667-1 14
  14. iOS 7.0.6. CVE-ID CVE-2014-1266. Description: Secure Transport failed to validate the authenticity of the connection. This issue was addressed by restoring missing validation steps. Impact: An attacker with a privileged network position may capture or modify data in sessions protected by SSL/TLS, February 2014. https://nvd.nist.gov/vuln/detail/CVE-2014-1266
    Cache-Timing Attack Detection and Prevention 21
  15. Joye, M., Tunstall, M. (eds.): Fault Analysis in Cryptography. Information Security and Cryptography. Springer, Heidelberg (2012). https://doi.org/10.1007/9783-642-29656-7. ISBN: 978-3-642-29655-0
  16. Kocher, P.C.: Timing attacks on implementations of Diffie-Hellman, RSA, DSS, and other systems. In: Koblitz, N. (ed.) CRYPTO 1996. LNCS, vol. 1109, pp. 104–113. Springer, Heidelberg (1996). https://doi.org/10.1007/3-540-68697-5 9
  17. Kocher, P., Jaffe, J., Jun, B.: Differential power analysis. In: Wiener, M. (ed.) CRYPTO 1999. LNCS, vol. 1666, pp. 388–397. Springer, Heidelberg (1999). https://doi.org/10.1007/3-540-48405-1 25
  18. Cl´ementine Maurice and Moritz Lipp. What could possibly go wrong with ?, December 2016. 33rd Chaos Communication Congress (33c3), Hamburg, Germany. https://lab.dsst.io/slides/33c3/slides/8044.pdf
  19. Maurice, C., et al.: Hello from the other side: SSH over robust cache covert channels in the cloud. In: 24th Annual Network and Distributed System Security Symposium, NDSS 2017, San Diego, California, USA, 26 February–1 March 2017. The Internet Society (2017)
  20. Takarabt, S., et al.: Cache-timing attacks still threaten IoT devices. In: Codes, Cryptology and Information Security - Third International Conference, C2SI 2019, Rabat, Morocco, 22–14 April 2019, Proceedings. Springer (2019, to appear)
  21. Tromer, E., Osvik, D.A., Shamir, A.: Efficient cache attacks on AES, and countermeasures. J. Cryptol. 23(1), 37–71 (2010) 22. Walter, C.D.: Sliding windows succumbs to big Mac attack. In: Ko¸c, C¸.K., Naccache, D., Paar, C. (eds.) CHES 2001. LNCS, vol. 2162, pp. 286–299. Springer, Heidelberg (2001). https://doi.org/10.1007/3-540-44709-1 24
  22. Weippl, E.R., Katzenbeisser, S., Kruegel, C., Myers, A.C., Halevi, S., (eds.): Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security, Vienna, Austria, 24–28 October 2016. ACM (2016)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值