모나코인에 BWA 공격, 블록체인은 과연 안전한가?

  • 기사입력 2018.05.23 10:05
  • 기자명 윤형석


2018년 5월 15일, 모나코인이 블록보류공격(Block Withholding Attack,이하 BWA)이라고 불리는 공격을 당하여 블록체인의 대규모 재구성(되돌림 현상)되고 거래소가 약 1억원 정도의금전적인 피해를 입은 일이 있었습니다. 이 사건에 이용된 공격의 방법과 이 공격이 시사하는 바를 짚어보겠습니다.





사건의 전말



이 사건은 2018년 5월 15일에 북미에 있는 나라 벨리즈(Belize)의 가상화폐 거래소 라이브코인(Livecoin)이 가상화폐 포럼 ‘Bitcointalk’에 글을 남기면서 알려졌습니다. 라이브코인에서 이중지불 사건이 일어나면서 모나코인에 문제가 발생했다는 것을 발견하고 모나코인 개발자의 연락처를 찾고 있다는 글이었습니다. 같은 날, ‘a1binos’라는 유저가 모나코인 블록체인에 상식적으로 생각하기 힘든 5블록 길이의 고립블록(Orphan Block)이 수 차례 생성되었으며 BWA이 감행되고 있다고 보고하였습니다.





개발자의 연락처를 찾는 글

출처: Bitcointalk





BWA를 발견한 유저의 글

출처: Bitcointalk



확인 결과 2018년 5월 13일부터 15일까지 빈번하게 재구성(reorg=re-organization, 블록체인 되돌림 현상)이 최고 20블록 단위로 발생한 것이 밝혀졌습니다. 이에 모나코인 유저들이 다른 거래소들에 모나코인 입금 시 승인 수를 늘리도록 연락하였고 각 거래소들은 입금을 정지시키거나 승인 수를 늘린다고 발표하면서 해당 사건은 마무리 된 것으로 보입니다.





블록보류공격, BWA란?



가상화폐의 근간기술인 블록체인은 거래 데이터의 집합(Block)을 연결(Chain)시키고 있습니다. 그리고 이 블록은 계산값을 찾아내는 채굴(Mining)에 의해 생성됩니다. 보통 채굴자들은 블록을 찾으면 바로 네트워크에 선언합니다. 가장 먼저 찾아낸 사람에게 보수로써 코인이 주어지기 때문입니다. 그러나 해시파워(Hash power, 연산속도)가 높은 유리한 조건에 있을 경우 발견한 블록을 일부러 선언하지 않은 채 뒤에서 다음 블록을 채굴해 나가는 것이 가능합니다.





BWA란 이 점을 악용하여 이득을 취하는 공격입니다. 겉으로는 다른 블록체인(파란색)이 늘어나고 있지만, 공격자는 뒤에서 자신만의 블록체인(회색)을 몰래 채굴합니다. 공격자의 해시파워가 더 높기 때문에 몰래 채굴한 블록체인 쪽이 더 긴 상태가 됩니다.



이 때 공격자는 타겟인 거래소에 모나코인을 입금합니다. 예를 들어 거래소가 3번 승인으로 입금을 처리하는 경우라면 아래 그림의 빨간 화살표 부분에서 입금완료가 됩니다.





이 타이밍에서 공격자는 모나코인을 다른 코인으로 교환하여 재빨리 인출합니다. 그 후에 뒤에서 몰래 채굴해오던 블록들을 한 번에 선언합니다.





갑자기 새로운 블록이 나타나면서 체인은 두 갈래로 갈라집니다. PoW(Proof of Work, 작업증명)방식의 블록체인에서는 체인이 갈라지게 되면 블록이 더 길게 이어진 쪽이 정당하다고 여기는 규칙이 있습니다. 이때 공격자의 블록체인 쪽이 더 길기 때문에 정당한 체인으로 간주됩니다. 기존의 체인은 도태되어 사라집니다.(이 블록들을 고립 블록이라고 합니다.) 이것을 블록의 재구성(re-organization)이라고 합니다.



기존의 체인에 거래소에서의 거래내역(모나코인->다른코인)이 있는데 체인이 사라지면서 거래내역 또한 사라집니다. 이렇게 해서 구입에 사용되었던 모나코인이 다시 돌아옵니다. 이 돌아온 모나코인을 개인 지갑에 이동시키면 공격자가 만든 새로운 블록체인에서는 모나코인이 공격자의 개인 지갑으로 이동한 것을 기록합니다. 기존 블록체인과 새로운 블록체인의 코인이 중복되면서 기존 트랜잭션에서 다른 코인을 구매했던 모나코인이 사라지고 공격자 개인 지갑 속 코인만 남게 됩니다.





