AWS, Azure(애저)… 이제 한번쯤은 들어봤을만한 이름이지 않은가?

맞다. 클라우드 서비스들의 이름이다. 이런 서비스들은 대체 어떻게 사회의 화두가 되었고, 많은 회사들이 클라우드/하둡 등을 외치게 되었을까?

왜 클라우드 서비스를 활용하는가?

높은 성능을 요구하는 서비스들이 증가하면서 한 회사에서 서버 설치/운영하는 것으로는 충당하기 힘들어졌고, 따라서 아마존과 같은 IT 대기업들이 클라우드 시스템 (DB/컴퓨팅)을 개발 및 제공하기 시작했다.

하지만, 단순 가격적인 측면도 있지만, 대기업들에 쏠리는 정보에서 나오는 여러 문제들을 인지하면서,

(최근 페이스북 해킹 (https://www.youtube.com/watch?v=PTlaMVwo2Js), 마이크로소프트 해킹 (https://www.coindeskkorea.com/msoutlookhacked/) 등 다양한 케이스들을 기억해보자.)

분산형 DB/컴퓨팅“에 대한 니즈가 생기기 시작했다. 따라서 여러 프로젝트들이 블록체인을 활용하여 이를 시도하기 시작한다.

분산형 DB의 경우, 파일코인(FileCoin)/시아(Sia)/람다(Lambda)/스토리지(Storj) 등의 프로젝트들이 있고,

분산형 컴퓨팅의 경우, 골렘(Golemn)/소늠(SONM)/펄린(Perlin)/앵커(Ankr) 등의 프로젝트들이 있다.

(아 중간에 첨언하자면, 구관이 명관이라는 말도 있듯이, 처음 시도했던 프로젝트들을 리스펙하는 편이나, 은근 뒤에서 밀고 오는 프로젝트들이 굉장히 잘해내는 경우들이 많다.)

그런 프로젝트들이 람다(Lambda), 스토리지(Storj), 앵커(Ankr), 펄린(Perlin)의 경우다.

(사실, 당연할 수도 있는 것이다. 단점들이 엄연히 프로젝트에는 있고, 이를 다양하게 해결하겠다는 포지션으로 나올 수 있고, 아직 블록체인 기술의 전반적 발전 자체가 느려, 후발주자들이 따라잡기 상대적으로 쉽기 때문이다.)

그리고 이들은 자연스레, “여러 기기들의 성능을 어떻게 묶어내느냐”란 질문에 대해 봉착하게 된다.

이에 대해선 여러 방법들이 제시되었다.

(예를 들어, 분산 DB에 대해선 IPFS (토렌트를 생각해보면 쉽다), Swarm 같은 방법들이 있다. 관련 글은 차후에 글을 적도록 하겠다.)

그리고, 사실 이것의 더 베이스가 되는 기술이 연구/적용되고 있다.

이것은 바로 다자간 연산 (Multi-Party Computation, MPC)이다.

이에 대해 한 번 알아보자.

다자간 연산 (Multi-Party Computation, MPC)의 정의

사실 이름에서도 어느 정도 연상할 수 있듯이, 정의 자체는 다수의 사용자가 각자의 비밀 값을 입력 값으로 하여 함수 값을 함께 계산하는 기술을 의미한다. (여기에 연관된 기술들은 머클 트리, 동형 암호, Taproot 등 다양한 암호학 관련 기술들이 있다. 차후에 마찬가지로 다루겠다.)

그리고 이는 1982년에 처음으로 2PC (Two-Party Computation)으로부터 처음 시작했다.

즉, 원정보는 알아볼 필요 없이, 도출된 비밀 값만을 몇몇 주체들이 다룬 뒤 결과를 활용할 수 있는 것이고, 따라서 프라이버시, 신뢰를 추가 주체 없이 지킬 수 있기 때문에 이를 활용할 니즈가 생기는 것이다.

또한 이는 단일 주체가 supply를 담당하지 않기 때문에, 자연스레 “시장”을 형성한다. 즉, 단일 주체가 supply를 맡아서 가격형성을 할 때에 비해 더 소비자에게 이득일 가능성이 높다 (물론 꾸준한 시장 참여자들의 수가 필요하지만 말이다.)

그러면 여기에서 필요한 것은 무엇인가? 바로 고도의 암호화와 다자가 빠르게 소통할 수 있게 하는 인프라와 기술(ex. 인코딩/대역폭 제한 컴퓨팅)이다.

이에 관련된 예시를 한 번 확인해보도록 하자.

다자간 연산 (Multi-Party Computation, MPC)의 용례

다양한 분야에서 사용되는 MPC 개념의 3가지 (암호학/분산DB/샤딩) 예시를 보이도록 하겠다.

먼저, 최근 암호학에서는 Threshold Cryptography라는 기술이 핫하다. 이는 블록체인/암호학에 대한 관심 증대로 다시금 주목받은 기술인데, 간단하게 표현하자면, 문턱만 넘으면 Okay!다.

이를 활용한 기술에는 Taproot, Graftroot이 있다. 둘의 차이는, “모든 스크립트에 서명 (검증을 위한 서명) 조차 필요없다, 그건 필요하다 (대신 추후에 적당히만 활용)”정도의 차이라 생각할 수 있다.

이는 Schnorr Signature (슈노르 서명)이란 기술과 굉장히 밀접한 관계를 가지는데, 단순하게 “슈노르 = 서명 합치기”라고 이해하고 넘어가자.

재밌지 않는가? 최신 기술들을 파고 들어가다보면 굉장히 심플하지만 생각해보면 니즈에 알맞은 기술들이 산재하고 있었다는 것을 확인할 수 있으니.

결국 이는 한층 암호화 단계를 높이는 것으로, 중간에 제3자가 끼지 않고도 MPC를 진행할 수 있게 한다. 단순히 몇가지 확인/사인을 통해 훨씬 많은 정보를 담고 있는 작업들을 진행할 수 있는 것이다.

분산DB의 경우 람다(Lambda)의 예시를 확인해보자.

아래 그림은 DHT network로, 람다 네트워크의 전반적 생태계를 운영하는 네트워크 구성이다. 그리고 이 네트워크의 특징은 MA-ABE (“Multi-Authority Attribute-Based” Encryption)으로 모든 것이 진행된다는 것인데,

뭔가 익숙하지 않은가? 이 암호화 방식은 encapsulation(캡슐화)을 통해 필요 정보들을 마지막엔 제공하게 된다.

물론 데이터 정합성 (Data Integrity)을 위해 PDP/PoST(Proof of Space & Time)라는 꽤나 어려운 작업을 먼저 거치긴 한다.

하지만 “결론적으론” 이 어려운 작업들을 마지막, 즉 End-user (최소한의 스펙으로 참여하는 노드로 여기에선 가정하자)에게 쉬운 모습으로 제공하기 위해선 이를 최소화 하여 진행하려 encapsulation (이전 글에서 혹시 효율성을 위해 모듈화를 한다했던 것이 기억나는지 모르겠다, 이와 마찬가지다.)을 진행하는 것이다.

이러한 하나하나의 스텝이 더 효율적이고, 이를 실행시킬 능력이 있다면 높은 평가를 받는 프로젝트가 되는 것이다.

이번엔 샤딩에서 사용되는 예시를 보이겠다. 하모니(Harmony)란 프로젝트의 최근 연례서한 중 로드맵이다.

 

하모니 연례서한 中 로드맵

 

어려운 말들 천지다… 우린 저기에서 마지막 항목만 확인할 것이다.

결론은, 하이브리드 ECDSA와 BLS 둘 다 MPC를 위한 작업들이다.

ECDSA는 Elliptic Curve Digital Signature Algorithm으로, 모두가 한번쯤은 들어본 단어일거다. 비트코인의 전자서명 알고리즘이기 때문이다. 그렇다면 과연, 저기에서 나온 BLS (Boneh-Lynn-Shacham)는 무엇인가?

쉽게 이해하자면, 보안 잘되는 짧은 서명을 만드는 작업이다.

당연 End layer에 있는 유저들은 훨씬 부담을 덜 느끼는 작업 아닌가.

다만, 이렇게 컴팩트하게 만들기 위해선, 굉장히 시스템에 부담되는 작업이긴 하다.

따라서, 여기에선 Proof of Locality가 적용된다. Local이란 단어에서 볼 수 있듯, 최대한 데이터와 해당 데이터의 암호화를 위한 키가 가까운 곳에 있는 것이다. 왜 가까운 곳에 있어야하나? 블록체인에서 가장 기본이 되는 MAST(Merklized Abstract Syntax Tree)라는 개념을 간단하게 이해해보면 쉽다.

 

MAST 구조 (출처:The Money Mongers)

 

 

 

 

 

 

 

 

 

 

결국 암호화에 암호화를 거듭해서, 최종 암호화된 데이터로 남기는 구조이다. (이젠 왜 Tree인지 이해갈 것이다)

그럼 이게 어떻게 적용되냐고?

 

Harmony 백서

 

커뮤니케이션을 BLS Multi-sig Aggregation을 활용하여 진행함을 알 수 있다.

그리고 이후에 데이터를 샤드들에 흩뿌리는 샤딩을 진행하는 것이다.

Proof of Locality는 어디에? 바로 밑에 [34] quote 옆 location-based sharding에서 볼 수 있다.

 

Harmony 백서

 

시사점

쉽게 쓰려던 글이 상당히 많은 정보를 제공하는 글이 된 것 같아, 상당히 당황스럽다.

하지만 그만큼, MPC라는 개념이 다양한 곳에서 결국 엮이는 허브역할을 하는지라, 이렇게 다양한 분야의 다양한 용어들을 한 글에서 다루게 된 듯 하다.

이러한 소프트웨어적인 접근이 꾸준하게 이뤄질수록, 현재 하드웨어에서 겪고 있는 한계점을 최대한 효율적으로 해결할 수 있는 것이고, 더 나아가 하드웨어의 한계점 (ex., 대역폭/인프라 구성 등)이 해결되었을 때 어마어마한 효과를 볼 수 있는 것이다.

우리 사회가 그만큼 블록체인-분산화 자체에 집중하게 된 이상, MPC의 개념이란 빼놓을 수 없을만큼 중요하고, 그만큼 미리 알고 있어야 다른 후행 개념들의 원리를 이해하는데도 쉽다.

이 글에서 나온 내용들을 잘 참고할 수 있으면 좋겠다.

Referrence

https://patents.google.com/patent/KR101475747B1/en

https://www.lambdastorage.com/doc/Yellow-Paper-Beta-English-version.pdf

https://harmony.one/whitepaper.pdf

https://medium.com/@gw_73971/%ED%95%98%EB%AA%A8%EB%8B%88-%EC%97%B0%EB%A1%80%EC%84%9C%ED%95%9C-annual-letter-267ee507293d

https://en.m.wikipedia.org/wiki/Secure_multi-party_computation

https://forum.cardano.org/t/iohk-multi-party-protocol-bernardo-david/14217

https://ethresear.ch/t/proof-of-locality/5145

Leave comment

Your email address will not be published. Required fields are marked with *.

WordPress Image Lightbox