저자: 맷 코랄로
출처: https://groups.google.com/g/bitcoindev/c/8O857bRSVV8/m/4cM-7pf4AgAJ
원문은 2024년 12월 16일에 게시되었습니다.
지난 몇 년 동안 비트코인 거래 서명 체계의 양자 컴퓨팅 저항성에 대한 몇 가지 대략적인 아이디어가 제시되었지만, 이러한 아이디어에는 여러 가지 중대한 결함이 있습니다.
먼저, 몇 가지 기본적인 가정을 세웁니다.
(a) 타원 곡선을 해독할 수 있는 양자 컴퓨터는 아직 먼 미래의 일입니다(몇 년이 아니라 10년 또는 20년이 걸릴 수도 있습니다). 이는 NSA(미국 국가안보국) 및 기타 기관의 권고와 일치합니다. 업그레이드할 시간은 충분하지만, 한 가지 방안을 고려해 볼 수 있습니다. 바로 오늘날 지갑 소프트웨어에 양자 컴퓨팅을 위한 보안 계층을 설계하는 것입니다.
(b) 근본적인 확장 제약이 발생하여 타원 곡선을 해독할 수 있는 양자 컴퓨터가 결코 등장할 수 없게 될 가능성이 있습니다. 우리는 이러한 가능성에 도박을 걸고 싶지는 않겠지만, 가능성은 존재합니다.
(c) 타원 곡선의 한계를 뛰어넘는 양자 컴퓨팅이 상용화되기 전에 우리는 몇 가지 중요한 경고를 접하게 될 것입니다. 양자 컴퓨터 개발에는 대량 자원이 필요하며, 전 세계적으로 인력과 실험실 비용을 감당할 수 있는 기관은 극소수에 불과합니다. 이러한 개발 작업은 이미 발표되었고, 앞으로도 진행 상황에 따라 발표될 가능성이 높습니다. 따라서 양자 컴퓨터가 현실에 가까워질수록 우리는 수년 전에 미리 경고를 받게 될 것입니다.
(d) 현재 양자 후 암호화(예: 격자 암호화 및 "초특이 타원 곡선 동형 사상")의 보안 가정은 오늘날의 화폐를 보호하기에 불충분하며, 향후 암호화 연구의 잠재력을 고려할 때 비트코인 합의 알고리즘으로는 적합하지 않습니다. 따라서 현재 비트코인의 양자 후 서명 보안을 위한 유일한 후보는 해시 함수 기반 서명(기본적으로 SPHINCS/SPHINCS+)입니다.
(e) OP_CAT 이나 다른 일반적인 스크립트 오퍼코드를 기다릴 가치가 없습니다. 이러한 프로젝트들은 여러 문제에 얽매여 있는 것으로 보이며, 악의적인 채굴자가 추출할 수 있는 가치인 MEVil과 비트코인의 미래를 둘러싼 수많은 의문점들도 존재합니다. 더욱이, 특수 오퍼코드를 사용하면 지갑 소프트웨어의 도입 과정이 간소화됩니다. 지갑 개발자들은 이미 사용자가 즉시 사용할 수 없는 기능을 위해 추가적인 작업을 해야 하는데, 이는 이미 충분히 번거로운 일입니다.
이러한 가정을 고려할 때, 지갑 소프트웨어가 오늘 부터 자금을 특정 주소에 예치하고, 추가 수수료를 지불하며, 양자 컴퓨팅 이후의 보안을 위해 블록체인에 흔적을 남기는 것은 비논리적으로 보입니다. 그러나 동시에 비트코인의 업그레이드 주기가 매우 길다는 점을 감안할 때, 지갑 소프트웨어에 "비상 접근" 옵션을 제공하지 않는 것 또한 현명하지 못한 처사입니다.
다행히도, 탭루트는 이러한 방식을 개발하는 데 좋은 방법을 제공합니다! 탭루트의 스크립트 경로 사용은 엄격하게 제한되어 있기 때문에(탭루트 주소의 내부 공개 키가 탭루트 스크립트 경로의 해시 값 t 에 저장되어 있음), 미래의 양자 컴퓨터는 (내부 공개 키의) 개인 키를 계산하고 스크립트 경로의 머클 루트 값을 알 수 있지만, 스크립트 경로의 다른 머클 루트를 위조할 수는 없습니다.
이는 양자 내성 보안을 위한 진입점을 제공합니다. SPHINCS(또는 Lamport/Winternitz 서명과 달리 양자 내성이 있는 비일회용 서명)를 검증하기 위해 OP_SPHINCS 오퍼코드를 직접 추가함으로써(현재의 OP_CHECKSIG 와 같은 방식), 지갑은 비상 접근을 위한 탭루트 출력을 구성하기 위해 대체 스크립트 경로 비용 조건을 항상 포함하기만 하면 됩니다. 양자 컴퓨터가 상용화되면 소프트 포크 통해 탭루트 키 경로 비용을 비활성화하여 코인이 지출에 양자 안전 스크립트 경로를 사용하도록 강제할 수 있습니다.
이 계획에는 분명히 중대한 단점이 있습니다. 업그레이드되지 않은 주소에 있는 자금은 양자 컴퓨터가 상용화되면 "몰수"될 것입니다. 하지만:
(a) 이 방식을 명시적으로 선택하도록 요구할 수 있습니다. 하지만 이 방식의 단점은 온체인 추가적인 기록이 남게 되고 새로운 공개 키 스크립트 형식이 필요하다는 것입니다(기존의 bech32m 주소 인코딩 형식은 대부분의 지갑에서 이미 지원되므로 코드 변경 없이 그대로 사용할 수 있습니다). 물론, 이러한 요구 사항을 추가하면 평소에는 사용되지 않을 비트코인이 대량으로 전송되어 유동성 충격을 일으키고 비트코인의 유용성을 저해할 가능성이 있습니다.
(b) 또는, 지갑이 스크립트 경로가 NUMS 포인트(개인 키를 아무도 모르는 공개 키)임을 증명하는 경우 키 경로 지출을 허용할 수 있습니다(새로운 키 경로 + 증명 지출 변형을 통해). 현재 많은 지갑들이 탭루트 출력 공개 키에 대해 NUMS 포인트를 커밋하는 것을 꺼릴 것으로 예상되므로, 이는 기존 지갑 소프트웨어에 문제를 일으킬 수 있지만, 선택적 거부 솔루션으로 활용될 수 있습니다.
이 접근 방식은 매우 좋은 특징을 가지고 있습니다. 기존 사용 방식에 거의 영향을 미치지 않습니다(추가적인 기본 스크립트 비용 분기만 추가하면 되지만, 이는 일반적으로 어려운 작업이 아닙니다).
논의해야 할 몇 가지 사항이 있습니다. 첫째, 사용자가 진입 여부를 선택하도록 해야 할까요, 아니면 종료 옵션을 제공해야 할까요? 둘째, ECDSA 서명 검증을 트리거하는 모든 스크립트 경로가 실패해야 할까요? (그럴 가능성이 큽니다.)
이 아이디어가 이미 다른 곳에서 공유되었을 것 같지만, 저는 찾지 못했습니다. 이 아이디어 대부분은 not_nothingmuch 님의 아이디어에서 가져온 것이며, 저는 단지 그 공로를 인정받기 위해 기록해 두는 것뿐입니다.
이 아이디어는 양자 컴퓨터 시대에 작업증명(PoW) 방식이 어떻게 존재할 것인가라는 질문에 대한 해답을 제시하지는 못하지만, 양자 컴퓨터의 실제적인 한계점(예: 양자 컴퓨터 게이트 회로의 최소 지연 시간)을 더 명확히 파악하기 전까지는 답하기 어려울 것입니다. 만약 이 지연 시간이 매우 낮다면, 비트코인의 PoW 해시 함수의 복잡성을 높여 양자 컴퓨터가 결과를 계산하는 데 걸리는 시간을 지연시킴으로써 기존 하드웨어로도 블록을 채굴할 수 있을까요?
루크 대시즈가 답했습니다:
한 가지 더 말씀드리자면, 이 양자 내성 스크립트 경로는 완전히 정의되어 있는 한 소프트 포크 없이도 추가할 수 있습니다. 즉, 사양이 확정되면 지갑 소프트웨어는 소프트 포크 활성화 를 기다리지 않고 즉시 이 대체 경로를 구현할 수 있습니다. 이를 위해서는 이 양자 후 스크립트를 마치 개인 키처럼 보호해야 하므로 하드웨어 서명자에게는 문제가 될 수 있지만, 해결 방법이 있을 것으로 예상합니다.

