LLVM에 상수 시간 지원 도입: 컴파일러 수준에서 암호화 코드 보호
Trail of Bits는 LLVM 21에 대한 상수 시간 코딩 지원을 개발하여 컴파일러가 분기를 도입하지 못하도록 함으로써 타이밍 공격으로부터 암호화 구현을 보호했습니다. 이 시스템은 `__builtin_ct_select` 내장 함수군을 도입하여 상수 시간 연산이 컴파일 과정을 통해 안전하게 유지되도록 합니다. 현대 컴파일러의 최적화는 의도치 않게 타이밍 부채널을 도입하여 암호화 코드를 취약하게 만들 수 있습니다. `__builtin_ct_select` 내장 함수는 선택 연산이 상수 시간 기계 코드로 컴파일되도록 보장하며, 원치 않는 최적화에 대한 장벽 역할을 합니다. 이는 컴파일러가 상수 시간 보장을 깨뜨리는 프로덕션 암호화 라이브러리에서 발견된 취약점을 해결합니다. Rust Crypto 및 LLVM 개발자의 피드백을 포함한 커뮤니티 참여는 이 프로젝트 개발에 매우 중요했습니다. 이 구현은 `__builtin_ct_select`가 x86-64, i386, ARM, AArch64를 포함한 다양한 아키텍처에서 상수 시간 코드로 컴파일되도록 보장합니다. 벤치마킹 결과 최소한의 성능 오버헤드와 100% 상수 시간 속성 유지가 나타났으며, 주요 암호화 라이브러리에 성공적으로 통합되었습니다. 향후 계획에는 산술, 문자열 연산 및 표현식에 대한 구현 확장이 포함되어 있으며, Rust, Swift 및 WebAssembly에서 채택될 가능성이 있습니다. 이 작업은 ETH 취리히와의 협력으로 이루어졌으며 DARPA의 지원을 받았습니다.