[INBEX(인벡스) BLOCKBUSTERS][중앙대 C-Link : 박민서] Mimble Wimble!

cqinbex(53)
Published in
#kr
Words
898
Reading
4 min
Listen
Play
7y

2016년 8월, 블록체인 씬에 어둠의 마법사 Tom Elvis Jedusor(『해리포터』 볼드모트의 프랑스식 이름)가 나타나서 혀를 꼬아버리는 마법의 주문을 외우고는 홀연히 사라져버렸다. 처음으로 MimbleWimble(밈블윔블) 프로토콜이 알려지고 공식적인 백서로 적히는 순간이었다.

몇 달 후에 Andrew Poelstra라는 수학자가 백서를 보완하여 더 정교한 내용이 담긴 paper를 발표했다. 새로운 paper가 나온 지 얼마 안 되어 마법사 Ignotus Peverell가 나타나서 밈블윔블과 이를 이용한 Grin 프로젝트를 깃허브에서 시작하였다.

수많은 마법사가 외우고 있는 밈블윔블이라는 프로토콜은 다른 프로젝트들에 대해 잔혹한 평가를 하기로 유명한 Bitcoin Maximalist들에게도 적잖은 지지를 받고 있다.

거래하는 데 있어서 정보의 익명성을 강조하여 당사자가 아니면 정보를 알 수 없게 하는 암호화폐들을 ‘다크코인’[1] 이라고 한다. 밈블윔블도 큰 틀에서 보면 같은 종류의 프로토콜이다.

익명성을 강조하여 거래 당사자들의 privacy와 상대적으로 개선된 scalability(확장성) 을 자랑하는 밈블윔블은 블록체인 기술 트렌드에서 가장 핫한 기술 중 하나다. 상황을 예로 들면서, 밈블윔블의 작동원리를 설명하겠다.

밈블윔블 기본 개념

암호화폐의 종류에 상관없이 유효한 거래로 인정받으려면 2가지 조건을 만족해야 한다.

  • 첫째, 내가 5를 보냈으면 상대방은 5가 늘어나야 한다.
  • 둘째, 암호화폐의 소유권에 대한 증명은 나의 private key로 증명한다.

그리고 익명성을 강화해주는 암호학적 기법들이 추가로 들어간다.

대부분의 암호학 기술들이 작동하는 원리는 비슷하다.[2]

밈블윔블 역시 마찬가지이다. 기본적인 원리에 추가로 암호학 기법 중 하나인 Pedersen commitment를 사용하는데 아래 3개의 식으로 밈블윔블을 표현할 수 있다.

  • 1. 23 * 41=943 / ??? * ??? = 3763
  • 2. (a+ b) * c = a * c + b * c 
  • 3. Input_1 + input_2 … = output_1 + output_2 ….

각각 일방향적(역추적 불가능), Pedersen Commitment, 그리고 제로섬(zero-sum)을 의미한다.

1번부터 예를 들면서 설명하겠다.

23과 41을 곱하라고 한다면 쉽게 할 수 있다. 하지만 3763은 어떤 것들로 곱해져 있느냐는 질문에 대한 답은 쉽게 못 할 것이다. 3763 정도는 어떻게든 해낼 수 있지만, 20자리가 넘어가는 큰 수는 컴퓨터로 계산하더라도 사실상 불가능하다. 

이것은 타원곡선암호(Elliptic Curve Cryptography, ECC)에서 private key에서 public key가 생성되고 public key로 private key를 역추적하기 힘든 것과 같은 맥락이다.

  • Public key = Private key (a) * Generating point(G)

​위의 식은 Public key 가 형성되는 과정을 나타낸 식이다. Generating point, 시발점을 두고 private key (a) 가 있을 때 둘을 곱한 a * G가 public key가 된다.

a는 (나만 알고 있는) 엄청나게 큰 숫자이고 G는 ECC상의 한 점이다. 즉, private key (a)라는 숫자로 시작해, public key (a * G) 점으로 끝나게 된다. 당연히 public key를 보고는 private key를 알 수 없다.

다음 2번은 당연한 식이다. 하지만 이 식이 가지고 있는 참 의미는 실제 전송되는 양에 대한 정보가 어떻게 가려지느냐이다.

2번은 1번 식 2개가 합쳐진 것이다. a가 중요한 거래 정보라고 한다면 뒤에 붙은 c는 G 역할을 하는 것이다. 여기에 b(blinding factor)를 도입하여 식을 하나 더 만들고 2개를 합친다. 더욱 알아보기 힘들게 변화하는 것이다.

실제 밈블윔블을 사용한 거래에서는 다음과 같이 사용된다.

누군가가 나에게 암호화폐 2개를 보내고 나는 blinding factor로 10을 선택했다. 결괏값은 A=2*G+10*H가 된다. 이 계산의 결과인 A가 대중들에게 보이는 결괏값이다. 실제 거래량 2는 보이지 않는다. 여기서 2는 나와 내게 암호화폐를 보낸 상대방만 알고 10은 나만 아는 값이다.

