4D는 Ethereum 합병 후 직면할 수 있는 PoS 공격 및 방어 조치에 대해 자세히 설명합니다.
원문 편집: 하룻밤죽
원문 편집: 하룻밤죽
번역가의 말: 다가오는 이더리움 합병을 위해 저자 jmcook.eth는 많은 연구 문헌을 기반으로 관련 합의 공격 방법을 요약하고 몇 가지 솔루션을 언급합니다. 일반적으로 PoS 합의 메커니즘으로 전환한 후 공격자가 제어하는 약속된 ETH의 비율이 많을수록 공격의 성공 가능성이 높아지고 Ethereum의 내장된 "당근과 채찍" 인센티브 레이어는 대부분의 것을 방지할 수 있습니다. 악의적인 행동, 특히 로우스테이킹 공격자의 경우 34%, 51% 또는 66% 공격의 경우 이를 해결하기 위해 커뮤니티 조정이 필요할 수 있으므로 약속된 권리와 이익의 중앙 집중화를 방지하는 것이 이더리움 네트워크의 보안에 중요합니다. .
초기 초안에 대해 유용한 의견을 주신 Tim Beiko와 Caspar Schwarz-Schilling에게 감사드립니다!
이더리움은 적대적인 환경으로 악명이 높으며 심지어 "어두운 숲"(삼체 문제의 두려운 게임 이론 개념)에 비유되기도 했습니다. 이러한 평판은 주로 애플리케이션 계층(안전하지 않은 스마트 계약) 또는 소셜 계층(사용자가 개인 키를 포기하거나 실수로 트랜잭션에 서명하도록 조작됨)의 약점과 트랜잭션 스토리지 풀에서 가치(MEV)를 추출하는 봇의 존재에서 비롯됩니다. . 그러나 도둑이나 기물파괴자인 정교한 해커들도 이더리움의 클라이언트 소프트웨어를 공격할 기회를 끊임없이 찾고 있습니다. 컴퓨터를 이더리움 노드로 바꾸는 클라이언트 소프트웨어는 다른 노드에 연결하고, 정보를 교환하고, 이더리움 블록체인의 상태에 동의하기 위한 모든 규칙을 정의하는 코드입니다. 프로토콜 계층에 대한 공격은 이더리움 자체에 대한 공격입니다.
곧 이더리움 클라이언트는 이더리움을 보호하는 작업증명(PoW) 알고리즘을 끄고 이를 지분증명(PoS) 합의 메커니즘으로 대체하는 주요 업그레이드("병합"이라고 함)를 겪게 될 것입니다. 여기에는 여러 가지 이유가 있으며 다른 기사에서 자세히 설명했습니다. 그것은 기술적인 변화일 뿐만 아니라 철학적인 변화일 것입니다.
PoS(지분 증명) 합의 메커니즘으로 병합하면 지속 가능성과 확장성 이점이 있지만 다른 한편으로는 클라이언트 소프트웨어의 복잡성이 증가하고 프로토콜의 잠재적인 공격 표면도 증가합니다. 현재 PoW 이더리움 블록체인을 보호하기 위해 하나의 소프트웨어만 실행하면 되지만 "병합" 후에는 실행해야 하는 소프트웨어 수가 3개(실행 클라이언트, 합의 클라이언트 및 유효성 검사기)로 증가합니다. .
이 기사는 이더리움 합의 계층에서 알려진 공격 벡터에 대한 개요를 제공하고 이러한 공격을 방어하는 몇 가지 방법을 간략하게 설명합니다. 독자는 이 기사에서 최대한의 가치를 얻으려면 비콘 체인에 대한 기본 지식이 필요할 수 있습니다. 또한 Beacon Chain의 인센티브 계층과 포크 선택 알고리즘 LMD-GHOST에 대한 기본적인 이해가 도움이 될 것입니다.
전문
전문
인센티브 계층
비컨 체인은 이더리움 고유의 암호화폐인 ETH를 사용하여 보안되는 지분증명(PoS) 블록체인입니다. . 그런 다음 검증자 소프트웨어를 실행하고 P2P 네트워크를 통해 수신된 새 블록의 유효성을 확인하고 포크 선택 알고리즘을 적용하여 블록체인 헤드를 식별하기 위해 ETH로 지불됩니다. 노드 운영자는 이제 "검증자"이며 검증자는 두 가지 주요 역할을 합니다. 1) 새 블록을 확인하고 유효함을 "증명"하고 2) 전체 검증자 풀에서 무작위로 선택된 경우 새 블록을 제안합니다. 유효성 검사기가 요청을 받았을 때 이 두 가지 작업 중 하나를 완료하지 못하면 ETH 지급을 놓치게 됩니다. 같은 슬롯에 여러 블록을 제안하거나 같은 슬롯에 여러 블록을 증명하는 것과 같이 우발적으로 수행하기 매우 어렵고 악의적인 의도를 나타내는 일부 작업도 있습니다. 네트워크에서 제거되기 전에 일정량의 ETH(최대 0.5 ETH), 36일이 소요됩니다. 삭감된 유효성 검사기의 ETH는 종료 기간 동안 천천히 소모되지만 18일째에 더 많은 유효성 검사기가 동시에 삭감되면 더 큰 "상관 패널티"를 받습니다. 따라서 Beacon Chain의 인센티브 구조는 정직한 행위자를 보상하고 나쁜 행위자를 처벌하는 것입니다.
포크 선택
포크 선택 알고리즘은 각 검증자에 의해 실행되며 그 역할은 블록체인의 헤드를 식별하는 것입니다. 완전히 정직한 검증자와 제로 네트워크 대기 시간이라는 이상적인 조건 하에서 포크 선택 알고리즘은 블록체인 상단에 단 하나의 블록만 있기 때문에 실제로 불필요합니다. 그러나 실제로 일부 클라이언트는 다른 클라이언트보다 늦게 블록을 수신하여 블록체인 헤더의 여러 버전을 생성하며 동일한 슬롯에 있을 수 있는 오작동 유효성 검사자의 비율이 있을 수 있습니다. 여러 블록에 대해 제안하거나 투표합니다. 이는 여러 옵션에서 실제 블록체인 헤더를 선택하기 위한 일종의 알고리즘이 있어야 함을 의미합니다.
참고로, 비콘 체인은 일정한 간격으로 블록체인을 고정화하는데, 이를 "종결성"이라고 합니다. 프로세스는 각 시대의 첫 번째 슬롯을 "체크포인트"로 간주하여 작동합니다. 체크포인트는 입금 계약에 총 스테이킹된 ETH의 최소 2/3를 보유한 유효성 검사기로부터 증명(투표)을 수집하는 경우 "정당화"되었다고 합니다. 해당 체크포인트 위에 다른 체크포인트가 있으면 "최종" 체크포인트가 됩니다. 그런 다음 포크 선택 알고리즘은 블록체인의 불합리한 부분의 블록만 고려합니다. 블록체인을 증명하고 확정하는 알고리즘을 "Casper FFG"라고 하고 포크 선택 알고리즘 자체를 LMD-GHOST("Latest News-Driven Greediest, Heaviest Observed Subtree"의 약자)라고 합니다. 올바른 블록체인은 가장 많은 증명을 축적한 블록체인(GHOST)이며, 동일한 검증자로부터 여러 메시지를 수신하면 마지막 메시지만 카운트합니다(LMD). 각 유효성 검사기는 이 규칙을 사용하여 각 블록을 평가하고 가장 무거운 블록을 표준 체인에 추가합니다.
각 시대 동안 유효성 검사기는 "LMD 투표" 및 "FFG 투표"라는 두 가지 주요 정보가 포함된 인증서에 서명해야 합니다. LMD 투표는 유효성 검사기가 블록체인의 헤드로 간주하는 블록의 루트이며, FFG 투표에는 대상 체크포인트와 소스 체크포인트의 블록 해시 및 에포크가 포함됩니다. 여기서 소스 체크포인트는 가장 최근에 유효한 체크포인트입니다. 체인은 이미 알고 있으며 대상 체크포인트는 증명할 다음 체크포인트입니다.
따라서 비콘 체인의 합의 알고리즘은 LMD-GHOST와 Casper FFG의 조합이며 때로는 Gasper라고도 합니다. 이 배경 지식을 간략히 이해한 후 이 시스템에 대한 몇 가지 가능한 공격을 계속 연구할 수 있습니다.
계층 0 공격
첫째, 이더리움에 적극적으로 참여하지 않는 개인(클라이언트 소프트웨어 실행)은 이더리움 네트워크를 공격하기 위해 소셜 계층(계층 0)을 대상으로 선택할 수 있습니다. 이러한 공격은 실제로 이더리움 소프트웨어의 실행에 직접적인 영향을 미치지는 않지만 이더리움에 위험을 초래합니다. 레이어 0은 이더리움이 구축되는 기반이므로 스택의 나머지 부분에 영향을 미치는 잠재적인 공격 표면을 나타냅니다. 다음은 마음에 오는 몇 가지 예입니다.
여러 플랫폼에서 시작되고 몇 달 또는 몇 년 동안 지속되는 주요 잘못된 정보 캠페인은 Ethereum 로드맵, 개발 팀에 대한 커뮤니티 신뢰를 약화시킬 수 있습니다. 이는 네트워크 보안에 참여하려는 개인의 수를 줄여 탈중앙화 및 암호화 경제 보안을 감소시킬 수 있습니다.
개발자 커뮤니티에 대한 표적 공격 또는 위협으로 인해 자발적인 개발자 종료로 이어지고 Ethereum 개발 속도가 느려지는 동시에 사기를 더 광범위하게 타격할 수 있습니다.
과도한 규제는 참여와 채택을 빠르게 약화시킬 수 있으므로 계층 0 공격으로 간주될 수도 있습니다.
박식하지만 악의적인 행위자는 무엇보다도 토론을 줄이거나, 중요한 결정을 지연시키거나, 스팸 게시물을 작성하거나, 제안에서 관심을 돌리도록 하여 진행 속도를 늦추려는 목적으로 개발자 커뮤니티에 침투합니다.
영구적인 분열을 일으키기에 충분한 불안을 조성하려는 의도로 의도적으로 이더리움 커뮤니티에 불만을 불러일으키고 있습니다.
결정에 영향을 미치기 위해 이더리움 생태계의 주요 플레이어에게 뇌물을 제공합니다.
대부분의 경우 L0 공격을 실행하는 데 필요한 비용이나 기술 지식이 거의 없기 때문에 소셜 계층에 대한 공격이 특히 위험합니다. 실제로 필요한 것은 부족한 리소스가 아니라 시간과 악의적인 의도입니다. 레이어 0 공격이 암호 경제 공격의 승수가 될 수 있는 방법에 대해 생각하는 것도 흥미롭습니다. 예를 들어 악의적인 다수의 스테이커가 검열 또는 최종성 반전을 달성한 경우 소셜 계층을 방해하면 대역 외 커뮤니티가 대응을 조정하기가 더 어려워질 수 있습니다.
계층 0 공격에 대한 방어는 간단하지 않을 수 있지만 몇 가지 기본 원칙을 설정할 수 있습니다. 하나는 블로그, 디스코드 서버, 주석 사양, 서적, 팟캐스트 및 YouTube를 통해 커뮤니티의 정직한 구성원이 만들고 전파하는 이더리움에 대한 공개 정보의 전반적으로 높은 신호 대 잡음비를 유지하는 것입니다. Ethereum.org는 특히 광범위한 문서와 설명 기사를 여러 언어로 빠르게 번역하고 있기 때문에 좋은 예입니다. 양질의 정보와 밈으로 공간을 채우는 것은 잘못된 정보에 대한 효과적인 방어책입니다(정보 격차가 취약함). 이더리움 커뮤니티는 이에 능하지만 장기적인 레이어 0 보안을 위해서는 고품질 정보를 생성하고 전파하기 위한 지속적인 노력이 필요합니다.
소셜 계층 공격에 대한 또 다른 중요한 방어 수단은 명확한 사명 선언문과 거버넌스 계약입니다. 이더리움은 스마트 계약 L1에서 탈중앙화 및 보안 챔피언으로 자리매김하는 동시에 확장성과 지속 가능성에 높은 우선 순위를 둡니다. Ethereum 커뮤니티의 의견 불일치에 관계없이 이러한 핵심 원칙은 최소한의 영향을 받습니다. 이러한 핵심 원칙에 대한 내러티브를 평가하고 EIP(Ethereum Improvement Proposal) 프로세스에서 연속적인 검토를 통과하면 커뮤니티가 좋은 사람과 나쁜 사람을 구분하고 악의적인 행위자가 Ethereum의 미래 방향에 영향을 미치는 범위를 제한하는 데 도움이 될 수 있습니다. .
마지막으로, 이더리움 커뮤니티가 열려 있고 모든 참가자를 환영하는 것이 중요합니다. 게이트키퍼, 엘리트주의, 배제가 있는 커뮤니티는 "우리와 그들" 내러티브를 구성하기 쉽기 때문에 사회적 공격에 특히 취약합니다. 반면 개방적이고 포용적인 커뮤니티는 열린 토론을 통해 잘못된 정보에 보다 효과적으로 대응하는 커뮤니티입니다. 부족주의와 유독한 극대주의는 계층 0 보안을 약화시키는 커뮤니티에 피해를 줍니다. 이더리움은 일반적으로 새로운 참가자를 환영하는 매우 개방적인 커뮤니티를 가지고 있지만 커뮤니티 규모가 커짐에 따라 유지 관리가 점점 어려워질 수 있습니다. 네트워크 보안에 관심이 있는 이더리움 커뮤니티 구성원은 온라인과 실제 세계 모두에서 자신의 행동을 이더리움의 레이어 0 보안에 대한 직접적인 기여로 보아야 합니다. 프로토콜 공격에 대한 최후의 방어선입니다.
공격자의 보상
레이어 0 공격은 이더리움에 대한 대중의 신뢰를 훼손하고, ETH를 평가절하하고, 이더리움 채택을 줄이고, 이더리움을 경쟁 체인에 취약하게 만들거나, 이더리움 커뮤니티를 약화시키고 대역외 조정을 더 어렵게 만드는 것을 목표로 할 수 있습니다. 그러나 Ethereum 네트워크 자체를 공격하여 얻을 수 있는 이점은 명확하지 않습니다.
일반적인 오해는 공격이 성공하면 공격자가 새로운 ETH를 생성하거나 임의의 계정에서 ETH를 인출할 수 있다는 것입니다. 블록체인에 추가된 모든 트랜잭션이 네트워크의 모든 실행 클라이언트에 의해 실행되기 때문에 두 진술 모두 신뢰할 수 없습니다. 유효성을 위한 기본 조건을 충족해야 합니다(예: 트랜잭션이 보낸 사람의 개인 키로 서명됨, 보낸 사람의 잔액이 충분함 등). 그렇지 않으면 단순히 되돌려집니다. 실제로 공격자가 공격할 수 있는 몇 가지 결과가 있습니다: 재구성, 이중 최종성 또는 최종성 지연.
"개편"은 블록체인 헤더 블록의 재배열입니다. 공격에서 이것은 정직한 네트워크에 있지 않더라도 특정 블록이 포함되거나 제외되도록 하는 것을 목표로 합니다. 이를 통해 공격자는 "이중 지출"을 할 수 있습니다. 예를 들어 ETH를 거래소로 보내고 명목 화폐로 현금화한 다음 이더리움 블록체인을 재구성하여 이 트랜잭션을 삭제하면 결국 ETH를 되찾고 명목 화폐를 얻을 수 있습니다. 또는 재구성을 통해 정교한 공격자가 프런트 러닝 또는 백 러닝 트랜잭션을 통해 다른 사람의 트랜잭션에서 가치(MEV)를 추출할 수 있습니다. 회로망.
재구성의 가장 극단적인 형태는 이전에 완성된 블록을 제거하거나 교체하는 "최종 복귀"입니다. 이는 스테이킹된 ETH의 최소 1/3이 소실되어야만 가능하며, 이러한 보장을 "경제적 최종성"이라고 하며, 이에 대해서는 나중에 자세히 설명하겠습니다.
더블 파이널리티(Double finality) 공격은 가능성이 매우 낮지만, 두 개의 포크가 동시에 블록을 마무리할 수 있어 영구적인 블록체인 분할을 야기할 때 심각합니다. 이것은 공격자가 총 스테이킹된 ETH의 34% 이상을 제어할 수 있고 이를 잃을 위험을 감수할 의향이 있는 한 이론적으로 가능합니다. 그런 다음 커뮤니티는 오프체인을 조정하고 따라야 할 체인에 대한 합의에 도달해야 합니다. 나중에 이러한 유형의 사회적으로 조정된 방어에 대해 자세히 살펴보겠습니다.
최종 지연 공격은 네트워크가 Casper-FFG가 체인을 완료하는 데 필요한 조건에 도달하지 못하도록 합니다. 이더리움 위에서 실행되는 많은 응용 프로그램이 기능을 위해 빠른 완결성에 의존하기 때문에 이것은 이더리움의 응용 프로그램 계층에 극도로 지장을 줄 것입니다. 블록체인의 최종성에 대한 높은 수준의 확신 없이는 블록체인 위에 구축된 금융 애플리케이션을 신뢰하기 어렵습니다. 최종 지연 공격의 목적은 공격자가 일부 전략적 숏 포지션을 배치하지 않는 한 직접적인 이익보다는 이더리움을 파괴하는 것일 수 있습니다.
게으름과 모호함
누구나 검증자를 실행하지 않고도 이더리움의 클라이언트 소프트웨어를 실행할 수 있습니다. 사람들은 데이터를 매우 빠르게 확인하는 데 사용할 수 있는 블록체인의 로컬 사본을 제공하고 Infura 또는 Quicknode와 같은 중앙 집중식 제3자를 거치지 않고 이더리움 네트워크에 비공개로 트랜잭션을 제출할 수 있기 때문에 이를 수행합니다. 그러나 유효성 검사기를 실행하지 않는 노드 운영자는 블록 생성 또는 유효성 검사에 참여할 수 없습니다. 즉, 네트워크 보안에 전혀 영향을 미치지 않습니다. 비검증자 운영자가 비콘 체인을 공격할 가능성은 관련 없는 계층 0 공격도 시작하지 않는 한 무시할 수 있습니다.
컨센서스 클라이언트에 검증자를 추가하려면 사용자는 예금 계약에 32 ETH를 스테이킹해야 합니다. 활성 검증자와 함께 사용자는 새로운 블록을 제안하고 증명함으로써 이더리움의 네트워크 보안에 적극적으로 참여하기 시작합니다. 이러한 추가 책임을 수행하는 동안 사용자는 ETH의 형태로 보상을 받지만 이것은 또한 복수 행위에 대한 새로운 기회를 제공합니다. 유효성 검사기는 이제 블록체인의 미래 콘텐츠에 영향을 미치기 위해 사용할 수 있는 발언권이 있습니다. 정직하게 작업하여 ETH 보유량을 늘리거나 위험을 감수하고 자신의 이익을 위해 프로세스를 조작하려고 할 수 있습니다. 공격을 시작하는 한 가지 방법은 스테이크 지분의 상당 부분을 축적한 다음 이를 사용하여 정직한 검증자를 물리치는 것입니다. 공격자가 통제하는 지분의 비율이 클수록 특히 나중에 살펴볼 특정 경제적 이정표에서 투표권이 커집니다. 그러나 대부분의 공격자는 이를 해낼 만큼 충분한 ETH를 축적할 수 없으므로 정직한 다수가 특정 방식으로 행동하도록 교묘한 기술을 사용해야 합니다.
기본적으로 비콘 체인에 대한 모든 소규모 공격은 두 가지 유형의 검증자 오작동, 즉 저활동(실행 증명/제안 실패 또는 실행 지연) 또는 과잉 활동(한 슬롯 기간에 너무 많은 제안/증명)의 미묘한 변형입니다. 가장 일반적인 형태에서 이러한 동작은 분기 선택 알고리즘 및 인센티브 계층에 의해 쉽게 처리되지만 이러한 알고리즘이 공격자에게 유리하게 작동하도록 하는 영리한 방법이 있습니다. 이러한 여러 기술이 확인되었으며, 주로 전체 유효성 검사기 세트의 서로 다른 하위 집합이 블록체인의 상태를 보는 방법과 그에 따라 작동하는 방식을 제어하기 위해 메시지의 타이밍과 전파를 신중하게 조정합니다. 다음 섹션에서는 지분이 적은 공격자가 네트워크를 공격할 수 있는 몇 가지 방법과 이러한 공격을 방어하는 방법에 대해 설명합니다.
작은 스테이커의 공격
단거리 재구성
비콘 체인에 대한 공격을 설명하는 여러 논문이 있습니다. 스테이크된 ETH의 일부만 사용하여 재구성 또는 지연 최종성 공격을 달성합니다. 이러한 공격은 일반적으로 공격자가 다른 유효성 검사기의 일부 정보를 보류한 다음 미묘한 방식으로 또는 적절한 시간에 공개하는 방식에 의존합니다. 이러한 공격은 일반적으로 정식 체인의 일부 정직한 블록을 대체하는 것을 목표로 합니다. 이러한 정직한 블록은 공격이 시작될 때 아직 생성되지 않았으며, 이 공격은 사전 재구성(공격자가 정규 체인 유효성 검사 블록에서 소급하여 삭제)과 달리 사전 재구성으로 알려져 있습니다. PoS 이더리움에서는 스테이킹된 ETH의 2/3(현재 가격으로 약 180억 달러)를 통제하지 않고는 사후 개편이 사실상 불가능합니다. 공격자가 지분의 66% 미만을 제어하는 경우 공격자가 사후 재구성을 완료할 확률은 매우 낮습니다(공격자가 지분의 65%를 제어하더라도 성공 확률은 0.05% 미만임).
그림: 스테이크의 2/3를 제어하는 공격자가 수행하는 사후 재구성 공격. 그들은 슬롯 N+1에서 제안된 정직한 블록 B를 무시하고 대신 블록 N을 블록체인의 헤드로 투표합니다. 그런 다음 그들은 슬롯 N+2의 블록 C에 투표하고 동시에 포크 선택 규칙은 이전 슬롯의 증명을 보지만 현재 슬롯은 보지 않기 때문에 슬롯 N+2의 블록 B에 투표하고 부정직한 유효성 검사기는 블록 C에 투표합니다. 슬롯 N+3이 도착하면 두 포크 모두 가중치가 66%이며, 이는 경쟁 블록 해시의 사전식 순서에 따라 결정됩니다. 이것이 공격자에게 유익하다면 블록 B를 블록체인에서 성공적으로 삭제한 것입니다.
반면에 사후 재구성을 방지하는 데 잘 작동하는 동일한 메커니즘을 정교한 공격자가 매우 구체적이고 가능성이 낮은 네트워크 조건에서 사용하여 사전 사후 재구성을 생성할 수 있습니다. 예를 들어, 이 백서는 공격하는 검증자가 특정 슬롯 n+1에 대한 블록(B)을 생성하고 증명하지만 네트워크의 다른 노드로 전파하는 것을 피하는 방법을 보여줍니다. 대신 다음 슬롯 n+2까지 검증된 블록을 보류합니다. 정직한 검증자는 슬롯 n + 2에 대한 블록(C)을 제안합니다. 거의 동시에 공격자는 보류한 블록(B)과 보유하고 있는 증거를 해제하고 블록(B)이 블록체인의 헤드임을 증명하고 슬롯 n+2에 대한 투표를 통해 정직성의 존재를 효과적으로 거부할 수 있습니다. 블록 (C). 정직한 블록(D)이 해제되면 포크 선택 알고리즘은 블록(D)이 블록(C)에 구축되는 것보다 블록(D)이 블록(B)에 구축되는 것을 봅니다. 따라서 공격자는 1 블록 사전 재구성을 사용하여 정식 체인에서 슬롯 n + 2의 정직한 블록(C)을 성공적으로 제거합니다. 34%의 지분을 가진 공격자는 투표에서 공격자가 선호하는 포크에 68%의 가중치를 부여하는 반면 정직한 포크는 66%의 가중치를 갖기 때문에 이 공격에서 승리할 가능성이 높습니다. 이것은 그들이 그들과 함께 투표하기 위해 정직한 검증자를 조작하는 데 의존할 필요가 없다는 것을 의미합니다. 그러나 이론적으로 이 공격은 훨씬 더 작은 판돈 비율로 시도할 수 있습니다. Neuder 등은 담보 비율이 30%인 개편 전 공격을 기술했지만, 나중에 이러한 개편 전 공격이 담보 비율 2%의 통제 하에서도 가능함을 증명했다.
원천원천)
성공적인 구조 조정 공격자는 역사를 바꿀 수 없지만 부정직하게 미래를 바꿀 수 있습니다. 이를 위해 스테이킹된 ETH의 대부분을 제어할 필요는 없지만 그들이 제어하는 스테이킹 비율에 따라 성공 가능성이 높아집니다. 이 재구성 공격을 통해 대규모 트랜잭션을 선행 실행하여 MEV를 이중으로 사용하거나 인출할 수 있습니다. 이 공격도 여러 블록으로 확장할 수 있지만, 재구성 길이가 길어질수록 성공 확률이 낮아집니다.
수신 거부 및 균형 조정
보다 정교한 공격은 정직한 검증자 세트를 균형 공격으로 알려진 블록체인 헤더의 다른 보기를 가진 개별 그룹으로 분할할 수 있습니다. 이 경우 공격자는 블록을 제안할 기회를 기다리다가 기회가 오면 같은 슬롯에 두 개의 블록을 제안한다. 그들은 정직한 검증자 세트의 절반에게 한 블록을 보내고 나머지 절반에게는 또 다른 블록을 보냅니다. 포크 선택 알고리즘은 이 모호성을 감지하고 블록 제안자는 슬래시되어 네트워크에서 제거되지만 두 블록 모두 여전히 존재하며 유효성 검사기 세트의 약 절반이 각 포크를 증명합니다. 단일 검증자를 삭감하는 대가로 공격자는 성공적으로 블록체인을 둘로 나눕니다. 한편 나머지 악의적인 유효성 검사기는 증명을 보류했습니다. 그런 다음 포크 선택 알고리즘을 실행할 때 충분한 검증자에게 하나 또는 다른 포크에 유리한 증명을 선택적으로 게시함으로써 네트워크에서 가장 많이 축적된 증명이 있는 포크를 볼 수 있었습니다. 이는 공격하는 검증자가 두 포크에서 균등하게 분할된 검증자를 유지하면서 무기한으로 계속될 수 있습니다. 어느 포크도 2/3의 절대 다수를 끌어들일 수 없기 때문에 비콘 체인을 마무리할 수 없습니다. 공격하는 유효성 검사기가 제어하는 스테이크 지분의 비율이 클수록 각 슬롯에서 블록을 제안할 유효성 검사기를 선택할 가능성이 높기 때문에 주어진 에포크에서 공격 가능성이 높아집니다. 담보 지분의 1%만 제어하더라도 평균 100 epoch마다 균형 공격을 시작할 기회가 나타나며 대기하는 데 오래 걸리지 않습니다.
바운싱 공격이라고 하는 유사한 공격도 스테이크의 작은 부분만 제어하면 됩니다. 이 경우 공격하는 유효성 검사기는 다시 투표를 거부합니다. 이번에는 두 포크 사이의 균등한 분할을 유지하기 위해 투표를 하는 대신 적절한 경우 포크 A와 포크 B 사이의 대체 체크포인트를 정당화하기 위해 투표를 사용합니다. 두 포크 사이의 이러한 반전은 최종성을 중지합니다.
바운스 및 균형 공격에 대한 방어
바운싱 공격과 밸런싱 공격 모두 네트워크에 큰 영향을 미치기 위해 공격 검증자에 의존하여 적절한 순간까지 증명을 지연시킵니다. 따라서 이 공격은 가능성이 희박한 네트워크 동기화 조건에서만 가능하며 공격자는 긴밀하게 조정된 결탁 유효성 검사기를 통해 메시지 타이밍을 매우 세밀하게 제어할 수 있습니다. 그래도 이 공격 벡터를 차단할 필요가 있습니다. 늦은 메시지가 합의에 영향을 미치지 않도록 하기 위해 늦은 메시지는 적시에 수신된 메시지에 비해 가중치가 낮을 수 있습니다. 이를 제안자 가중치 부스팅 방식이라고 합니다.
바운싱 공격의 경우 수정 사항은 포크 선택 알고리즘을 업데이트하여 최신 합리적인 체크포인트가 각 에포크의 첫 1/3 슬롯 동안에만 대체 체인의 체크포인트로 전환할 수 있도록 하는 것입니다. 이 상황은 공격자가 나중에 배포하기 위해 투표를 저장하는 것을 방지합니다. 이러한 지연된 투표 공격에 대한 또 다른 방어책은 각 슬롯에 대해 늦게 도착하는 투표보다 제 시간에 도착하는 투표에 더 많은 가중치를 할당하는 것입니다.
이러한 조치를 결합하면 정직한 블록 제안자가 슬롯이 시작된 후 블록을 매우 빠르게 발행한 다음 슬롯의 약 1/3(4초) 기간에 새 블록으로 인해 포크 선택 알고리즘이 다음으로 전환되는 시나리오가 생성됩니다. 다른 사슬. 동일한 마감일 이후에 더 느린 유효성 검사기의 증명은 더 일찍 도착한 증명에 비해 가중치가 더 낮습니다. 이는 빠른 제안자와 유효성 검사자가 블록체인 헤드를 결정하는 데 매우 유용하며, 바운싱 공격 및 균형 공격의 가능성을 크게 줄입니다. 기본적으로 이러한 방어는 위에서 설명한 경우에도 메시지 게시에 대한 세밀한 제어가 필요 없이 대규모 네트워크의 비동기 특성을 기반으로 하는 공격을 방지합니다. 따라서 빠른 활동을 선호하고 지연에 불이익을 주는 포크 선택 알고리즘을 수정하여 이러한 유형의 공격 위험을 상당 부분 완화했습니다.
제안자 가중치 부스팅 방식은 "저렴한 재구성" 공격, 즉 적은 양의 지분을 가진 공격자가 수행하는 재구성 공격에 대해서만 방어할 수 있다는 점을 언급할 가치가 있습니다. 사실, 다른 유형의 재구성 전 공격에서 제안자 가중치 부스트 계획 자체가 더 큰 스테이커에 의해 게임될 수 있습니다. 이 게시물의 작성자는 스테이크 지분의 7%를 제어하는 공격자가 어떻게 정직한 검증자를 속여 포크를 구축하도록 속이고 정직한 블록을 재구성하기 위해 전략적으로 투표를 배포하는지 설명합니다. 공격자가 제안자 가중치 프로모션 계획의 혜택을 받을 수 있도록 적시에 상대방의 포크 투표에 투표하는 정직한 유효성 검사기. 다시 말하지만, 이 공격은 실제 상황에서 충족하기 어려운 이상적인 대기 시간 조건을 가정하여 설계되었습니다. 일반적으로 공격자가 제어하는 스테이크 지분의 비율이 클수록 공격에 성공할 확률이 높아집니다. 그리고 더 큰 약속된 이자는 또한 더 많은 위험 자본과 더 강력한 경제적 억제를 의미합니다.
고급 균형 공격
위에서 설명한 바운싱 및 밸런싱 공격은 네트워크의 다른 검증자가 메시지를 수신하는 시기를 매우 세밀하게 제어하기 위해 악의적인 검증자에 의존하며 이러한 공격은 완화된 제안자 가중치 부스팅 체계를 통해 효과적입니다.
그러나 연구원들은 네트워크 대기 시간에 대한 세분화된 제어에 의존하지 않는 추가 공격에 대해서도 설명합니다. 이 경우 공격자는 두 개의 후속 슬롯에서 제안된 유효성 검사기를 사용해야 합니다(두 개의 슬롯에서 이러한 일이 발생할 확률은 공격자가 제어하는 유효성 검사기의 수에 따라 증가함). 적대적 블록 제안자 중 한 명이 슬롯 n에서 블록을 제안하고 두 번째 적대적 블록 제안자가 슬롯 n+1에서 충돌하는 블록을 제안하여 포크를 생성합니다. 블록 제안자가 모호하지 않기 때문에 슬래싱이 발생하지 않습니다. 이 예에서는 A를 분기하는 것이 더 유리할 것이라고 가정합니다. 공격자는 이를 알 수 있고 공격자는 네트워크의 검증자 절반이 증명을 제출하는 데 걸리는 시간도 추정할 수 있습니다. 슬롯 n의 예약된 투표는 절반이 유효성 검사기가 투표했습니다. 이것은 슬롯 n의 포크 B에 대한 지원 증명입니다. 따라서 검증자 그룹의 절반은 포크 B의 추가 증명에 대해 모르기 때문에 포크 A에 투표하고 나머지 절반은 가중치가 더 큰 포크 B에 투표합니다. n+1에서 적대적 투표를 보류하는 것은 보류 증명의 발행 시기가 부정확하여 발생하는 포크 B의 부족분을 보충하는 데 사용할 수 있습니다.
이 밸런싱 공격은 이더리움 컨센서스 클라이언트에서 실제로 구현된 포크 선택 알고리즘보다 더 예측 가능한 증명 시간을 가진 이상적인 버전의 포크 선택 알고리즘에 대해 설명되지만 실제 비콘 체인에서 실행하는 공격은 훨씬 더 어렵습니다. 네트워크 토폴로지에서 공격자의 노드를 분산하면 공격자가 이 문제를 어느 정도 극복하는 데 도움이 될 수 있습니다. 메시지가 하나의 토폴로지 위치에서 메시지보다 빠르게 네트워크 전체에 전파되기 때문입니다.
제안자-가중 부스팅 방식에도 불구하고 실현 가능한 것으로 간주되는 LMD 규칙에 특정한 균형 공격도 제안되었습니다. 공격자는 블록 제안을 난독화하고 각 블록을 네트워크의 대략 절반으로 전파하여 두 개의 경쟁 체인을 생성함으로써 포크 간의 대략적인 균형을 설정합니다. 그런 다음 결탁한 유효성 검사기는 네트워크의 절반이 먼저 포크 A에 대한 투표를 받고 네트워크의 나머지 절반이 포크 B에 대한 투표를 먼저 받도록 모호하게 투표합니다. LMD 규칙은 두 번째 증명을 버리고 각 유효성 검사기에 대한 첫 번째 증명만 유지하기 때문에 네트워크의 절반은 A의 투표만 보고 B는 투표하지 않으며 네트워크의 나머지 절반은 B의 투표를 보고 A는 투표하지 않습니다. 이 기사의 저자는 균형 잡힌 공격을 시작하기 위해 공격 상대에게 "특별한 힘"을 주는 LMD 규칙을 설명합니다.
이 LMD 공격 벡터는 포크 선택 알고리즘을 업데이트하여 모호한 유효성 검사기를 포크 선택 고려 사항에서 완전히 삭제함으로써 닫혔습니다. 모호성 유효성 검사기는 포크 선택 알고리즘을 통해 미래의 영향력을 줄일 수도 있습니다. 이렇게 하면 위에서 설명한 균형 공격을 방지하는 동시에 눈사태 공격에 대한 탄력성을 유지합니다.
눈사태 공격
2022년 3월 문서에서는 눈사태 공격이라는 또 다른 유형의 공격에 대해 설명합니다. 이 논문의 저자는 제안자 가중치 부스팅 방식이 눈사태 공격의 특정 변종으로부터 보호할 수 없다고 주장합니다. 그러나 이 논문의 저자는 이더리움 포크 선택 알고리즘의 매우 이상화된 버전에 대한 공격만 시연했습니다(그들은 LMD 없이 GHOST를 사용했습니다).
눈사태 공격을 시작하려면 공격자가 여러 연속 블록 제안자를 제어해야 합니다. 각 블록 제안 슬롯에서 공격자는 블록을 보류하고 정직한 체인이 보류된 블록과 동일한 하위 트리 가중치에 도달할 때까지 블록을 수집합니다. 그런 다음 공격자는 보류된 블록을 해제하여 최대 혼란을 야기합니다. 이는 예를 들어 6개의 원천징수 블록에 대해 첫 번째 정직한 블록 n이 적대적 블록 n과 경쟁하여 포크를 만들고 나머지 5개의 적대적 블록이 모두 n+1에서 정직한 블록과 경쟁한다는 것을 의미합니다. 이것은 적대적 블록 n과 n+1을 설정한 포크가 이제 정직한 증명을 끌어들인다는 것을 의미합니다. 왜냐하면 정직한 체인의 무게가 이제 적대적인 체인의 무게와 같기 때문입니다. 이것은 이제 나머지 보류된 블록에 대해 반복될 수 있으므로 공격자는 공격자가 모호한 블록을 모두 소모할 때까지 정직한 검증자가 체인의 정직한 헤드를 따르지 못하도록 할 수 있습니다. 공격자가 공격 중에 블록을 제안할 기회가 더 많으면 해당 블록을 사용하여 공격을 확장할 수 있으므로 더 많은 검증자가 담합 공격에 참여할수록 공격이 더 오래 지속되고 더 많은 정직한 블록이 정식 체인에서 제거됩니다.
LMD-GHOST 포크 선택 알고리즘의 LMD 부분은 눈사태 공격을 완화합니다.LMD는 "마지막 메시지 구동"을 의미하며 각 유효성 검사기가 보관하는 테이블을 말하며 다른 유효성 검사기로부터 받은 최신 정보를 포함합니다. 이 필드는 특정 유효성 검사기 테이블에 이미 존재하는 것보다 나중 슬롯에서 새 메시지가 오는 경우에만 업데이트됩니다. 실제로 이것은 각 슬롯에서 수신된 첫 번째 메시지가 수락하는 메시지이며 추가 메시지는 무시할 수 있음을 의미합니다. 즉, 컨센서스 클라이언트는 먼저 도착한 각 유효성 검사기의 메시지를 사용하고 충돌하는 메시지는 Avalanche 공격을 방지하기 위해 단순히 폐기됩니다.
완결성 지연
저비용 단일 블록 재구성 공격을 처음 설명한 동일한 문서에서는 공격자가 에포크 경계 블록에 대한 블록 제안자에 의존하는 지연된 최종성("활성 무효화"라고도 함) 공격에 대해서도 설명합니다. 이러한 에포크 경계 블록은 Casper FFG가 체인의 다양한 부분을 마무리하는 데 사용하는 체크포인트가 되기 때문에 이는 매우 중요합니다. 공격자는 충분한 정직한 검증자가 FFG를 사용하여 이전 에포크 경계 블록을 현재 최종 목표로 투표할 때까지 블록을 보류합니다. 그런 다음 보류된 블록을 해제하고 자신의 블록을 증명하면 나머지 정직한 검증자도 동일한 작업을 수행하여 대상 체크포인트가 다른 포크를 생성합니다. 그들이 시간을 정확히 맞추면 포크를 증명할 2/3 절대 다수가 없기 때문에 최종성을 방지할 것입니다. 공격자가 제어하는 스테이크 지분의 비율이 작을수록 공격자가 직접 제어하는 증거가 적을수록 공격자가 주어진 에포크 경계 블록을 제안하는 유효성 검사기를 제어할 가능성이 낮아지기 때문에 타이밍이 더 정확해야 합니다.
장거리 공격에 대한 참고 사항
지분증명(PoS) 블록체인에 특화된 공격 클래스도 있습니다. 제네시스 블록에 참여하는 검증인이 정직한 것과 함께 블록체인의 별도 포크를 유지하고 결국 정직한 검증인이 어느 정도 전환하도록 설득합니다. 미래의 적절한 시간. 이러한 유형의 공격은 비콘 체인에서 불가능합니다. "최종 가젯"(문자 그대로 최종 가젯으로 번역됨)이 모든 유효성 검사기가 정직한 체인("체크포인트")의 상태에 주기적으로 동의하도록 보장하기 때문입니다. 이 간단한 메커니즘은 이더리움 클라이언트가 최종 블록을 전혀 재구성하지 않기 때문에 장거리 공격자에 대한 우려를 제거합니다. 신뢰할 수 있는 최근 상태 해시(약한 주관성 체크포인트라고 함)를 찾고 이를 의사 생성 블록으로 사용하여 네트워크 구축에 참여하는 새로운 노드입니다. 이렇게 하면 정보 확인을 시작하기 전에 네트워크에 들어오는 새 노드에 대한 "신뢰의 게이트웨이"가 생성됩니다. 그러나 피어나 블록 탐색기 또는 다른 곳에서 체크포인트를 수집하는 데 필요한 신뢰는 클라이언트 개발 팀에 내재된 신뢰를 증가시키지 않으므로 주관성이 "약합니다". 정의에 따라 체크포인트는 네트워크의 모든 노드에서 공유하므로 부정직한 체크포인트는 합의 실패의 증상이며, 이 시점에서 어쨌든 정직한 검증자를 구하기 위해 대역 외 사회적 조정이 인계되어야 합니다.
이 모든 것은 적은 양의 스테이킹으로 비콘 체인을 성공적으로 공격하는 것이 매우 어렵다는 것을 보여줍니다. 여기에 설명된 실행 가능한 공격에는 이상적인 분기 선택 알고리즘이 필요하며 클라이언트 소프트웨어에 대한 상대적으로 사소한 패치에 의해 네트워크 상태 또는 공격 벡터가 닫힐 가능성이 매우 낮습니다. 물론 제로데이 익스플로잇의 가능성을 배제할 수는 없지만, 소수의 스테이킹 공격자가 성공적인 공격을 수행하는 데 필요한 극도의 기술, 합의 메커니즘에 대한 지식 및 행운을 보여줍니다. 공격자의 관점에서 최선의 방법은 가능한 한 많은 ETH를 축적하는 것일 수 있습니다.
서비스 거부 공격(서비스 거부)
이더리움의 PoS 메커니즘은 모든 유효성 검사기 세트에서 각 슬롯의 블록 제안자가 될 유효성 검사기를 선택합니다. 이는 공용 함수를 사용하여 계산할 수 있으며, 적이 블록 제안보다 약간 앞서 다음 블록 제안자를 식별할 수 있습니다. 그런 다음 공격자는 블록 제안자에게 스팸을 보내 동료와 정보를 교환하지 못하도록 할 수 있습니다. 네트워크의 나머지 부분에서는 블록 제안자가 오프라인인 것처럼 보이고 슬롯은 단순히 비게 됩니다. 이는 블록체인에 정보를 추가하지 못하도록 특정 검증자에 대한 검열의 한 형태일 수 있습니다. 공격자의 비용은 유효성 검사기의 대역폭에 따라 달라집니다. 즉, 산업 등급 하드웨어와 인터넷 연결을 갖춘 전문가보다 홈 스테이커에 대한 서비스 거부 공격을 시작하는 것이 훨씬 저렴하여 아마추어를 검열에 더 취약하게 만듭니다. . 이 문제에 대한 몇 가지 해결 방법이 있지만 이러한 체계는 가족 스테이커보다 전문 검증자를 선호합니다. 예를 들어, 여러 노드를 실행하고 네트워크 통신에서 블록 구축을 분리하면 노드 ID와 유효성 검사기 ID가 분리되기 때문에 추가 보호 계층을 제공할 수 있습니다. 노드 실행자는 서비스 거부 공격을 피하기 위해 짧은 시간 내에 ID를 전환하거나 ID를 다시 획득할 수 있습니다. 장기적으로 단일 비밀 리더 선출(Single Secret Leader Election, SSL) 또는 비단일 비밀 리더 선출 체계를 구현하면 검증인 검열 문제를 보다 효과적으로 완화할 수 있습니다. 모든 유효성 검사기는 반복적으로 섞인 풀에 비밀에 대한 약속을 제출합니다. 그런 다음 연결이 난독화되었기 때문에 선택된 검증자에게만 알려진 무작위 약속이 공개적으로 선택됩니다. 이 작업은 아직 구현되지 않았지만 연구 개발이 활발한 영역입니다.
검증자가 관리하는 담보 지분의 비율이 33% 이상입니다.
약속된 ETH의 통제권을 소수의 손에 집중시키는 것보다 더 많은 사람들에게 분배하는 것이 더 안전합니다. 제어하는 지분이 많을수록 이더리움 합의에 더 많은 영향을 미치기 때문입니다. 이 백서에서 언급된 모든 공격은 공격자가 스테이크할 충분한 지분을 가지고 있을 때 성공할 가능성이 더 높으며 각 슬롯에서 블록을 제안하기 위해 더 많은 검증자를 선택할 수 있습니다. 따라서 악의적인 유효성 검사기의 목표는 가능한 한 많은 ETH를 제어하는 것일 수 있습니다.
스테이킹된 ETH의 33%는 공격자의 기준이며, 공격자가 이 양보다 많은 ETH를 제어하는 경우 다른 유효성 검사기의 작업에 대한 세밀한 제어 없이 비콘 체인이 종료되는 것을 방지할 수 있습니다. 그들은 단순히 함께 사라질 수 있습니다. 이는 비콘 체인을 완성하기 위해 체크포인트 쌍을 증명하는 2/3 스테이킹된 ETH가 있어야 하기 때문입니다. 스테이킹된 ETH의 1/3 이상이 악의적으로 증명되거나 증명되지 않으면 2/3 절대 다수가 존재할 수 없습니다. 이에 대한 방어책은 비콘 체인의 비활성 누출 메커니즘으로, 비콘 체인이 4 에포크 동안 완료되지 못한 후 트리거되는 비상 안전 조치입니다. 비활성 유출은 증명하지 못하거나 대다수와 반대되는 검증자를 식별합니다. 이러한 비증명 검증인이 소유한 약정된 ETH는 결국 전체의 1/3 미만을 차지할 때까지 점진적으로 손실되어 블록체인이 다시 확정될 수 있습니다.
비활성 누출 메커니즘의 목적은 비콘 체인을 다시 마무리하는 것이며 공격자는 약속한 ETH의 일부도 잃게 됩니다. 슬래시 가능한 공격이 없고 공격하는 유효성 검사기가 단순히 증명하지 못한다고 가정하면 비활성 점수가 업데이트되어 비활성 점수가 0으로 돌아올 때까지 매 에포크마다 유효성 검사기가 페널티를 받을 것임을 네트워크의 나머지 부분에 나타냅니다. 비활성 누출 메커니즘이 활성화되면 비활성 유효성 검사기 점수는 4씩 증가하고 활성 유효성 검사기 점수는 각 에포크마다 1씩 감소합니다. 비활성 누출 메커니즘이 비활성화되고 비콘 체인이 다시 마무리되면 모든 활성 유효성 검사기의 비활성 점수가 감소합니다. 더 오랜 기간 동안 비활성 상태였던 유효성 검사기의 경우 소각할 비활성 포인트가 더 많기 때문에 시간이 더 오래 걸립니다. 지속적인 비활성은 비활성 포인트를 더 천천히 소모합니다. 100 에포크 동안 오프라인 상태인 유효성 검사기의 경우 비활성 점수는 약 400에 도달하고 페널티 크기는 다음과 같이 계산됩니다.
비활성 점수 * 유효성 검사기 잔액 / (비활성 점수 편향 x 비활성 페널티 지수)
inactivity_score * validator_balance/(inactivity_score_bias x inactivity_penalty_quotient)
여기서 비활성 점수 바이어스는 매 에포크마다 유효성 검사기의 점수를 증가시키는 숫자이고 비활성 페널티 지수는 비증명 유효성 검사기의 잔고를 초기 값의 제곱의 약 60%로 줄이는 데 걸리는 시간입니다. 시간은 약 37.5일입니다. 즉, 공격자가 최종성을 증명하지 못하여 최종성을 방지하는 시간이 길어질수록 지분이 더 많이 소각됩니다. 이더리움을 업그레이드하면 항상 오프라인 상태인 유효성 검사기에 대한 짧은(100 에포크, 약 13.5시간) 마이너스 페널티 동안과 이후에 유효성 검사기 잔액의 감소를 추정하는 그래프가 표시됩니다. 135 에포크 후 유효성 검사기의 잔액은 32 ETH에서 31.996 ETH로 떨어졌고 0.004 ETH의 손실이 발생했습니다. 그리고 공격자가 스테이킹된 ETH의 33%를 제어하려면 각각 최소 32 ETH를 보유하고 있는 약 144,000명의 유효성 검사기를 실행해야 합니다. 이는 비콘 체인 최종성을 지연시키는 공격에 최소 0.004 x 144000 = 576 ETH의 비용이 든다는 것을 의미합니다. 현재 시세로 환산하면 약 109만 달러에 이른다. 거의 100만 달러의 비용으로 비콘 체인 최종성을 반나절 지연시키는 것은 비콘 체인 자체에 장기적으로 거의 영향을 미치지 않습니다. (역자 주: 원문의 숫자는 여기에서 수정되었습니다.)
물론 더 오래 지속되는 부정적인 페널티는 더 비싸고 실제로 페널티의 크기는 비콘 체인이 다시 마무리되기 시작할 때까지 2차적으로 증가합니다. 최종성을 지연시키는 공격자에 대한 정확한 비용은 초기 잔액, 오프라인 상태를 유지하는 시간 및 최종성을 회복하는 데 걸리는 시간에 따라 다릅니다. 그러나 결론은 검증자가 삭감되지 않더라도 검증자 중 33%의 지속적인 비활성 비용이 매우 비싸다는 것입니다.
이더리움 네트워크가 비동기식이라고 가정하면(즉, 메시지 송수신 사이에 지연이 있음) 총 지분의 34%를 제어하는 공격자가 이중 최종성 공격을 트리거할 수 있습니다. 이는 공격자가 블록 생산자로 선출될 때 모호할 수 있고 자신이 소유한 모든 유효성 검사기로 이중 투표를 할 수 있기 때문입니다. 이로 인해 블록체인이 포크되는 상황이 발생하며 각 포크는 스테이크된 ETH 투표의 34%를 가지고 있습니다. 각 포크는 나머지 유효성 검사기의 50%만 두 포크에 투표하도록 요구하므로 압도적 다수의 지원이 이루어지며, 이 경우 두 체인이 완료될 수 있습니다(공격자 유효성 검사기의 34% + 66%의 나머지 절반 = 포크당 67%). 각 경쟁 블록은 정직한 유효성 검사기의 약 50%에 의해 수신되어야 하므로 이 공격은 공격자가 메시지가 네트워크에서 전파될 때 어느 정도 제어할 수 있는 경우에만 실행 가능하므로 정직한 유효성 검사기의 절반을 각 체인에 가져올 수 있습니다. . 이것은 또한 이 공격이 네트워크가 비동기화되어야 하는 이유이기도 합니다. 모든 노드가 메시지를 즉시 수신하면 두 블록을 즉시 인식하고 이전에 수신된 블록을 거부하여 모호성을 처리합니다. 공격자는 이 이중 최종 공격을 달성하기 위해 전체 지분(현재 1,400만 ETH의 34%)을 태워야 합니다. 검증인의 34%가 동시에 이중 투표를 할 것이기 때문입니다. 관련 패널티. 이 공격에 대한 방어 비용은 총 약정된 ETH의 34%를 파괴하는 막대한 비용에 불과합니다.
이러한 공격으로부터 복구하려면 이더리움 커뮤니티가 대역 외에서 조정하고 포크 중 하나를 따르는 데 동의하고 다른 포크는 무시해야 합니다. 그러한 사회적 지원과 관련된 복잡성은 나중에 논의됩니다.
공격자는 지분의 약 50%를 제어합니다.
이론적으로 악의적인 검증자가 스테이킹된 ETH의 50%를 제어하는 경우 그는 이더리움 블록체인을 동일한 크기의 두 개의 포크로 분할할 수 있습니다. 앞에서 설명한 균형 공격과 마찬가지로 공격자는 동일한 슬롯에 대해 두 개의 블록을 제안하여 유효성 검사기 중 하나만 사용할 수 있습니다. 그런 다음 조심스럽게 메시지를 전송하여 네트워크의 절반을 조작하는 대신 공격자는 전체 50% 지분을 사용하여 정직한 유효성 검사자 집합에 반대표를 던질 수 있으므로 두 포크를 유지하고 최종성을 방지할 수 있습니다. 4번의 에포크가 지나면 비활성 누출 메커니즘이 양쪽 포크에서 활성화됩니다. 각 포크는 유효성 검사기의 절반이 증명에 실패했음을 확인합니다. 각 포크는 유효성 검사기 세트의 지분의 나머지 절반을 누출하여 결국 2/3의 절대 다수를 나타내는 다른 유효성 검사기로 완료되는 두 개의 체인을 생성합니다. 이 시점에서 유일한 옵션은 나중에 설명할 커뮤니티 복구에 의존하는 것입니다. 그러나 정직한 검증자 수, 네트워크 대기 시간 등의 변수를 고려할 때 적대적인 검증자 집합이 항상 총 지분의 정확히 50%를 제어할 가능성은 낮지만 공격자가 % 지분을 악용할 수 있는 방법이 있을 수 있습니다. , 두 포크 간의 완벽한 균형을 유지하기 위해 각 슬롯의 투표 비율을 동적으로 조정합니다. 성공적인 공격의 위험은 의심할 여지 없이 공격자의 손에 있는 스테이킹된 ETH 비율의 크기에 따라 증가하지만, 50% 스테이킹된 에퀴티와 관련된 공격 벡터는 성공적으로 악용될 가능성이 없으며 그러한 공격을 시작하는 데 막대한 비용이 듭니다. 그리고 낮은 성공률은 이성적인 공격자에게 강한 의욕을 꺾는 것 같습니다.
그리고 공격자가 지배하는 지분이 51% 이상을 차지하면 포크 선택 알고리즘을 제어할 수 있습니다. 이 경우 공격자는 정직한 클라이언트를 속이지 않고 단기 재구성을 수행할 수 있는 충분한 제어권을 부여하여 다수결로 증언할 수 있습니다. 스테이킹 지분의 51%를 제어한다고 해서 공격자가 기록을 변경할 수는 없지만 포크에 다수결 투표를 적용하거나 블록을 재구성하여 미래에 영향을 미칠 수 있습니다. 정직한 유효성 검사기는 포크 선택 알고리즘이 공격자가 선호하는 체인을 가장 무거운 체인으로 간주하여 공격 체인을 마무리할 수 있으므로 이를 따를 것입니다. 이를 통해 공격자는 특정 거래를 검열하고, 단거리 재구성을 수행하고, 블록을 자신에게 유리하게 재정렬하여 최대 MEV를 추출할 수 있습니다. 작업 증명(PoW) 체인과 마찬가지로 51% 공격은 매우 문제가 많습니다. 이 문제에 대한 방어는 다수 지분의 막대한 비용(현재 190억 달러 미만)이며, 공격자는 사회적 계층이 개입하여 정직한 소수를 포크할 수 있으므로 엄청난 위험에 직면하여 공격을 하게 됩니다.
공격자가 제어하는 스테이크 비율은 66% 이상입니다.
스테이킹된 ETH의 66% 이상을 제어하는 공격자는 정직한 검증자를 강요하지 않고 선호하는 체인을 결정할 수 있습니다. 공격자는 단순히 선호하는 포크에 투표한 다음 최종 결정을 내릴 수 있습니다. 압도적 다수 스테이커로서 공격자는 항상 최종 블록의 내용을 제어하고 지출, 롤백 및 다시 지출할 수 있는 권한이 있으며 특정 거래를 검열하고 마음대로 블록체인을 재구성할 수도 있습니다. 51%가 아닌 66%의 스테이킹을 제어하기 위해 추가 ETH를 구매함으로써 공격자는 사후 구조 조정 및 결국 역전(즉, 과거를 변경하고 미래를 제어)할 수 있는 능력을 효과적으로 구매하는 것입니다. 스테이킹된 ETH의 66%를 관리하는 현재 비용은 약 250억 달러이며 여기서 유일한 방어책은 대체 포크의 채택을 조정하기 위해 소셜 계층으로 돌아가는 것입니다. 다음 섹션에서 이에 대해 자세히 살펴보겠습니다.
레이어 0: 최후의 방어선
블록체인의 코딩된 방어가 손상되고 공격자가 부정직한 블록체인을 마무리할 수 있으면 어떻게 됩니까?
이 상황은 여러 가지 방식으로 발생할 수 있으며, 특히 공격자가 스테이킹 지분의 대부분을 제어할 때 공격자가 자신의 투표 또는 51% 이상의 정직한 유효성 검사기의 추가 증명을 통해 간단하게 수행할 수 있습니다. 34%의 스테이킹을 제어하는 ETH와 네트워크의 메시징에 대한 일부 제어를 통해 공격자는 두 포크를 모두 완료할 수 있습니다. 경우에 따라 비활성 누출 메커니즘으로 인해 재구성된 체인이 종료될 수 있습니다. 공격자가 유효성 검사기 세트를 두 개의 포크로 분할하는 데 성공하면 비활성 누출 메커니즘이 두 포크에서 활성화되며 질문은 정직한 유효성 검사기 또는 부정직한 유효성 검사기가 최종성을 회복합니까? 정직한 검증자가 먼저 결정하면 정직한 체인이 정식 체인이 되고 네트워크에 있는 모든 클라이언트의 포크 선택 알고리즘이 체인의 최종 부분을 받아들이고 이더리움은 다시 정직한 플레이어의 통제하에 있게 됩니다. 그러나 부정직한 유효성 검사기가 블록체인을 마무리하는 데 성공하면 이더리움 커뮤니티는 매우 어려운 위치에 놓이게 됩니다. 정식 체인은 역사상 부정직한 부분을 포함할 것이며 정직한 검증자는 결국 처벌을 받게 될 것입니다.
가능성이 낮은 세 번째 시나리오는 한 포크의 유효성 검사기가 다른 포크의 상대를 알지 못하는 영구적인 네트워크 분할입니다. 이렇게 하면 독립적으로 결정된 두 개의 포크 체인이 생성되며, 각 체인은 다른 검증자 세트의 지분을 유출합니다. 그런 다음 두 체인은 최종 체크포인트가 다르기 때문에 절대 다시 조립되지 않습니다. 지배적인 클라이언트의 취약성(공격이 아닌)도 끊어졌지만 완성된 체인으로 이어질 수 있습니다. 이더리움의 실행 계층에 관해서는 go-ethereum(Geth) 클라이언트가 지배적이며 노드의 85% 이상이 이를 실행합니다. 합의 레이어 측면에서 현재 Prysm 클라이언트가 지배적이며 지속적인 커뮤니티 활동 이후 점유율이 약 50%로 떨어졌습니다. 주요 실행 클라이언트 또는 합의 클라이언트의 취약성으로 인해 완결성이 중지되거나 잘못된 데이터가 완결될 수 있습니다. Kiln 테스트넷에서 Prysm의 버그는 블록 생성에 영향을 미쳤습니다. 노드가 4개의 서로 다른 클라이언트에 대해 거의 동일한 점유율을 가지고 있기 때문에 문제가 되지 않지만 메인넷에서는 클라이언트의 66% 이상이 동일한 오류를 겪게 됩니다. 따라서 확률은 매우 낮지만 부정직한 최종화 체인에 대한 몇 가지 경로가 있습니다. 그들은 모두 ETH 스테이킹에 막대한 투자가 필요하거나 유효성 검사기 세트에 대한 매우 복잡한 작업이 필요하며 현재로서는 이상적인 조건에서만 실현 가능한 것으로 입증되었으며 이러한 공격은 모두 소프트웨어 업데이트를 통해 완화되었습니다. 그러나 궁극적인 해결책이 소셜 계층(계층 0)에 의존하는 경우를 배제할 수 없습니다.
이더리움의 PoS 합의 메커니즘의 강점 중 하나는 커뮤니티가 공격자 앞에서 다양한 방어 전략을 사용할 수 있다는 것입니다. 최소한의 대응은 추가 페널티 없이 공격자의 검증자를 네트워크에서 강제로 제거하는 것일 수 있습니다. 네트워크에 다시 진입하려면 공격자는 유효성 검사기 집합이 점진적으로 증가하도록 활성화 대기열에 가입해야 합니다. 예를 들어, 스테이킹된 ETH의 양을 두 배로 늘리기 위해 충분한 검증자를 추가하는 데 약 200일이 걸리므로 공격자가 또 다른 51% 공격을 시도하기 전에 정직한 검증자에게 200일 동안 대응할 수 있습니다. 물론 커뮤니티는 과거 보상을 취소하거나 공격자의 스테이킹 자본의 일부(최대 100%)를 소각하는 등 공격자를 더 가혹하게 처벌하기로 결정할 수도 있습니다.
공격자에게 부과된 처벌에 관계없이 커뮤니티는 부정직한 블록체인(Ethereum 클라이언트에 코딩된 분기 선택 알고리즘이 선호하는 블록체인이지만)이 실제로 유효하지 않은지 여부를 집합적으로 결정해야 하며 커뮤니티는 정직한 대체 체인을 기반으로 구축해야 합니다. 정직한 유효성 검사자는 커뮤니티에서 승인한 이더리움 포크 위에 구축하는 데 집단적으로 동의할 수 있습니다(예: 공격이 시작되기 전에 정식 체인이 포크되었거나 공격자의 유효성 검사기가 강제로 제거되었을 수 있음). 정직한 검증자는 이 분기된 체인을 기반으로 구축하도록 인센티브를 받을 것이며, 이더리움에 구축된 교환 및 애플리케이션은 정직한 체인에 있고 정직한 검증자를 따라 정직한 블록체인을 선호할 수 있습니다. 그러나 이것은 매우 지저분한 거버넌스 문제가 될 것입니다. 일부 사용자와 유효성 검사기는 정직한 체인으로 다시 전환하여 의심할 여지 없이 자금을 잃을 것이며 공격 후 확인된 블록 트랜잭션이 롤백될 수 있으므로 애플리케이션 계층이 중단되어 "코드가 법"이라고 믿는 경향이 있는 사용자에게 완전히 충격을 줍니다. 또한 일부 사용자, 심지어는 기민함이나 우연을 통해 부정직한 블록체인의 혜택을 받는 기관 사용자도 이익을 보호하기 위해 포크에 반대할 수 있습니다. 합리적으로 조정된 완화 조치가 신속하게 실행될 수 있도록 커뮤니티가 51% 이상의 스테이킹 공격에 대한 대응을 연습해야 한다는 요청이 있었습니다. Vitalik은 ethresear.ch와 Twitter에서 좋은 토론을 했습니다.
요약하다

