Blockchain Mining attack

Yujeong Lee
CURG
Published in
12 min readFeb 22, 2020

이유정 Sogang Univ. BaSE LAB, CURG
lkitty0302@gmail.com

PoW 합의 알고리즘 기반의 블록체인은 채굴자들이 채굴을 진행하여 블록 생성에 성공할 경우 보상을 받을 수 있다. 정직한 채굴자는 네트워크에서 제공하는 보상을 받지만, 악의적인 채굴자는 본인의 이익을 위해 공격을 일으켜 부당한 이익을 챙긴다. 채굴자들은 어떤 공격으로 부당한 이익을 챙기는 것일까?

본 글에서는 블록체인을 공격하는 기법 중 채굴자들이 일으키는 대표적인 공격인 Selfish mining attack과 Block withholding attack, Fork after withholding attack에 대해 소개한다.

1. Selfish mining attack

Selfish mining attack은 공격자가 n번째 블록을 찾으면 찾은 블록을 네트워크에 전파하지 않고 숨겨놓는다. 그리고 다른 채굴자가 n번째 블록을 찾아 네트워크에 전파하면 공격자는 숨겨놓은 블록을 꺼내 네트워크에 전파하여 fork를 발생시킨다. 공격자는 미리 찾은 n번째 블록을 숨겨놓고 다음 n+1번째 블록을 찾기 때문에 공격자가 n+1번째 블록을 찾을 가능성이 커진다. PoW 합의 알고리즘 기반의 블록체인은 longest chain rule에 따라 fork가 발생할 경우 가장 긴 체인을 메인체인으로 채택하기 때문에 공격자가 n+1번째 블록을 더 빠르게 찾아 전파할 경우 공격자의 체인이 메인체인이 될 가능성이 커져 공격에 성공하게 된다. 공격자는 selfish mining attack에 성공할 경우 다른 정직한 채굴자의 채굴파워를 낭비하게 만들고 부당한 보상을 받는다.

아래 그림에서 Bob은 정직한 채굴자이며 Alice는 공격자이다. 노란 화살표는 Bob이 채굴을 진행하는 블록을 의미하며 노란 화살표가 두개인 경우는 Alice가 fork를 발생시켜 Bob이 mining power를 나눠 두 개의 블록모두 채굴하는 경우이다. 이 경우 Bob은 mining power를 낭비하게 된다. Bob의 mining power를 1이라고 할 때, 감마는 Alice의 블록을 채굴하는 mining power이다. lead는 Alice의 private chain 길이를 의미한다.

selfish mining attack(출처 : Stubborn Mining: Generalizing Selfish Mining and Combining with an Eclipse Attack)

selfish mining attack의 경우 공격자가 발생시킨 fork체인이 메인체인으로 채택되지 않을 경우 공격자는 보상을 받지 못하며, 자신의 채굴파워를 낭비하게 된다.

2. Block withholding(BWH) attack

Block withholding attack은 공격자가 open mining pool에 참가하여 FPoW(Full proof-of-work)를 발견하면 무시하고, PPoW(Partial proof-of-work)만 제출하여 pool에 참가한 보상만 얻고 피해pool의 전체 연산력을 낮춘다.

Mining pool은 채굴자들이 모여 함께 채굴을 진행하고 채굴에 성공할 경우 채굴자들의 기여도에 따라 보상을 나눠 갖는 시스템이다. 채굴자들은 각자 파트를 나눠 nonce값을 찾기 시작하며, 누군가 nonce값을 찾아 pool manager에게 제출하면 블록을 만들어 네트워크에 전파한다.

Mining pool

Mining pool은 채굴자의 개인 정보 없이 누구나 참여할 수 있는 open mining pool과 채굴자의 개인정보를 등록하고 pool manager의 승인 후 참가할 수 있는 closed mining pool이 있다. 공격자는 open mining pool에서 주로 발생하며 open mining pool은 채굴자의 정보를 알 수 없어 공격자를 찾기 힘들다. 따라서 BWH attack을 방지하기 위해서는 모든 pool이 closed mining pool과 같이 채굴자의 개인 정보를 받고 허가된 채굴자만 들어올 수 있도록 해야 한다.

