한때 세계를 떠들썩하게 만들었던 비트코인, 그리고 이 비트코인은 블록체인이라는 기술이 있었기 때문에 세상에 나올 수 있었다. 이번에는 블록체인이라는 기술에 대해 알아보고자 한다.
블록체인이 뭔데?
블록체인은 관리 대상 데이터를 ‘블록’이라고 하는 소규모 데이터들이 P2P(Peer to Peer) 방식을 기반으로 생성된 체인 형태의 연결고리 기반 분산 데이터 저장 환경에 저장하여 누구라도 임의로 수정할 수 없고 누구나 변경의 결과를 열람할 수 있는 분산 컴퓨팅 기술 기반의 원장 관리 기술이다.
라는 위키백과의 설명이다.
간단히 말하면 여러 시스템이 관리해야 하는 데이터를 각자 가지고 있는 형태를 블록체인이라고 한다.
보통 이런 데이터를 관리하기 위해 사용하는 시스템 구조로는 크게 세 가지 종류가 있다. 중앙 집중형(Centralized), 탈 중앙집중형(Decentralized), 분산형(Distributed). (참고로 용어 번역이 가는 곳마다 조금씩 달라 그냥 직역했다.)

Centralized 방식은 서버의 역할을 하는 시스템이 중앙에 위치하고, 이 중앙 시스템이 모든 것을 처리하는 방식이다. 이러한 구조는 단순하고 컴퓨팅 속도가 빠르다는 장점이 있지만, 서버의 역할을 하는 중앙 시스템에 장애가 발생한다면 다른 모든 시스템에 영향을 줄 수 있다는 단점이 있다. (이처럼 동작하지 않으면 전체 시스템에 영향을 줄 수 있는 단일 요소를 단일 장애점(Single point of failure)이라고 한다.)
Decentralized 방식은 Centralized 방식에서 중앙 서버 역할을 하는 시스템을 여러 개로 분산시켜놓은 방식이다. 조금 복잡도가 늘어나지만, Centralized 방식처럼 하나의 시스템에 장애가 발생한다고 모든 시스템이 마비되는 극단적인 현상은 조금 덜하다는 장점이 있다.
블록체인은 세 번째 방식인 분산형(Distributed) 시스템의 구조를 가지고 있다. 이 분산형 시스템의 경우, 서버 역할을 하는 특정 시스템이 존재하지 않고 여러 시스템이 *P2P(Peer to Peer) 방식으로 연결되어 있다는 특징이 있다. 중앙 서버가 없기 때문에 단일 장애점 역시 존재하지 않는다.
*P2P(Peer to Peer) : 서버를 거치지 않고 클라이언트간에 직접 통신하는 방식
이러한 분산형 시스템의 구조는 여러 장점이 있는데, 단일 장애점이 존재하지 않기 때문에 장애 허용성(Fault Tolerance)이 높다는 장점이 있다. (쉽게 말해 하나의 시스템에 장애가 발생해도 별 지장 없다는 소리다.) 그리고 각 시스템들이 데이터를 각자 저장하고 있기 때문에, 데이터 변조에 강하고(무결성이 높다고도 표현한다.) 그로 인해 신뢰도가 높다는 장점이 있다.
블록체인은 이러한 분산형 시스템의 장점을 이용해서 거래 기록 정보를 블록이라는 데이터 단위로 여러 시스템에 동시에 저장시킴으로써 데이터를 안전하게 보관하는 기술이라고 할 수 있다.(참고로 이러한 블록체인 기술을 DLT(Distributed Ledger Technology), 분산원장기술이라고도 한다.)
블록체인의 특징
특징을 다시 한번 정리해보자
블록체인은 네트워크 내 모든 참여자가 공동으로 거래정보를 검증, 기록, 보관한다. 블록체인은 위에서 언급한 분산형(Distributed) 시스템 중에서도 조금 특이하게 거래 기록 정보를 시스템 내부의 구성원들이 나눠 가지지 않고, 동일한 데이터를 모두가 동일하게 보관한다.
기존의 중앙 집중형(Centralized) 방식의 경우, 서버가 모든 기록을 보관하고 있었다. 하지만 서버의 데이터가 악의적으로 변경되면 이 기록의 진위 여부를 증명할 방법이 없었다. 물론 이를 방지하기 위해 중앙 서버에는 고지의 의무가 있지만, 그것만으론 거래의 투명성을 확보하기가 어려웠다. 하지만 블록체인은 모두가 동일한 데이터를 가지고 있기 때문에 각 구성원이 서로가 서로의 기록을 증명할 수 있고, 이로 인해 제 3자의 허가가 없이도 거래의 신뢰성을 확보할 수 있다.
그리고 블록체인은 (당연한 소리지만) 블록 단위로 거래정보를 보관한다. 물론 여기에도 이유는 있다. 중앙 집중형 방식이 위험성이 정말 높은 것처럼 설명을 해버렸는데, 이 방식 또한 장점이 있다. 바로 구조가 단순하고, 속도가 빠르다는 장점이다. 그렇다면 거의 반대 개념인 분산형은 구조가 복잡하고 속도가 느릴 수 있다는 뜻이다. 더군다나 블록체인은 각 구성원이 전체 시스템의 데이터를 나눠 갖는 것이 아니라, 모든 구성원이 모든 데이터를 동일하게 가지고 있다. 그렇다는건, 거래가 발생할 때마다 모든 구성원에게 이 과정을 하나하나 전달해야 한다는 것이다. 생각만 해도 오래 걸린다.
블록체인은 이런 속도 저하 문제를 해결하기 위해 블록이라는 구조를 생각해냈다. 거래 기록(TX, Transaction)이 발생한다고 이를 하나하나 일일이 기록하는 것이 아니라, 다수의 거래 기록을 묶어서 하나의 블록이라는 단위로 저장하는 방식을 택했다. 그리고 이런 블록이라는 구조와 다른 여러 아이디어가 결합되어, 블록체인은 다른 구성원과의 합의를 하는 과정에 있어서도, 블록 내의 묶어놓은 거래 기록을 탐색하는 데에도 상당히 효율적인 구조를 갖게 되었다. (이 구조는 다음에 설명하기로 하고)
이러한 블록체인도 한 가지 문제가 발생하는데, 바로 기밀성을 보장할 수 없다는 점이다.
보안의 3대 요소로 CIA를 많이 언급한다. 각각 기밀성(Confidentiality), 무결성(Integrity), 가용성(Availability)이다. 기밀성은 정보를 허용되지 않은 자로부터 숨길 수 있는가. 무결성은 기존 정보에서 변조가 일어나지 않도록 보장할 수 있는가. 가용성은 어떤 정보를 사용함에 있어 시간과 제약을 받지 않도록 보장할 수 있는가이다.
블록체인은 모든 구성원이 거래 데이터를 보관하고 있기 때문에, 악의적인 구성원이 거래 기록을 변경하거나 허위로 기록하는 행위에 대해서는 상당한 내성을 갖는다. 이러한 점에서 블록체인은 무결성을 보장한다. 또한 블록체인은 단일 장애점이 존재하지 않기 때문에 특정 노드에 이상이 발생하더라도, 다른 노드를 통해 이를 복구하는 것은 그리 어려운 것이 아니다. 또한 DDoS 등의 공격 방식을 통해 시스템을 마비시키기 위해서는 전체 구성원을 마비시켜야 하는데, 이는 현실적으로 불가능하다. 따라서 블록체인은 가용성 역시 보장해준다.
하지만 기밀성의 경우에는 이야기가 좀 다르다. 중앙 집중형 시스템의 경우에는 중앙 서버로의 접근 제어를 통해 다른 구성원이 특정 거래 기록을 열람할 수 없도록 할 수 있지만, 블록체인의 경우 모든 구성원이 동일한 데이터를 보관하고 있기 때문에 다른 구성원의 정보를 열람할 수 있다는 점이 문제가 된다.
물론 이를 방지하기 위해 블록체인에서는 거래 당사자의 신분 인증이 본인의 거래 주소를 통해 이루어지고, 이 역시 암호화되어 해당 주소가 누구의 소유인지는 알 수 없도록 한다. 하지만 블록체인에 저장된 공개키 주소와 거래내역을 수집해 통계적으로 분석하면 특정 공개키 주소에 대한 행동 패턴을 알 수 있게 된다. 그리고 이런 방식을 통해 소유주의 개인정보 확인까지 가능하기 때문에 블록체인은 완전한 익명성까지는 보장해주지 않았다.
(나중에는 영지식 증명을 통해 거래내역의 추적을 방지하는 암호화폐가 등장하기는 했다.)
정리
블록체인은 모든 구성원들이 거래 기록(TX)을 블록 구조를 통해 동일하게 관리하여 거래의 신뢰성을 확보하는 기술이라고 할 수 있다.
추후 블록체인에서 활용하는 구조에 대해 다뤄보겠다.