지난 몇 달 동안 비트코인 SV(BSV) 블록체인을 대상으로 이루어진 일련의 블록 재구성 공격과 이를 모두 성공적으로 극복한 이후, 엔체인(nChain)의 CTO이자 비트코인 SV 인프라팀의 테크니컬 디렉터인 스티브 셰더스는 오늘 블로그 포스트를 통해 이러한 공격과 이중 지출 시도에 대한 네트워크의 대응에 대해 간략히 설명했습니다.
셰더스는 재구성 공격 이후, 정직한 노드(honest node)를 겨냥한 압도적인 해시 파워에도 불구하고 그 어느 때보다 비트코인 프로토콜과 공격에 대한 비트코인 프로토콜의 복원력에 확신을 갖고 있다고 말했습니다. 비트코인 SV는 사토시 나카모토의 2008년 백서에 설명된 오리지널 비트코인 프로토콜과 가장 밀접하게 일치하는 블록체인으로, 점점 더 커지는 블록 크기와 완전한 스마트 계약 기능을 실현하는 완전한 기능을 갖춘 스크립팅 언어로 강화된 무제한 확장성 및 낮은 거래 수수료를 제공합니다.
BSV 블록체인에 대한 첫 번째 블록 재구성 공격은 2021년 6월 24일, 비트코인 SV 인프라팀이 줄루풀(Zulupool) 채굴 풀을 사칭했다고 생각하는 채굴자에 의해 이루어졌습니다. 줄루풀이 이러한 블록을 채굴하지 않았다는 사실이 밝혀진 이후 팀은 잠재적인 블록 재구성 공격을 탐지하고 이에 대응하는 도구를 구축했습니다.
블록 재구성 공격은 정직한 네트워크보다 더 막강한 해시 파워를 사용하여 비공개로 긴 블록체인을 채굴하여 거래의 대체 기록을 생성한 후, 더 긴 대체 체인을 전파하고 정직한 노드를 이러한 더 긴 위변조된 체인으로 전환하려는 시도입니다. 이러한 체인은 이중 지출 인스턴스를 포함하는 데 사용될 수 있으며, 이중 지출은 비트코인 프로토콜에 의해 금지됩니다. 이러한 유효하지 않은 거래를 탐지하는 도구의 배포를 통해 이중 지출을 식별할 수 있습니다.
공격에 대한 대응
이 첫 번째 공격과 비트코인 SV 인프라팀이 도구를 배포한 이후, 공격자는 한동안 활동을 하지 않다가 8월 초에 정직한 채굴자인 TAAL을 사칭하여 다시 한번 블록 재구성 공격을 시도했습니다.
“이전에 있었던 공격 이후에 마련한 준비로 비트코인 SV 인프라팀은 이 위변조된 블록이 릴리스된 후 몇 초 이내로 블록을 탐지할 수 있었으며, 자체 해시 파워를 통해 위변조된 블록을 거부하기로 선택한 유명하고 정직한 채굴자들과 신속하게 의사소통하여 결국 공격자의 포크를 추월하고 이중 지출이 발생하지 않도록 방지할 수 있었습니”라고 셰더스는 말합니다.
셰더스는 또한 비트코인 협회가 체인의 상태를 전달하여, 블록 탐색기와 리스너(listener)가 정직한 모든 채굴자가 작업하고 있는 정확하고 정직한 체인을 따르는 것이 가능했다고 설명합니다.
“이 기간 동안 비트코인 협회는 이중 지출이 포함된 공격자가 사전에 숨긴 블록을 무효화하기 위해 정직한 채굴자가 사용하고 있던 명령을 전파했습니다”라고 그는 말합니다.
“이렇게 한 이유는 정직한 채굴자가 공격자의 체인을 앞지르는 데는 얼마간의 시간이 필요할 수 있다는 것이 알려져 있었기 때문입니다. 이 명령은 다른 (채굴자가 아닌) 비트코인 SV 노드 소프트웨어 오퍼레이터(블록 리스너로서 작동하는 애플리케이션 등)에게 대다수의 정직한 채굴자가 가장 긴 체인이 될 수 있다고 예견하고 구축한 체인을 따를 수 있는 메커니즘을 제공했습니다.”
이 대응의 결과로 2차 공격이 진행되는 동안 이중 지출은 기록되지 않았고 공격자는 BSV 네트워크에서 불법적인 일을 시도하기 위해 약 $200,000를 지출했습니다. 이 시도를 위해 투자한 자원에도 불구하고 공격자는 성공하지 못했으며, BSV는 예상된 효율적인 상태로 지속적으로 운영되어 거래 처리량을 늘리고 지난달에는 여러 차례 기록적인 수준인 1GB 블록을 채굴했습니다.
비트코인 프로토콜을 통한 방어 해법
비트코인 SV는 백서에 설명된 오리지널 비트코인 프로토콜을 기반으로 하기 때문에 채굴자 행위가 프로토콜이 구축된 초기에 제시된 규칙을 따르는 것이 중요합니다. 셰더스는 최근의 공격에 대한 정직한 채굴자들의 대응에 백서의 어떤 부분을 적용할 수 있는지 자세히 보여줍니다.
셰더스의 설명에서 이러한 공격을 방어하기 위한 채굴자 행위의 핵심은 비트코인 백서에 설명된 ‘최초로 본 규칙’을 준수했다는 것입니다.
“비트코인 프로토콜에 명시된 규칙을 시행할 책임이 있는 채굴자들은 비트코인 백서에 정의된 “최초로 본 규칙”을 기반으로 하여 유효하지 않은 거래와 이를 포함하는 블록을 거부하는 행위를 기본적으로 취했습니다”라고 셰더스는 말합니다.
셰더스는 블록체인 상태를 관찰하는 관찰자에게 현재 또는 과거 시점을 부여하는 것에 대한 중요성을 설명하면서 시점 간의 작은 차이는 자연스럽게 확장된 체인 팁(chain tip) 사례에서 일반적이라고 언급합니다. 셰더스는 백서의 다른 부분을 참조하여, 특히 블록 재구성 공격의 맥락에서 이러한 시점 간의 차이를 조정할 수 있는 방법을 보여줍니다.
그는 백서에 설명된 사기, 이중 지출, 정직한 체인 및 유효성의 정의를 살펴보고, 정직한 노드가 백서에 설명된 ‘수취인은 각 거래 시점에 해당 거래가 처음 받은 거래라는 데 대부분의 노드가 동의했다는 증거가 필요하다’라는 요구 사항을 충족하려면 블록 브로드캐스팅의 필요성이 필수적이라는 것을 강조합니다.
최근 BSV 네트워크에 대한 공격이 급증하면서 네트워크 규칙을 인코딩하는 것의 어려움과 네트워크 규칙이 손상된 경우 시스템 상태를 보호하기 위해 사람이 개입해야 할 필요성이 입증되었습니다.
“알고리즘이 악의적으로 사용될 때 잠재적인 공격 벡터를 열지 않고 알고리즘으로 규칙을 표현하는 것이 항상 실용적인 것은 아닙니다. 이것이 때때로 인간의 판단과 개입이 필요한 이유입니다”라고 셰더스는 설명합니다.
“비트코인은 코드가 아니라 규칙 집합을 시행하고 다른 당사자가 해당 규칙 집합을 위반하는 것을 거부하는 여러 독립 당사자의 시스템입니다.”
공격에 대한 전체 분석 및 비트코인 백서와 네트워크 대응의 일치성에 대해 알아보려면 스티브 셰더스의 원본 블로그 포스트를 읽어보시기 바랍니다.