Skip to main content
QUICK REVIEW

[论文解读] OpenSSLNTRU: Faster post-quantum TLS key exchange

Daniel J. Bernstein, Billy Bob Brumley|arXiv (Cornell University)|Jun 16, 2021
Cryptographic Implementations and Security参考文献 19被引用 4
一句话总结

本文提出 OpenSSLNTRU,一种基于 sntrup761 格基密钥封装机制的高性能后量子密钥交换实现,用于 TLS 1.3。通过批量处理和蒙哥马利技巧优化密钥生成,其性能优于 CECPQ2 的 ntruhrss701,同时提供更高的安全性,使每秒可完成的 TLS 1.3 握手数超过任何 OpenSSL 1.1.1k 实现。

ABSTRACT

Google's CECPQ1 experiment in 2016 integrated a post-quantum key-exchange algorithm, newhope1024, into TLS 1.2. The Google-Cloudflare CECPQ2 experiment in 2019 integrated a more efficient key-exchange algorithm, ntruhrss701, into TLS 1.3. This paper revisits the choices made in CECPQ2, and shows how to achieve higher performance for post-quantum key exchange in TLS 1.3 using a higher-security algorithm, sntrup761. Previous work had indicated that ntruhrss701 key generation was much faster than sntrup761 key generation, but this paper makes sntrup761 key generation much faster by generating a batch of keys at once. Batch key generation is invisible at the TLS protocol layer, but raises software-engineering questions regarding the difficulty of integrating batch key exchange into existing TLS libraries and applications. This paper shows that careful choices of software layers make it easy to integrate fast post-quantum software, including batch key exchange, into TLS with minor changes to TLS libraries and no changes to applications. As a demonstration of feasibility, this paper reports successful integration of its fast sntrup761 library, via a lightly patched OpenSSL, into an unmodified web browser and an unmodified TLS terminator. This paper also reports TLS 1.3 handshake benchmarks, achieving more TLS 1.3 handshakes per second than any software included in OpenSSL.

研究动机与目标

  • 通过解决 sntrup761 密钥生成的高计算开销,提升 TLS 1.3 中后量子密钥交换的性能。
  • 在对应用程序影响最小的前提下,实现高性能后量子密码学在现有 TLS 库中的无缝集成。
  • 通过将优化后的 sntrup761 库集成到未经修改的网页浏览器和 TLS 终止器中,证明端到端兼容性。
  • 为后量子密码学的基准测试和部署提供可复现的开源研究环境。
  • 实现性能和安全性均优于现有后量子和前量子 TLS 实现的目标。

提出的方法

  • 通过批量处理优化 sntrup761 密钥生成,将多个密钥的昂贵模逆运算开销分摊。
  • 应用蒙哥马利技巧以加速模逆运算,这是 sntrup761 密钥生成中的主要性能瓶颈。
  • 使用 AVX2 指令集实现 SIMD 优化的算术运算,获得底层性能提升。
  • 开发 engNTRU,一个可动态加载的 OpenSSL 引擎,无需修改应用程序代码即可暴露后量子功能。
  • 将库集成到轻量级修补版 OpenSSL 分支中,支持在 TLS 1.3 密码套件中使用 sntrup761。
  • 通过使用未经修改的 Gnome Web(epiphany)和 stunnel 进行端到端宏基准测试,验证了透明集成。

实验结果

研究问题

  • RQ1批量密钥生成是否能显著降低 sntrup761 密钥生成的单个密钥成本,同时在 TLS 协议层保持透明?
  • RQ2能否使后量子密钥交换性能在真实世界的 TLS 1.3 部署中达到或超过前量子 ECC 的性能?
  • RQ3是否可行通过最小化对应用程序的修改,将高性能后量子密码学集成到现有 TLS 库中?
  • RQ4能否使用开源工具和最少的系统修改,构建并部署一个研究级、可复现的后量子 TLS 栈?
  • RQ5在密钥生成经过优化的前提下,sntrup761 的更高安全级别是否足以证明其性能开销优于 ntruhrss701,尤其是与 ntruhrss701 相比?

主要发现

  • 优化后的 sntrup761 密钥生成实现每密钥仅需 156,317 个周期,相比之前最佳水平的 814,608 个周期,性能提升 5.7 倍。
  • 优化后,sntrup761 的总密钥交换(密钥生成 + 加密 + 解密)成本仅为 ntruhrss701 的 2.57 倍,而优化前为 2.57 倍的慢速。
  • 新实现的性能超过 OpenSSL 1.1.1k 中包含的任何软件实现,创下新的性能纪录。
  • 端到端基准测试确认,优化后的 sntrup761 库可成功集成到未经修改的 Gnome Web 和 stunnel 中,证明了透明的应用兼容性。
  • sntrup761 参数集提供的前量子 Core-SVP 安全级别为 2^153,高于 ntruhrss701 的 2^136,且无分圆结构相关担忧。
  • 性能提升未以牺牲安全性为代价,且该解决方案与现有 TLS 1.3 协议和应用栈保持向后兼容。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。