BGG, 블록체인 Goverance, 게임이론, 확률모델 그리고, 경제성
[작가주] 이글은 최근에 arXiv.org에 기고 했던 논문[1807.5581] 블록체인 점령게임(Blockchain Governance Game)대한 한글 백서(White Paper) 입니다. 이렇게 기고문을 이렇게 해설을 하게 된 이유는:
1. 본 논문에 제안하는 이론이 실제로 적용될 수 있는 기회를 찾기 때문으로,
2. 이에 실제 구현 경험이 있는 고수 분(혹은 스타트업)들과 함께 합동 프로젝트를 진행,
3. 학문적 연구에 있어 집단 지성의 실제 적용사례를 만들었으면 하는 바램과
4 그리고, 무엇보다 이쪽 분야에 관심이 있으신 분들과 교류를 했으면 하는 마음 때문입니다.
아무쪼록, 본 글에 대한 관심이 있으신 분들이나 해당 이론의 적용에 관심이 있는 스타트업 기업들의 많은 관심을 부탁드립니다. 간단한 내용은 댓글로 남겨 주시고, 필요하시면 메일로 연락드리겠습니다 (연락처 남겨주세요).
그럼, 시작하겠습니다.
-= Amang =-
PS: 참고로, 해당 백서의 원문은 arXiv.org에서 다운 받으실수 있습니다.
https://arxiv.org/abs/1807.05581
본 논문은 Blockchain을 기반으로 하는 서비스 구성하는데 있어, 예상되는 공격(attack)을 방어하고자 고안된 모델(Model)인 동시에 블록체인 네트워크를 점령(Governance)하려는 두명의 플레이어 (방어자와 공격자)사이의 게임(Game) 모델이기도 하다. 여기서 블록체인을 점령한다는 의미는 블록체인 서비스내의 원장(Ledger)를 순수한 거래(Honest) 원장으로 구성을 할 것이냐, 공격받은 거래 원장로 구성을 할 것이냐를 뜻한다. 즉, 수순한 거래(혹은 원래 거래)만으로 구성된 원장이 전체 노드에 공유가 되면, 방어자가 이기고, 반대로 불순한 거래(이중 지출과 같은)로 구성된 원장이 전체 노드에 공유가 되면, 공격자가 이기게 되는 게임이다. 블록체인기반의 네트워크(혹은 서비스)에서 일어나는 원장의 점령을 위해 공격자와 방어자에 의해 행해지는 게임이 바로 Blockchain Governance Game이다. 한글로 풀어쓰자면, "블록체인 점령게임"정도가 되겠다.
다들 알겠지만, 블록체인과 같은 탈중앙화 망(decentralized network)은 주서버(Main server)를 공격하는 통상적인 방법으로는 무력화 시키기가 거의 불가능 하다. 블록체인기반의 서비스(혹은 네트워크)을 공격 하는 일반적인 방법은 전체 노드의 원장(ledgers)을 합법적으로 (빠르게) 교체(replace)하여, 잘못된 원장이 마치 원래 원장인 것으로 간주하도록 하는 것이다. 이러한 공격이 (이론적으로) 가능한 이유는 기준이 되는 원장(Ledger, DB)이 따로 존재하지 않기 때문이다. 본인(현재 노드)이 새롭게 입수한 원장이 순수한 원장인지, 공격을 받은 원장인지는 판단하는 유일한 방법은 다른 서버(혹은 노드)들이 가진 원장들과 비교하는 것이고, 이때 비교를 하는 원장들이 일치 할 경우, 새롭게 입수한 원장을 순수한 것으로 인정한다. 이 때, 입수(혹은 업데이트)된 원장을 확인할 수있는 유일한 방법이 "다수결 원칙"을 따르는 것이다. "51%공격"이 생길 수 밖에 없는 근본적인 이유도 바로 여기에 있는데, 업데이트된 원장이 서로 다를 경우 결국은 네트워크가 가장 많이 가지고 있는 원장묶음(블록체인)을 "원본"으로 간주하기 때문이다.
블록체인 점령게임은 바로 여기에서 출발한다. 즉, 이 게임에서 이기는 방법은 기존의 방어자(defender)가 전체 노드수의 과반을 순수한 원장으로 점령시키거나, 반대로 공격자가 과반의 (불손한) 원장으로 먼저 점령 시키는 것이다.
블록체인 점령 게임의 규칙은 다음과 같다. "A(공격자)"와"H(방어자)" 두명의 플레이어가 블록체인에서 노드를 각자의 원장으로 점령하는 게임을 한다. 공격자 "A"는 잘못된 거래 내역이 포함된 원장을 생성하고, 방어자 "H"는 제대로 된 거래 내역을 포함한 원장을 생성한다. 이후 설명을 위해 조금더 formal하게 기술하면 다음과 같다.
여기서 중요한 점 한가지는, 블록체인 네트워크상의 노드는 해당 노드가 실제로 공격을 발생시켰는지의 여부로 결정되는 것이 아니라, 업데이트된 원장이 순수한 것인지, 아니면, 조작된 것인지에 의해 결정된다는 것이다. 즉, 특정 노드가 실제로 조작된 노드가 아니더라도, 업데이트된 원장이 조작된 것이라면, 해당 노드 또한 "공격자"노드가 된다. 왜나하면, 조작된 원장을 기존으로 새로운 원장을 생성하게 되면, 그 다음 원장 또한 조작된 원장이 되고, 그 이후로는 순수한 원장으로 생성된 원장과는 별도로 계속 조작되 원장이 연결되게 되기 때문이다. 결국은 블록체인 네트워크는 순수한 원장을 가진 노드(순수노드)들과 불순한 원장을 가진 노드(공격자노드)들로 나뉘게 되고, 두개의 서로 다른 장부를 같이 습득한 노드(즉, 원장 충돌)는 현재까지 점령된 장부의 비율에 따라 최종적으로 원장을 선택하게 된다. 만약, 불순한 원장이 전체 노드의 과반(즉, 전체 노드의 절반)이상을 점령할 경우, 그 이후의 원장 생성성은 불순한 원장이 기준이 되고, 전체 네트워크는 불순한 원장이 최종 확정된다. 이러한 상황(즉, 공격자의 원장이 과반이상 확산 된 경우)을 "Burst"라 하고, 공격자의 승리로 게임이 끝난다. 제삼자(혹은 관찰차 혹은 네트워크 관리자)의 입장에서 원장이 생성되는 정확한 시간(s_i 및 t_i)을 파악 할 수는 없다. 그러나, 특정한 간격을 두고, 해당 시점에서 노드수 변화는 관찰 할 수 있을 것이다. 즉, 위의 생성시간과는 별도로 관찰자가 관찰 하는 프로세스를 고려 할 수 있을 것이다:
다만, 여기서의 "관찰"은 Random하게 다루기 때문에 엄밀하게는 "예측"에 가깝다. 위에도 언급했듯이, 공격자에 의해 생성된 원장이 (방어자에 의해 생성된 원장보다 빨리) 전체노드 수의 과반이상을 차지하게 되면, 블록체인은 잘못된 원장으로 전체노드를 점령 당하게 된다. 반대로 정상적으로 생성된 원장이 공격자가 생성한 장부보다 먼저 과반을 차지하게 되면, 전체 네트워크는 정상 원장으로 전체 노드를 정령하게 된다. 이를 수학적으로 표현하자면 다음과 같다:
그리고, 이 게임은 방어자나 공격자 중 한명이, 전체 노드 수의 과반이상을 자신들의 원장으로 점령이 되면 끝(방어자가 승리하면, 관찰을 처음부터 다시 시작, 공격자가 승리한 경우, 블록체인 네트워크는 Burst)난다.
통상적으로 말하는 게임도 그렇듯이 게임이론에서 말하는 게임에도 규칙(Rule)이 존대 한다. 그리고, 이러한 규칙들은 실제로 모델은 구현하는데 있어서 중요한 Guideline이 된다. 블록체인 점령게임의 규칙은 다음과 같다.
1. 공격자는 불순한 원장을 가진 노드를 방어자보다 빨리 절반이상(M/2) 확보하는 것이다.
2. 방어자는 순수한 원장을 가진 노드들을 뜻한다.
3. 관찰자(혹은 관리자)는 공격자의 원장이 과반이상이 되기 바로 직전에 확실한(혹은 제어가 가능한) 노드를 추가함으로 불순한 원장이 과반이 되지 않도록 통제 할 수 있다.
물론, 이렇게 순수한 원장을 늘림으로 방어를 하더라도, 공격자의 공격은 성공할 가능성이 얼마든지 존재 한다 (즉, 방어를 하더라도 뚫릴수가 있다). 그리고, 이러한 규칙이 만들어 진데는 몇가지 가정(Assumption)을 기반으로 한다.
1. 블록체인이 가지고 있는 가장 큰 장점인 "탈중앙화(decentralization)"를 유지하기 위해, 관리자가 통제를 할 수 있는 범위는 "공격자의 공격이 예상되는 시점(혹은 공격예상 시점 바로 직전)에 바로 투입할 수 있는 노드의 수"로 한정 한다.
2. 원장의 숫자 및 노드들의 숫자를 온전히 통제할 수 있는 블록체인 기반(Private Blockchain)이라고 하더라도, 통제범위는 되도록이면 한정하고 탈중앙화를 유지 하는 것이 좋다.
3. 공격자 및 방어자의 업데이트된 원장의 확산은 포아손 프로세스를 따른다.
이에 자세하게 설명하지는 않았지만, 본 논문을 통해서 다음과 같은 사항들을 수학적으로 증명할 수 있다.
1. 관리자는 관찰하는 시점을 랜덤하게 설정 할 수 있으며, 관찰하는 시점의 공격노드의 수와 방어자의 노드수를 확률적으로 계산할 수 있다.
2. 관찰자는 관찰하는 시점을 랜덤하게 설정하며, 이는 관찰자가 "어느정도" 통제가 가능하다.
3. 본 모델의 핵심은 공격자가 과반의 노드에 잘못된 원장을 과반이상의 노드에 확산 될 시점과
4. 방어자(혹은 일반노드)가 생성한 순수한 원장을 과반이상의 노드들에 확산 될 시점에 대한 예측이 가능하다.
5. 뿐만 아니라, 과반 이상의 노드가 확보되기 바로 직전(더 정확하게는 관찰 시점보다 바로 전 시점)까지도 예측이 가능하다. "확률적"으로 말이다.
그리고, 이러한 수학적 증명들을 이용하여 방어자(정확하게는 블록체인기반의 서비스(혹은 네트워크) 관리자)의 전략(Strategy)를 구상할 수 있다. 물론, "수학적"으로 말이다.
우선, 블록체인 점령게임에서 승리하기 위한 전략을 설명하기 전에 본 게임에 대한 조금더 상세한 설명이 필요 할 것 같다. 우선, 상황은 다음과 같다.
1. 공격자는 거짓된 거래정보를 포함한 원장을 만들어 타 노드로 확산하고,
2. 방어자는 제대로 된 거래정보를 포함한 원장을 만들어 확산을 시작한다. 그리고,
3. 관찰자는 확산되어가는 정도를 랜덤하게 관찰 한다.
4. 관찰자가 관찰을 최초로 시작 하는 시점(tau_0)에서 이미 확산된 원장의 수를 각각 A_0와 H_0라고 한다.
5. 이후 순차적으로 관찰(tau_1, tau_2,...)을 하며, 두 플레어 중 한명의 확산된 원장의 수가 과반을 넘어 설 때, 게임은 종료된다(아래그림 참조).
6. 이때의 확률적으로 계산이 가능한 것들은 관찰시점(tau_i)를 기준으로 공격자 원장이 과반이 넘을 시점(tau_nu)과 넘기전 시점(tau_(nu-1))과 바로 해당 시점에서 확산된 공격자의 원장 수(A_nu, A_(nu-1))를 구 할 수 있다 (아래 수식 참조).
위에 언급된 본문에 있는 수식 (2-27)-(2.31)에 공통된 함수는 본 논문의 핵심이 되는 함수인데, 의사결정(혹은 전략구현)에 있어서, 필요한 모든 정보들을 가지고 가지고 있고, 수학적으로 증명 및 해석이 가능하다 (단, 실제 증명과정은 이 글에서는 생략하도록 하겠다).
어쨋든, 이와 같은 게임 진행에 있어서 방어자(s_H)가 취할 수 있는 전략은: 방어를 위한 action을 취하던가("Action"), 아니면 아무런 action을 취하지 않는 것("DoNothing")것 중 택일 하는 것이다. 그리고, 이러한 전략을 결정하는 시점은 바로 공격자의 원장이 전체 노드 수의 과반이상이 되기 바로 전 시점( tau_(nu-1))
어느 전략을 취할지는 공격자(s_A)의 전략과 실제 공격자의 공격이 성공 할 가능성에 따라 결정된다. 여기서 말하는 Action은 바로 공격당하지 않은 (새로운 거래내역이 포함되지 않은) 순수한 노드를 일시에 블록체인 네트워크에 투입하는 것을 뜻 한다.
얼핏 보면, 방어를 위한 Action을 취하는 것이 타당해 보이고, 바로 투입이 가능한 노드(서버)를 확보를 충분히 하는 것이 타당해 보인다. 하지만 문제는 항상 그렇지는 않다는 것이다. 예를 들어, 전략에 대한 결정을 할 때, 다음 시점에서 네트워크가 Burst될 가능성이 얼마 되지 않는다면, 공격에 대한 Action을 취하지 않는 것이 타당 할 수 있다. 또한, 네트워크의 보안을 높이기 위해 무작정 많은 양의 노드들(이 노드들은 평소에는 쓰지 않는 노드들이다)을 확보할 수도 없수도 없을 것이다. 설령 노드들을 백업으로 확보하지 않는다고 하더라도, 특정 지분 이상을 관리자(혹은 서비스 제공자)가 통제를 한다고 했을 때, 너무 많은 지분을 관리자 통제하게 될 경우, 오히려 고전적인 공격(해킹등)에 취약 할 수 있다. 즉, 추가로 확보하는 순수한 노드의 수는 최소화 하여야 한다.
과연, 방어자(혹은 관리자)는 어떤 전략적을 결정을 해야 할까?
혹은, 얼마나 많은 Portion의 추가 노드(서버)들을 확보해야 할까?
혹은, 이 경우 소요되는 전체 비용은 어떻게 산정할까? (경제성 분석)
등
에 관련한 문제들은 다음 이야기 때 다루도록하겠다.
복잡한 수학계산은 되도록이면 배제하고 백서를 작성해봤는데, 도움이 되셨는지 모르겠습니다. 위에도 언급했듯이, 저는 해당 논문에 있는 이론들을 같이 실제적용 할 수 있는 분이나 스타트업을 찾고 있습니다. Joint Research의 형태로 말이지요. 블록체인의 기반의 서비스를 하는 스타트업 중에서 보안(특히, 51%공격에 관한)에 관심이 있으신 분들은 댓글 남겨주세요. 굳이 Research를 같이 진행하지 않더라도 이쪽 업에 종사하시는 분들과 많은 교류가 있었으면 합니다.
감사합니다.
-= Amang =-