[Vol.12] 데이터 신뢰를 위한 합의 알고리즘

 In KISA Report

데이터 신뢰를 위한 합의 알고리즘

유성민 ([email protected])

서강대학교 정보통신대학원 대우교수

IT 칼럼니스트

디지털 사회와 블록체인

블록체인이 등장한지 10년이 넘었다. 2007년 사토시 나카모토(Satoshi Nakamoto)는 비트코인을 소개하면서 블록체인을 최초로 언급했다. 이후, 블록체인은 주목받기 시작했고, 인공지능(AI)과 함께 미래 유망 기술로 자리 잡았다.

주목받는 이유는 블록체인의 세 가지 제공 가치를 제공하기 때문이다. 첫째는 투명성과 공유성이다. 블록체인은 개인 간(P2P) 네트워크를 통해 참여자인 노드에 데이터를 공유한다. 블록체인의 데이터 공유는 거의 모든 노드에 투명하게 보여준다. 그러므로 투명성을 가진다.

 

그런데 블록체인은 이러한 데이터를 공유하는 데에서만 끝내지 않는다. 공유된 데이터의 일치된 합의를 가져와 데이터 신뢰성도 보증한다. 다시 말해, 데이터의 무결성을 보증해 데이터 신뢰성을 높인다. 무결성과 신뢰성을 제공하는 셈이다. 끝으로 블록체인은 두 가지 가치를 기반으로 탈 중앙선을 가진다.

 

블록체인은 모든 노드에 데이터를 공유하고, 이러한 데이터에 합의를 해 신뢰성을 자동으로 보증한다. 중앙 시스템 혹은 중개자 없이 말이다. 이는 블록체인 내 시스템이 탈중앙 형태로 운영하게 한다. 비트 코인을 예로 들어보자. 비트코인 거래를 중개하는 중앙 시스템이 없다. 노드가 참여해 거래 이력을 공유 하고 합의를 통해 탈중앙 형태로 무결성을 보증하기 때문이다.

블록체인 제공 가치

제공가치 내 용
투명성 & 공유성 데이터를 노드에 투명하게 공유함
무결성 & 신뢰성 공유된 데이터의 합의를 통해 무결성과 신뢰성을 보증함
탈중앙성 자체적으로 시스템 운영이 가능함

블록체인의 이러한 특성은 디지털 신뢰가 중요한 사회에서 주목받게 한다. 블록체인 방식은 기존보다 더 나은 신뢰성을 제공하기 때문이다. 첫 번째 이유는 중앙 시스템의 조작 위험이 없다. 두 번째 이유는 분산 형태이기 때문에 장애 내구성이 높다. 중앙 시스템이 마비되면 시스템에 미치는 악영향이 크다. 그러나 블록체인은 탈중앙 형태이므로 중앙 시스템의 마비 문제가 없다. 마지막 이유는 다수가 보증하기 때문에 중앙 시스템보다 더 신뢰성이 높다. 중앙 시스템이 불투명하게 데이터를 처리하는 것보다 다수에게 투명하게 합의를 통해 데이터를 처리하는 블록체인의 신뢰성이 더 높을 수밖에 없다.

 

정리하면, 블록체인은 디지털 신뢰가 중요한 사회에 탈중앙 형태라는 새로운 패러다임을 제시하고 있다. 그러나 여기서 한 가지 화두가 있다. 블록체인을 적용했다고 해서 데이터 신뢰성을 충분히 보증한다고 할 수 있을까? 혹은 데이터 신뢰성을 가진다고 무조건 믿어야 할까? 이는 기술 찬양론에 불과하다. 디지털 신뢰 보증을 위해서는 블록체인을 정확히 분석하고 개선을 위한 연구가 필요하다.

 

블록체인의 오해와 합의 알고리즘의 대두

 

블록체인과 인공지능은 상당히 많은 공통점을 가지고 있다. 그중 가장 큰 공통점은 기존 사회를 개선하는 것이다. 블록체인은 디지털 사회에 신뢰성을 높여주고, 인공지능은 데이터 분석 범위와 정확성을 높여준다. 그러나 기술 적용에만 초점을 둬서는 안 된다.

 

