51% 공격 자동 복구, 다수 공격에서 스스로 회복하기
Strawmap 그 이후 (장기) · 51% attack auto-recovery
검증자 다수가 결탁해 거래를 막거나 확정된 체인을 되돌리려 할 때, 사람들이 모여 대응하지 않아도 프로토콜이 공격을 알아채고 스스로 정상 상태로 돌아오게 만드는 연구입니다.
왜 필요한가
이더리움은 검증자(validator)들이 예치한 ETH를 걸고 블록에 투표해 체인을 확정합니다. 공격자가 전체 예치금의 절반 이상을 쥐면 특정 거래를 계속 뒤로 미루는 검열을 할 수 있고, 3분의 2 가까이를 쥐면 이미 확정된 블록을 되돌리는 시도까지 할 수 있습니다. 지금도 방어 장치는 있습니다. 확정을 되돌리려면 서로 모순되는 투표를 해야 하는데, 이때는 예치금을 크게 잃는 벌칙(슬래싱, slashing)이 붙습니다. 검증자 3분의 1 이상이 투표를 멈춰 확정이 서지 않으면, 멈춘 쪽 예치금이 서서히 줄어드는 비활동 누수(inactivity leak)가 작동해 남은 검증자들이 다시 확정을 이어 갑니다. 그러나 다수가 투표는 하면서 특정 거래만 빼놓는 검열에는 프로토콜 안에 자동 대응이 없습니다. 지금은 커뮤니티가 공격을 확인하고 공격자 체인을 따르지 않는 소수 포크를 사람 손으로 조율해야 합니다. 느린 데다 누가 공격자인지 가르는 판단도 사람에게 맡겨집니다. 이 항목은 그 감지와 대응을 가능한 한 프로토콜 안으로 들여오려는 연구입니다. 구체적인 방법은 아직 정해지지 않았고 Strawmap에서도 가장 뒤쪽 장기 칸에 놓여 있어 내용이 바뀔 수 있습니다.
어떻게 동작하나
- 공격을 알아챈다 다수 검증자가 특정 거래를 계속 빼놓거나 확정된 블록을 되돌리려 하면, 지금은 사람들이 이를 확인합니다. 이 항목은 노드가 이런 징후를 스스로 감지하게 하는 데서 출발합니다.
- 공격자 체인을 따르지 않는다 정상 노드들이 공격자가 만든 체인을 거부하고 자기들끼리 체인을 이어 갑니다. 이 체인에서는 공격자 검증자들이 투표하지 않은 것으로 보입니다.
- 공격자 예치금이 빠지고 확정이 돌아온다 비활동 누수로 공격자 예치금이 줄어들고 정상 검증자 비중이 3분의 2를 넘으면 확정이 다시 시작됩니다. 확정을 되돌린 투표는 슬래싱으로 따로 벌을 받습니다.