BDoS: 블록체인 DoS 공격

나카모토 컨센서스 블록체인의 새로운 위협

김성준
CURG
14 min readJul 11, 2020

--

김성준, Virtual Machine & Optimization Lab in Seoul Nat’l University

본 포스팅에서는 Mirkin, Michael, et al. “BDoS: Blockchain Denial of Service.” arXiv preprint arXiv:1912.07497 (2019)[1]을 다룬다.

개요

블록체인을 대상으로 한 공격은 크게 두 종류로 구분할 수 있다. 하나는 인센티브 구조를 악용하는 채굴자가 부당한 방식으로 본인의 이익을 최대화하는 공격이고, 다른 하나는 시스템 자체를 공격 대상으로 삼아 정상적인 동작을 방해하는 공격이다. 전자의 경우 Selfish mining attack[2], Block withholding attack[3]과 Fork after withholding attack[4] 등이 존재하며, 이들 공격 기법에 대해서는 이전 포스팅에서 자세하게 다루었다. 본 포스팅에서는 후자에 해당하는 블록체인 DoS 공격, BDoS를 다룬다.

블록체인 프로토콜은 탈중앙화를 전제로 작동하기 때문에 DoS 공격의 타겟인 중앙 서버가 존재하지 않는다. 네트워크에 참여하는 일부 노드를 대상으로 DoS 공격을 수행했다 하더라도, 공격을 받아 중단되었던 노드가 복구 되거나 다시 작업을 수행하게 될 때 영향을 받지 않은 노드에서 제공하는 최신 데이터를 다시 동기화하여 이를 따라잡는다. 특정 노드가 정직한 노드로부터 정보를 수신받는 것을 막기 위해 다수의 노드가 악의적으로 네트워크를 독점하는 Eclipse attack[5]이 존재하지만, 탈중앙화 구조로 인해 공격 범위 밖의 나머지 노드들은 정상적으로 블록체인과 상호작용할 수 있으며 채굴 또한 정상적으로 이루어진다.

비트코인과 같은 블록체인 시스템을 대상으로 이루어지는 DoS 공격 비용은 매우 비싸다. 비트코인 프로토콜은 사토시 나카모토가 제안한 Proof-of-Work (PoW)의 암호학적 증명에 의존하여 보안성을 유지한다. 이러한 나카모토 컨센서스에서는 전체 해시 파워의 과반을 차지하는 51% 공격을 감행해야만 다른 블록을 무시한 채 빈 블록만을 생성함으로써 블록체인 시스템을 무력화할 수 있다. 하지만 논문에서 제시하는 공격 기법을 사용하면 전체의 50%에 못 미치는 해시 파워로도 일부 채굴자의 채굴을 중단시키는 유의미한 공격이 가능하며, 공격이 활성화된 상태를 유지하는데 있어 지속적인 지출이 필요하지 않다는 특징이 있다.

BDoS의 아이디어는 꽤나 간단하다. 공격자가 블록을 채굴하면 채굴에 성공했다는 사실만을 공개적으로 보인 채, 다른 채굴자가 메인 체인을 연장하면 그제서야 블록을 전파함으로써 고의로 race condition을 야기한다. 이로부터 채굴자의 잠재적인 수익을 감소시킴으로써 채굴을 포기하게끔 유도하는 것이 본 공격의 핵심이다.

채굴 모델

설명을 간소화하기 위하여, 논문에서 사용한 notation 및 수식은 최대한 배제하였다.

  • 효용성(utility) 및 수익성(profitability)

합리적인 채굴자의 효용성은 수익에서 비용을 뺀 값을 해시 파워 비율로 나눈 값으로 정의된다. 이와 유사하게, 수익성은 수익을 비용으로 나눈 값으로 정의된다.

  • 채굴자의 액션

각 채굴자는 {mine, stop} 둘 중 하나의 액션을 선택할 수 있다:

mine : 메인 체인으로부터 채굴 수행

stop : 메인 체인으로부터 채굴 중단

어떠한 공격도 이루어지지 않는 상황에서, 합리적인 채굴자라면 수익성이 1보다 크다면 mine 액션을 선택하고, 수익성이 1보다 작다면 stop 액션을 선택할 것이다.

BDoS 공격

아래 그림은 BDoS 공격 하에서 가능한 블록체인 상태(state)들을 표현한 것이다. State 0는 공격이 가해지지 않는 상황이다. 이때 공격자 A는 메인 체인의 최신 블록 B*을 대상으로 채굴을 수행한다.