인공지능은 개념적 기술로 사람의 지능을 흉내 내는 기술이다. 실질적으로 연구되는 분야가 아니다. 엄밀히 말해, 이를 동작하는 알고리즘이 연구되고 있을 뿐이다. 최근에는 기계학습 알고리즘이 주목받고 있다. 그리고 이에 관해 연구하고 있다. 다시 말해, 같은 인공지능이라도 기계학습 알고리즘 설계에 따라 데이터 분석 범위와 정확도가 달라진다.

 

이는 블록체인에서도 마찬가지이다. 블록체인도 개념적 기술이다. 실질적으로 연구되는 분야가 아니다. 블록체인은 P2P 네트워크와 합의 알고리즘에 의해서 움직인다. 여기서 합의 알고리즘은 블록체인에서 중요한 역할을 한다. 데이터 신뢰성 보증하는 역할을 담당하기 때문이다. 합의 알고리즘은 P2P 네트워크에 의해서 분산된 데이터를 합의에 따라서 일관된 데이터가 모든 노드에 저장될 수 있도록 만드는 알고리즘으로 정의할 수 있다.

 

결국, 합의 알고리즘은 블록체인에 무결성&신뢰성과 탈중앙성을 가지는 데에 중요한 역할을 한다. 블록체인에 합의 알고리즘이 없다면, 데이터는 단순히 분산돼 있다. 분산형 데이터 구조일 뿐이다. 그렇게 되면, 디지털 신뢰에 있어 블록체인은 아무런 의미가 없다.

이를 잘 보여주는 논문 제목이 있다. “블록체인은 = 분산형 원장 + 합의 알고리즘”이라는 제목의 논문이 있다. 이러한 논문에서도 알 수 있듯이 블록 체인은 탈중앙 방식의 신뢰에서 중요한 역할을 한다.

 

블록체인에 관해 몇 가지 오해가 있다. 그중 하나로 블록체인을 사용하면 전력 소모가 발생하는 점이다. 이는 비트코인에 사용되는 작업증명알고리즘(PoW)에 해당하는 말이다. 그리고 블록체인 내에 저장된 데이터 조작을 위해서 50%를 초과한 컴퓨팅 파워가 필요하다는 말이 있다. 이 또한 오해이다. 우선, 블록체인 내에 저장된 데이터를 조작하는 것은 거의 불가능에 가깝다. 블록체인 이전 값을 기반으로 블록을 만들어 체인 구조를 형성하고 있다. 해시 알고리즘을 사용하고 있기 때문이다. 해시 알고리즘은 임의 값을 함수 기능에 의해 특정 값으로 변환하는 알고리즘이다. 참고로 비트코인에 적용된 해시 알고리즘은 SHA-256이다. 16진수 값으로 변환한다. 해시 알고리즘 특징은 임의 값이 변하면 해시 함수에 의한 결과 값도 변한다는 것이다. 그리고 역은 불가능하다. 결과 값으로 나온 16진수 값을 가지고 투입된 값을 알아낼 수 없다. 비트코인은 이를 기반으로 PoW 알고리즘을 고안해냈다.

 