실제로 Eligius open pool에서 Block withholding attack이 발생하여 300BTC 피해액이 발생한 적이 있다.[1]

3. Miner’s dilemma

Miner’s dilemma는 모든 네트워크에서 한 pool이 BWH attack을 시도할 경우 정직하게 채굴할 때 보다 높은 수익을 얻을 수 있지만, 2개의 pool이 서로를 공격하는 경우 정직하게 채굴하는 것 보다 적은 수익을 얻어 모두가 손해보는 현상이 발생한다. 따라서 죄수의 딜레마처럼 매 채굴 라운드 마다 BWH attack을 할지 선택해야 하며, 결과적으로 전체 네트워크에 좋지 않은 영향을 끼친다는 연구이다.

Two pools infiltrating each other (출처 : https://people.cs.uchicago.edu/~davidcash/23280-winter-19/miners.pdf)

아래 그림은 서로의 pool을 공격하는 경우를 실험한 결과이다. BWH attack이 항상 수익성을 가진다면 모든 pool에서 BWH attack을 수행할 것이다. Pool1과 pool2의 size가 51%가 넘지 않는다고 할 때, 수익 밀도가 1보다 작은 것을 확인할 수 있다. 이렇게 서로의 pool을 공격하면 공격하지 않을 때 보다 수익이 줄어들기 때문에 딜레마에 빠지게 된다. 이것을 ‘Miner’s Dilemma’라고 한다.

corresponding revenues as a function of pool size (출처 : https://people.cs.uchicago.edu/~davidcash/23280-winter-19/miners.pdf)

x축 : pool1 size, y축 : pool2 size, R1 : pool1 revenue, R2 : pool2 revenue

본 논문에서는 miner’s dilemma로 인해실제로 BWH attack이 일어날 확률은 적다고 말한다. 하지만 누구나 언제든지 pool을 공격하여 전체 네트워크에 피해를 줄 가능성은 열려있다.

4. Fork After Withholding(FAW) attack

Fork After Withholding attack은 2017년 카이스트에서 발표한 논문으로 Block withholding attack과 Selfish mining을 합친 공격으로 볼 수 있다. 공격자는 본인의 채굴 파워의 일정 부분은 개인 채굴에 사용하고, 나머지 부분은 mining pool에서 채굴한다. FAW attack은 one target pool, multiple target pool, pool vs pool 총 3가지 시나리오가 있다.

1) One target pool
먼저 one target pool은 개인 채굴과 동시에 한 open pool에 참가하여 pool에서 채굴에 성공하는 경우 FPoW를 제출하지 않고 다른 pool에서 누군가 채굴에 성공할 경우 공격자가 찾아 놓은 FPoW를 제출하여 fork를 발생시킨다. 이 경우 공격자가 개인 채굴에 성공한 경우 네트워크에 제출하여 혼자 보상을 얻고, 만약 공격하고 있는 pool에서 정직한 채굴자가 채굴에 성공할 경우 PPoW 제출에 대한 보상을 받는다.

공격자가 한 pool에 침입하여 공격하는 경우(출처 : https://syssec.kaist.ac.kr/pub/2017/kwon_ccs_2017.pdf)

FAW attack은 항상 BWH attack보다 같거나 많은 보상을 보장한다. BWH attack의 경우 공격 pool에서 채굴한 FPoW를 모두 버리지만, FAW attack에서는 공격하는 pool에서 채굴한 FPoW로 fork를 발생시킨다. 발생한 fork가 메인체인이 된 경우 보상을 받을 수 있다. 아래 그림은 공격자가 한 pool을 공격하는 경우 공격자의 수익률을 나타낸다.

FAW attack against one pool(출처:https://syssec.kaist.ac.kr/pub/2017/kwon_ccs_2017.pdf)

아래 표는 MonteCarlo method를 사용하여 실험을 진행한 결과이다. 아래 표를 통해 공격자의 computation power와 network capability와 상관없이 항상 보상을 받으며 computation power와 network capability가 클수록 얻는 보상이 커진다. 아래 표에서 network capability가 0인 경우는 BWH attack과 같은 경우라고 볼 수 있다.

simulation result(출처: https://syssec.kaist.ac.kr/pub/2017/kwon_ccs_2017.pdf)

α : attacker computation power
c : network capability(attacker가 전파한 블록이 메인체인에 등록 될 가능성)

2) Multiple Target Pool
Multiple Target Pool은 공격자가 여러 pool에 참가하여 FPoW를 찾을 경우 보류하고, 공격하는 pool이 아닌 다른 pool에서 블록을 전파하면 숨겨놓은 FPoW를 pool manager에게 보내 fork를 발생시킨다. 공격자가 n개의 pool을 공격하면 최대 n+1개의 fork가 발생할 수 있다.

공격자가 여러 풀에 침입하여 공격하는 경우 (출처 : ttps://syssec.kaist.ac.kr/pub/2017/kwon_ccs_2017.pdf)

3) Pool vs Pool
Pool vs Pool은 두개의 pool만 존재하고나머지는 다 개인 채굴자라고 가정한다. 각 pool은 채굴 파워를 나눠 상대 pool을 공격한다. 다른 경우와 마찬가지로, 공격하는 pool에서 FPoW를 찾으면 보류하고, 서로의 pool이 아닌 다른 개인 채굴자가 채굴에 성공할 경우 찾아 놓은 FPoW를 pool manager에게 제출하여 fork를 발생시킨다.

공격자가 두개의 pool에 들어가 공격하는 경우 (출처 : https://syssec.kaist.ac.kr/pub/2017/kwon_ccs_2017.pdf)

BWH attack은 서로의 pool을 공격하는 경우 전제 네트워크에 수익이 감소하지만, FAW attack은 서로의 pool을 공격해도 pool size가 크면 수익 밀도가 증가하는 것을 확인할 수 있다. 따라서 FAW attack은 miner’s dilemma에 빠지지 않아 BWH attack보다 공격 위험이 높다고 할 수 있다.

FAW attack의 Pool vs Pool 실험 결과 (출처 : https://syssec.kaist.ac.kr/pub/2017/kwon_ccs_2017.pdf)

x축 : pool2 size, y축 : network capability, R1 : pool1 revenue, R2 : pool2 revenue

Conclusion

FAW attack은 Selfish mining과 Block withholding attack을 합친 공격으로 selfish mining과 달리 항상 수익성을 보장하고 있으며 miner’s dilemma가 발생하지 않아 network capability와 pool size가 높을수록 수익 밀도가 증가하고, 피해 수익 밀도는 줄어든다. 따라서 pool size가 크고 network capability가 높은 pool은 언제든지 FAW attack을 일으킬 수 있으며, mining attack의 특성 상 공격자를 특정하기 어려워 실제로 pool에서 공격이 이루어지고 있는지 알 수 있는 방법이 없다.

아직 open pool에서 공격 사례가 나오고 있지 않지만, 누군가는 다른 pool을 공격하여 부당한 수익을 챙기고 있을지도 모른다. 따라서 해결책이 없는 Mining attack분야의 연구가 더 필요하다.

Reference

[1] https://bitcointalk.org/?topic=441465.msg7282674
[2] https://www.cs.umd.edu/~kartik/papers/5_stubborn_eclipse.pdf
[3] https://syssec.kaist.ac.kr/pub/2017/kwon_ccs_2017.pdf
[4] https://people.cs.uchicago.edu/~davidcash/23280-winter-19/miners.pdf

--

--