암호화 코드를 보호하기 위한 LLVM의 상수 시간 지원 소개
Trail of Bits가 LLVM에 상수 시간 코딩 지원을 도입하여 암호 구현을 타이밍 공격으로부터 보호하는 것을 목표로 합니다. LLVM 22에 포함될 예정인 이 새로운 기능에는 `__builtin_ct_select` 내장 함수와 지원 인프라가 포함됩니다. 이를 사용하는 컴파일러는 의도치 않게 취약점을 도입하는 코드 최적화를 방지합니다. 최신 컴파일러는 속도를 위해 최적화하지만 암호화에 중요한 상수 시간 속성을 깰 수 있습니다. 예를 들어 간단한 조회 함수는 분기를 포함하도록 최적화되어 공격자가 악용할 수 있는 타이밍 부채널을 생성할 수 있습니다. `__builtin_ct_select` 내장 함수는 최적화 수준에 관계없이 조건부 선택이 상수 시간으로 유지되도록 보장합니다. 이는 보안에 중요한 작업을 변환으로부터 보호하는 장벽 역할을 합니다. 연구에 따르면 기존 컴파일러가 프로덕션 암호 라이브러리에 취약점을 도입하는 것으로 나타났습니다. 새로운 내장 함수를 통해 개발자는 수정된 조회 함수로 예시되는 더 안전한 상수 시간 코드를 작성할 수 있습니다. 이 작업은 이전 노력을 기반으로 하며 Rust Crypto 및 BearSSL과 같은 커뮤니티에서 큰 관심을 불러일으켰습니다. 구현은 x86-64, i386 및 ARM과 같은 다양한 아키텍처에서 상수 시간 동작을 보장합니다. 초기 벤치마킹은 최소한의 성능 오버헤드와 상수 시간 속성의 완전한 보존을 나타냅니다. 향후 계획에는 산술 및 문자열 연산에 대한 지원 확장이 포함되며 LLVM을 대상으로 하는 다른 언어에서의 채택을 가능하게 할 것입니다.