이더리움 지분 증명 공격과 방어
페이지 마지막 업데이트됨: 2026년 2월 26일
도둑과 사보타주들은 이더리움의 클라이언트 소프트웨어를 공격할 기회를 끊임없이 찾고 있습니다. 이 페이지에서는 이더리움의 합의 레이어에 대해 알려진 공격 벡터와 해당 공격을 방어하는 방법을 간략하게 설명합니다. 이 페이지의 정보는 더 긴 버전 (opens in a new tab)에서 발췌한 것입니다.
필수 구성 요소
지분 증명에 대한 몇 가지 기본 지식이 필요합니다. 또한 이더리움의 인센티브 레이어와 포크 선택 알고리즘인 LMD-GHOST에 대한 기본적 이해가 있으면 도움이 될 것입니다.
공격자는 무엇을 원할까요?
성공적인 공격자가 새로운 이더를 생성하거나 임의의 계정에서 이더를 빼낼 수 있다는 것은 일반적인 오해입니다. 네트워크의 모든 실행 클라이언트가 모든 트랜잭션을 실행하기 때문에 이 두 가지 모두 불가능합니다. 유효성의 기본 조건(예: 발신자의 개인 키로 트랜잭션이 서명되었는지, 발신자에게 충분한 잔액이 있는지 등)을 충족해야 하며, 그렇지 않으면 간단히 되돌려집니다. 공격자가 현실적으로 목표로 삼을 수 있는 결과에는 재구성(reorgs), 이중 최종 승인 또는 최종 승인 지연의 세 가지 종류가 있습니다.
“재구성(reorg)”은 정규 체인에 일부 블록이 추가되거나 제거되면서 블록이 새로운 순서로 재조정되는 것입니다. 악의적인 재구성은 특정 블록이 포함되거나 제외되도록 보장하여 이중 지불 또는 선행 매매 및 후행 매매 트랜잭션(MEV)을 통한 가치 추출을 허용할 수 있습니다. 재구성은 특정 트랜잭션이 정규 체인에 포함되는 것을 막는 데 사용될 수도 있는데, 이는 일종의 검열입니다. 재구성의 가장 극단적인 형태는 이전에 최종 승인된 블록을 제거하거나 대체하는 "최종 승인 되돌리기(finality reversion)"입니다. 이는 공격자에 의해 전체 스테이킹된 이더의 ⅓ 이상이 파괴되어야만 가능하며, 이 보증은 "경제적 최종 승인(economic finality)"으로 알려져 있습니다. 이에 대해서는 나중에 자세히 설명하겠습니다.
이중 최종 승인은 두 개의 포크가 동시에 최종 승인될 수 있는, 가능성은 낮지만 심각한 상태로, 체인에 영구적인 분열을 일으킵니다. 이것은 전체 스테이킹된 이더의 34%를 감수할 의향이 있는 공격자에게 이론적으로 가능합니다. 커뮤니티는 오프체인에서 협력하여 어떤 체인을 따를지에 대한 합의에 도달해야 하며, 이를 위해서는 소셜 레이어의 힘이 필요합니다.
최종 승인 지연 공격은 네트워크가 체인의 섹션을 최종 승인하는 데 필요한 조건에 도달하는 것을 방해합니다. 최종 승인이 없으면 이더리움 위에 구축된 금융 애플리케이션을 신뢰하기 어렵습니다. 최종 승인 지연 공격의 목표는 공격자가 전략적 공매도 포지션을 가지고 있지 않는 한 직접적인 이익을 얻기보다는 단순히 이더리움을 방해하는 것일 가능성이 높습니다.
소셜 레이어에 대한 공격은 이더리움에 대한 대중의 신뢰를 약화시키고, 이더의 가치를 떨어뜨리고, 채택을 줄이거나, 이더리움 커뮤니티를 약화시켜 대역 외(out-of-band) 조정을 더 어렵게 만드는 것을 목표로 할 수 있습니다.
적대자가 이더리움을 공격할 수 있는 이유를 확인했으므로 다음 섹션에서는 그들이 어떻게 공격할 수 있는지 살펴봅니다.
공격 방법
레이어 0 공격
우선, 이더리움에 적극적으로 참여하지 않는 개인(클라이언트 소프트웨어를 실행하여)은 소셜 레이어(레이어 0)를 표적으로 삼아 공격할 수 있습니다. 레이어 0은 이더리움이 구축된 기반이며, 따라서 스택의 나머지 부분에 파급 효과를 미치는 공격에 대한 잠재적인 공격 표면을 나타냅니다. 몇 가지 예는 다음과 같습니다.
-
잘못된 정보 캠페인은 커뮤니티가 이더리움의 로드맵, 개발자 팀, 앱 등에 대해 가지고 있는 신뢰를 약화시킬 수 있습니다. 이는 네트워크 보안에 기꺼이 참여하려는 개인의 수를 감소시켜 탈중앙화와 암호 경제적 보안을 모두 저하시킬 수 있습니다.
-
개발자 커뮤니티를 대상으로 한 표적 공격 및/또는 위협. 이는 개발자의 자발적인 이탈로 이어져 이더리움의 발전을 늦출 수 있습니다.
-
지나치게 열성적인 규제 또한 레이어 0에 대한 공격으로 간주될 수 있는데, 이는 참여와 채택을 급격히 저해할 수 있기 때문입니다.
-
자전거 보관소 논쟁(bike-shedding)으로 진행을 늦추고, 핵심 결정을 지연시키며, 스팸을 생성하는 등을 목표로 하는 지식이 있지만 악의적인 행위자가 개발자 커뮤니티에 침투하는 것.
-
의사 결정에 영향을 미치기 위해 이더리움 생태계의 핵심 인물에게 제공되는 뇌물.
이러한 공격이 특히 위험한 이유는 많은 경우에 자본이나 기술적 노하우가 거의 필요하지 않기 때문입니다. 레이어 0 공격은 암호 경제적 공격에 대한 승수(multiplier)가 될 수 있습니다. 예를 들어, 악의적인 대다수 지분 보유자에 의해 검열이나 최종 승인 되돌리기가 달성되면, 소셜 레이어를 약화시켜 커뮤니티가 대역 외로 대응을 조정하기가 더 어려워질 수 있습니다.
레이어 0 공격에 대한 방어는 아마도 간단하지 않겠지만, 몇 가지 기본 원칙을 수립할 수 있습니다. 한 가지는 블로그, 디스코드 서버, 주석이 달린 사양, 책, 팟캐스트, 유튜브를 통해 커뮤니티의 정직한 구성원들이 생성하고 전파하는 이더리움에 대한 공개 정보에 대해 전반적으로 높은 신호 대 잡음비를 유지하는 것입니다. 저희 ethereum.org에서는 정확한 정보를 유지하고 가능한 한 많은 언어로 번역하기 위해 열심히 노력하고 있습니다. 공간을 고품질 정보와 밈(meme)으로 채우는 것은 잘못된 정보에 대한 효과적인 방어입니다.
소셜 레이어 공격에 대한 또 다른 중요한 방어책은 명확한 사명 선언문과 거버넌스 프로토콜입니다. 이더리움은 스마트 계약 레이어 1 중에서 탈중앙화 및 보안의 챔피언으로 자리매김했으며 확장성과 지속 가능성도 매우 중요하게 생각합니다. 이더리움 커뮤니티에서 어떤 의견 차이가 발생하더라도 이러한 핵심 원칙은 최소한으로만 훼손됩니다. 이러한 핵심 원칙에 비추어 내러티브를 평가하고 EIP(이더리움 개선 제안) 프로세스에서 연속적인 검토 라운드를 통해 이를 검토하면 커뮤니티가 선한 행위자와 악의적인 행위자를 구별하고 악의적인 행위자가 이더리움의 미래 방향에 영향을 미칠 수 있는 범위를 제한하는 데 도움이 될 수 있습니다.
마지막으로, 이더리움 커뮤니티가 모든 참여자에게 개방적이고 환영하는 자세를 유지하는 것이 중요합니다. 문지기(gatekeeper)와 배타성이 있는 커뮤니티는 "우리와 그들"이라는 내러티브를 구축하기 쉽기 때문에 사회적 공격에 특히 취약합니다. 부족주의와 유해한 극단주의는 커뮤니티에 해를 끼치고 레이어 0의 보안을 약화시킵니다. 네트워크 보안에 기득권을 가진 이더리안은 온라인과 현실 세계(meatspace)에서의 행동을 이더리움 레이어 0의 보안에 직접적인 기여자로 보아야 합니다.
프로토콜 공격
누구나 이더리움의 클라이언트 소프트웨어를 실행할 수 있습니다. 클라이언트에 검증자를 추가하려면 사용자는 예치 계약에 32 이더를 스테이킹해야 합니다. 검증자를 통해 사용자는 새로운 블록을 제안하고 증명함으로써 이더리움의 네트워크 보안에 적극적으로 참여할 수 있습니다. 검증자는 이제 블록체인의 미래 내용에 영향을 미칠 수 있는 목소리를 갖게 됩니다. 그들은 정직하게 그렇게 하여 보상을 통해 이더 보유량을 늘리거나, 자신의 스테이킹을 위험에 빠뜨리면서 자신의 이익을 위해 프로세스를 조작하려고 시도할 수 있습니다. 공격을 감행하는 한 가지 방법은 총 스테이킹의 더 큰 비율을 축적한 다음 이를 사용하여 정직한 검증자를 투표로 이기는 것입니다. 공격자가 통제하는 스테이킹의 비율이 클수록 투표권이 커지며, 특히 나중에 살펴볼 특정 경제적 이정표에서 더욱 그렇습니다. 그러나 대부분의 공격자는 이런 방식으로 공격할 만큼 충분한 이더를 축적할 수 없으므로, 대신 정직한 다수가 특정 방식으로 행동하도록 조종하기 위해 미묘한 기술을 사용해야 합니다.
기본적으로 모든 소규모 스테이킹 공격은 두 가지 유형의 검증자 부정 행위에 대한 미묘한 변형입니다. 즉, 활동 부족(증명/제안 실패 또는 늦게 수행) 또는 과잉 활동(슬롯에서 너무 여러 번 제안/증명)입니다. 가장 기본적인 형태에서 이러한 행동은 포크 선택 알고리즘과 인센티브 레이어에서 쉽게 처리되지만, 공격자의 이익을 위해 시스템을 이용하는 영리한 방법이 있습니다.
소량의 ETH를 사용한 공격
재구성(reorgs)
몇몇 논문에서는 총 스테이킹된 이더의 일부만으로 재구성 또는 최종 승인 지연을 달성하는 이더리움에 대한 공격을 설명했습니다. 이러한 공격은 일반적으로 공격자가 다른 검증자로부터 일부 정보를 보류한 다음 미묘한 방식으로 및/또는 적절한 순간에 공개하는 것에 의존합니다. 일반적으로 정규 체인에서 일부 정직한 블록을 대체하는 것을 목표로 합니다. Neuder 외 2020 (opens in a new tab)은 공격하는 검증자가 특정 슬롯 n+1에 대한 블록(B)을 생성하고 증명할 수 있지만 네트워크의 다른 노드에 전파하는 것을 자제하는 방법을 보여주었습니다. 대신, 다음 슬롯 n+2까지 증명된 블록을 보유합니다. 정직한 검증자는 슬롯 n+2에 대한 블록(C)을 제안합니다. 거의 동시에 공격자는 보류된 블록(B)과 그에 대한 보류된 인증을 공개하고, 슬롯 n+2에 대한 투표로 B가 체인의 헤드임을 증명하여 정직한 블록 C의 존재를 효과적으로 부정할 수 있습니다. 정직한 블록 D가 공개되면 포크 선택 알고리즘은 B 위에 구축된 D가 C 위에 구축된 D보다 더 무겁다고 봅니다. 따라서 공격자는 1블록 사전 재구성(ex ante reorg)을 사용하여 슬롯 n+2의 정직한 블록 C를 정규 체인에서 제거하는 데 성공했습니다. 이 노트 (opens in a new tab)에 설명된 바와 같이, 34%의 스테이킹을 가진 공격자 (opens in a new tab)는 이 공격에 성공할 가능성이 매우 높습니다. 하지만 이론적으로는 더 작은 스테이킹으로도 이 공격을 시도할 수 있습니다. Neuder 외 2020 (opens in a new tab)은 30%의 스테이킹으로 이 공격이 작동한다고 설명했지만, 나중에 총 스테이킹의 2% (opens in a new tab)로도 가능하며, 다음 섹션에서 살펴볼 균형 조정 기술을 사용하여 단일 검증자 (opens in a new tab)에 대해서도 가능하다는 것이 밝혀졌습니다.
위에 설명된 1블록 재구성 공격의 개념도(https://notes.ethereum.org/plgVdz-ORe-fGjK06BZ_3A#Fork-choice-by-block-slot-pair에서 (opens in a new tab) 발췌)
더 정교한 공격은 정직한 검증자 집합을 체인의 헤드에 대해 서로 다른 견해를 가진 개별 그룹으로 분할할 수 있습니다. 이를 균형 공격(balancing attack)이라고 합니다. 공격자는 블록을 제안할 기회를 기다리다가 기회가 오면 이중 제안을 합니다. 그들은 한 블록을 정직한 검증자 집합의 절반에 보내고 다른 블록을 나머지 절반에 보냅니다. 이중 제안은 포크 선택 알고리즘에 의해 감지되고 블록 제안자는 슬래싱되어 네트워크에서 퇴출되지만, 두 블록은 여전히 존재하며 각 포크에 대해 약 절반의 검증자 집합이 증명하게 됩니다. 한편, 나머지 악의적인 검증자들은 자신의 인증을 보류합니다. 그런 다음 포크 선택 알고리즘이 실행될 때 한쪽 또는 다른 쪽 포크를 선호하는 인증을 필요한 만큼의 검증자에게만 선택적으로 공개함으로써 누적된 인증 가중치를 한쪽 또는 다른 쪽 포크에 유리하도록 기울입니다. 이는 공격하는 검증자들이 두 포크에 걸쳐 검증자들을 균등하게 분할하여 무기한 계속될 수 있습니다. 어느 포크도 2/3의 절대다수를 확보할 수 없으므로 네트워크는 최종 승인되지 않습니다.
바운싱 공격(Bouncing attack)도 비슷합니다. 공격하는 검증자들은 다시 투표를 보류합니다. 두 포크 간에 균등한 분할을 유지하기 위해 투표를 공개하는 대신, 그들은 적절한 순간에 투표를 사용하여 포크 A와 포크 B 사이를 번갈아 가며 체크포인트를 정당화합니다. 두 포크 간에 이러한 정당화의 번복은 어느 체인에서도 최종 승인될 수 있는 정당화된 소스 및 타겟 체크포인트 쌍이 존재하는 것을 막아 최종 승인을 중단시킵니다.
바운싱 및 균형 공격 모두 공격자가 네트워크 전체의 메시지 타이밍을 매우 정밀하게 제어하는 데 의존하며, 이는 가능성이 낮습니다. 그럼에도 불구하고, 느린 메시지에 비해 신속한 메시지에 추가 가중치를 부여하는 형태로 프로토콜에 방어 기능이 내장되어 있습니다. 이는 제안자 가중치 부스팅 (opens in a new tab)으로 알려져 있습니다. 바운싱 공격을 방어하기 위해 포크 선택 알고리즘이 업데이트되어, 최신 정당화된 체크포인트는 각 에포크의 슬롯 중 처음 1/3 동안 (opens in a new tab)에만 대체 체인의 체크포인트로 전환될 수 있습니다. 이 조건은 공격자가 나중에 배포하기 위해 투표를 저장하는 것을 방지합니다. 포크 선택 알고리즘은 대부분의 정직한 검증자가 투표했을 에포크의 처음 1/3 동안 선택한 체크포인트에 충실하게 유지됩니다.
종합적으로, 이러한 조치들은 정직한 블록 제안자가 슬롯 시작 직후 매우 빠르게 블록을 내보내고, 그 다음 약 1/3 슬롯(4초) 동안 해당 새 블록이 포크 선택 알고리즘을 다른 체인으로 전환하게 할 수 있는 시나리오를 만듭니다. 해당 마감 시간 이후에 느린 검증자로부터 도착하는 인증은 더 일찍 도착한 인증에 비해 가중치가 낮아집니다. 이는 체인의 헤드를 결정하는 데 있어 신속한 제안자와 검증자에게 강력하게 유리하며, 성공적인 균형 또는 바운싱 공격의 가능성을 크게 줄입니다.
제안자 부스팅만으로는 "저렴한 재구성(cheap reorgs)", 즉 소규모 스테이킹을 가진 공격자가 시도하는 재구성에만 방어한다는 점에 유의할 가치가 있습니다. 사실, 제안자 부스팅 자체는 더 큰 지분 보유자에 의해 이용될 수 있습니다. 이 게시물 (opens in a new tab)의 저자들은 7%의 스테이킹을 가진 공격자가 정직한 블록을 재구성하여 정직한 검증자를 속여 자신의 포크 위에 구축하도록 전략적으로 투표를 배포하는 방법을 설명합니다. 이 공격은 매우 가능성이 낮은 이상적인 지연 시간 조건을 가정하여 고안되었습니다. 공격자의 성공 확률은 여전히 매우 낮으며, 더 큰 스테이킹은 더 많은 자본이 위험에 처해 있고 더 강력한 경제적 저해 요인이 있음을 의미합니다.
제안자 부스팅에도 불구하고 실행 가능하다고 제안된 LMD 규칙을 구체적으로 겨냥한 균형 공격 (opens in a new tab)도 제안되었습니다. 공격자는 블록 제안을 이중으로 하고 각 블록을 네트워크의 약 절반에 전파하여 두 개의 경쟁 체인을 설정하고 포크 간에 대략적인 균형을 맞춥니다. 그런 다음, 공모하는 검증자들은 투표를 이중으로 하여 네트워크의 절반이 포크 A에 대한 투표를 먼저 받고 나머지 절반이 포크 B에 대한 투표를 먼저 받도록 시간을 맞춥니다. LMD 규칙은 두 번째 인증을 버리고 각 검증자에 대해 첫 번째 인증만 유지하므로, 네트워크의 절반은 A에 대한 투표를 보고 B에 대한 투표는 보지 못하며, 나머지 절반은 B에 대한 투표를 보고 A에 대한 투표는 보지 못합니다. 저자들은 LMD 규칙이 적에게 균형 공격을 감행할 "놀라운 힘"을 준다고 설명합니다.
이 LMD 공격 벡터는 포크 선택 알고리즘을 업데이트 (opens in a new tab)하여 이중 투표하는 검증자를 포크 선택 고려에서 완전히 제외함으로써 해결되었습니다. 이중 투표하는 검증자는 또한 포크 선택 알고리즘에 의해 미래의 영향력이 할인됩니다. 이는 위에서 설명한 균형 공격을 방지하는 동시에 애벌랜치 공격에 대한 복원력을 유지합니다.
애벌랜치 공격 (opens in a new tab)이라는 또 다른 종류의 공격은 2022년 3월 논문 (opens in a new tab)에서 설명되었습니다. 애벌랜치 공격을 감행하려면 공격자는 여러 연속적인 블록 제안자를 제어해야 합니다. 각 블록 제안 슬롯에서 공격자는 자신의 블록을 보류하고 정직한 체인이 보류된 블록과 동일한 하위 트리 가중치에 도달할 때까지 수집합니다. 그런 다음, 보류된 블록은 최대한 이중 제안되도록 공개됩니다. 저자들은 균형 및 바운싱 공격에 대한 주요 방어책인 제안자 부스팅이 일부 애벌랜치 공격 변종에 대해서는 보호하지 못한다고 제안합니다. 그러나 저자들은 또한 이더리움의 포크 선택 알고리즘의 매우 이상화된 버전(LMD 없이 GHOST를 사용)에서만 공격을 시연했습니다.
애벌랜치 공격은 LMD-GHOST 포크 선택 알고리즘의 LMD 부분에 의해 완화됩니다. LMD는 “최신 메시지 기반(latest-message-driven)”을 의미하며, 각 검증자가 다른 검증자로부터 받은 최신 메시지를 포함하는 테이블을 참조합니다. 해당 필드는 새 메시지가 특정 검증자에 대해 테이블에 이미 있는 슬롯보다 더 늦은 슬롯에서 온 경우에만 업데이트됩니다. 실제로 이는 각 슬롯에서 수신된 첫 번째 메시지가 수락된 메시지이며 추가 메시지는 무시해야 할 이중 제안임을 의미합니다. 다시 말해, 합의 클라이언트는 이중 제안을 계산하지 않습니다. 각 검증자로부터 처음 도착한 메시지를 사용하고 이중 제안은 단순히 폐기되어 애벌랜치 공격을 방지합니다.
제안자 부스트가 제공하는 보안에 추가될 수 있는 포크 선택 규칙에 대한 몇 가지 다른 잠재적인 미래 업그레이드가 있습니다. 하나는 뷰 병합 (opens in a new tab)으로, 증명자는 슬롯 시작 n초 전에 포크 선택에 대한 뷰를 동결하고 제안자는 네트워크 전체에서 체인 뷰를 동기화하는 데 도움을 줍니다. 또 다른 잠재적인 업그레이드는 단일 슬롯 최종 승인 (opens in a new tab)으로, 단 하나의 슬롯 후에 체인을 최종 승인함으로써 메시지 타이밍에 기반한 공격으로부터 보호합니다.
최종 승인 지연
저비용 단일 블록 재구성 공격을 처음 설명한 같은 논문 (opens in a new tab)은 또한 공격자가 에포크 경계 블록의 블록 제안자가 되는 것에 의존하는 최종 승인 지연(일명 “활성 실패(liveness failure)”) 공격을 설명했습니다. 이러한 에포크 경계 블록은 Casper FFG가 체인의 일부를 최종 승인하는 데 사용하는 체크포인트가 되기 때문에 중요합니다. 공격자는 충분한 수의 정직한 검증자가 현재 최종 승인 대상으로 이전 에포크 경계 블록을 선호하는 FFG 투표를 사용할 때까지 단순히 블록을 보류합니다. 그런 다음 보류된 블록을 공개합니다. 그들은 자신의 블록을 증명하고 나머지 정직한 검증자들도 그렇게 하여 다른 타겟 체크포인트를 가진 포크를 생성합니다. 타이밍을 제대로 맞추면 어느 포크에도 2/3의 절대다수가 증명하지 않기 때문에 최종 승인을 막을 수 있습니다. 스테이킹이 작을수록 공격자가 직접 제어하는 인증 수가 적고, 주어진 에포크 경계 블록을 제안하는 검증자를 공격자가 제어할 확률이 낮기 때문에 타이밍이 더 정확해야 합니다.
장기 공격
또한 제네시스 블록에 참여한 검증자가 정직한 블록체인과 함께 별도의 블록체인 포크를 유지하다가 훨씬 나중에 적절한 시기에 정직한 검증자 집합을 해당 포크로 전환하도록 설득하는 것과 관련된 지분 증명 블록체인에 특정한 공격 유형이 있습니다. 이러한 유형의 공격은 모든 검증자가 정기적인 간격("체크포인트")으로 정직한 체인의 상태에 동의하도록 보장하는 최종 승인 장치 때문에 이더리움에서는 불가능합니다. 이 간단한 메커니즘은 이더리움 클라이언트가 최종 승인된 블록을 재구성하지 않기 때문에 장거리 공격자를 무력화합니다. 네트워크에 참여하는 새로운 노드는 신뢰할 수 있는 최근 상태 해시("약한 주관성 (opens in a new tab) 체크포인트")를 찾아 이를 의사 제네시스 블록으로 사용하여 그 위에 구축함으로써 그렇게 합니다. 이는 네트워크에 진입하는 새로운 노드가 스스로 정보를 확인하기 전에 '신뢰 게이트웨이'를 생성합니다.
서비스 거부
이더리움의 지분 증명 메커니즘은 각 슬롯에서 전체 검증자 집합에서 단일 검증자를 블록 제안자로 선택합니다. 이는 공개적으로 알려진 함수를 사용하여 계산할 수 있으며, 적이 블록 제안 약간 전에 다음 블록 제안자를 식별하는 것이 가능합니다. 그런 다음 공격자는 블록 제안자에게 스팸을 보내 동료와 정보를 교환하는 것을 방지할 수 있습니다. 네트워크의 나머지 부분에는 블록 제안자가 오프라인인 것처럼 보이고 슬롯은 단순히 비어 있게 됩니다. 이는 특정 검증자에 대한 검열의 한 형태로, 그들이 블록체인에 정보를 추가하는 것을 막을 수 있습니다. 단일 비밀 리더 선출(SSLE) 또는 비단일 비밀 리더 선출을 구현하면 블록 제안자만이 자신이 선택되었음을 알고 선택이 사전에 알려지지 않기 때문에 서비스 거부(DoS) 위험을 완화할 수 있습니다. 이는 아직 구현되지 않았지만 활발한 연구 개발 (opens in a new tab) 분야입니다.
이 모든 것은 적은 스테이킹으로 이더리움을 성공적으로 공격하기가 매우 어렵다는 사실을 가리킵니다. 여기에 설명된 실행 가능한 공격은 이상적인 포크 선택 알고리즘, 비현실적인 네트워크 조건을 요구하거나, 클라이언트 소프트웨어에 대한 비교적 사소한 패치로 이미 공격 벡터가 닫혔습니다. 물론 이것이 제로데이 공격이 실제로 존재할 가능성을 배제하는 것은 아니지만, 소수 지분 공격자가 효과적이 되기 위해 요구되는 기술적 적성, 합의 레이어 지식 및 운의 매우 높은 기준을 보여줍니다. 공격자의 관점에서 최선의 방법은 가능한 한 많은 이더를 축적하고 총 스테이킹의 더 큰 비율로 무장하여 돌아오는 것일 수 있습니다.
총 스테이킹의 >= 33%를 사용하는 공격자
이 글에서 앞서 언급한 모든 공격은 공격자가 투표할 스테이킹된 이더가 더 많고 각 슬롯에서 블록을 제안하도록 선택될 수 있는 검증자가 더 많을 때 성공할 가능성이 더 높아집니다. 따라서 악의적인 검증자는 가능한 한 많은 스테이킹된 이더를 제어하는 것을 목표로 할 수 있습니다.
스테이킹된 이더의 33%는 공격자의 벤치마크입니다. 왜냐하면 이 양보다 많으면 다른 검증자의 행동을 미세하게 제어할 필요 없이 체인이 최종 승인되는 것을 막을 수 있기 때문입니다. 그들은 단순히 함께 사라질 수 있습니다. 스테이킹된 이더의 1/3 이상이 악의적으로 증명하거나 증명에 실패하면 2/3의 절대다수가 존재할 수 없으며 체인은 최종 승인될 수 없습니다. 이에 대한 방어는 비활동 유출입니다. 비활동 유출은 증명에 실패하거나 다수와 반대로 증명하는 검증자를 식별합니다. 이러한 비증명 검증자가 소유한 스테이킹된 이더는 점차적으로 소멸되어 결국 전체의 1/3 미만을 차지하게 되어 체인이 다시 최종 승인될 수 있도록 합니다.
비활동 유출의 목적은 체인이 다시 최종 승인되도록 하는 것입니다. 그러나 공격자도 스테이킹된 이더의 일부를 잃게 됩니다. 검증자가 슬래싱되지 않더라도 총 스테이킹된 이더의 33%를 차지하는 검증자들의 지속적인 비활동은 매우 비용이 많이 듭니다.
이더리움 네트워크가 비동기적(즉, 메시지가 전송되고 수신되는 사이에 지연이 있음)이라고 가정하면, 총 스테이킹의 34%를 제어하는 공격자는 이중 최종 승인을 유발할 수 있습니다. 이는 공격자가 블록 생산자로 선택되었을 때 이중 제안을 한 다음 모든 검증자로 이중 투표를 할 수 있기 때문입니다. 이는 블록체인의 포크가 존재하는 상황을 만들며, 각 포크는 스테이킹된 이더의 34%가 투표합니다. 각 포크는 나머지 검증자의 50%만 찬성 투표하면 두 포크 모두 절대다수의 지지를 받게 되며, 이 경우 두 체인 모두 최종 승인될 수 있습니다(공격자 검증자의 34% + 나머지 66%의 절반 = 각 포크당 67%). 경쟁하는 블록은 각각 정직한 검증자의 약 50%에 의해 수신되어야 하므로 이 공격은 공격자가 네트워크를 통해 전파되는 메시지의 타이밍을 어느 정도 제어하여 정직한 검증자의 절반을 각 체인으로 유도할 수 있을 때만 실행 가능합니다. 공격자는 이 이중 최종 승인을 달성하기 위해 전체 스테이킹(오늘날의 검증자 집합으로 약 천만 이더의 34%)을 필연적으로 파괴할 것입니다. 왜냐하면 검증자의 34%가 동시에 이중 투표를 하기 때문이며, 이는 최대 상관 관계 페널티가 부과되는 슬래싱 가능한 위반입니다. 이 공격에 대한 방어는 총 스테이킹된 이더의 34%를 파괴하는 데 드는 막대한 비용입니다. 이 공격에서 복구하려면 이더리움 커뮤니티가 "대역 외"로 조정하여 한 포크 또는 다른 포크를 따르고 다른 포크를 무시하는 데 동의해야 합니다.
총 스테이킹의 ~50%를 사용하는 공격자
스테이킹된 이더의 50%에서 악의적인 검증자 그룹은 이론적으로 체인을 두 개의 동일한 크기의 포크로 분할한 다음 전체 50% 스테이킹을 사용하여 정직한 검증자 집합과 반대로 투표하여 두 포크를 유지하고 최종 승인을 막을 수 있습니다. 두 포크의 비활동 유출은 결국 두 체인 모두 최종 승인으로 이어질 것입니다. 이 시점에서 유일한 선택은 사회적 복구에 의존하는 것입니다.
정직한 검증자 수, 네트워크 지연 시간 등의 변동을 고려할 때 적대적인 검증자 그룹이 총 스테이킹의 정확히 50%를 지속적으로 제어할 가능성은 매우 낮습니다. 이러한 공격을 감행하는 데 드는 막대한 비용과 성공 가능성이 낮은 점은 이성적인 공격자에게 강력한 저해 요인으로 보이며, 특히 50%를 초과하여 얻는 데 약간의 추가 투자를 하면 훨씬 더 많은 힘을 얻을 수 있습니다.
총 스테이킹의 50% 이상에서 공격자는 포크 선택 알고리즘을 지배할 수 있습니다. 이 경우 공격자는 다수 투표로 증명할 수 있으므로 정직한 클라이언트를 속일 필요 없이 짧은 재구성을 할 수 있는 충분한 제어권을 갖게 됩니다. 정직한 검증자들의 포크 선택 알고리즘도 공격자가 선호하는 체인을 가장 무겁게 볼 것이므로 체인은 최종 승인될 수 있습니다. 이를 통해 공격자는 특정 트랜잭션을 검열하고, 단거리 재구성을 수행하며, 자신에게 유리하도록 블록을 재정렬하여 최대 MEV를 추출할 수 있습니다. 이에 대한 방어는 다수 스테이킹의 막대한 비용(현재 약 190억 달러)이며, 소셜 레이어가 개입하여 정직한 소수 포크를 채택하고 공격자의 스테이킹 가치를 극적으로 떨어뜨릴 가능성이 있기 때문에 공격자에 의해 위험에 처하게 됩니다.
총 스테이킹의 >=66%를 사용하는 공격자
총 스테이킹된 이더의 66% 이상을 가진 공격자는 정직한 검증자를 강요할 필요 없이 선호하는 체인을 최종 승인할 수 있습니다. 공격자는 단순히 선호하는 포크에 투표한 다음 최종 승인할 수 있습니다. 이는 그들이 부정직한 절대다수로 투표할 수 있기 때문입니다. 절대다수 지분 보유자로서 공격자는 항상 최종 승인된 블록의 내용을 제어하며, 지출, 되감기, 재지출, 특정 트랜잭션 검열, 의지에 따라 체인 재구성 등의 권한을 갖게 됩니다. 51% 대신 66%를 제어하기 위해 추가 이더를 구매함으로써 공격자는 사실상 사후 재구성 및 최종 승인 되돌리기(즉, 미래를 제어할 뿐만 아니라 과거를 변경하는 능력)를 구매하는 것입니다. 여기서 유일한 실제 방어책은 총 스테이킹된 이더의 66%에 달하는 막대한 비용과 대체 포크의 채택을 조정하기 위해 소셜 레이어로 돌아가는 옵션입니다. 다음 섹션에서 이에 대해 더 자세히 살펴볼 수 있습니다.
사람: 최후의 방어선
부정직한 검증자들이 선호하는 버전의 체인을 최종 승인하는 데 성공하면 이더리움 커뮤니티는 어려운 상황에 처하게 됩니다. 정규 체인에는 역사에 부정직한 부분이 포함되어 있는 반면, 정직한 검증자들은 대체(정직한) 체인에 증명한 것에 대해 처벌을 받을 수 있습니다. 최종 승인되었지만 잘못된 체인은 다수 클라이언트의 버그로 인해 발생할 수도 있습니다. 결국 궁극적인 대안은 소셜 레이어, 즉 레이어 0에 의존하여 상황을 해결하는 것입니다.
이더리움의 지분 증명 합의의 강점 중 하나는 공격에 직면했을 때 커뮤니티가 사용할 수 있는 다양한 방어 전략 (opens in a new tab)이 있다는 것입니다. 최소한의 대응은 추가적인 페널티 없이 공격자의 검증자를 네트워크에서 강제로 퇴출시키는 것일 수 있습니다. 네트워크에 다시 참여하려면 공격자는 검증자 집합이 점진적으로 증가하도록 보장하는 활성화 대기열에 참여해야 합니다. 예를 들어, 스테이킹된 이더의 양을 두 배로 늘리기에 충분한 검증자를 추가하는 데는 약 200일이 걸리며, 이는 공격자가 또 다른 51% 공격을 시도하기 전에 정직한 검증자에게 200일을 벌어줍니다. 그러나 커뮤니티는 과거 보상을 취소하거나 스테이킹된 자본의 일부(최대 100%)를 소각하는 등 공격자를 더 가혹하게 처벌하기로 결정할 수도 있습니다.
공격자에게 부과되는 페널티가 무엇이든, 커뮤니티는 또한 이더리움 클라이언트에 코딩된 포크 선택 알고리즘이 선호하는 체인임에도 불구하고 부정직한 체인이 사실상 유효하지 않으며 커뮤니티가 대신 정직한 체인 위에 구축해야 하는지 여부를 함께 결정해야 합니다. 정직한 검증자들은 예를 들어 공격이 시작되기 전에 정규 체인에서 포크되었거나 공격자의 검증자가 강제로 제거된, 커뮤니티가 수용한 이더리움 블록체인의 포크 위에 집합적으로 구축하기로 동의할 수 있습니다. 정직한 검증자들은 공격자의 체인에 (당연히) 증명하지 못한 것에 대해 적용되는 페널티를 피할 수 있기 때문에 이 체인 위에 구축하도록 인센티브를 받을 것입니다. 이더리움 위에 구축된 거래소, 온램프 및 애플리케이션은 아마도 정직한 체인에 있기를 선호할 것이며 정직한 검증자를 따라 정직한 블록체인으로 이동할 것입니다.
그러나 이것은 상당한 거버넌스 과제가 될 것입니다. 일부 사용자와 검증자는 의심할 여지 없이 정직한 체인으로 다시 전환한 결과 손실을 입을 것이며, 공격 후 검증된 블록의 트랜잭션은 잠재적으로 롤백되어 애플리케이션 레이어를 방해할 수 있으며, 이는 단순히 "코드가 법이다"라고 믿는 경향이 있는 일부 사용자의 윤리를 훼손합니다. 거래소와 애플리케이션은 이제 롤백될 수 있는 온체인 트랜잭션에 오프체인 작업을 연결했을 가능성이 높으며, 이는 특히 부당 이득이 혼합되거나 DeFi 또는 다른 파생 상품에 예치되어 정직한 사용자에게 부차적인 영향을 미치는 경우 공정하게 풀기 어려운 취소 및 수정의 연쇄 반응을 시작할 것입니다. 의심할 여지 없이 일부 사용자, 아마도 기관 사용자조차도 약삭빠르거나 우연에 의해 부정직한 체인으로부터 이미 이익을 얻었을 것이며, 자신의 이익을 보호하기 위해 포크에 반대할 수 있습니다. 합리적이고 조정된 완화 조치가 신속하게 실행될 수 있도록 51% 초과 공격에 대한 커뮤니티 대응을 연습하라는 요구가 있었습니다. Vitalik이 ethresear.ch에서 여기 (opens in a new tab)와 여기 (opens in a new tab), 그리고 트위터에서 여기 (opens in a new tab)에 유용한 논의가 있습니다. 조정된 사회적 대응의 목표는 공격자를 처벌하고 다른 사용자에 대한 영향을 최소화하는 데 매우 표적화되고 구체적이어야 합니다.
거버넌스는 이미 복잡한 주제입니다. 부정직한 최종 승인 체인에 대한 레이어-0 비상 대응을 관리하는 것은 의심할 여지 없이 이더리움 커뮤니티에 어려운 일이겠지만, 이더리움 역사상 두 번이나 일어난 일입니다.
그럼에도 불구하고, 최종적인 대안이 현실 세계에 있다는 것은 상당히 만족스러운 일입니다. 궁극적으로, 우리 위에 이 경이로운 기술 스택이 있더라도, 최악의 상황이 발생하면 실제 사람들이 협력하여 해결해야 할 것입니다.
요약
이 페이지에서는 공격자가 이더리움의 지분 증명 합의 프로토콜을 악용하려는 몇 가지 방법을 탐구했습니다. 총 스테이킹된 이더의 비율이 증가하는 공격자에 대한 재구성 및 최종 승인 지연이 탐구되었습니다. 전반적으로, 더 부유한 공격자는 자신의 스테이킹이 미래 블록의 내용에 영향을 미치는 데 사용할 수 있는 투표권으로 변환되기 때문에 성공할 가능성이 더 높습니다. 특정 임계값의 스테이킹된 이더에서 공격자의 힘은 다음과 같이 레벨업됩니다.
33%: 최종 승인 지연
34%: 최종 승인 지연, 이중 최종 승인
51%: 최종 승인 지연, 이중 최종 승인, 검열, 블록체인 미래에 대한 통제권
66%: 최종 승인 지연, 이중 최종 승인, 검열, 블록체인 미래와 과거에 대한 통제권
또한 적은 양의 스테이킹된 이더를 필요로 하지만 매우 정교한 공격자가 메시지 타이밍을 정밀하게 제어하여 정직한 검증자 집합을 자신에게 유리하게 흔드는 데 의존하는 더 정교한 공격도 있습니다.
전반적으로, 이러한 잠재적인 공격 벡터에도 불구하고 성공적인 공격의 위험은 낮으며, 확실히 작업 증명에 상응하는 것보다 낮습니다. 이는 투표력으로 정직한 검증자를 압도하려는 공격자가 위험에 빠뜨리는 스테이킹된 이더의 막대한 비용 때문입니다. 내장된 “당근과 채찍” 인센티브 레이어는 특히 낮은 스테이킹 공격자에 대해 대부분의 부정 행위로부터 보호합니다. 실제 네트워크 조건에서는 특정 검증자 하위 집합에 대한 메시지 전달의 정밀한 제어를 달성하기가 매우 어렵고, 클라이언트 팀이 알려진 바운싱, 균형 및 애벌랜치 공격 벡터를 간단한 패치로 신속하게 닫았기 때문에 더 미묘한 바운싱 및 균형 공격도 성공할 가능성이 낮습니다.
34%, 51% 또는 66% 공격은 해결하기 위해 대역 외 사회적 조정이 필요할 가능성이 높습니다. 이것이 커뮤니티에 고통스러울 수 있지만, 커뮤니티가 대역 외로 대응할 수 있는 능력은 공격자에게 강력한 저해 요인입니다. 이더리움 소셜 레이어는 궁극적인 방어책입니다. 기술적으로 성공한 공격이라도 커뮤니티가 정직한 포크를 채택하기로 동의하면 무력화될 수 있습니다. 공격자와 이더리움 커뮤니티 사이에는 경쟁이 있을 것입니다. 66% 공격에 지출된 수십억 달러는 충분히 신속하게 전달된다면 성공적인 사회적 조정 공격에 의해 아마도 소멸될 것이며, 공격자는 이더리움 커뮤니티가 무시하는 알려진 부정직한 체인에 비유동적인 스테이킹된 이더의 무거운 가방을 남기게 될 것입니다. 이것이 공격자에게 수익성이 있을 가능성은 효과적인 억제책이 될 만큼 충분히 낮습니다. 이것이 바로 긴밀하게 정렬된 가치를 가진 응집력 있는 소셜 레이어를 유지하는 데 투자하는 것이 중요한 이유입니다.