비트코인은 노드가 특정 블록을 생성할 수 있는 조건으로 블록의 해시 결과값이 제시된 16진수 값보다 작은 값을 가장 먼저 발견할 때로 한정하고 있다. 다시 말해, “주어진 16진수 값보다 작은 블록을 빨리 만들어내”라는 문제를 가장 빠르게 맞히면 블록 생성권이 주어진다. 그리고 보상을 받게 된다. 블록에는 이전 블록의 해시값, 거래 이력 그리고 난수값이 있다. 난수값 조절로 문제를 풀 수 있다. 여기서 중요한 점은 이전 블록의 해시값이다. 블록에는 이전 블록의 해시값이 들어있다. 그러므로 이전 블록을 변경할 수 없다. 이전 블록을 변경하면 이전 블록의 해시값도 변한다. 그러면 연쇄적으로 블록이 모두 변하기 때문이다. 그래서 이전 블록의 해시값을 변경하지 않으면서 블록 데이터 변경이 가능은 하다. 해시 충돌(Hash Collision)을 유발하게 말이다. 해시 충돌은 임의 값을 넣었을 때, 해시에 의한 결과값 중복을 말한다. 비유하면, 생일이 똑같은 사람이 두 명이 있는 경우이다. 결론부터 말하면, 해시 충돌은 가능은 하다. 다만, 이를 위해서는 막대한 시간이 필요하다. 해시 충돌을 위해서는 2^256번의 연산이 필요하다. 그러나 생일 패러독스 가능성에 의해서 2^130번 연산 정도면 충분히 해시 충돌을 일으킬 수 있다. 그런데 이는 세계 최고 슈퍼 컴퓨터보다 1900배 좋은 슈퍼 컴퓨터로 돌리면 1천만 초 걸려서 99.8% 확률로 해킹할 수 있다.

 

그럼 컴퓨팅 파워 50% 초과는 어디에서 나온 말일까? 신규 블록 생성에만 해당한다. 비트코인 내에서 이중 지불 공격이 일어날 수 있다. 악의 노드 A가 100 비트코인을 가지고 있다고 생각해보자. 노드 A는 거래를 위해 노드 B에게 100 비트코인을 지불했다. 본인의 100 비트코인을 모두 소진한 셈이다. 그런데 노드 A는 사기 치기 위해서 자신이 만든 또 다른 노드 C에게 100 비트코인을 중복으로 비트코인을 지불했다고 가정해보자. 이러한 공격이 이중지불공격이다. 노드 A 입장에서는 노드 C쪽과의 거래한 데이터가 남아야 한다. 노드 A는 노드 C쪽의 거래가 블록으로 인정받기를 기대해야 한다.

 

그러나 이러한 일이 발생할 가능성은 매우 적다. 대부분 블록 생성자 노드는 블록 생성 시에 검증을 통해 이중지불공격임을 알아내기 때문이다. 그리고 비트코인의 블록체인은 대다수 블록 생성자가 본인의 비트코인 안정성 등 이해관계에 따라 성실하게 블록 생성을 할 것으로 가정하고 있다. 이러한 가정에 따라, 노드 C의 거래는 무산될 가능성이 크다. 따라서 노드 A는 블록 생성을 직접 해야 한다. 이때, 노드 A는 직접 참여해 노드 C와의 거래 데이터를 블록으로 만들 수 있어야 한다. 그런데 현실적으로 가능해지려면 노드 A가 블록 생성에 차지하는 컴퓨팅 파워 비중이 높아야 한다. 그리고 등장한 용어가 50% 초과이다. 다시 말해, 노드 A는 성실한 노드 전체의 컴퓨팅 파워를 초과해야 한다. 쉽게 말해, 노드 A와 성실 블록 생성자가 50대 50으로 이루는 것을 초과해야 한다. 그러면 이중지불공격이 일어날 수 있다.

 

그러나 반드시 50% 초과해야지 이중지불공격 발생 확률이 높을까? 이러한 생각은 356명이어야만 중복된 생일인 사람이 나온다고 생각하는 것과 같다. 실질적으로 시뮬레이션을 통환 여러 연구에 따르면,

컴퓨팅 파워 20%를 초과한 노드가 등장하면 이중지불공격을 충분히 일으킬 수 있다. 어떤 연구에서는 25%를 초과하면 이중지불공격을 일으켜 블록 데이터 생성 신뢰성에 악영향을 미칠 수 있다. 그래서 해외의 여러 유명 블록체인 학계에서는 PoW의 블록체인 데이터 신뢰성 혹은 장애 허용률(악의 노드 대응성)을 51%가 아닌 25%까지로 보고 있다.

 