이렇게 blinding factor를 더해서 실제 데이터를 알기 어렵게 하여 익명성을 강화하는 것이다.

3번은 위 거래의 기본 조건에서 첫째 조건과 같은 얘기다. 거래가 유효하기 위해서는 내가 보낸 만큼 상대방이 받아야 한다. 더 받거나, 덜 받으면 유효한 거래라고 할 수가 없다. (여기서, 수수료는 제외한다)

1번 과정 2개를 합친 것이 2번의 pedersen commitment였다. pedersen commitment를 보내는 사람, 받는 사람이 하나씩 가지고 있다면 2개의 pedersen commitment가 된다. pedersen commitment 2개가 합쳐지면 하나의 거래가 된다.

이 과정에서 blinding factor가 어떻게 private key로 역할을 하는지 알 수 있다.

다시 예를 들겠다. 2개의 input v1, v2를 3, 4라고 하자. 거래는 다음과 같이 보일 것이다.

  • (3*G + r1*H) + (4*G + r2*H) = 7*G + r3*H

3과 4가 들어갔으니 output은 7이 나온다. 3 * G + 4 * G = 7 * G이기 때문에 자연스럽게 거래 관련 정보는 사라지고 blinding factor와 관련된 정보만 남는다.

  • r1 * H + r2 * H = r3 * H

하지만 blinding factor로 선정된 숫자들은 당사자들만 안다. 자신의 private key를 통해서 거래 유효성과 소유권을 증명하는 것처럼 자신의 blinding factor로 거래에 대한 유효성을 증명해낸다. 이런 과정으로 blinding factor 가 private key와 같은 역할을 하고 거래의 중요한 정보를 가린다.

확장성 개선

2개의 기본조건과 3개의 식으로 밈블윔블이 작동하는 원리를 알아보았다. 그런데, 확장성은 어떻게 개선할까? 3번에서 알 수 있듯이 거래 내역은 다 날아가고 blinding factor에 관련된 정보만 남는다. 즉, 저장하지 않는다는 것을 의미한다.

저장하는 용량을 줄이면 네트워크 전체의 부담이 줄고 이를 통해 확장성을 높일 수 있다. 저장용량을 줄였다고 해서 유효성 검증에 문제가 생기지 않는다. blinding factor로 거래의 유효성을 검증하는 프로토콜에 따라 문제없이 수행할 수 있다.

활용 방안 및 결론

이러한 재미있는 밈블윔블 기술이 어디에 적용되면 좋을까? 공직자들의 예산 사용 내역이 블록체인에 기록되어 국민이 언제나 확인할 수 있으면 지금보다 깨끗해질 것이다. 물론 거래할 때, 공직자뿐 아니라 상대방도 구축된 시스템을 사용해야 하는 조건이 있기는 하지만, 도입된다면 국민들 사이에 퍼져있는 불신을 해결할 수 있을 것이다.

밈블윔블은 얼마 전까지 많이 거론된 특활비 확인 등에 도입하면 괜찮을 것이다. (특활비가 필요하다 아니다라는 논의는 여기서 하지 않겠다) 정말 밝히기 어려운 사안이라면, 오직 당사자만 아는 blinding factor를 통해 거래 내용을 암호화할 수 있고, 혹여 문제가 생겼을 때, 당사자에게 요구하여 내용을 정확하게 확인할 수 있기 때문이다.

새로운 기술과 패러다임은 항상 등장한다. 지금까지 가장 성공한 블록체인 프로젝트 비트코인에 대해서도 끊임없이 문제점을 제기하며 새로운 개념이 나오고 있다. 밈블윔블도 그중 하나이며, 거래수단으로서 화폐라는 비트코인의 목표를 가장 잘 지키면서 확장성과 익명성을 강화한 기술이다. 익명성을 강화한 기술은 사용자의 의중에 따라 그 가치가 많이 달라진다. 하지만, 위와 같은 적절한 사용처와 사용 사례를 만든다면 기술이 가지고 있는 본질을 효과적으로 활용할 수 있을 것이다.

[1] 요즘에는 ‘다크 코인’ 보다는 ‘프라이버시 코인’이라고 한다. ‘다크’라는 단어가 주는 그 부정적인 어감을 피하기 위해서이다. 익명성을 강화하는 이 암호화폐들을 이용하여 거래하면 당사자가 아니면 누가 누구에게 얼마를 보내는지 알 수 없다.

[2] ECC를 사용한다. 일방향 과정이다. 계산과 증명하기는 쉽지만, 역추적하는 것은 힘들다.

<참고자료>

https://github.com/mimblewimble/grin/blob/master/doc/intro.md 

https://github.com/mimblewimble/docs/wiki/A-Brief-History-of-MimbleWimble-White-Paper 

https://github.com/mimblewimble/docs/wiki/MimbleWimble-Origin

ⅳ MimbleWimble – Andrew Poelstra 2016

▲INBEX 바로가기▲