B_A : 공격자가 채굴한 블록

H_A : 공격자 블록의 블록 헤더

D_A : 공격자 블록의 블록 바디

공격자가 블록 B_A를 채굴하는데 성공하면, 완전한 블록 (H_A, D_A)를 전파하는 대신 블록 헤더 (H_A, ⊥)만을 전파한다(State 1). 트랜잭션과 같은 블록 바디는 공개하지 않으며, 이러한 상태를 공격이 활성화(active)되었다고 표현한다.

가능한 블록체인 상태들

B_A는 블록 데이터의 일부만을 전파한 것이므로 메인 체인에 포함되지 않는다. 일단 B_A를 전파하는데 성공하면, 공격자는 다른 채굴자가 블록을 채굴하기 전까지 채굴을 중단한다. 다른 채굴자들은 완전한 블록이 아닌 블록 헤더만을 전파받은 상황이므로, 네트워크에 공격이 감행되었음을 인지할 수 있으며, 이 때 두 가지 선택이 가능하다:

  1. mine 액션을 선택하여 블록 채굴

적어도 한 명의 채굴자가 새로운 블록 B_P를 채굴하여 이를 B*에 append하면(State 2), 공격자는 즉시 B_A의 나머지 데이터를 전부 공개한다. B_A가 완전한 블록이 되면 메인 체인의 블록으로 인정되고, B_PB_A에 의해 fork가 발생하여 race condition에 진입한다(State Race). 이제 채굴 파워는 B_PB_A 둘로 분산되고, 먼저 연장된 블록이 race condition의 승자가 되어 메인 체인의 일부로 인정되고 블록 채굴 보상을 받는다.

2. stop 액션을 선택하여 채굴 중단

어떠한 합리적인 채굴자도 블록 채굴에 참여하지 않는다면, 공격자 또한 블록 채굴을 중단한다.

이때 합리적인 채굴자가 minestop 중 어떤 액션을 선택할지는 (1) 채굴자의 수익성, (2) 채굴자의 해시 파워, (3) 공격자의 해시 파워에 의하여 결정된다.

분석

만약 모든 채굴자에게 있어 stop이 최선의 액션이라면, 공격에 성공하였으며 시스템의 완전한 셧다운(complete shutdown)을 달성했다고 말할 수 있다. 만일 전체가 아닌 일부 채굴자만이 stop 액션을 선택한다면 부분적인 셧다운(partial shutdown)을 달성했으며 BDoS 공격은 부분적으로 성공한다.

공격이 활성화된 상태에서, 채굴자들이 mine 또는 stop 중 어떤 액션을 선택하느냐에 따라 {S_mine, S_stop} 두 가지 전략이 가능하다. 이들 모두 3개의 state를 지닌 Continuous-time Markov Chain으로 묘사할 수 있다.

S_mine 전략을 택할 경우, 네트워크에 공격이 가해지는 상황에서도 채굴을 수행한다. 공격이 진행중인 state 1에서 채굴을 지속할 때, 블록 채굴에 소모되는 비용은 똑같이 발생한다. 반면, 블록 채굴에 성공하더라도 B*에 이를 append하는 즉시 공격자에 의해 race condition이 발생하므로 방금 채굴한 블록 B_P가 메인 체인에 포함되지 않을 가능성이 있다. 만약 race condition 결과 공격자의 블록 B_A가 연장된다면, 나카모토 컨센서스의 longest chain rule에 의하여 블록 B_P는 메인 체인에 포함되지 못하고, 그 결과 어떠한 블록 채굴 보상도 획득할 수 없다.

S_mine 전략을 사용할 때의 마르코프 체인

반면, S_stop 전략에서는 공격자가 불완전한 블록을 전파한 state 1에서는 채굴을 포기하는 대신, 아무런 공격이 없는 state 0과 race condition인 state 2에서만 채굴을 수행한다. state 1에서는 채굴을 포기하기 때문에 어떠한 수익도 얻을 수 없지만, 채굴 시도에 따른 비용 소모 또한 없다. State 0와 state 2에서 채굴한 블록은 (별도의 공격이 없다면) 반드시 메인 체인에 포함되므로 채굴을 수행하는 것이 항상 합리적이다.

S_stop 전략을 사용할 때의 마르코프 체인

