Posted On 2026년 02월 18일

Branchless Sorting Networks – 비밀을 누출하지 않는 정렬

nobaksan 0 comments
여행하는 개발자 >> 기술 >> Branchless Sorting Networks – 비밀을 누출하지 않는 정렬
a computer screen with a bunch of code on it

보안이 중요한 환경에서 정렬 알고리즘의 실행 시간이 데이터에 따라 달라지면 사이드 채널 공격에 취약해집니다. Branchless sorting이 해답입니다.

문제: 타이밍 사이드 채널

일반적인 정렬 알고리즘은 데이터 값에 따라 조건 분기(branch)가 발생합니다. 공격자는 실행 시간 차이를 측정하여 정렬되는 데이터의 패턴을 추론할 수 있습니다.

해결책: Sorting Networks

Sorting network는 고정된 비교-교환 패턴을 따릅니다. 입력 데이터와 상관없이 항상 같은 연산을 수행하므로 타이밍이 일정합니다.

Branchless 구현

// 조건 분기 없는 min/max
int min = y ^ ((x ^ y) & -(x < y));
int max = x ^ ((x ^ y) & -(x < y));

비트 연산으로 조건문 없이 최솟값/최댓값을 계산합니다. CPU의 분기 예측 실패도 방지됩니다.

사용 사례

  • 암호화 키 비교
  • 인증 토큰 검증
  • 금융 데이터 처리
  • SGX/TrustZone 같은 보안 영역

트레이드오프

일반 정렬보다 성능이 떨어질 수 있습니다. 하지만 보안이 최우선인 상황에서는 필수적인 선택입니다.



이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Related Post

오래된 코드의 무게, 그리고 새로운 시작

2000년대 초반, 한창 웹 개발이 폭발적으로 성장하던 시절이었다. 당시에는 테이블 레이아웃이 주류였고, CSS는 아직 미숙한…

카프카 위에 쌓이는 데이터 호수의 미래, 우르사가 던지는 질문

카프카가 데이터 인프라의 심장이라면, 그 위에 쌓이는 데이터는 피와도 같다. 실시간으로 흐르는 이 피가 결국…

쿠버네티스 비밀 관리의 숨겨진 진실: 왜 아직도 모두가 잘못하고 있을까

쿠버네티스에서 비밀 관리가 왜 이렇게 어려운 걸까? 단순히 YAML 파일에 base64로 인코딩된 문자열을 넣는 것만으로…