피드로 돌아가기
Fixing a 1-in-256 bug in CLWW order-preserving encryption
Dev.toDev.to
Security

CLWW OPE의 1/256 정렬 오류 해결을 통한 정확한 순서 보존 암호화 구현

Fixing a 1-in-256 bug in CLWW order-preserving encryption

Dan Draper2026년 4월 25일10advanced

Context

데이터베이스의 B-tree 인덱스와 ORDER BY 절을 그대로 활용하기 위해 Order-preserving encryption(OPE)을 사용함. 기존 CLWW 설계의 Lexicographic 비교 방식은 특정 조건에서 약 1/256 확률로 평문 순서와 일치하지 않는 정렬 오류가 발생하는 한계가 있음.

Technical Solution

  • Backward Carry pass 도입을 통한 누적 오차 제거 및 예약 바이트(Reserved byte) 추가 설계
  • Plaintext bit의 가중치를 1에서 128로 변경하여 MSB-Bit Placement 구현
  • First differing byte에서 Signal(+128)이 Noise(±1)보다 압도적으로 높게 설계하여 Lex-compare의 신뢰성 확보
  • PRF chain 구조를 유지하며 Encoding 단계의 산술 연산 수정을 통한 구조적 정렬 보장
  • Custom comparator 없이 표준 memcmp만으로 정확한 순서 판별이 가능한 Ciphertext 생성

1. 표준 DB 인덱스 활용이 필수적인 환경에서 Custom Operator Class 등록 권한 여부를 먼저 확인

2. OPE 도입 시 Leakage Profile(공통 접두사 노출 등)과 보안 요구사항 간의 Trade-off 분석 수행

3. 암호화 데이터의 정렬 구현 시, 경계값에서의 Carry 전파가 정렬 결과에 미치는 영향 검토

원문 읽기