51% Attack.
#1.Meaning.
비트코인은 작업 증명(Proof Of Work)을 사용해서 채굴이라는 연산을 통해 일종의 수학 문제를 가장 빨리 푼 사람에게 블록을 추가시킬 수 있는 이른바 '장부 작성 권한'을 준다고 한다. 하지만 전체 채굴 연산량의 51% 이상 보유한 채굴자는 압도적인 채굴량을 바탕으로 전체 네트워크를 좌지우지할 수 있게 되며 이론적으로 51% 공격을 실행할 수 있고 조작이 가능하다.그래서 현재 채굴자에게 너무 많은 권한이 있다는 문제 제기도 나오고 있는 상황이다.
[출처:www.blockchain.info]
위 그래프를 보면 가장 인기있는 비트코인 채굴 풀(=Mining Pool)들의 시장 점유율이다.51% 공격은 비트코인의 창시자 사토시 나카모토의 논문에도 명시되어 있다. 사토시 나카모토 논문에서는 다음에 언급하겠다.
#2.Example.
A는 B에게 빵을 사고 10BTC을 준다고 해보자.A는 B에게 10BTC를 주고 동시에 아이스크림을 사기 위해 C에게도 같은 10BTC를 보냈다.
이 때 A가 채굴량의 51% 이상을 소유하고 있는 상태라면 A가 C와의 거래를 인증하는 장부에 합의를 해준다면 전에 발생된 A와 B의 거래는 사라지고 B는 10BTC를 받지 못한 채 빵만 준 꼴이 된 것이다.즉 합의 메커니즘에 의해 정당한, 즉 가장 긴 블록체인=가장 작업이 많이 들어간 블록체인을 무시해버린다.왜냐하면 힘이 쎄니까,즉 채굴량이 쎄기 때문이다.51%라는 건 나머지를 합쳐도 49%인데 더 빠르게 채굴을 할 수 있다는 말이다.계속해서 블록을 빠른 속도로 자신이 원하는 블록체인에 붙여나갈 수 있다.참고로 비트코인은 다시 한 번 말하자면 작업 증명(Proof Of Work)이라는 합의 메커니즘을 통해 가장 긴,가장 작업이 많이 들어간 블록체인을 정당한 블록체인이라고 인정한다.
결국 첫 거래, 즉 A와 B의 거래가 적힌 블록체인이 정당한 것이였는데 A와 C의 거래가 정당화되는 상황이 벌어진다.A의 51% 공격을 통해 A와 B의 블록체인의 거래 및 모든 정보가 쓸모없어진다.정당성이 없으면 쓸모가 없어지는데 이를 포킹(Forking)이라고 한다. 하드 포크(Hard Fork)가 발생하는 이유도 51% 공격이 가능하니까 발생하는 것이다.
#3.Example.
1000명의 은행원이 장부를 수기로 베낀다고 하면 그 중 510명이 장부에 다른 내용을 쓴다고 하고,즉 일탈을 해서 다른 내용을 기록하기 시작한다면 결국에는 490명의 원래 적어야 될 장부가 맞는 것이 아니라 510명의 장부가 맞게 되는 것이다.다수의 사람이 인정하는 게 맞게 되는 상황이 초래되는 것이다.즉 20BTC = 10BTC + 10BTC가 문제가 아니라 똑같은 10BTC를 2명한테 보내는 것이 문제가 된다.
2개의 거래 중 어떤 것이 올바른 건지 선택 가능한 지는 작성 권한이 있는 사람, 즉 채굴자가 2개 중에 먼저 받은 것을 블록에 넣는다.블록을 블록체인에 추가하면 모든 사람이 볼 수 있게 되는 상황이 오고 2번째,차후 거래는 자연스럽게 쓸모가 없는 상황이 초래된다.
#4.What I Want To Say.
#4-1 다시 한 번 말하자면 51% 공격은 압도적인 채굴량을 가진 사람이 이전에 인정되어 있던 블록체인을 제끼고 자신이 새로운 블록체인을 만드는 것이다.그래서 만든 블록체인이 가장 정당성 있는 블록체인으로 인정받도록 해서 이전의 거래 내용을 무효화 시키는 공격.
#4-2 51% 공격은 실제로도 비트코인 시스템 전반의 안정성을 저해할 수 있는 중요한 요인이다.최근 하드포크 논란에서도 중요한 논점이다.우리가 흔히 중고나라라는 사이트에서 거래 할 때 미리 돈 받고 물건을 딴 사람한테 파는 것이다.
#4-3 채굴량도 결국 한 회사의 주식이라고 할 수 있다.
#4-4 51% 공격은 단순히 표면적인 문제가 아니라 시스템의 문제다.시스템 전반적인 안전을 저해시키기에 51% 공격이 발생하면 비트코인 가격이 엄청나게 떨어질 것이다.채굴자의 힘이 정말 강하다는 것을 알 수 있다.
#4-5 비트코인은 51% 공격을 경제학적 유인을 통해 해결한다.즉 51% 이상의 채굴량을 보유한 채굴자가 선의를 가지고 시스템과 협업하는 것이 네트워크를 공격하는 것보다 유리하게 설계되어 있기 때문이다.
#4-6 경제학적 유인 => 51% 이상의 채굴량을 가지고 있으면 51% 공격을 할 때보다 선의를 가지고 시스템과 협업하는 것이 돈이 더 된다.
#4-7 좀 더 말하자면 51% 이상의 채굴 능력을 가지려면 엄청난 채굴기가 필요하다.비용 자체가 만만치가 않다. 채굴기,즉 엄청난 양의 하드웨어는 비트코인 채굴이 유일한 목적이다.하지만 51%이상의 채굴 능력을 가진 채굴자가 51% 공격을 실행한다면 누구나 블록체인이 열람 가능하기 때문에 공격을 실행하고 있다는 사실이 바로 전 세계로 퍼질 것이다.그렇게 되면 비트코인 안정성이 담보될 수 없는 상황이 되기 때문에 사람들은 비트코인을 쓸 수 없게 되고 비트코인의 가치가 급격히 하락하게 될 것이다.그래서 비트코인을 채굴하는 채굴자 입장에서도 자신의 이익이 급격히 줄어드는 현상이 발생한다. 열심히 채굴했는데 사람들이 이젠 비트코인을 쓰지 않는 것이다. 따라서 결국 많은 채굴량을 가진 채굴자도 선의를 가지고 시스템에 긍정적인 기여를 하는 것이 채굴자 본인에게도 더 이익이 되는 것이다.
#4-8 누군가 51% 공격을 할 가능성이 있다는 것을 확인하려면 노드를 하면 된다.노드는 24시간 내내 관찰을 할 수 있기 때문이다.블록체인을 다운 받으면 24시간 관찰하다가 누군가 새로운 블록체인을 붙이고 있는 상황을 볼 수 있다.블록체인은 누구에게나 오픈된 공개 데이터베이스기 때문에 모든 사람이 새로운 블록체인을 붙이는 상황을 100% 알 수 있다.
#4-9 51% 공격은 단순히 비트코인 문제가 아니라 어디서든 일어날 수 있다.합의 메커니즘을 쓸 때 힘이 쎈 사람이 있으면 발생할 수 있는 일이다.POS,POW를 써도 발생할 수 있고 합의 메커니즘을 썼을 때도 발생할 수 있다.즉 합의 메커니즘마다 조금씩 다르기는 한데 투표권을 어떻게 주느냐가 문제다.대부분의 합의 메커니즘은 방식은 다르지만 어떻게든 투표권을 주기에 투표권이 많은 사람은 51% 공격을 할 수 있다.POW의 진화형이라고 흔히 알고 있는 POS에서도 발생할 수 있다.
#4-10 51% 공격을 실행하고 있다는 사실이 전 세계로 퍼지면, 다른 사람들이 채굴기를 사서 49%의 채굴량을 더 늘릴려고 하면 채굴의 경쟁이 붙을 수 있다.그렇다면 결국에는 채굴기 및 전기세의 문제이다.이것이 상대적으로 채굴 비용이 싼 중국에 채굴 풀이 많은 이유이기도 하다.물론 다른 코인을 채굴하고 있던 채굴기를 비트코인으로 돌릴 수 있지 않을까라는 생각이 들기도 하는데 각 코인마다 사용되는 하드웨어가 다르기에 불가능하다.
#5.Double Payment Problem.
[출처https://brunch.co.kr/@banksalad/268]
다시 한 번 말하지만 비트코인은 이중지불 문제를 해결하기 위해 채굴에 기반한 작업증명이라는 합의 메커니즘을 사용한다.이중지불이란 특정 비트코인을 받았을 경우 이 비트코인이 나와 동시에 다른 누군가에게도 지불되는 상황을 의미한다.위에서도 언급했듯이 A가 B에게 10BTC를 보낸 동시에 똑같은 10BTC를 C에게도 보낸 경우 같은 비트코인이 2번 지불되는 문제가 발생하는데 이를 이중지불문제라고 한다.
#5-1 현재 시스템(기존 시스템)에서 이중지불 문제는 은행들이 중앙 장부 작성을 통해 이중지불문제를 해결하고 있다.A가 B에게 보낸 10BTC와 C에게 보낸 같은 비트코인의 거래 중 어느 것이 정당한 것인지를 은행이 결정하는 것이다.은행이 신뢰를 바탕으로 중개인 역할을 해주기 때문이다.즉 은행이 어떤 것이 먼저 일어난 것인지를 판단해준다.은행의 중앙 시스템이 이중지불문제를 막는다.
#5-2 너무 당연한 말이지만 국내외 포함에서 각각의 은행들은 다른 은행과 장부를 공유하지 않는다.물론 A가 은행1을 사용하고 있고 B가 은행2를 사용할 경우 동시에 해당하는 거래를 공유해야 하기에 자신의 고객에 한해서만 은행이 관여한다.이 경우를 제외하면 공유하지 않는다.
#5-3 비트코인은 작업증명이라는 합의 메커니즘을 통해 장부의 작성 권한을 분산화시킨다.채굴이라는 일종의 수학 문제를 가장 빨리 푼 채굴자에게 블록을 추가시킬 수 있는 일종의 '장부 작성 권한'을 주는 방식이다.비트코인의 핵심은 분산화,탈중앙화이다.
#5-4 채굴은 합의를 위한 것이기도 하지만 보안에도 당연히 중요하다.결제 시스템에서 보안이 안 되면 의미가 없다.화폐를 사용하기 위해서는 당연한 것이다.
#5-5 이중지불문제는 거래 속도가 빠르면 빠를수록 문제가 된다고 못 느낄 수도 있다.현재 시스템은 당연히 이중지불문제가 없어야 되기 때문에 은행들이 많이 노력해서 문제가 없어보이는 것이고 문제는 엄청난 비용 및 인력 시스템이 필요하다.국내에서는 딱히 문제로 언급 안 될 수도 있지만 (수수료로 2~3% 금액을 지불하는 것이 편리하기에 따로 문제로 인식 X)국외까지 포함을 하면 우리가 문제라고 인식이 된다.각 나라마다 은행이 있기 때문에 송금을 할 때 돈이 많이 든다.
#6.Conclusion.
일단 항상 비트코인은 화폐이자 결제 시스템이라는 것을 명심해야 한다.비트코인에서 화폐랑 결제 시스템이랑 뗄 수가 있는 개념이 아니다.채굴이라는 행위를 통해 채굴자들이 거래를 검증하고 이를 장부에 기록하면 비트코인을 획득할 수 있도록 함으로써 경제학적 유인을 만들어낸다.즉 경제학적 유인을 만들기 위해서는 비트코인이라는 토큰이 가치를 가져야 한다.비트코인은 단순히 시스템을 나타낼 수도 있고, 화폐의 한 단위를 나타낼 수도 있다.비트코인을 전반적인 시스템으로 사용할 때는 그냥 비트코인이라고 하고, 동전 하나 같은 개념으로 쓰일 때는 토큰이라고 보면 된다.경제학적 유인을 만들기 위해서는 토큰이 가치가 있어야 한다.가치가 없으면 당연히 채굴하지 않을 것이다.비트코인이라는 토큰이랑 경제학적 유인은 결제 시스템을 떠받들고 있는 두 축이고,분리가 될 수 없다.올바른 시스템을 만들기 위해서는 가치가 있는 화폐가 필요하고,가치가 있는 화폐를 만들기 위해서는 결제 시스템이 필요하다.대부분의 금융 기관은 화폐 속성은 빼고 결제 시스템만 갖고 싶어한다.비트코인은 2가지 속성을 다 하니 획기적이고 알아봐야 할 개념이다.화폐랑 결제 시스템 둘 중 하나만 끊겨도 안정성이 하락한다.
'#Virtual Currency & BlockChain' 카테고리의 다른 글
Add Bitcoin Content. (0) | 2018.07.20 |
---|---|
Public and Private keys. (0) | 2018.07.19 |
Categorization Of Cryptography. (0) | 2018.07.12 |
ICO Evaluation Sites. (0) | 2018.07.12 |
Block Chain Related Sites. (0) | 2018.07.12 |