이상적인 채굴자는 둘 중 어느 전략이 더 많은 이익을 보장하는지 저울질하고, 둘 중 얻게 될 이익이 더 많은 전략에 따라 합리적으로 행동할 것이다. 아래 그래프는 (1) 공격자의 해시 파워 비율 α_A, (2) 채굴자의 해시 파워 비율 α_i, (3) B_PB_A가 같은 높이에서 전파되었을 때 다른 채굴자들이 공격자의 블록 B_A를 대상으로 채굴하는 비율인 rushing ability γ라는 3가지 조건이 주어졌을 때 채굴자가 S_stop 전략을 택할 수익성 임계치를 보여준다.

α_A, α_i, γ에 따른 공격 성공 조건

α_A : 공격자 A의 해시 파워 비율

α_i : 채굴자 P_i의 해시 파워 비율

γ : 공격자의 Rushing Ability

ω_i : 채굴자 P_i의 수익성

기존의 다른 공격들과 비교했을 때, 비교적 낮은 해시 파워(예: 10%)로도 유의미한 공격을 개시할 수 있다. 공격자의 해시 파워 및 rushing ability가 높을수록 더 많은 채굴자들이 S_stop 전략을 선택하며, 해시 파워가 높은 채굴자 혹은 채굴 풀일수록 BDoS 공격에 더 강함을 확인할 수 있다.

이외에도 논문 저자들은 일부 채굴자가 SPV (Simple Payment Verification) mining을 수행하는 전략을 추가하여 본 모델을 3가지 전략 {𝑆_stop, 𝑆_mine, 𝑆_SPV}이 존재하는 모델로 확장했다. 𝑆_SPV는 블록 바디 검증을 건너뛰고 블록 헤더 정보만 가져와 채굴을 수행한 다음 코인베이스 보상만을 수령하는 전략이다. 이를 본 모델에 적용하면, 공격자가 공격을 개시했음에도 블록을 검증하지 않고 불완전한 블록 B_A를 연장하게끔 행동한다. 이러한 세 가지 전략이 존재하는 게임을 가정했을 때, 게임 이론의 iterated elimination of strictly dominated strategies (IESDS)[6]를 활용하여 이 게임이 dominance-solvable game임을 보였다. 합리적인 채굴자라면 공격자의 블록이 연장되게끔 채굴하지 않을 것이므로 𝑆_SPV 전략은 𝑆_mine 전략에 strictly dominated되고, 위에서 다룬 {𝑆_stop, 𝑆_mine}만이 존재하는 모델로 회귀된다.

실제적 영향

앞서 살펴보았듯이, 공격이 진행중인 상태에 머물러있다면 공격자는 더 이상 채굴을 진행하지 않아도 된다. 이는 네트워크 전체 해시 파워의 과반을 쉬지 않고 지속적으로 운용해야만 공격 상태를 유지할 수 있는 51% 공격과 비교된다. 아래 그래프는 (1) 공격자의 해시 파워 비율 𝛼_A와, (2) 언제나 S_mine 전략을 선택하는 이타적인 채굴자의 해시 파워 비율 𝛼′_r에 따른, 마르코프 체인에서 공격 활성화 상태(state 1)에 머무르는 시간 비율을 나타낸다. 예를 들어, 𝛼_A = 0.2 및 𝛼′_r = 0.1일 때, 공격 시간의 67.5% 동안은 활성화 상태에 머물러 있어 채굴을 수행할 필요가 없으므로, 공격을 유지하는데 소모되는 비용은 전체 해시 파워의 𝛼_A(1 − 𝑝1)=6.5%만이 요구된다. 이는 Bitmain Antminer S17 Pro 장비 기준 매일 $65k 정도의 유지비에 해당한다. 공격자의 해시 파워 비율은 높고 이타적인 채굴자의 비율이 낮을수록 공격이 활성화된 상태로 유지되는 시간이 길어지고, 따라서 BDoS 공격에 취약해짐을 확인할 수 있다.

공격 활성화 상태(state 1)에 머무르는 시간의 비율

𝛼_A : 공격자의 해시 파워 비율

𝛼′_r : 이타적인 채굴자의 해시 파워 비율

p1 : 공격 활성화 상태에 머무르는 시간 비율

