avatar
Published on

스마트 컨트랙트는 비트코인 마이닝 풀을 취약하게 한다.

Author
  • avatar
    Name
    yceffort

스마트 컨트랙트는 비트코인 마이닝풀을 취약하게 한다.

원문

비트코인 및 신흥 암호화폐는 사용자가 분산 응용 프로그램을 처리하고 실행할 수 있는 신뢰할 수 있는 플랫폼을 제공한다. 각 암호화폐는 네트워크에서 발생한 거래를 P2P 분산원장에 저장하여 유지한다.네트워크는 이러한 원장의 상태에 동의하기 위하여 이른바 '나카모토 합의'라고 하는 컨센서스 프로토콜을 실행한다. 각 실행마다, 나카모토 합의는 확률적으로 컴퓨터 퍼즐 (작업증명퍼즐)을 증명해 낼 수 있는 노드를 선출해 낸다. 이를 해결해 낸 사람은 네트워크에 일련의 새로운 거래 내역이 담겨 있는 블록을 브로드 캐스트 하게 된다. 이 블록이 네트워크에 의해 검증되고 승인된다면, 블록을 만들어낸 대가로 보상을 받게 된다.

마이닝 풀

작업증명에 유효한 답을 찾아내는 과정은 확률에 기반한 과정이며, 막대한 컴퓨팅 리소스를 필요로 한다. 일반적인 컴퓨팅 파워를 가진 일반적인 채굴자들은 이러한 확률적인 프로세스로 인하여 극심한 변동성을 갖게 된다. 일례로, 가장 최신의 마이닝 하드웨어인 AntMiner S9한대를 사용했을 경우에는, 평균 일년에 한개의 블록을 발굴할 수 있다. 이러한 극심한 변동성을 줄이기 위해서 채굴자들은 이른바 마이닝 풀을 조직하고 보상을 나눠 갖게 된다. 마이닝풀에서는, 풀을 형성한 operator가 채굴자들에게 일반적인 한개의 블록을 채굴하는데 필요한 작업증명 퍼즐보다 쉬운 작업을 miner들에게 배분한다. 각각의 퍼즐에 대한 답은 작업증명 퍼즐을 해결할 수 있는 가능성을 지니게 된다. 결과 적으로, 충분한 수의 채굴자들이 이러한 작업을 처리하게 된다면, 이 중 하나는 블록을 생상하기 위한 답을 가질 수도 있는 것이다. 채굴자가 블록 생성에 필요한 답을 찾았다면, 마이닝 풀 운영자는 이를 네트워크에 제출하고 보상을 받는다. 이 보상은 마이닝풀에 참가한 모든 참석자들에게 컴퓨팅 파워를 기여한 만큼 나눠 받게 된다.

마이닝 풀에 보상을 줄 경우의 취약점

마이닝 풀은 일반적인 블록 차단 공격에 취약하다. (block withholding attack은 마이닝 풀 운영자에게 가히즌 공격이다.) 블록 헤더가 마이닝 풀 운영자에 의해 결정되기 때문에, 공격자는 자신이 발견한 블록으로 이득을 얻을 수 없다. 그러나 마이닝 풀 밖에 있는 채굴자 들은 블록을 보유하고 있음으로서 이득을 얻을 수 있다. 블록을 보유하고, 고의로 누락시킴으로서 마이닝 풀 외부에 있는 광부들은 더 많은 블록을 채굴할 수 있게 된다.

공격

스마트 컨트랙트는 블록체인 상에서 멈출수 없는 프로그램이다. (비트코인, 이더리움 등) 그리고 내부적으로 실행 코드와 상태값을 가지고 있는데, 이 안에는 정보를 저장하기 위한 공간과 화폐 보유액이 포함되어 있다. 이 논문에서는, 블록을 소유하고 있는 마이닝 풀 채굴자에게 보상을 주는 스마트 컨트랙트에 대해 소개 하려고 한다. 채굴자가 이성적이고, 그들의 단기적인 이득을 극대화 시킬 것이라는 가정하에, 이러한 공격으로 부터 얻을 수 있는 이익을 분석하였다. 공격이 큰 마이닝 풀을 대상으로 할때, 이러한 공격은 단일 하드웨어를 실행하는 공격자에게도 이득이 된다. 더욱이 , 공격자들은 이론적으로 큰 마이닝 풀에서 발생하는 이득을 모두 흡수할 수 있다. 이러한 공격은 마이닝 풀을 형성하는 전략에 치명적인 손상을 가져온다.

