[논문 리뷰] OpenSSLNTRU: Faster post-quantum TLS key exchange
이 논문은 sntrup761 격자 기반 키 봉인 메커니즘을 사용하여 TLS 1.3용 고성능 양자후계 키 교환 구현인 OpenSSLNTRU를 제시한다. 배치 처리와 몽고메리의 기법을 통해 키 생성을 최적화함으로써, CECPQ2의 ntruhrss701보다 더 빠른 성능을 달성하면서도 더 높은 보안 수준을 제공하여, OpenSSL 1.1.1k의 모든 구현보다 더 많은 TLS 1.3 핸드셰이크를 초당 처리할 수 있다.
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 라이브러리에 빠르고 효율적인 양자후계 암호를 통합할 수 있도록 하기 위해.
- 수정되지 않은 웹 브라우저와 TLS 터미널에 최적화된 sntrup761 라이브러리를 통합하여 종단 간 호환성을 입증하기 위해.
- 양자후계 암호의 벤치마킹과 구현을 위한 재현 가능하고 오픈소스 연구 환경을 제공하기 위해.
- 기존의 양자후계 및 양자 전 키 교환 구현보다 높은 성능과 보안 수준을 달성하기 위해.
제안 방법
- 다중 키에 걸쳐 비용이 큰 모듈러 역산을 분산시키기 위해 배치 처리를 사용하여 sntrup761 키 생성을 최적화하였다.
- sntrup761 키 생성의 주요 성능 저하 요인인 모듈러 역산을 가속화하기 위해 몽고메리의 기법을 적용하였다.
- 저수준 성능 향상을 위해 AVX2 명령어 세트를 활용한 SIMD 최적화 산술 연산을 구현하였다.
- 응용 프로그램 코드를 수정하지 않고도 양자후계 기능을 노출하기 위해 동적 로딩이 가능한 OpenSSL ENGINE인 engNTRU를 개발하였다.
- sntrup761을 TLS 1.3 암호 스위트에서 지원하는 경량 패ッチ가 가해진 OpenSSL 포크에 라이브러리를 통합하였다.
- 수정되지 않은 Gnome Web(epiphany)와 stunnel를 사용한 종단 간 매크로 벤치마크를 수행하여 투명한 통합을 검증하였다.
실험 결과
연구 질문
- RQ1배치 키 생성을 통해 sntrup761 키 생성의 키당 비용을 크게 감소시킬 수 있으며, TLS 프로토콜 계층에서 투명하게 유지될 수 있는가?
- RQ2실제 TLS 1.3 배포 환경에서 양자후계 키 교환 성능을 기존의 양자 전 ECC와 경쟁하거나 능가할 수 있는가?
- RQ3기존 TLS 라이브러리에 최소한의 응용 프로그램 변경으로 고성능 양자후계 암호를 통합하는 것이 가능한가?
- RQ4오픈소스 도구를 사용하고 시스템 수정을 최소화하여 연구 수준의 재현 가능한 양자후계 TLS 스택을 구축하고 배포할 수 있는가?
- RQ5sntrup761의 더 높은 보안 수준가 ntruhrss701보다 성능 오버헤드를 정당화하는가? 특히 키 생성 최적화가 이루어진 경우에 대해.
주요 결과
- 최적화된 sntrup761 키 생성은 키당 156,317 사이클을 기록하여 이전 최고 성능인 814,608 사이클 대비 5.7배 향상되었다.
- sntrup761의 전체 키 교환(키 생성 + 암호화 + 복호화) 비용은 최적화 이전에 비해 2.57배 빨라졌으며, 이는 이전에는 2.57배 느렸던 것과 대비된다.
- 새로운 구현은 OpenSSL 1.1.1k에 포함된 모든 소프트웨어보다 더 많은 TLS 1.3 핸드셰이크를 초당 처리하여 새로운 성능 기록을 수립하였다.
- 종단 간 벤치마크 결과, 최적화된 sntrup761 라이브러리가 수정되지 않은 Gnome Web과 stunnel에 성공적으로 통합되어 투명한 응용 프로그램 호환성을 입증하였다.
- sntrup761 매개변수 세트는 ntruhrss701의 2^136에 비해 더 높은 양자 전 Core-SVP 보안 수준 2^153을 제공하며, 원형 다항식 구조에 대한 우려가 없다.
- 보안에 손상 없이 성능 향상을 달성하였으며, 기존 TLS 1.3 프로토콜 및 응용 프로그램 스택과의 호환성은 유지되었다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.