검수요청.png검수요청.png

"블록보류 공격"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
(피해 사례)
 
26번째 줄: 26번째 줄:
  
 
===젠캐시===
 
===젠캐시===
2018년 6월 2일, [[젠캐시]](ZEN)에 대한 블록보류 공격으로 약 7억 원에 해당하는 23,152개의 코인에 대해 이중지불 피해가 발생되었다.<ref>홍티, 〈[https://m.blog.naver.com/PostView.nhn?blogId=hhk072811&logNo=221447134083&proxyReferer=https%3A%2F%2Fwww.google.com%2F (코린이 노트) 51% 공격에 대해 알아봅시다.]〉, 《네이버 블로그》, 2019-01-21</ref> 공격자로 의심되는 주소(znkMXdwwxvPp9jNoSjukAbBHjCShQ8ZaLib)의 거래내역을 확인한 결과, 최소 3번의 이중지출을 실행했다. 젠캐시는 공격 가능성에 대한 경고를 받은 즉시 조사에 착수해 해시파워 분배를 조절했고, 거래소 측과 연결해 거래 확인 시간을 늘리도록 요청했다. 아울러 젠캐시는 확인 사항을 대폭 늘릴 경우 추가 공격은 거의 없을 것으로 짐작되지만 거래 플랫폼의 보안이 걱정되는 경우 해당 플랫폼에 직접 연락하길 바란다고 했으며, 나노 레저S나 종이 지갑 등 콜드월렛에 옮기는 것을 강력히 권유했다.<ref>양모찌, 〈[https://ymozzi.tistory.com/14 젠캐시(ZenCash/ZEN)코인]〉, 《티스토리》, 2018-08-23</ref>
+
2018년 6월 2일, [[젠캐시]](ZEN)에 대한 블록보류 공격으로 당시 7만 달러(한화 약 7494만9000원)에 해당하는 23,152개의 코인에 대해 이중지불 피해가 발생되었다.<ref>홍티, 〈[https://m.blog.naver.com/PostView.nhn?blogId=hhk072811&logNo=221447134083&proxyReferer=https%3A%2F%2Fwww.google.com%2F (코린이 노트) 51% 공격에 대해 알아봅시다.]〉, 《네이버 블로그》, 2019-01-21</ref> 공격자로 의심되는 주소(znkMXdwwxvPp9jNoSjukAbBHjCShQ8ZaLib)의 거래내역을 확인한 결과, 최소 3번의 이중지출을 실행했다. 젠캐시는 공격 가능성에 대한 경고를 받은 즉시 조사에 착수해 해시파워 분배를 조절했고, 거래소 측과 연결해 거래 확인 시간을 늘리도록 요청했다. 아울러 젠캐시는 확인 사항을 대폭 늘릴 경우 추가 공격은 거의 없을 것으로 짐작되지만 거래 플랫폼의 보안이 걱정되는 경우 해당 플랫폼에 직접 연락하길 바란다고 했으며, 나노 레저S나 종이 지갑 등 콜드월렛에 옮기는 것을 강력히 권유했다.<ref>양모찌, 〈[https://ymozzi.tistory.com/14 젠캐시(ZenCash/ZEN)코인]〉, 《티스토리》, 2018-08-23</ref>
  
 
==대책==
 
==대책==

2019년 10월 24일 (목) 16:38 기준 최신판

블록보류 공격(BWA, Block Withholding Attack)이란 데이터의 집합인 블록의 연결 길이가 긴 쪽이 정당한 값으로 여기는 규칙을 악용한 공격 기법이다.

개요[편집]

블록은 계산 값을 찾아내는 채굴에 의해 형성되는데 일반적으로 채굴자들은 블록을 찾으면 바로 네트워크에 선언한다. 가장 먼저 찾아낸 사람에게 암호화폐를 보수로 지급하기 때문이다. 그러나 연산속도가 높은 유리한 조건에 있다면 블록을 선언하지 않고 몰래 계속 다음 블록을 채굴해나가는 것이 가능하다. 공격하는 사람은 뒤에서 선언으로 드러난 블록체인보다 더 길게 자신만의 블록체인을 만든다. 그리고 타깃으로 한 거래소에 그 암호화폐를 입금하고 다른 암호화폐로 교환한 뒤 재빨리 인출한다. 그 뒤 몰래 채굴해오던 블록들을 한 번에 선언하게 되면 더 길게 이어진 블록이 정당성이 있다고 보는 특징으로 인해 본래 블록체인의 거래내역이 사라지게 된다.[1]

공격 과정[편집]

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

블록보류공격 설명1.png

블록보류 공격이란 이 점을 악용하여 이득을 취하는 공격이다. 겉으로는 다른 블록체인(파란색)이 늘어나고 있지만, 공격자는 뒤에서 자신만의 블록체인(회색)을 몰래 채굴한다. 공격자의 해시파워가 더 높기 때문에 몰래 채굴한 블록체인 쪽이 더 긴 상태가 된다. 이때, 공격자는 타깃인 거래소에 모나코인을 입금한다. 예를 들어, 거래소가 3번 승인으로 입금을 처리하는 경우라면 아래 그림의 빨간 화살표 부분에서 입금 완료가 된다.

블록보류공격 설명2.png

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

블록보류공격 설명3.png

갑자기 새로운 블록이 나타나면서 체인은 두 갈래로 갈라진다. 작업증명방식의 블록체인에서는 체인이 갈라지게 되면 블록이 더 길게 이어진 쪽이 정당하다고 여기는 규칙이 있다. 이때, 공격자의 블록체인 쪽이 더 길기 때문에 정당한 체인으로 간주한다. 기존의 체인은 도태되어 사라진다. 이것을 블록의 재구성(re-organization)이라고 한다. 기존의 체인에 거래소에서의 거래내역(모나코인→다른코인)이 있는데 체인이 사라지면서 거래내역 또한 사라진다. 이렇게 해서 구입에 사용되었던 모나코인이 다시 돌아온다. 이 돌아온 모나코인을 개인 지갑에 이동시키면 공격자가 만든 새로운 블록체인에서는 모나코인이 공격자의 개인 지갑으로 이동한 것을 기록한다. 기존 블록체인과 새로운 블록체인의 코인이 중복되면서 기존 트랜잭션에서 다른 코인을 구매했던 모나코인이 사라지고 공격자 개인 지갑 속 코인만 남게 된다.[2]

피해 사례[편집]

모나코인[편집]

2018년 5월 15일, 모나코인(Monacoin)은 블록보류 공격이라는 공격을 당하여 블록체인의 대규모 재구성(되돌림 현상)이 되고 거래소가 약 1억 원 정도의 금전적인 피해를 보았다. 이 사건은 사건 당일, 북미에 있는 나라 벨리즈(Belize)의 암호화폐 거래소인 라이브코인(Livecoin)이 암호화폐 포럼 비트코인토크(Bitcointalk)에 글을 남김으로써 알려졌다. 라이브코인 내에서 이중지급 사건이 발생하면서 모나코인에 문제가 생겼다는 것을 발견하고 모나코인 개발자를 찾고 있다는 글이었다. 사건이 발생한 당일 날에 한 유저가 모나코인 블록체인에 5블록 길이의 고립 블록(Orphan Block)이 여러 차례 생성되었으며 블록보류 공격이 감행되고 있다고 보고하였다. 확인된 결과로는 2018년 5월 13일부터 2018년 5월 15일까지 빈번하게 재구성 현상이 최고 20블록 단위로 발생한 것으로 밝혀졌다. 이에 모나코인 사용자들이 다른 거래소들에 모나코인 입금 시 승인 수를 늘리도록 요청하였고, 각 거래소는 입금을 정지시키거나 승인 수를 늘리는 것으로 발표하면서 해당 사건은 마무리된다.

해시파워에 의한 공격은 지금까지 이론상으로만 존재했으며 실제로 일어난 적은 없었다. 여태까지의 공격은 거래소에 대한 공격이었으나 이번 사건은 블록체인 자체에 대한 공격이기 때문에 금전적 피해 이상의 여파가 있다고 판단한다. 일반적으로는 블록 타임(거래완료까지 대기시간)은 짧은 쪽이 빠르고 편리하다고 여겨왔다. 그러나 짧은 블록 타임과 보안성은 현재로서는 양립 불가능한 상태이기에 그만큼 승인 횟수를 늘려야 한다. 그렇기 때문에 거래속도를 개선하기 위해서는 새로운 방안을 구축해야 한다. 모나코인 블록보류 공격 사건은 처음으로 블록체인이 대다수의 합의 없이 다시 쓰인 사례이다. 지금까지 안전하다고 여겨졌던 블록체인의 허점이 그대로 드러난 것이기에 중요성과 심각성은 그 어떤 해킹 사건보다 높다고 여겨진다. 모나코인만의 문제가 아닌 작업증명 코인의 문제라서 다른 코인들에서도 일어날 수 있는 상황이기에 다 함께 살펴봐야 할 문제이다.[2]

젠캐시[편집]

2018년 6월 2일, 젠캐시(ZEN)에 대한 블록보류 공격으로 당시 약 7만 달러(한화 약 7494만9000원)에 해당하는 23,152개의 코인에 대해 이중지불 피해가 발생되었다.[3] 공격자로 의심되는 주소(znkMXdwwxvPp9jNoSjukAbBHjCShQ8ZaLib)의 거래내역을 확인한 결과, 최소 3번의 이중지출을 실행했다. 젠캐시는 공격 가능성에 대한 경고를 받은 즉시 조사에 착수해 해시파워 분배를 조절했고, 거래소 측과 연결해 거래 확인 시간을 늘리도록 요청했다. 아울러 젠캐시는 확인 사항을 대폭 늘릴 경우 추가 공격은 거의 없을 것으로 짐작되지만 거래 플랫폼의 보안이 걱정되는 경우 해당 플랫폼에 직접 연락하길 바란다고 했으며, 나노 레저S나 종이 지갑 등 콜드월렛에 옮기는 것을 강력히 권유했다.[4]

대책[편집]

현시점에서 대책은 없다. 그나마 할 수 있는 일은 거래소에서 입금에 필요한 승인 횟수를 늘리는 일이다. 이는 작업증명(Proof of Work; PoW)방식인 이상 손 쓸 방도가 없는 부분이다. 몇몇 사람들이 높은 해시파워를 가졌을 경우 이러한 일이 벌어지기 때문이다. 모나코인의 개발자인 '와타나베(ワタナベ)'도 작업증명 방식의 코인인 이상 피해갈 수 없는 문제라고 했다. 이에 지분증명(Proof of Stake; PoS)방식으로의 전환이라던가 작업증명과 지분증명 하이브리드 방식 등을 생각 중이다.

작업증명의 안정성[편집]

예를 들어 지분증명의 경우 Nothing at Stake 문제가 발생할 수 있다. 지분증명에서는 채굴자 대신에 검증인(Validator)이 있으며 검증인은 자신이 보유하고 있는 자산에 따라 블록을 검증할 수 있는 권한을 가진다. 검증인은 정당한 블록이라 생각하는 블록에 자신의 자산증명을 추가시키고 배팅을 한다. 네트워크에서는 배팅 된 자산의 총합이 가장 큰 블록을 정당한 블록으로 인정한다. 여기서 어떤 한 사람이 블록체인을 공격하기 위해 진짜 블록 대신 가짜 블록을 만들었을 경우 원래대로라면 검증인은 진짜 블록에만 서명해야 한다. 그러나 검증인 입장에서는 가짜 블록이 정당한 블록이 되면 코인을 얻지 못하므로 양쪽 모두에 서명하는 편이 유리하므로, 가짜 블록까지 정당하다고 검증을 하게 되고 결국 전체 네트워크에 혼란을 일으킬 수 있다.

프랙티컬 비잔틴 장애 허용(Practical Byzantine Fault Tolerance; PBFT, 다수결 합의 알고리즘)에서는 블록체인의 되돌림 현상이 일어나지 않지만 1/3 이상의 지분을 보유하고 있으면 공격이 가능해지며 이는 작업증명의 51%보다 낮은 수치이다. 따라서 작업증명보다 악의적인 공격을 방어하는 측면에서는 더 불리하다. 이를 방어하기 위해서는 노드 수를 늘려야 하지만 프랙티컬 비잔틴 장애 허용에서는 노드의 수가 늘어날수록 통신량이 급격히 증가하므로 블록생성에 더 많은 시간이 요구된다. 이렇듯 어느 한 방식이 뒤처졌다, 안전하지 못하다고 정의를 내릴 수는 없고 각 방식의 문제점을 인지하고 어떻게 보완할 것인지 대책을 강구하는 방향으로 나아가야 한다.[2]

각주[편집]

  1. 신준호 기자, 〈빙글빙글 세샹이야기-블록체인,블록체인은 정말 안전한가?〉, 《한국마케팅신문》, 2018-06-22
  2. 2.0 2.1 2.2 윤형석, 〈모나코인에 BWA 공격, 블록체인은 과연 안전한가?〉, 《트렌드와칭》, 2018-08-10
  3. 홍티, 〈(코린이 노트) 51% 공격에 대해 알아봅시다.〉, 《네이버 블로그》, 2019-01-21
  4. 양모찌, 〈젠캐시(ZenCash/ZEN)코인〉, 《티스토리》, 2018-08-23

참고 자료[편집]

같이보기[편집]


  검수요청.png검수요청.png 이 블록보류 공격 문서는 보안에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.