[논문 리뷰] The Last Mile: High-Assurance and High-Speed Cryptographic Implementations
이 논문은 Jasmin과 EasyCrypt를 결합하여 기능적 정확성과 사이드 채널 저항성을 '게임 이동' 검증을 통해 확보하는 고신뢰성·고성능 어셈블리어 기반 암호 구현을 생성하는 새로운 프레임워크를 제시한다. 저자들은 기능적 정확성과 사이드 채널 저항성을 보장하는 벡터화된 ChaCha20-Poly1305의 형식적 검증된 구현을 개발하여, 가장 빠른 비검증 대비 성능을 뛰어넘었으며, 형식적 검증이 성능을 희생시키지 않는다는 것을 입증한다.
We develop a new approach for building cryptographic implementations. Our approach goes the last mile and delivers assembly code that is provably functionally correct, protected against side-channels, and as efficient as hand-written assembly. We illustrate ur approach using ChaCha20-Poly1305, one of the mandatory ciphersuites in TLS 1.3, and deliver formally verified vectorized implementations which outperform the fastest non-verified code. We realize our approach by combining the Jasmin framework, which offers in a single language features of high-level and low-level programming, and the EasyCrypt proof assistant, which offers a versatile verification infrastructure that supports proofs of functional correctness and equivalence checking. Neither of these tools had been used for functional correctness before. Taken together, these infrastructures empower programmers to develop efficient and verified implementations by "game hopping", starting from reference implementations that are proved functionally correct against a specification, and gradually introducing program optimizations that are proved correct by equivalence checking. We also make several contributions of independent interest, including a new and extensible verified compiler for Jasmin, with a richer memory model and support for vectorized instructions, and a new embedding of Jasmin in EasyCrypt.
연구 동기 및 목표
- 고신뢰성 암호 구현과 고성능 수동 최적화 코드 사이의 격차를 메우기 위해 어셈블리어 수준에서의 형식적 검증을 가능하게 하기 위해.
- 이전 접근 방식이 효율성, 신뢰성 또는 개발자 수용성 측면에서 한계를 지닌 점을 극복하기 위해 최적화와 검증을 하나의 워크플로우에 통합하기 위해.
- 기능적 정확성과 동치성 증명에 기반한 실용적이고 점진적인 방법론을 통해 암호 공학자들이 최적화된 형식적 검증된 구현을 개발할 수 있도록 하기 위해.
- 벡터화된 명령어와 더 풍부한 메모리 모델을 지원하는 Jasmin에 대한 검증된 확장 가능한 컴파일러를 제공하여 어셈블리어로의 정확하고 예측 가능한 컴파일링을 보장하기 위해.
- Jasmin을 EasyCrypt에 통합하여 기능적 동치성과 일정 시간 보안 증명을 자동화할 수 있도록 하여, 저수준 암호 코드에 대한 통합된 증명 인fra를 구축하기 위해.
제안 방법
- 읽기 쉬운 참조 구현을 작성하기 위해 Jasmin 언어를 사용하여 고수준과 저수준 프로그래밍 기능을 결합함으로써 '머릿속 어셈블리어' 개발 방식을 가능하게 하기 위해.
- 각 변환 단계가 기능적 정확성을 유지함을 증명하면서 점진적으로 참조 구현을 벡터화되고 플랫폼에 특화된 버전으로 최적화하기 위해 '게임 이동' 기법을 적용하기 위해.
- EasyCrypt의 관계형 프로그램 논리를 활용하여 참조 구현과 최적화된 구현 간의 기능적 동치성을 형식적으로 검증하기 위해.
- 기능적 정확성과 일정 시간 보안 증명을 지원하는 새로운 Jasmin의 EasyCrypt 내장 방식을 도입하여, 비밀 데이터에 대한 제어 흐름과 메모리 접근의 독립성을 포함하기 위해.
- Coq를 사용하여 Jasmin 컴파일러를 검증하여 Jasmin에서 어셈블리어로의 변환 과정이 정확하고 모든 보장을 유지함을 보장하기 위해.
- 검증 중에 정적 분석과 단순화된 의미론을 사용하여 안전성을 확보하고, 암호학적 일정 시간 모델 하에서 최종적으로 일정 시간 동작의 증명을 수행하기 위해.
실험 결과
연구 질문
- RQ1효율성을 희생시키지 않고도 고신뢰성과 고성능 암호 구현을 모두 지원할 수 있는 형식적 검증 프레임워크를 설계할 수 있는가?
- RQ2암호학적 증명에서 유래한 '게임 이동' 기법을 암호 구현의 저수준 최적화 검증에 효과적으로 적용할 수 있는가?
- RQ3기능적 정확성과 사이드 채널 저항성의 형식적 보장을 유지하면서도 수동 최적화된 비검증 어셈블리어와 비교해도 성능이 유사하거나 뛰어난 성능을 달성할 수 있는가?
- RQ4Jasmin과 같은 고신뢰성 언어를 위한 검증된 컴파일러를 어떻게 확장하여 벡터화된 명령어와 복잡한 메모리 모델을 지원할 수 있는가?
- RQ5기능적 정확성과 일정 시간 보안 증명을 모두 지원하는 통합된 증명 인프라를 EasyCrypt에 구축할 수 있는가?
주요 결과
- 저자들은 기능적 정확성과 사이드 채널 저항성을 보장하는 벡터화된 ChaCha20와 Poly1305의 Jasmin 기반 검증 구현을 제공하며, OpenSSL과 HACL*의 가장 빠른 비검증 어셈블리어 대비 뛰어난 성능을 보였다.
- AVX2 최적화된 ChaCha20의 검증된 버전은 큰 메시지에 대해 1바이트당 1.5 사이클 미만의 성능을 기록하여, CompCert로 컴파일된 HACL*와 비검증 OpenSSL 코드를 모두 뛰어넘었다.
- AVX2 명령어를 사용한 Poly1305의 검증된 버전은 큰 메시지에 대해 1바이트당 1.2 사이클 미만의 성능을 기록하여, 비검증 및 검증된 대안들보다 뚜렷이 뛰어난 성능을 보였다.
- 이 프레임워크는 최적화된 코드에 대한 기능적 정확성과 일정 시간 동작의 검증을 가능하게 하며, 참조 구현과 최적화된 버전 간의 동치성 증명이 일반화된 레퍼런스 레퍼런스를 통해 구성된다.
- 새로운 Jasmin 컴파일러 확장은 벡터화된 명령어와 더 풍부한 메모리 모델을 지원하며, Coq를 사용하여 형식적으로 검증되어 소스에서 어셈블리어로의 정확한 변환을 보장한다.
- Jasmin의 EasyCrypt 내장 방식은 기능적 동치성과 일정 시간 보안 증명을 자동화하여 성능에 민감한 코드의 확장 가능한 검증을 가능하게 한다.
더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.