블록체인 상에서 스마트 컨트랙트를 사용하는 것은 이러한 공격에 취약하게 된다는 것을 의미한다. 그러나, 광부들이 자신의 몫이 보장되지 않는 한, 이러한 공격을 막는데 협력하지 않을 것 같다. 더욱이, 스마트 컨트랙트를 통해 보상을 주는 모델은 공격자를 익명상태로 있게 하는 것이 가능하며, 공격자를 특정하는 것을 방지하고, 서비스를 마비 시킬 수 있다.

기존 block withholding attack 과 다른점

block withholding attack은 기존 비트코인에서 알려진 공격법이다. 채굴자가 2개의 마이닝 풀에서 채굴하고, 작업증명에 대한 해답을 마이닝 풀 운영자에 알리지 않고 보유함으로써 이득을 취할 수 있다는 것이 밝혀졌다. 출처 그러나 이러한 공격이 가능하기 위해서는, 엄청나게 큰 컴퓨팅 파워 (비트코인 전체 시스템의 1%)가 필요하다는 것이 밝혀졌다.

공격 원리

먼저 블록의 보상은, 그 보상을 받는 주체가 마이닝 풀 운영자로 고정되어 있기 때문에, 실제 블록은 공격자에게 별 의미가 없다는 것을 언급했다. 그러므로 공격자는 전체 네트워크에 작용하는 hash rate를 감소시켜야지만 이득을 취할 수 있다. block rate (비트코인의 경우 10분에 한 블록)을 유지하기 위해서는, 네트워킄 정기적으로 네트워크에 참여하는 채굴자를 예상하여 해쉬 퍼즐의 난이도를 조절해야 한다. 비트코인의 경우에는, 2018블록 마다 난이도 조절이 이루어 진다.

이러한 인센티브 분석을 위해, 공격자가 컨트롤하는 네트워크 hash rate를 α\alpha, 블록 보상을 rr, 채굴자가 작업증명에 대한 답을 제출하여 얻는 값을 srs \cdot r이라고 하자.

먼저 공격자가 블록의 일부 β\beta 를 구매하여 증가시킬 수 있는 순수익을 계산해보자. 공격을 하지 않을 경우, 공격자에게 기대되는 이익은 alpharalpha \cdot r 이다. 만약 β\beta가 유효한 블록이었고, 이를 보내지 않을 경우, 공격자의 hash rate 는 a=α/(1β)a = \alpha /(1-\beta) 가 된다. 그러므로, 공격자가 추가적으로 잠재적인 블록을 구매해서 얻을 수 있는 추가 수익은

arαr=αβr1βa \cdot r - \alpha \cdot r = \frac{\alpha\beta \cdot r}{1-\beta}

가 된다. 마이닝 풀 참여자가 블록 전송을 보류하기 위해서는, 공격자는 마이닝 풀에서 주는 이익과 상응하는 이익을 주어야 가능할 것이다. β\beta를 마이너가 네트워크에 전송하지 않는 블록의 비율이라고 보면, 장기적으로 네트워크의 난이도는 (1β)(1-\beta) 만큼 감소하게 될 것이다. 그러므로 유효한 블록을 발견하게 될 가능성은 (마이닝 풀 마이너에게 주어야할 보상은)

βsr1β\frac{\beta \cdot s \cdot r}{1-\beta}

가 된다. 위 두 식을 비교하면,

α>s\alpha > s

가 되는 경우에만 공격자와 블록을 발견해도 보내지 않는 mining pool 참가자에게 이익이 될 수 있다.

공격자에게 mining pool 참가자가 자신이 블록을 보유하고 있다는 것을 확신시키기 위해서는, 먼저 1) 유효한 블록을 찾고 2) 네트워크에 그 블록을 알리지 말아야 한다. 블록 검증을 위한 작업, 즉 80바이트 가량의 데이터가 유효한 블록 헤더로 구성되어 있는지 확인 하기 위해, 스마트 컨트랙트 내에 전체 블록체인을 저장해 두어야한다. 이는 이더리움에 경우에는 76,000달러가 넘는 비용이 소모되므로 불가능하다.

작업 중