저자: 비탈릭 부테린, 덩 통 편집, 골든 파이낸스
내일 양자 컴퓨터가 출시되고 악의적인 공격자들이 이미 양자 컴퓨터에 접근하여 사용자의 돈을 훔칠 수 있다고 가정해 보겠습니다. 이를 방지하는 것이 양자 내성 암호화(예: 윈터니츠 서명, STARK)의 목표이며, 계정 추상화가 이루어지면 모든 사용자는 계획에 따라 양자 내성 서명 체계로 전환할 수 있습니다. 그러나 시간이 그렇게 많지 않고 그보다 훨씬 전에 갑작스러운 양자 전환이 발생한다면 어떻게 해야 할까요?
제 생각에는 사실 우리는 이를 처리하기 위해 매우 간단한 복구 포크를 만들 준비가 되어 있다고 생각합니다. 블록체인을 하드포크해야 하고 사용자들은 새로운 지갑 소프트웨어를 다운로드해야 하지만, 돈을 잃는 사용자는 거의 없을 것입니다.
양자 컴퓨터의 주요 과제는 다음과 같습니다. 이더리움 주소는 keccak(priv_to_pub(k))[12:]로 정의되며, 여기서 k는 개인 키이고 priv_to_pub은 개인 키를 공개 키로 변환하는 타원 곡선 곱셈입니다. 양자 컴퓨터를 사용하면 타원 곡선 곱셈은 되돌릴 수 있지만(이산 로그 문제이므로) 해시는 안전하게 유지됩니다. 사용자가 아직 계정으로 거래를 수행하지 않은 경우 주소만 공개적으로 표시되며 이미 보안이 유지됩니다. 그러나 사용자가 거래를 수행하면 해당 거래의 서명을 통해 공개 키가 공개되며, 양자 이후 세계에서는 개인 키가 공개될 수 있습니다. 따라서 대부분의 사용자는 공격에 취약합니다.
그러나 우리는 더 잘할 수 있습니다. 실제로 대부분의 사용자의 개인 키는 그 자체로 수많은 해시 계산의 결과물이라는 사실을 깨달았기 때문입니다. 대부분의 키는 기본 시드 구문으로 시작하는 일련의 해시에서 각 주소를 생성하는 BIP-32를 사용하여 생성됩니다. 예를 들어, 사용자가 브레인 월렛을 사용하는 경우 일반적으로 특정 암호(또는 중간 난이도의 KDF)에 일련의 해시를 적용하는 것과 같이 BIP-32가 아닌 많은 키 생성 방법도 유사하게 작동합니다.
즉, EIP의 자연스러운 구조는 양자 비상 상황에서 체인을 하드 포크하여 복구하는 것입니다.
대량 도난이 발생한 것으로 보이는 첫 번째 블록 이후 모든 블록 복구;
레거시 EOA 기반 거래 비활성화;
스마트 컨트랙트에서 거래를 허용하는 새로운 거래 유형 추가 지갑(예: RIP-7560의 일부)을 아직 사용할 수 없는 경우;
(i) 비공개 원본 이미지 x, (ii) 승인된 해시 함수 목록에서 해시 함수 ID 1 <= i < k, (iii) 공개 주소 A의 스타크 증명을 제공할 수 있는 새로운 거래 유형 또는 옵코드 추가 주소 A로 keccak(priv_to_pub(hashes[i](x))[12:] = A. STARK는 또한 이 새 인증 코드의 해시를 공개 입력 계정으로 받아들입니다. 증명이 통과되면 계정 코드가 새 인증 코드로 전환되고 그 이후부터 스마트 컨트랙트 지갑으로 사용할 수 있습니다.
가스 효율성을 위해 (결국 STARK는 대용량이기 때문에) STARK를 대량 증명하여 위와 같은 유형의 STARK를 증명할 수 있습니다(각 사용자의 x를 집계자에게 비밀로 유지해야 하므로 여러 선언을 직접 증명하는 대신 STARK-of-STARK가 되어야 함).
원칙적으로 이러한 하드포크를 구현하기 위한 인프라는 내일부터 구축되기 시작하여 양자 비상사태가 발생했을 때 이더 생태계가 완벽하게 대비할 수 있도록 할 것입니다.