정리하면, 합의 알고리즘은 블록체인이 디지털 신뢰 사회 형성에 활용될 수 있도록 중요한 역할을 한다. 그러므로 합의 알고리즘에 관해 구체적으로 연구할 필요가 있다. 그리고 블록체인을 적용했다고 해서, 디지털 신뢰성을 완벽하게 보증하는 것은 아니다.

 

현재 합의 알고리즘이 직면한 문제는 데이터 신뢰성을 어떻게 탈중앙 형태로 제대로 보증할 수 있는지가 중요하다. 그리고 탈중앙 형태에서 성능을 끌어올리는 것도 중요하다.

 

두 가지 유형으로 나뉘는 합의 알고리즘

 

현재 합의 알고리즘에 관해 상당히 많은 연구가 진행되고 있다. 의 알고리즘은 블록 생성 방식에 따라 ‘작업 기반 증명(Work Based Proof)’과 ‘투표 기반 증명(Voting Based Proof)’으로 나눌 수 있다. 전자는 컴퓨팅 파워와 같은 물리적 자원을 소모해서 합의 하는 방식이다. 작업증명알고리즘(PoW), 이대시(Ethash), 용량증명알고리즘(PoC) 등이 있다. 후자는 컴퓨팅 자원을 활용하지 않고 투표 혹은 지분이라는 방식을 통해 물리적 자원을 활용하지 않고 증명하는 방식이다. 이러한 유형에는 지분증명알고리즘(PoS), 위임형 지분 증명알고리즘(DPoS), 비잔틴장애허용알고리즘(BFT), 중요증명알고리즘(PoI) 등이 있다.

블록 생성 방식에 따른 합의 알고리즘 구분

[출처: 유성민(2019), 합의알고리즘강의자료(서강대)]

또 다른 구분 방법으로는 생성된 블록의 검증 방식이다. 두 가지 유형으로 나눌 수 있다. 첫 번째로 블록 생성 후의 검증이 있다. ‘실시간성 우선(Liveness over Safety)’이라고 부른다. 말 그대로, 블록을 생성한다면 검증하는 방식이다. 두 번째로 블록 검증 후에 블록을 생성하는 것이다. ‘안정성 우선(Safety over Liveness)’이라고 부른다. 참고로 전자에는 PoW, PoS, Etash, PoSP, PoI 등이 속한다. 후자에는 BFT 계열이 속한다. 학계에서는 블록의 검증 방식으로 합의 알고리즘을 구분하는 것을 선호한다. 차이가 명확하기 때문이다.

 

실시간성 우선의 경우 블록 생성에 초점이 맞춰져 있다. 그러므로 생성된 블록의 안정성이 낮다. 블록이 중복으로 발생할 수 있기 때문이다. 참고로 이를 ‘포크(Fork)’라고 한다. 포크는 이중지불공격 등과 같이 블록이 중복으로 발생하는 상황을 뜻한다. 실시간성 우선은 합의 되지 않은 블록이 생성되고 전파되는 과정을 거친다. 그리고 블록 생성자는 검증한다. 이러한 검증 과정 시간 동안에 또 다른 블록을 생성할 수 있게 한다. 그래서 블록 안정성이 명확하지 않다. 대신, 생성된 블록에서 많이 블록이 쌓일수록 안정성이 높아진다. 검증된 블록이 쌓이기 때문이다. 이러한 이유로, 실시간성 우선 합의 알고리즘은 ‘확률성(Probability)’을 가진다고 부르기도 한다. 참고로 이러한 합의 알고리즘은 경쟁 방식을 가진다. 블록 생성의 실시간성에 맞춰져 있기 때문에 경쟁 방식을 유도해 블록을 빠르게 생성하게 한다. 또한, 비허가형 블록체인에 적합하다. 경쟁자가 많은 수록 악의 생성자의 블록 생성에 대응할 수 있기 때문이다. 비트코인을 예로 들어보자. 10명의 블록 생성자보다 1만 명의 블록 생성자가 많을수록 1명의 악이 생성자에 대응성이 높아진다. 그만큼 성실한 블록 생성자의 컴퓨팅 파워가 커지기 때문이다.

