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