남산강학원

본문 바로가기
남산강학원을 즐겨찾기에 추가
사이트 내 전체검색

말과 글

자연학 리포트 ┃#2 블록체인은 왜 안전한가

게시물 정보

작성자 철현 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일18-04-18 16:36 조회199회 댓글0건

본문






블록체인은 왜 안전한가?



“블록체인은 ‘블록’이라는 확장 체인에 거래기록을 기입하는 분산형 전자시스템(distributed electronic system)으로 변형하기가 극도로 어렵다. 만약 하나의 블록에 침임하려면, 해커는 그것과 연관된 모든 블록들을 몰래 건드려야 하는데, 그것은 매우 힘든 일이다.”


지난번 자연학 리포트 때 블록체인에 대한 이야기가 위와 같이 잠깐 나왔더랬다. 이번 화에서는 그 이야기에 대해 더 자세하게 공부해보고자 한다. 블록체인이 보안면에서 커다란 안정성을 가지고 있다고 하는데, 이게 어떤 점에서 그런지, 블록체인의 작동원리를 통해 알아보려 한다. 

주로 강정수의 <블록체인에 대한 쉬운 이해>(출처: http://slownews.kr/67899)를 읽고, 참고&발췌하고, 그 밖의 정보들은 네이버 검색을 이용했습니다^^



행 없는 세상을 꿈꾸는 블록체인

블록체인 기술 옹호자들은 앞으로 은행이 없어질 것이라 예견한다. 은행이라는 중개자 없이도 블록체인 기술을 통해 돈의 거래가 가능하다는 것이다. 은행을 절대적으로 신뢰하며 돈을 예금하기도 하고, 자신의 통장에 있는 돈을 다른 이에게 보내는 우리로선 알쏭달쏭한 이야기다. 또, 보안면에서 블록체인 기술이 은행보다 더 뛰어나다고 한다. 이것이 어떻게 가능한 것일까? 왜 블록체인이 은행보다 더 안전한 것일까? 


우선 우리가 은행을 통해 어떻게 거래하고 있는지 살펴보고, 그 이후에 블록체인 기술을 통해 거래가 어떻게 이루어지는지 살펴보도록 하자. 



은행 거래(transaction)의 성사 


 김철수 : 엄마! 돈떨어졌어요! 30만원만 부쳐주세요. 

 정영희 : 그래 송금하마! 


대화가 끝난 후,  철수의 어머니, 정영희는 주거래 은행인 KEB하나은행 충무로지점에 전화를 걸어 은행담당자에게 이체를 부탁할 것이다. 자신의 통장에서 아들 김철수의 통장으로 30만원을 보내달라고 은행 담당자에게 부탁하는 것이다. 그 담당자는 “바로 이체하겠습니다”라고 답할 것이다. (이체 방법에는 여러 가지 방법이 있겠다. 휴대폰앱, 휴대폰뱅킹, ATM기 등등. 이 방법 모두도 은행이라는 제 3자를 거친다는 점에서 동일하다.)


그러면 은행의 담당자는 어머니 정영희의 계좌 또는 장부(Ledger)를 열어, 그 장부에 잔고가 30만원이 넘는지 확인하고, 잔고가 충분함을 확인한 후에 어머니 정영희의 계좌(혹은 장부)에 이렇게 기록한다. 이를 거래가 성사되었다고 한다. 여기서 ‘돈을 이체하는 일’은 바로 ‘장부에 기록’하는 일이다.

                        


주거래 통장                              정영희 

123-12345678-01-002    



2018.4.16.                              김철수      - 300,000원 

                                          잔액 1,234,567원

 바로 이렇게 장부에 기록될 것이다.                       



이러한 거래는 아들 김철수, 어머니 정영희 사이에서 일어났고, 은행을 이를 매개했다. 재밌는 점은 어머니와 아들 사이에는 손으로 만져지는 무언가를 주고받은 일이 없었다는 것이다. 어머니가 아들에게 ‘5만원권 6장’을 준 것이 아니었다. 즉 물리적 실체가 있는 거래가 이루어진 것이 아니다. 어머니 정영희씨는 자신의 통장에서 빠져나간 돈이 아들에게 갔다고 어떻게 확신할 수 있는가? 은행장부에 이렇게 기록된 것만을 보고 송금되었다고 믿을 수 있을까? 은행이 이렇게 기록만 해놓고 아들에게 갈 돈을 빼돌릴 수도 있지 않은가? 그렇지 않더라도 실수를 저지른다면? 어머니의 계좌에 ?50만원이라고 기록한다면? 혹은 누군가가 은행의 전산망을 몰래 침입해서 여러 사람들의 거래장부를 조작한다면 어떻게 될까?  


하지만 이들은 모두 은행을 신뢰한다. 은행에 대한 믿음과 신뢰 없이 은행을 의심한다면 절대 거래가 성립될 수 없다. 은행(담당자)은 중개자로서 두 명의 계좌(장부)에 ‘기록행위’를 함으로써 거래를 성사시킨다. 이렇게 우리는 은행이라는 제 3자에 의존함으로써 거래에서 신뢰를 확보하고 거래를 성사시키는 것이다. 이것이 우리에게 익숙한 은행거래의 방식이다. 여기서 은행고객들은 은행이라는 제 3자에게 자신들의 장부기록(거래기록)을 관리하도록 하는 것이다. 즉 은행고객들은 은행이라는 매개자를 갖는 장부시스템을 이용하는 것이다. 

 


블록체인(blockchain)의 작동 원리

앞서 은행을 끼고 여러 사람들이 거래를 했다. 즉 은행(제 3자)의 도움을 통해 자신들의 거래기록을 관리했다. 하지만 블록체인은 거래기록을 관리하는데서 은행과 같은 제 3자의 도움을 받지 않는다. 즉 블록체인은 중개인의 도움없이 거래기록을 관리하는 장부 시스템이다. 



이런 장부시스템이 어떻게 가능할까? 과연 안전한 것인가? 

예전에 은행의 장부시스템 하에서 거래기록의 기입이 잘못되었다면, 잘못된 것에 대해 국가와 은행, 그리고 여러 법률들이 이에 책임지고 보상해 줄 것이다. 엄마 통장에는 -30만원이 찍혔는데, 아들 통장에는 +25만원이 찍혔다든지 하는 일이 발생한다면, 이를 은행이 책임질 것이다. 또 은행 직원이 돈을 횡령하기 위해 장부를 고의로 조작한다면, 금융관련 법이 그를 처벌할 것이다. 블록체인 기술은 이러한 보장 없이도 안전하다고 얘기된다. 이것의 안정성을 이해하기 위해서 블록체인이 어떻게 성립되는지 좀더  살펴보도록 하자. 


블록체인이 작동하기 위해서는 이에 참여하는 사람들이 많아야 한다. 반드시 3명 이상이어야 한다. 예를 들면 5명이 있다고 하자. 이들을 1번, 2번, 3번, 4번, 5번라고 부르자. 이제 이들은 상자 하나와 여기에 넣을 종이들을 갖게 된다. 이 종이에는 거래기록이 적힐 것이다. 종이 한 장에 12개의 거래기록을 적을 수 있다면, 12개의 기록이 적힌 종이는 상자에 넣어지고, 13번째 거래는 다른 종이에 기록될 것이다. 이렇게 5명의 참여자가 거래기록을 기록할 종이와 이를 넣을 상자를 갖는다면, 블록체인을 작동시킬 준비가 끝난 것이다. 여기서 거래가 기록된 종이 한 장을 블록(block), 복수의 종이를 담는 종이 상자를 블록체인(blockchain)이라고 한다. 즉 거래 내용이 담긴 블록(Block)을 사슬처럼 연결(chain)한 것을 블록체인이라 한다.



채굴, 봉인암호를 찾아라

 여기서 거래는 어떻게 이뤄질까? 1번 사람이 5번 사람에게 40만원을 이체한다. 만약 은행이 있다면, 1번은 은행담당자에게 5번에게 40만원을 이체해달라고 부탁할 것이다. 하지만 블록체인에서는 블록체인 참여자들에게 이렇게 공표한다. “저는 1번입니다. 제가 5번에게 40만원을 이체합니다. 모두들 종이를 꺼내 1번이 5번에게 이체한다고 기록해주세요” 그러면 블록체인 참가자 모두는 1번이 40만원을 가지고 있는지 살펴보고, 이를 확인하고 난 뒤, 각자 자신의 종이에 ‘1번이 5번에게 40만원 이체’라고 기록한다. 이렇게 참여자 모두가 1번과 5번 사람의 거래를 기록하는 방식을 통해 거래가 성사된다. 이것이 블록체인의 거래이다.


이런 식으로 블록체인 참여자 5명 간의 거래행위는 5명 모두의 종이에 기록된다. 거래기록 많아지면, 다른 종이들을 쓰게 될 것이고, 앞선 기록을 적은 종이들을 상자 안에 쌓이게 될 것이다. 하지만 거래장부들을 그냥 넣으면 안 된다. 봉인해 넣어야 한다. 봉인은 종이상자에 종이를 보관하는 행위로, 한번 봉인되면, 장부의 기록은 수정될 수 없고, 상자를 벗어날 수 없다. 또한 참여자 5명은 모두 동의하는 암호를 적는다. 이 암호는 봉인번호다.




여기의 긱블머신은 블록체인에서의 해시함수와 같다. 


여기서 암호(봉인번호)는 어떻게 만들어질까? 여기에는 해시함수가 쓰인다. 해시 함수는 임의의 길이의 입력 메시지를 고정된 길이의 출력값으로 압축시키는 함수이다. 데이터의 무결성 검증, 메세지 인증에 사용한다. 해시함수는 두 가지를 만족해야 한다. 그 중 하나는 비가역성이다. 주어진 h에 대해서 H(x)=h를 만족하는 h을 ‘계산적’으로 찾기 힘들어야 한다. 우리는 함수하면, f(x)=3x처럼 입력값을 보면 출력값이 뻔히 예측되는 함수를 봐왔을 것이다. 하지만 해쉬함수는 그런 것이 다 헝클어(hash)져 있다. 어떻게 입력값을 넣을 때, 출력값이 나오는지를 알 수 없다. 8431을 입력해서 3c7fv이 나왔다고 해보자. 여기서 출력값이 3c7fv일 때 어떤 값을 넣어서 출력값이 3c7fv이 되었는지, 해시함수는 얘기할 수 없다. 반면 8431를 입력하면 변함없이 3c5fv가 나온다. 또 하나는 충돌 회피성인데, 이는 같은 출력을 내는 두 개의 서로 다른 입력(이를 충돌이라 한다)을 계산적으로 찾기가 힘들어야 하는 것이다. 





이런 희한한 수학 머신을 써서 블록체인 참여자들은 서로간의 신뢰를 만든다. 참여자들은 해쉬함수를 통해 스스로에게 과제를 던진다. 출력값을 정해놓고, 이에 해당하는 입력값을 찾으라는 미션을 던지는 것이다. 해시함수의 작동규칙을 절대 모르기에,, 여기에 숫자를 무작위적으로 넣어야 한다. 그래서 암호봉인 작업에 입력을 자동화한 무수한 컴퓨터가 쓰인다. 이렇게 해서 입력값이 찾아지면, 이것이 바로 암호, 봉인번호이다. 


서로에게 제출된 미션을 통해 봉인암호를 만드는 것, 앞에서는 거래기록으로 가득찬 종이 한 장을 상자에 넣어 봉인하는 것을 블록체인에서는 채굴(mining)이라고 한다. 이런 봉인, 채굴의 작업은 고되기에, 보상이 주어진다. 이 보상 중 하나가 바로 그 유명한 비트코인인 것이다.봉인번호를 먼저 찾아낸 참여자들은 다른 참여자들에게 봉인 번호를 공표한다. 그들은 이를 해쉬함수에 넣어 이 번호가 맞는지 확인해보며, 맞으며 이것이 봉인번호가 된다.  


조작하기엔 너무나 힘든

여기서 봉인번호는 매번 앞서 봉인된 거래장부에 의존하게 된다. 만약 첫 번째 봉인번호가 이와 같은 미션[ ?->해쉬함수->11111]을 통해 84828로 나왔다면, 다음번에 봉인될 거래장부의 봉인번호는 [? + 84828 ->해쉬함수->11111]라는 미션을 풀어야 한다. 여기서 만약 53854가 나왔다면, 세 번째 장부의 암호는 [ ? + 84828+53854 ->해쉬함수->11111]을 풀면서 채굴되어야 한다. 이렇게 장부(블록)들의 연쇄를 통해 암호를 만드는 것은 이미 봉인되어 저장된 장부의 조작을 막기 위해서다. 누군가 봉인된 장부의 거래를 조작하려면, 그 종이보다 앞선 모든 종이를 조작해야 할 것이다. 하나의 봉인번호를 알아내는 것도 매우 어려운 일이다.^^;; 또 다른 종이들을 조작하려면 그에 해당하는 복수의 봉인번호를 새롭게 찾아야한다. 게다가 그동안 쌓인 장부의 수가 많다고 생각해보자!! 이는 현재의 컴퓨터 수준으로 볼 때 불가능한 것이다.

 

 이렇게 블록체인 네트워크에 참여하는 참여자가 데이터를 분산하여 저장하는 데이터 분산처리기술을 통해 블록체인 기술은 보안면에서 안정성을 확보하고 있다. 거래에 참여하는 모든 참여자들에게 거래내역을 보내주며, 거래 때마다 이를 대조해 데이터 위조를 막는 것이다.  (끝)

  






게시글을 twitter로 보내기 게시글을 facebook으로 보내기 게시글을 Me2Day로 보내기 게시글을 요즘으로 보내기 게시글을 구글로 북마크 하기 게시글을 네이버로 북마크 하기

댓글목록

등록된 댓글이 없습니다.