왜 모나코인이었을까



이번에 모나코인이 공격을 받은 요인으로는 우선 코인의 유동성을 들 수 있습니다. 우선 공격 과정을 보면



1. 라이브코인에 모나코인을 입금



2. 모나코인을 라이브코인에서 매각하여 다른 코인으로 출금



3. 모나코인 블록체인에 BWA를 감행하여 라이브코인으로의 입금을 취소



4. 돌아온 모나코인을 개인 지갑에 입금



으로 정리할 수 있습니다. 여기서 1, 2번에 코인의 유동성이 필요합니다. 너무 작은 규모의 코인은 공격을 위한 코인 확보에도 시간이 걸릴 뿐만 아니라 2번 타이밍에 가능한 많은 양의 코인을 단시간에 매각해야하기 때문에 적합하지 않습니다. 모나코인은 그게 가능한 정도의 유동성을 가지고 있습니다.



다음으로 BWA에는 높은 해시파워가 필요합니다. 라이브코인의 모나코인 입금 승인수는 6이었으므로 단순히 생각했을 때 메인체인(기존의 블록체인)에 6블록이 추가될 때 공격자는 7블록 이상을 채굴하지 않으면 거래를 취소시킬 수 없습니다. 거대한 해시파워를 지닌 비트코인이나 이더리움에 이같은 공격을 시도하려면 초기 투자에 막대한 비용이 들어갑니다. 그러나 모나코인이라면 그보다 훨씬 적은 비용으로 공격이 가능합니다.



마지막으로 모나코인의 ‘난이도조정 알고리즘’을 들 수 있습니다. 모나코인은 이전부터 채굴 난이도의 변화가 심하여 채굴 수익성 또한 들쪽날쭉 했었습니다. 때문에 많은 채굴자들이 모나코인 채굴에 참여했다가 빠져나가기를 반복하고 있습니다. 채굴 채산성이 떨어져 채굴자가 다른 코인을 채굴하러 이동한 타이밍을 노리면 공격자는 BWA의 성공 확률을 높일 수 있습니다.



모나코인은 채굴 난이도를 1블록 단위로 조정하는 구조로 되어있습니다. 이는 급격한 해시파워의 변화에 강하다는 점에서는 좋지만 이번 사건처럼 난이도가 낮은 시점을 기점으로하여 공격을 감행하면 평소 난이도보다 공격이 쉬운 단점이 있습니다.





모나코인 난이도 그래프

출처:Coinwarz



위 그림은 사건이 일어난 1주일 동안 모나코인의 난이도를 표시한 차트입니다. 폭이 굉장히 차이가 난다는 것을 알 수 있습니다. 차트를 보면 난이도가 최소 40116, 최대 109348로 2배 이상 차이가 난다는 것을 알 수 있습니다. 이 난이도의 차이가 공격하기 쉽게 만든 것이 아니냐는 지적을 받고 있습니다.





BWA에 대한 대책은?



현 시점에서 대책은 딱히 없는 듯 합니다. 그나마 할 수 있는 일은 거래소에서 입금에 필요한 승인 횟수를 늘리는 일인 듯 합니다. 이는 PoW방식인 이상 손 쓸 방도가 없는 부분입니다. 몇몇 사람들이 높은 해시파워를 가졌을 경우 이러한 일이 벌어지기 때문입니다.



모나코인의 개발자인 ‘와타나베(ワタナベ)’도 ‘PoW방식의 코인인 이상 피해갈 수 없는 문제’라며 승인 횟수를 늘리는 것 이외에 유효한 방법이 없다고 말합니다. 이에 PoS방식으로의 전환이라던가 PoW와 PoS 하이브리드 방식 등을 생각 중인 듯 합니다.





출처: 모나코인 공식 트위터





그러면 PoW는 안전하지 않은가?



이 글을 읽으며 PoW의 안전성에 불안해하는 사람들이 많을 것이라고 생각합니다. 그러나 이번 사건이 PoW코인의 약점을 노린 것이지 PoW만 위험에 노출되어 있다고 할 수는 없습니다.



