Ink & Switch, 새로운 정수 인코딩 Bijou64 발표
원제: Bijou64: A variable-length integer encoding
왜 중요한가
바이너리 프로토콜의 보안성과 성능을 동시에 향상시키는 새로운 인코딩 방식으로 업계 표준 개선 가능성을 제시
Ink & Switch가 Subduction CRDT 동기화 프로토콜을 위해 개발한 가변 길이 정수 인코딩 Bijou64를 공개했다. 각 숫자를 단일 방식으로만 표현하여 서명 검증 오류를 해결하며, 기존 LEB128 대비 수배 빠른 성능을 보인다고 발표했다.
Ink & Switch는 Subduction CRDT 동기화 프로토콜을 위해 개발한 새로운 가변 길이 정수 인코딩 방식 Bijou64를 발표했다. 이 인코딩은 각 숫자를 오직 하나의 방식으로만 표현할 수 있도록 설계되어 서명 검증 과정에서 발생하는 미묘한 버그를 해결한다. 기존의 LEB128 등 대부분의 varint 인코딩은 같은 숫자를 여러 방식으로 표현할 수 있어 보안상 취약점이 될 수 있다. 예를 들어 LEB128에서 숫자 0은 0x00, 0x80 0x00, 0x80 0x80 0x00 등 다양하게 인코딩 가능하다. 이러한 비정규화는 서명된 데이터의 압축이나 중복 제거 시 문제를 일으킬 수 있다. Bijou64는 구조적으로 정규화를 보장하여 별도의 런타임 검증이 불필요하며, 결과적으로 LEB128보다 수배 빠른 성능을 달성했다. 이는 ASN.1, PKCS#1 v1.5, JWT, Bitcoin 거래 등에서 발견된 정규화 공격 사례들을 방지할 수 있는 설계다.