블록 생성 방식에 따른 합의 알고리즘 구분

[출처: 유성민(2019), 합의알고리즘강의자료(서강대)]

안정성 우선은 생성된 블록의 안정성이 거의 완벽하다. 이미 거의 모든 참여자에 의해서 블록 생성의 동의를 얻었기 때문이다. 따라서 안정성 우선은 ‘완결성’을 가지고 있다. 포크 발생도 없다. 다만, 비허가형 블록체인에 적용은 어렵다. 안정성 우선은 대다수 생성자에 허락을 받고 블록을 생성한다. 그런데 비허가형은 블록 참여자가 많다. 그럼 블록 생성의 시간이 너무 오래 걸린다. 이러한 이유로, 허가형 블록체인에 적용할 수밖에 없는 한계가 있다. 또한, 안정성 우선은 실시간성 우선과 달리 협력 기반으로 블록을 생성한다. 투표 등의 방식으로 동의를 얻어 블록을 생성하기 때문이다.

 

이러한 유형에 속하지 않은 합의 알고리즘도 있다. 아이오타(IoTA)에 적용된 블록체인 플랫폼인 탱글(Tangle)이 대표적인 유형이다. 탱글은 블록체인 노드 중에서 거래 생성자가 직접 데이터 블록을 생성하고 검증하게 한다. 합의 방식을 간소화했기 때문에 속도 측면에서는 매우 빠르다. IoTA는 용어에서도 유추할 수 있듯이 사물인터넷(IoT) 서비스 전용 블록체인으로 속도를 우선시 한다. 탱글은 데이터 생성자가 이전 블록 두 개를 최소한으로 증명 받게 한다. 참고로 인정받지 않은 블록을 팁(Tip)이라고 부른다. 탱글은 신규 블록 생성자가 팁의 검증을 유도하도록 가중치 계산법을 적용했다. 해당 계산법은 팁을 검증한 신규 블록 생성자를 우선적으로 검증 받도록 하는 계산법이다.

안정성 우선과 실시간성 우선 합의 알고리즘 비교

 

구 분 안정성 우선 실시간성 우선
정 의 검증된 블록 생성 블록 생성후 검증
적용 블록체인 BFT 계열 PoW, PoS, DPoS, Ethash 등
블록 안정성 완결성 확률성
포크 발생 X O
생성 방식 협력적 구조 경쟁적 구조
적합 블록체인 유형 허가형 블록체인 비허가형 블록체인

이전 블록을 검증하는 방식의 탱글 구조

[출처: 위키피디아]

디지털 신뢰 시대의 합의 알고리즘 연구

인공지능은 지능형 혹은 자동화의 대표 기술로 떠오르고 있다. 마찬가지로, 블록체인은 신뢰성과 탈중앙성을 대표하는 유망 기술로 떠오르고 있다. 따라서 디지털 신뢰 시대에는 블록체인 적용이 필수이다. 그런데 블록체인 적용만으로 디지털 신뢰 시대를 구현 했다고 말하기 어렵다. 원천 기술인 합의 알고리즘 연구가 필요하다. 합의 알고리즘 구현에 따라 블록체인 기반의 디지털 신뢰성이 결정되기 때문이다. 따라서 지능형 시대에 기계학습 알고리즘 연구가 필요하듯이, 디지털 신뢰 시대에 합의 알고리즘 연구가 필요하다.

본 원고는 KISA Report에서 발췌된 것으로 한국인터넷진흥원 홈페이지(https://www.kisa.or.kr/public/library/report_List.jsp)에서도 확인하실 수 있습니다.

KISA Report에 실린 내용은 필자의 개인적 견해이므로, 한국인터넷진흥원의 공식 견해와 다를 수 있습니다.

KISA Report의 내용은 무단 전재를 금하며, 가공 또는 인용할 경우 반드시 [한국인터넷진흥원,KISA Report]라고 출처를 밝혀주시기 바랍니다.

Recent Posts
Contact Us

언제든지 편하게 연락주세요.

Not readable? Change text. captcha txt