데이터 구조 서명의 잘못된 사례와 주의점

데이터 구조가 동일하여 발생하는 '도메인 분리' 보안 취약점을 해결하기 위해 FOKS는 IDL에 직접 '0x92880d38b74de9fb'와 같은 고유한 랜덤 구분자를 삽입하는 Snowpack 방식을 제안했습니다. 이 기술은 Bitcoin, Ethereum, AWS 등에서 발생한 서명 재사용 공격을 방지하며 데이터의 내용뿐만 아니라 '타입'까지 암호학적으로 검증합니다.

AI 요약

암호화 알고리즘에 데이터를 주입하기 전 패키징하는 과정에서 '도메인 분리(Domain Separation)'는 보안의 핵심 요소입니다. 만약 TreeRootKeyRevoke처럼 서로 다른 의미를 가진 데이터 구조가 동일한 필드(예: timestamp, hash)를 공유할 경우, 공격자는 한 데이터의 서명을 다른 데이터에 적용하는 서명 도용 공격을 수행할 수 있습니다. 이는 단순한 이론적 위협이 아니며 Bitcoin, Ethereum DEX, TLS, JWT, AWS 등 주요 시스템에서 실제 피해 사례가 보고된 바 있습니다. 현재 Solana의 메서드 해싱이나 TLS v1.3의 컨텍스트 문자열 같은 임시방편적 해결책이 존재하지만, 보다 체계적인 접근이 필요합니다. FOKS 팀은 이를 해결하기 위해 'Snowpack'이라는 개념을 도입하여 IDL(인터페이스 기술 언어) 정의 단계에서부터 고유한 도메인 구분자를 할당하는 방식을 고안했습니다.

핵심 인사이트

  • 도메인 분리 결여의 위험: 필드 구성이 동일한 서로 다른 메시지 타입(TreeRoot, KeyRevoke)은 직렬화 시 동일한 바이트 스트림을 생성하여 서명 위조 공격에 취약함.
  • 실제 공격 사례: 이 취약점은 Bitcoin, Ethereum의 탈중앙화 거래소(DEX), TLS, JWT, AWS 등 광범위한 IT 환경에서 성공적으로 공격된 역사적 기록이 있음.
  • Snowpack 솔루션: IDL 내부에 struct TreeRoot @0x92880d38b74de9fb와 같이 64비트 랜덤 구분자를 직접 삽입하여 데이터의 유일성을 보장함.
  • 암호학적 보증: 암호화 시스템은 단순 페이로드의 내용뿐만 아니라 해당 데이터의 '타입(Type)' 정보까지 일치함을 보장해야 함.

주요 디테일

  • 정준 인코딩(Canonical Encoding): 시스템은 서로 다른 데이터가 동일한 인코딩 결과물을 내지 않도록 보장해야 하며, 이는 Bitcoin 시스템에서 과거에 겪었던 주요 과제 중 하나임.
  • IDL 컴파일러의 역할: FOKS의 런타임 라이브러리는 IDL에 명시된 도메인 구분자와 객체의 직렬화 데이터를 결합(Concatenation)한 후 서명 프리미티브에 전달함.
  • 기존 대응 방식: Solana는 로컬 메서드 이름을 해싱하고, TLS v1.3은 특정 '컨텍스트 문자열'을 사용하지만 이는 통합된 시스템이 아닌 ad-hoc(임시) 기술에 가까움.
  • 범용적 적용: 이 방식은 서명(Sign)뿐만 아니라 HMAC, SHA-3를 이용한 MAC, 해싱, 인증된 암호화(Authenticated Encryption) 전반에 적용 가능함.
  • 데이터 무결성 확장: 수신자는 도메인 구분자를 통해 서명자가 의도한 데이터의 성격이 무엇인지 명확하게 검증할 수 있음.

향후 전망

  • 표준 보안 설계의 변화: IDL 수준에서 도메인 분리를 강제하는 Snowpack 모델은 분산 시스템 보안의 새로운 표준 설계로 자리 잡을 가능성이 높음.
  • 보안 버그 감소: 개발자의 실수로 발생할 수 있는 데이터 타입 오인 및 서명 재사용 관련 취약점을 프로그래밍 언어 차원에서 원천 차단하게 될 것임.
Share

이것도 읽어보세요

댓글

이 소식에 대한 의견을 자유롭게 남겨주세요.

댓글 (0)

불러오는 중...