본문 바로가기

블록체인/일반

블록체인 바로알기(1) - 블록체인이 신뢰성을 보장하는 방법

블록체인?

모든 거래자의 전체 거래장부 공유 및 대조를 통해 거래를 안전하게 만드는 보안기술이라고 정의한다.


1) 블록체인의 탄생배경

블록체인이 등장하게 된 배경은 거래의 '중앙화' 시스템이라고 할 수 있다. 개인과 개인이 거래를 하고자 할 때 서로간 신뢰 할 수 없으므로 거래를 중간에서 중개해주는 중간자가 등장하게 된다. 현실세계에서의 부동산 중개인, 증권거래소를 생각하면 쉽다.

그런데, 이러한 중간자는 거래기록정보(=기록장부)를 소유하게 되므로 필연적으로 사회의 권력을 갖게된다. 이러한 권력소유를 말미암아 중간자또한 부패하고 신뢰할 수 없는 존재가 된다. 그에따라 개인과 개인의 신뢰할 수 있는 거래관계를 만들기 위해 탄생한 것이 중간자이지만 이런 중간자를 견제하는 기관이 생겨나게 된다.(중앙화) 즉, 중간자를 유지시키기위한 비용이 증가한다.


개인과 개인의 거래를 중간자를 이용하여 신뢰성있는 거래를 한다 (기존)

개인과 개인의 거래를 중간자없이 블록체인을 이용하여 신뢰성있는 거래를 한다. ( 새로운 패러다임 )


2) 블록체인이 어떻게 신뢰성을 보장한다는 것일까?

실생활의 은행거래를 먼저 떠올려보자. 내가 친구에게 10만원을 송금하면 그에따른 거래기록이 은행의 데이터베이스에 장부로써 남게된다. 따라서, 추후의 거래가 일어날때 이전의 장부를 보고 내 계좌잔고가 얼마인지 계산할 수 있는 것이다. 이러한 금융정보는 보안성이 매우 중요하므로 신뢰성이 높은 기관인 은행이 중간자역할을 수행하고 있고 거래장부는 은행만 접근할 수 있다. (중앙화)


블록체인은 위와 다르다.

1) 거래장부를 누구나 가질 수 있고 접근할 수 있다. ( 공공거래장부의 등장).

2) 장부의 위/변조 여부를 사용자가 판단한다.(분산화)


예를들어, 내 계좌 10만원에서 친구계좌로 송금했다고 하자. 그러면, 해당 거래에 대한 block-candidate가 생성되고 해당 거래내역의 유효성을 블록체인 네트워크에서 검증을 진행하게 된다. 만약, 절반이상의 블록체인 사용자가 '정상거래'라고 판단하면 block-candidate는 유효성을 인정받고 공공거래장부에 편입하게 된다.(=블록화). 그러나, 해커가 본인 계좌에서 10만원을 친구계좌로 송금했는데 10억원을 송금한 것으로 데이터를 위조했다고 가정해보자. 이러한 경우도 해당 거래에 대한 block-candidate가 생성되고 해당 거래내역의 유효성을 블록체인 네트워크에서 검증을 진행하게 된다. 그러나, 절반이상의 블록체인 사용자가 해당 거래내역은 "내 데이터베이스와 일치하지 않아!" 라고 승인해주지 않아 해당 거래내역은 "폐기"되어 공공거래장부에 등록되지 않는다.


블록체인은 개인과 개인의 거래의 신뢰성을 위해 '은행'이라는 중간자를 두지 않고 '블록체인'의 특성을 이용해 블록체인 네트워크 사용자가 위/변조판단의 참가자가 되어 신뢰성을 입증하게 된다.


3) 블록체인의 신뢰성을 가능하게 하는 기술

블록체인의 신뢰성은 해시함수로 이루어진다. (해시 : 문장 길이에 관계없이 일정한 길이의 값으로 변경) 





내가 친구에게 10만원을 송금하는 거래를 했다고 하자. 그러면 블록체인 네트워크에서는 다음과 같은 일이 발생한다.

1. 장부(b)에 거래내역을 기록하여 저장한다.

2. 장부(b)의 hash값 해시(b)를 얻는다.

3. 이전 블록의 해시값(a+)를 덧댄다.

4. 해시(b), 해시(a+), 장부(b) 를 source로하여 해시값(b+)를 구한다.

5. 최종적으로 블록(B)를 생성하게 되어 블록체인 네트워크에서 검증작업을 거친다.


해시는 블록체인에서 크게 아래와 같은 두가지의 큰 역할을 수행한다.

1. 블록체인 사용자들은 공공거래장부에 누구나 접근가능하다고 했는데 그러면 개인의 민감한 거래내역까지 모두 열람할 수 있는게 아닌가? 거래내역 중 hash만을 참조할 수 있으므로 data confidentiality를 보장한다.

2. 악의적인 해커가 거래내역을 위/변조하더라도 이전장부의 해시값을 포함하여 현재블록의 해시값을 계산하므로 위/변조가 어렵다. 왜냐하면, 

(1) 내가 장부(b)를 수정하면 해시(b)의 값도 같이 변경해주어야 한다. 또한, 해시(b+)도 변경해주어야 한다.

(2) 블록B의 해시(b+)값을 변경하였으므로 해당 값을 참조하는 블록(C)의 해시(b+)도 변경해야 한다.

(3) 블록C의 해시(b+)값을 변경하였으므로 해당 값을 참조하는 블록(C)의 해시(c+)도 변경해야 한다.

(4) 블록D의 해시(c+)값...

즉, 한개의 거래내역을 위조하면 chain으로 연결된 다른 거래내역도 모두 위/변조해야만이 블록체인 네트워크를 해킹할 수 있다.

블록체인 네트워크를 해킹한다는 것은 블록체인에 참여하는 모든 참가자들의 연산력의 합중 과반이상이 되는 연산력을 해커가 지녀야 하는데 사실상 불가능한 일이므로 블록체인은 위/변조가 불가능하여 보안성이 매우 높다.



참고) 보면아는 블록체인