leanXMSS, 양자컴퓨터를 견디는 투표 서명

Strawmap J* (2028~29) · leanXMSS PQ attestations

검증자가 블록에 투표할 때 붙이는 서명을 지금의 BLS 방식에서 해시 함수만으로 만드는 XMSS 계열 서명으로 바꿉니다. 양자컴퓨터가 나와도 투표를 위조할 수 없게 하는 것이 목표입니다.

왜 필요한가

이더리움 검증자는 슬롯마다 어떤 블록이 맞는지 투표하고 그 투표에 서명을 붙여 보냅니다. 지금 쓰는 서명은 BLS라는 타원곡선 방식입니다. 아주 많은 서명을 하나로 합칠 수 있어 가볍다는 장점이 있지만 충분히 큰 양자컴퓨터가 나오면 타원곡선 수학이 풀려 남의 이름으로 투표를 위조할 수 있습니다. 합의 자체가 무너지는 문제입니다. XMSS(eXtended Merkle Signature Scheme)는 해시 함수만으로 만드는 서명입니다. 해시 함수는 양자컴퓨터로도 깨기 어렵다고 알려져 있어 양자 내성(post-quantum) 서명의 대표 후보입니다. leanXMSS는 이것을 이더리움 합의 투표에 맞게 다듬은 변형으로, 합의 계층을 단순하게 다시 짜는 lean 이더리움(lean Ethereum) 연구의 한 조각입니다. 해시 기반 서명은 BLS처럼 쉽게 합쳐지지 않고 크기도 크다는 약점이 있어 많은 서명을 영지식 증명(SNARK)으로 묶어 압축하는 방법과 함께 연구되고 있습니다. J 포크에 들어간다는 것은 Strawmap의 예상일 뿐 확정이 아니며 아직 연구 단계라 설계가 바뀌거나 빠질 수 있습니다.

어떻게 동작하나

  1. 일회용 키를 나무처럼 묶기 검증자는 한 번만 쓸 수 있는 서명 키를 미리 많이 만들고 이를 해시로 엮은 머클 트리(Merkle tree)로 묶습니다. 트리의 뿌리 값 하나가 공개키가 됩니다.
  2. 슬롯마다 키 하나로 서명 투표할 때마다 아직 안 쓴 일회용 키 하나로 서명하고 그 키가 트리에 속한다는 경로를 함께 붙입니다. 받은 쪽은 해시 계산만으로 서명이 진짜인지 확인합니다.
  3. 쓴 키는 다시 쓰지 않기 일회용 키를 두 번 쓰면 비밀이 새므로, 검증자는 어떤 키까지 썼는지 기록해 둡니다. 이 상태 관리가 XMSS의 특징이자 부담입니다.
  4. 많은 서명을 증명으로 압축 해시 기반 서명은 BLS처럼 바로 합쳐지지 않습니다. 그래서 여러 서명을 모아 모두 올바르다는 증명을 만들어 네트워크에 전달하는 방식이 연구되고 있습니다.

← 로드맵