메인 콘텐츠로 건너뛰기

컨센서스 공격이란 무엇입니까?

오늘 업데이트함

비트코인의 합의 메커니즘은 최소한 이론적으로 채굴자(또는 채굴 풀)가 자신의 연산 능력을 이용해 사기나 파괴 행위를 시도하는 것이 매우 어렵다는 사실을 의미한다. 비트코인의 합의 메커니즘은 대다수의 채굴자들이 자신의 이익에 따라 정직하게 채굴함으로써 전체 비트코인 시스템을 유지할 것이라는 전제에 기반한다. 그러나 시스템 내에서 단일 채굴자나 채굴자 그룹이 대량의 연산 능력을 확보하게 되면 비트코인 합의를 공격함으로써 비트코인 네트워크의 보안성과 신뢰성을 훼손할 수 있다.

합의 공격은 전체 블록체인의 미래 합의에만 영향을 미치거나 많아야도 최근 과거의 몇 개 블록(최대 과거 10블록)의 합의에만 영향을 줄 수 있다는 점에 유의할 필요가 있다. 시간이 지날수록 전체 비트코인 블록체인이 변조될 가능성은 점점 낮아진다. 이론적으로 블록체인 포크는 매우 길어질 수 있지만 실제로는 매우 긴 포크를 구현하는 데 필요한 연산 능력은 극히 막대하며 전체 비트코인 블록체인이 점진적으로 성장함에 따라 과거 블록은 사실상 포크로부터 변조 불가능하다고 볼 수 있다. 또한 합의 공격은 사용자의 개인키나 암호화 알고리즘(ECDSA)에 영향을 주지 않는다. 합의 공격으로 다른 지갑에서 비트코인을 훔치거나 서명 없이 비트코인을 지불하거나 비트코인을 재분배하거나 과거 거래를 변경하거나 비트코인 보유 기록을 변경할 수도 없다. 합의 공격이 미칠 수 있는 유일한 영향은 가장 최근의 블록들(최대 10개)에 영향을 주거나 서비스 거부를 통해 향후 블록 생성에 영향을 미치는 것이다.

합의 공격의 전형적인 시나리오는 '51% 공격'이다. 예를 들어 한 채굴자 그룹이 전체 비트코인 네트워크 연산력의 51%를 통제하고 있고 이들이 합심해 전체 비트코인 시스템을 공격하려 한다고 상상해 보자. 이 채굴자 그룹은 블록의 다수를 생성할 수 있기 때문에 고의로 블록체인 포크를 만들어 이중 지불을 하거나 특정 거래를 차단하거나 서비스 거부를 통해 특정 지갑 주소를 공격할 수 있다. 블록체인 포크/이중 지불 공격은 공격자가 최근의 거래를 부인하고 그 거래 이전에 새 블록을 재구성함으로써 새로운 포크를 만들어 이중 지불을 가능하게 하는 경우를 말한다. 충분한 연산력이 보장되면 공격자는 동시에 여섯 개 이상의 최근 블록을 변조할 수 있어 보통은 변조 불가능한 이들 블록에 포함된 거래들을 사라지게 만들 수 있다. 이중 지불은 공격자가 소유한 지갑에서 발생한 거래에만 적용될 수 있다는 점에 주목할 가치가 있다. 이중 지불 거래에 대해 합법적인 서명을 생성할 수 있는 사람은 지갑 소유자뿐이기 때문이다. 공격자는 자신의 거래에 대해서만 이중 지불 공격을 수행할 수 있지만 해당 거래가 되돌릴 수 없는 구매에 해당할 때는 그러한 공격이 수익성이 있다.

실제 사례로 '51% 공격'을 살펴보자. 1장에서 우리는 앨리스와 밥이 비트코인으로 커피 한 잔을 거래하는 상황을 다루었다. 커피숍 주인 밥은 앨리스의 전송이 제로 확인 상태에서 확정되었을 때 커피를 제공할 의향이 있다. 그런 소액 거래에 대한 51% 공격의 위험은 고객이 즉시 구매하는 편의성(앨리스가 즉시 커피를 받을 수 있음)에 비해 작기 때문이다. 이는 대부분의 커피숍이 25달러 미만의 신용카드 결제에 서명을 요구하지 않는 것과 같은 이치다. 신용카드 서명을 요구하는 비용이 고객이 결제 취소를 할 위험보다 더 크기 때문이다. 따라서 비트코인으로 결제하는 고액 거래에서 이중 지불의 위험은 훨씬 더 크다. 공격자(구매자)는 네트워크에 실제 거래와 동일한 UTXO(미사용 거래 출력)를 가진 위조 거래를 전파하여 실제 거래를 취소할 수 있다. 이중 지불은 거래가 확인되기 전에 이루어지거나 공격자가 블록체인 포크를 통해 수행할 수 있다. 51% 공격을 수행하는 사람은 오래된 포크에 기록된 거래를 취소한 뒤 새 포크에서 동일한 금액의 거래를 다시 생성하여 이중 지불을 달성할 수 있다.