요약하다
이 기사에서는 Ethereum이 지분 증명(PoS) 합의 메커니즘에 병합된 후 공격자가 Beacon Chain을 공격할 수 있는 몇 가지 방법을 살펴봅니다. 전반적으로 공격자가 제어하는 ETH가 많을수록 지분이 향후 블록의 콘텐츠에 영향을 미치는 데 사용할 수 있는 투표권으로 전환될 수 있으므로 성공 가능성이 높아집니다. 공격자가 제어하는 약속된 ETH의 비율이 증가함에 따라 달성할 수 있는 파괴력이 더 커집니다.
33%: 완결 지연
34%: 이중 최종성 결과
51%: 검열, 블록체인의 미래 통제
66%: 검열, 블록체인 제어의 과거와 미래
소량의 스테이킹된 ETH만 제어하면 되는 보다 정교한 공격도 있지만, 이러한 공격에서는 공격자가 정직한 검증자 집합을 선호하기 위해 메시지 타이밍을 세밀하게 제어해야 합니다.
전반적으로 이러한 잠재적인 공격 벡터에도 불구하고 비콘 체인은 위험이 낮으며 작업 증명 체인보다 훨씬 낮습니다. 이는 공격자가 정직한 검증자를 투표권으로 압도하기 위해 막대한 ETH 스테이킹 비용을 위험에 빠뜨릴 필요가 있기 때문입니다. 내장된 "당근과 채찍" 인센티브 계층은 특히 저위험 공격자의 대부분의 악의적인 행동을 방지합니다. 실제 네트워크 조건으로 인해 특정 유효성 검사기 하위 집합에 대한 메시징을 세밀하게 제어하기 어렵고 클라이언트 팀이 간단한 패치로 알려진 공격을 신속하게 차단하기 때문에 더 미묘한 반송 및 균형 공격도 성공할 가능성이 낮습니다. 에 대한 공격, 균형 공격 및 눈사태 공격 벡터.
34%, 51% 또는 66% 공격을 해결하려면 커뮤니티 조정이 필요할 수 있습니다. 이것은 커뮤니티에 고통스러울 수 있지만 커뮤니티가 대역 외에서 대응할 수 있는 능력은 공격자에게 강력한 의욕을 꺾는 요소입니다. 이더리움 소셜 계층은 궁극적인 백스톱이며, 기술적으로 성공적인 공격은 여전히 정직한 포크를 채택하는 데 동의하는 커뮤니티에 의해 중단될 수 있습니다. 궁극적으로 공격자와 이더리움 커뮤니티 간의 경쟁이 있게 될 것이며, 충분히 빠르게 진행된다면 66% 공격에 사용된 250억 달러는 성공적인 사회적 조정 공격으로 전멸될 수 있습니다.
공격자에게 있어 수익성이 있을 확률은 효과적인 억지력이 될 만큼 충분히 낮습니다. 그렇기 때문에 일치된 가치로 응집력 있는 소셜 레이어를 유지하는 것이 암호화 투자에 매우 중요합니다.
원본 링크