예를들어 PoS(지분증명방식)의 경우 Nothing at Stake 문제가 발생할 수 있습니다. PoS에서는 채굴자 대신에 검증자(Validator)가 있으며 검증자는 자신이 보유하고 있는 자산에 따라 블록을 검증할 수 있는 권한을 가집니다. 검증자는 정당한 블록이라 생각하는 블록에 자신의 자산증명을 추가시키고 배팅을 합니다. 네트워크에서는 배팅된 자산의 총합이 가장 큰 블록을 정당한 블록으로 인정합니다.



여기서 어떤 한 사람이 블록체인을 공격하기 위해 진짜 블록 대신 가짜 블록을 만들었을 경우 원래대로라면 검증자는 진짜 블록에만 서명을 해야 합니다. 그러나 검증자 입장에서는 가짜 블록이 정당한 블록이 되면 코인을 얻지 못하므로 양쪽 모두에 서명을 하는 편이 유리합니다. 따라서 가짜 블록까지 정당하다고 검증을 하게 되고 결국 전체 네트워크에 혼란을 일으킬 수 있습니다.



PBFT(Practical Byzantine Fault Tolerance, 다수결 합의 알고리즘)에서는 블록체인의 되돌림 현상이 일어나지 않지만 1/3 이상의 지분을 보유하고 있으면 공격이 가능해지며 이는 PoW의 51%보다 낮은 수치입니다. 따라서 PoW보다 악의적인 공격을 방어하는 측면에서는 더 불리합니다. 이를 방어하기 위해서는 노드 수를 늘려야하지만 PBFT에서는 노드의 수가 늘어날수록 통신량이 급격히 증가하므로 블록생성에 더 많은 시간이 요구됩니다.



이렇듯 어느 한 방식이 뒤쳐졌다, 안전하지 못하다 라고 정의를 내릴 수는 없고 각 방식들의 문제점을 인지하고 어떻게 보완할 것인지 대책을 강구하는 방향으로 나아가야 할 것입니다.



참조: PBFT란?





이번 사건이 중요한 의미를 갖는 이유



해시파워에 의한 공격은 지금까지 이론상으로만 존재했으며 실제로 일어난 적은 없었습니다. 여태까지의 공격은 거래소에 대한 공격이었으나 이번 사건은 블록체인 자체에 대한 공격이기 때문에 금전적 피해 이상의 여파가 있지 않을까 생각합니다.



일반적으로는 블록타임(거래완료까지 대기시간)은 짧은 쪽이 빠르고 편리하다고 여겨왔습니다. 10분보다는 5분, 5분보다는 1분, 1분보다는 10초를 선호해왔습니다. 그러나 짧은 블록타임과 보안성은 현재로써는 양립 불가능한 상태이기에 그만큼 승인 횟수를 늘려야합니다. 때문에 거래속도를 개선하기 위해서는 새로운 방안을 구축해야 할 것입니다.



모나코인 BWA사건은 처음으로 블록체인이 대다수의 합의 없이 다시 쓰여진 사례입니다. 지금까지 안전하다고 여겨졌던 블록체인의 헛점이 그대로 드러난 것이기에 중요성과 심각성은 그 어떤 해킹사건보다 높다고 생각합니다. 모나코인만의 문제가 아닌 PoW 코인의 문제라 다른 코인들에서도 일어날 수 있는 상황이기에 다함께 살펴봐야 할 문제입니다.







참고자료



1. モナコインとBlock Withholding Attack

https://monappy.jp/memo_logs/view/keyshenay/3969 (Monappy)



2. 仮想通貨「モナコイン」一部消失 海外交換業者で、ブロックチェーン技術に懸念も

http://blockchain.gunosy.io/entry/2018/05/18/164219 (日本経済新聞)



3. モナコインへの攻撃について(BLOCK WITHHOLDING ATTACK)

http://doublehash.me/monacoin-attacked/ (ビットコイン研究所)



4. モナコインのブロックチェーンにマイナーの攻撃! 手法と一連の流れ

http://bitlife.cryptopie.com/monacoin-block-withholding-attack/ (bit-life)



그외 기타자료 참고




"트렌드와칭 텔레그램 참여하기 (최신 소식, 자료 공유)"

bagzein@naver.com

광고문의 보도자료

이 기사를 공유합니다
개의 댓글
0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400
내 댓글 모음
모바일버전