이런 유형의 공격을 피하려면 대량 판매를 하는 상인은 거래가 네트워크에서 6회 확인될 때까지 배송을 기다려야 한다. 또는 상인은 타사 다중 서명 계정을 거래에 사용하고 그 거래 계정이 네트워크에서 여러 번 확인될 때까지 배송을 기다려야 한다. 거래 확인 횟수가 많을수록 공격자가 51% 공격으로 변조하기는 더 어려워진다. 고액 거래의 경우 비트코인 결제는 구매자와 판매자 모두에게 편리하고 효율적이며, 상품이 결제 후 24시간 이내에 발송되더라도 문제가 없다. 24시간 후에는 거래가 적어도 144회의 네트워크 확인을 받게 되어(사실상 51% 공격의 가능성이 줄어든다).

이중 지불 공격 외에 합의 공격의 또 다른 시나리오는 특정 비트코인 주소에 대한 서비스 거부이다. 시스템에서 대다수의 연산력을 가진 공격자는 특정 거래를 쉽게 무시할 수 있다. 만약 그 거래가 다른 채굴자가 생성한 블록에 존재한다면 공격자는 고의로 그 블록을 포크하여 재생성하고 자신이 무시하고자 하는 거래를 블록에서 제거할 수 있다. 이 공격의 결과는 이 공격자가 시스템에서 압도적인 연산력을 가지고 있는 한 특정 지갑 주소나 주소 그룹에서 발생하는 모든 거래를 지속적으로 방해하여 해당 주소들에 서비스 거부를 할 수 있다는 것이다.

51% 공격은 이름에서 암시하듯 공격자가 시스템 연산력의 적어도 51%를 필요로 하는 것은 아니다. 사실 51% 미만의 연산력으로도 그러한 공격을 시도할 수 있다. 51% 공격이라고 불리는 이유는 공격자의 연산력이 51%에 도달하면 공격 시도가 거의 확실히 성공하기 때문이다. 본질적으로 합의 공격은 모든 채굴자의 연산이 정직한 연산 그룹과 공격자 연산 그룹으로 나뉘어 두 그룹이 블록체인에서 새 블록을 가장 먼저 계산하려 경쟁하는 시스템과 같다. 다만 공격자 연산은 특정 거래를 포함하거나 제외하도록 정교하게 구성된 블록을 계산한다. 따라서 공격자의 연산력이 적을수록 경쟁에서 이길 가능성은 낮아진다. 반면 공격자의 연산력이 많을수록 고의로 생성할 수 있는 포크 블록의 체인이 더 길어지고 더 최근의 블록이나 향후 블록을 더 많이 변조할 수 있다. 일부 보안 연구 그룹은 통계 모델을 사용해 네트워크 연산력의 30%만으로도 51% 공격을 시작하기에 충분하다고 결론내린 바 있다.

네트워크 전체 연산력이 극적으로 증가하면서 단일 채굴자가 공격을 감행하는 것은 불가능해졌고 이제 단일 채굴자가 네트워크 연산력의 1%조차 차지하기 어렵다. 그러나 중앙집중식으로 통제되는 채굴 풀은 풀 운영자가 이익을 위해 공격할 위험을 도입한다. 풀 운영자는 후보 블록 생성과 새로 생성된 블록에 어떤 거래를 포함할지 통제한다. 이로 인해 풀 운영자는 특정 거래를 제외하거나 이중 지불을 실행할 수 있는 권한을 갖게 된다. 이 권한이 풀 운영자에 의해 은밀하고 점진적으로 남용된다면 풀 운영자는 합의 공격을 실행하고 눈치채지 못한 채 이익을 얻을 수 있다.

그러나 모든 공격자가 이익을 노리는 것은 아니다. 공격자가 단지 비트코인 시스템을 교란하기 위해 공격을 감행하는 시나리오도 가능하다. 이런 시스템 교란을 의도한 공격자는 막대한 투자와 치밀한 계획을 필요로 하므로 그러한 공격은 정부 지원 기관에서 비롯될 가능성이 있다. 유사하게 그런 공격자들은 채굴기를 구입하고 채굴 풀을 운영하며 앞서 언급한 풀 운영자의 권한을 남용해 서비스 거부와 같은 합의 공격을 수행할 수 있다. 그러나 비트코인 네트워크의 연산력이 기하급수적으로 빠르게 증가함에 따라 이런 이론적으로 가능한 공격 시나리오들은 실제로 실행하기 점점 더 어려워지고 있다. 채굴 통제의 분산화를 목표로 하는 P2Pool 채굴 프로토콜과 같은 비트코인 시스템의 최근 업그레이드도 이러한 이론적 공격을 점점 어렵게 만들고 있다.

심각한 합의 공격이 발생하면 비트코인 시스템에 대한 신뢰가 감소하고 결과적으로 비트코인 가격이 급락할 수 있는 것은 분명하다. 그러나 비트코인 시스템과 관련 소프트웨어는 지속적으로 개선되고 있으므로 비트코인 커뮤니티는 합의 공격이 발생할 경우 전체 비트코인 시스템을 이전보다 더 견고하고 신뢰할 수 있게 만들기 위해 신속히 대응할 것이다.

답변이 도움되었나요?