비트코인 가격과 비트코인 채굴 수익성은 매우 강한 상관관계를 가지므로, 비트코인 가격이 큰 폭으로 하락했을 때 매우 적은 비용으로도 공격이 가능해진다. 일례로 2019년 2월에 이타적인 채굴자 비율이 전체의 16%, rushing ability γ가 0.5일 때, 전체 해시 파워의 17% 만으로도 BDoS 공격을 개시할 수 있었다. 만약 비트코인 가격이 추가로 $2950까지 낮아졌다면, 전체의 5%에 해당하는 해시 파워만 가지고 있더라도 성공적으로 BDoS 공격을 수행할 수 있었다고 말한다. 아래 그래프는 각 시기별로 가장 좋은 채굴 하드웨어를 사용했을 때의 비트코인 채굴 수익성을 나타낸다.

채굴 하드웨어에 따른 비트코인 채굴 수익성 변화

공격 완화책

BDoS 공격은, 채굴자가 블록을 채굴하더라도 즉시 fork가 발생하고, race condition 결과 블록이 메인 체인에 포함되지 못하면 블록 채굴 보상 또한 받지 못할 위험 부담이 존재하기에 효력을 발휘한다. 논문에서는 이처럼 인센티브 조작(manipulation)을 이용하는 BDoS 공격에 대한 두 가지 완화책을 제시한다.

  • 엉클 블록 도입

앞서 발생한 race condition에서 채굴자가 패배하는 상황이 발생하더라도, 해당 블록이 엉클 블록으로 포함되면 기존 블록 채굴 보상의 대부분을 수령할 수 있다. 그렇게 되면 race condition으로 인하여 블록 채굴 보상을 얻지 못할 수 있음을 암시하는 공격 방식으로는 다른 합리적 채굴자들의 기대 수익을 효과적으로 낮출 수 없다.

  • Race condition에서 공격자의 블록 무시

공격자에 의해 fork가 발생하더라도, 공격자의 블록이 식별 가능하다면 이를 무시함으로써 race condition에 의한 공격을 상쇄시키는 것이 가능하다. 블록 헤더를 수령한 시간과 블록 바디를 수령한 시간 간격으로부터 공격자의 블록 여부를 식별할 수 있다. 공격자가 아닌 일반 채굴자의 블록이라면 둘 사이의 시간 간격이 일정 범위 내로 제한될 것이므로, 특정 시간 간격을 초과하여 전달받은 블록은 공격자의 블록이라고 의심할 수 있다.

하지만 시간 간격을 이용한 공격자 블록 식별은 공격자가 블록 헤더를 네트워크에 미리 전파함으로써 블록을 채굴해뒀음을 증명하는 상황에서만 가능하다. 만일 공격자가 블록 헤더 전파가 아닌, 스마트 컨트랙트나 영지식 증명을 활용하여 블록 채굴 사실을 증명한다면 이러한 완화책을 사용할 수 없다.

결론

본 포스팅에서는 나카모토 컨센서스의 인센티브 메커니즘을 사용하는 블록체인에 적용 가능한 DoS 공격을 소개하였다. 악의적인 채굴자가 시스템의 인센티브 메커니즘을 악용하여 본인의 이익을 최대화하는 방식이 아닌, 이로부터 시스템 자체를 붕괴시키는 공격 기법을 다루었다. 이러한 BDoS 공격은 기존에 잘 알려진 51% 공격 대비 훨씬 낮은 비용으로 실행 가능하다는 점에서 나카모토 컨센서스 기반 블록체인으로의 실질적인 위험 요소로 작용할 수 있다.

Selfish Mining 등의 공격 기법에서는 마이닝 풀이 블록을 발견했을 때 이를 네트워크에 알리지 않고 개인적으로 비밀리에 소유하는 반면, BDoS에서는 네트워크 공격을 감행하고 있다는 사실을 공개적으로 밝힘으로써 합리적인 채굴자들이 스스로 채굴을 중단하게끔 유도한다는 점이 흥미롭다.

레퍼런스

[1] https://arxiv.org/ftp/arxiv/papers/1912/1912.07497.pdf

[2] Eyal, Ittay, and Emin Gün Sirer. “Majority is not enough: Bitcoin mining is vulnerable.” International conference on financial cryptography and data security. Springer, Berlin, Heidelberg, 2014.

[3] Courtois, Nicolas T., and Lear Bahack. “On subversive miner strategies and block withholding attack in bitcoin digital currency.” arXiv preprint arXiv:1402.1718 (2014).

[4] Kwon, Yujin, et al. “Be selfish and avoid dilemmas: Fork after withholding (faw) attacks on bitcoin.” Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security. 2017.

[5] https://academy.binance.com/ko/security/what-is-an-eclipse-attack

[6] https://en.wikipedia.org/wiki/Strategic_dominance

--

--