본문 바로가기
Block Chain/블록체인으로 구현하는 사이버 보안

[블록체인] 3장, 블록체인과 이더리움

by Y06 2021. 3. 15.

이번 장에서는 블록체인의 기술적 측면과 비즈니스 적용 사례를 소개한다. 블록체인의 핵심 개념은 금전 거래에서 제3자의 개입을 배제하는 것으로, 사토시 나카모토의 백서 'Bitcoin: A Peer-to-Peer Electroniic Cash System'에서 시작됐다.

 

블록체인이란 무엇인가?

어떤 예방책돠 100%의 안전을 보장하지 못하지만 문제를 제때 발견하기만 했더라도 이러한 계정의 악용을 막을 수 있었을 것이다. 다음과 같은 것을 할 수 있는 기술이 있다면 어떨지 생각해보자.

 

  • 누가 다른 사람의 계정을 들여다보고 변경하려고 하는지 탐지할 수 있다면?
  • 신원이 도용되지 않았음을 확신할 수 있다면?

이것이 바로 블록체인이 하는 일이다. 쉽게 말해서 블록체인은 똑똑하고, 안전하고, 지속적으로 성장하는 데이터베이스다. 블록체인은 시간순으로 데이터가 축적되는 원장으로서, 어떠한 가치 혹은 자산 거래라도 안전하게 기록한다. 블록체인은 피어 투 피어(peer-to-peer) 네트워크를 사용해 독립적인 당사자 사이에 어떤 종류의 가치 혹은 자산이든 전송하는 능력을 제공한다. 블록체인 기술의 초기 목표는 독립적인 두 당사자 간에 은행과 같은 제3자의 개입 없이도 신뢰할 수 있는 금융 거래를 수립하는 것이었다. 그렇지만 나중에 여러 산업에서 공급망 관리, 고객 본인 확인, 데이터 관리 등을 간소화하기 위해 블록체인을 적용했다. 온라인 서비스 사용과 온라인 거래량의 증가에 따라 사용자는 은행과 전자지불대행사 같은 제3자를 믿고 의지할 수밖에 없었다. 이것은 블록체인의 탄생으로 이어졌다.

 

간략한 역사

2009년 사토시 나카모토는 기존 금융 시장의 문제를 해결하기 위한 백서인 'Bitcoin: A Peer-to-Peer Electronic Cash System'을 발간했다. 여기서 다룬 주요 과제 둥 하나는 비트코인의 이중 출금(디지털 통화의 고유한 문제는 금액을 쓴 후에도 같은 금액이 재생산되는 리스크다)을 방지하는 것이었다. 디지털 데이터를 복사하고 공표하는 것은 어렵지 않다 보니 디지털 통화인 비트코인에서 이중 출금이 일어나게 됐고, 이를 방지하기 위해 제안한 해결책이 바로 블록체인이다.

 

블록체인 기초

블록체인은 탈중앙화된 데이터베이스로서 모든 거래의 기록을 읽기 전용으로 안전하게 보존한다. 블록체인은 그것이 데이터베이스가 갖는 탈중앙화된 속성 덕분에 금세 유명해졌다. 블록체인 데이터베이스에서는 민감한 정보가 사이버 범죄에 의해 손상되는 것이 불가능하므로 단일 실패 지점을 감당할 수 없는 조직에게 도움이 된다. 그뿐 아니라 블록체인은 신뢰할 수 있는 관리자 또는 개발자만이 관리하는 것이 아니라 신뢰할 수 없거나 심지어 알려지지 않은 참가자도 잘 관리할 수 있다.

 

누가, 어떻게 블록체인을 사용하는가?

블록체인은 운영 경비를 절감하고, 사이버 보안 관련 문제를 극복하고, 신원 식별 및 접근 관리 솔루션을 전달하고, 민간과 공공 분야의 협력 관계를 구축하고, 더 나은 데이터 관리 시스템을 구현하고, 물류와 공급망 관리를 고도화 · 단순화하고, 보험 판매와 관리 시스템을 연동하고, 더 나은 건강 기록 데이터베이스 시스템을 구현하고, 데이터 도난 또는 스파이 시도로부터 사람들을 지킬 수 있다.

 

인터넷과 블록체인의 비교

인터넷은 TCP/IP와 개방형 시스템 상호연결(OSI) 모델 스택에서 정보를 공유할 목적으로 나온 기술이다.

 

TCP/IP는 인터넷의 첫 프로토콜 모음으로, 비슷한 네트워크 간의 통신을 표준화하기 위해 구축됐다. 한편 국제 표준화 기구(ISO)에서는 벤더, 모델, 기술에 무관하게 시스템 간의 통신을 표준화하는 프레임워크를 제공하기 위해 OSI 모델을 개발했다. 조직들은 클라이언트/서버 통신에서 이 두 모델을 선호하는데, 클라이언트/서버 네트워크는 신뢰성과 안정성을 더하기 때문이다. 고객이 어떤 데이터를 어떻게 사용하는제에 대해 더 나은 통제를 갖는 것이 중요했다. 클라이언트/서버 모델에서 클라이언트는 워크스테이션 하드웨어와 소프트웨어 컴포넌트 같은 로컬 자원 또는 장치를 관리하고, 서버는 하드웨어, 네트워크 통신 채널, 데이터베이스 같은 공유 자원을 관리하는 매우 강력한 시스템이다.

 

피어 투 피어 네트워크에서는 감시, 통제, 단석을 수행하는 중앙 권력이 존재하지 않는다. 제 3자의 개입 없이 어떤 종류의 가치라도 공유할 수 있는 독립적 노드들의 피어 투 피어 네트워크인 블록체인이었다.

 

IP 패킷과 블록의 비교

IP 패킷은 인터넷에서 보낼 수 있는 데이터의 최소 단위다. IP 패킷은 IP 헤더와 페이로드로 구성된다.

 

이 정보를 보내려면 출발지와 목적지 IP 주소가 필요하다. 블록(block)은 이 과정을 위한 필수 요소로서 블록체인을 형성하기 위해 서로 엮인다. 또한 블록은 블록 헤더와 블록 몸체로 이뤄진다. 값이나 거래를 보내기 위해 출발지를 식별하기 위한 디지털 서명과 공개 키를 추가한다.

 

웹앱과 디앱의 비교

웹 앱(web app)은 웹 기반 어플리케이션으로 클라이언트 서버 모델에서 사용자에게 서비스하기 위해 널리 사용된다. 그렇지만 탈중앙화된 애플리케이션(dApp)은 피어 투 피어 컴퓨터 네트워크에서 수행된다.

 

디앱의 프런트엔드는 페이지를 렌더링하는 데 똑같은 기법을 사용하지만 API를 호출하는 대신 블록체인에 연결하는 스마트 계약을 사용한다.

 

어떻게 동작하는가?

  1. 거래 준비: 거래 당사자 A는 수신자의 공개된 주소, 출발지 디지털 서명, 거래 메시지 등의 정보를 포함하는 거래를 일으킨다. 이제 이 거래는 블록체인의 모든 노드에서 사용할 수 있게 된다.
  2. 거래 검증: 블록체인 노드는 무신뢰 모델에서 작동하며, 각 노드(블록체인 클라이언트 소프트웨어를 구동하는 머신)에서는 이 거래를 수신하고 A의 공개 키를 가지고 디지털 서명을 검증한다. 검증이 성공한 뒤, 이 인증된 거래는 원장 큐에게 들어가며 모든 노드가 같은 거래를 성공적으로 검증할 때까지 대기한다.
  3. 블록 생성: 큐에 들어간 거래는 함께 배열되어 네트워크에 있는 한 노드에서 블록이 생성된다. 비트코인 블록체인에서는 비트코인 노드 혹은 채굴자가 수학적으로 복잡한 문제를 풂으로써 블록을 생성할 때 비트코인이 보상으로 주어진다.
  4. 블록 검증: 블록 발생이 성공한 뒤, 네트워크의 노드들은 대다수의 노드가 합의를 이룬 곳에서 반복적인 검증 절차를 하도록 처리된다. 이러한 합의에 도달하는 방법으로는 작업증명, 지분증명, 위임된 지분증명, PBFT 등이 있다. 비트코인은 작업증명을 사용해 합의에 도달하고, 이더리움은 지분증명을 사용한다. 이 매커니즘은 금융적 측면에 영향을 끼치며 전체 거래 운영의 보안을 확보한다.
  5. 블록 추가: 성공적으로 합의에 도달한 후 블록들은 검증을 거쳐 블록체인에 추가된다.

블록체인의 구성 요소

블록체인은 전체 시스템을 근본에서부터 분산적이고 불변(immutable)하며 신뢰성을 갖도록 한다. 블록체인의 각 요소를 알아보자.

 

블록

분산 원장은 데이터베이스에 저장되며 블록체인 네트워크의 각 참가자에 의해 갱신된다. 원장은 일련의 단위를 가리키는 블록으로 표현된다.

 

인터넷에서 정보를 상호교환하는 일반적인 방식은 TCP/IP 스택의 세계에서 정보는 클라이언트/서버 모델을 통해 전달되며, 클라이언트는 중앙집권화된 서버에 데이터를 저장하고 수정할 수 있다. 그러나 데이터베이스를 조작하는 관리자는 정해져 있다. 만약 관리자의 보안이 침해되면 전체 데이터베이스가 변조 또는 삭제될 수 있다. 실제적으로 서버의 역할은 여러 명의 최종 사용자에게 서비스를 제공한다는 목적을 가진다.

 

블록체인 네트워크는 노드라고 불리는 여러 대의 독립적인 머신의 네트워크로 구성된다. 중앙 집중화된 데이터베이스 서버에 모든 정보를 저장하는 전통적인 데이터베이스와 달리 블록체인 노드는 전체 데이터베이스의 사본을 관리 권한을 가지고 유지한다. 한 노드가 동작하지 않더라도 다른 노드에 정보가 남아있다.

 

노드는 블록체인 네트워크에 연결될 때 갱신된 블록체인 원장을 다운로드한다. 각 노드는 검증된 블록을 가지고 원장을 관리 및 갱신한다. 노드는 원장을 유지하고, 해싱 알고리즘으로 연결된 블록의 형태로 원장을 조직화한다.

 

여러 거래가 묶여서 하나의 블록을 형성하는 단순한 방식의 데이터 구조다. 모든 암호화폐에는 각각에 특화된 자체적인 블록체인이 있다.

 

블록은 블록 헤더와 블록 몸체로 이뤄진다.

  • 블록 헤더: 블록 헤더는 블록체인의 특정 블록을 식별하는 데 도움이 된다.

블록은 다음과 같은 요소로 구성된다.

  • 버전: 소프트웨어 혹은 프로토콜 등급을 추적하는 데 사용되는 4바이트 필드
  • 타임스탬프: 블록의 생성시각을 초로 표시하는 4바이트 필드
  • 이전 블록의 해시: 체인에서 이전 블록의 해시를 가리키는 32바이트 필드
  • 논스(Nonce): 작업증명 알고리즘 카운터를 추적하는 데 쓰이는 4바이트 필드
  • 머클 루트 해시: 블록 거래의 머클 트리(Merkle tree)의 루트의 해시로서 32바이트 필드
  • 블록 몸체: 거래 목록으로 이뤄진 부분으로, 비트코인에서는 한 블록이 평균 500건 이상의 거래로 구성된다. 각 거래는 디지털 서명이 이뤄져야 하며, 그렇지 않으면 무효로 간주된다. 이를 위해 실제 거래에서는 공개 키 · 비밀 키를 가지고 알고리즘을 적용하는 데 해시 함수가 사용된다.

암호화 - 디지털 서명과 해싱 알고리즘

암호학의 해싱은 임의의 길이의 입력 스트링으로부터 고정 길이 출력을 생성하는 방법이다. 그 출력을 해시 또는 메시지 다이제스트라 하며 파일, 미디어, 텍스트 등 어떠한 종류의 데이터든 그것의 무결성을 지키도록 설계된다. 특정 입력 혹은 민감한 정보를 보호하기 위해 단 하나의 메시지 다이제스트가 할당된다. 입력 데이터에 대해 작은 변경이 일어나도 그 결과가 엄청나게 달라지므로 데이터가 쌓이는 중에는 물론 변화가 없을 때조차 데이터를 예측하는 것이 거의 불가능하다. 해시 혹은 메시지 다이제스트를 만들어내는 방법은 다양하다. 암호화폐 세계에서 유명한 비트코인은 각 블록에 대해 SHA-256 알고리즘을 가지고 고정 길이 256비트 해시 또는 메시지 다이제스트를 생성한다.

 

전송된 파일이 손상되지 않았음을 보증하기 위해 수신자는 항상 계산된 해시를 비교함으로써 파일 작성자 또는 그 내용을 확인한다. 블록체인에서 해싱은 불변성(immutabilittty) 구현의 근간이다. 해싱 프로세스는 원장의 블록 중 어느 것도 변경 또는 조작되지 않았음을 보증한다.

 

블록체인에서 어떻게 해싱 알고리즘을 사용하는지 살펴보자. 블록체인의 노드는 블록들을 그것이 생성된 순서대로 연결한 형태로 원장을 배열한다. 각 블록은 이전 블록에 의존하도록 돼 있어 원장을 임의로 조작할 수 없다. 달리 말하면 이전 블록의 해시 없이는 새 블록을 생성할 수 없다. 원장에 새 블록을 추가하려면 블록체인의 모든 노드의 승인 및 검증이 필요하다. 따라서 해커가 원장을 조작 혹은 수정하려면 블록체인상의 수백만 대의 노드를 일시에 감염시키고 점거해야만 한다. 제네시스 블록이라고 불리는 최초 블록은 자체적으로 생성되며 자기 자신을 가리킨다.

 

모든 블록은 이전 블록의 해시를 가리키며, 이는 블록체인이 불변성을 가즌 시스템이 되게 하는 근간이다. 블록에 조그만 변화가 있어고 그 결과 해시가 완전히 달라지기 때문에 해커가 블록을 변경하거나 분할하더라도 절대 똑같은 블록체인을 얻을 수 없다.

 

블록체인 기술에서 각 노드는 블록체인 원장을 유지하는 관리자 역할을 수행한다. 누구나 자신의 디지털 신원을 가지고 원장에 거래를 추가할 수 있다.

 

  • 디지털 신원은 1과 0으로 이뤄져 있어 위조될 가능성이 높다. 원장에 부정한 입력을 시도하는 측은 디지털 신원을 희생자 노드에 복사하기만 하면 된다.
  • 블록체인 네트워크는 개인 키와 공개 키 쌍을 사용한다. 각 노드는 자체적인 개인 키와 공개 키 쌍을 갖는다. 블록체인은 디지털 서명과 해시를 이용해 고도의 보안을 유지한다.

합의 - 블록체인의 핵심

합의(consensus)는 블록체인 시스템의 필수 요소이며, 분산 환경에서 동의(agreement)를 달성하는 책임이 있다. 누구나 참여하고 정보를 제출할 수 있기에 각 참가자의 의중을 파악하는 것이 매우 중요하며 누구나 동의할 수 있는 정책을 세우는 것이 부정 시도를 피하는 데 도움이 된다. 이로 인해 실제 통신을 시작하기 전에 모든 것을 고혀하기 위한 시그널링 프로세스와 비슷한 합의 매커니즘이 생겨났다.

 

이더리움

이더리움은 오래된 블록체인 중 하나로, 시스템을 커스터마이즈하는 방법을 가진 플랫폼을 제공한다. 이더리움은 클라이언트 서버 모델에 의존하는 기존 컴퓨터 시스템을 탈중앙화하는 것을 목표로 한다.

 

이더리움이란?

이더리움은 탈중앙화된 네트워크로 분산 환경에서 애플리케이션을 실행할 수 있다. 이 아이디어는 단순히 사용자의 개인적, 업무적 데이터를 단일 엔티티에 저장하고 관리하는 데서 발생하는 완전한 의존성을 피하자는 것이다. 현재의 데이터베이스 시스템에서는 데이터가 온라인에 일단 저장되면 클라이언트는 어떻게 저장되는지, 어떤 보안이 적용되는지, 누가 데이터를 읽을 수 있는지와 같은 사항에 대해 알 수 없다. 이더리움은 각 이해 관계자 또는 당사자가 직접적으로 더 나은 투명성을 얻고 의존성이 전혀 없는 분산된 애플리케이션을 구축하는 플랫폼을 제공한다. 비트코인과 이더리움은 근본적으로 유사성이 있지만 목적과 기능에 있어 큰 차이가 있다.

 

스마트 계약

스마트 계약은 단순히 말해서 작성자가 지정한 동작을 수행하도록 작성된 프로그램이다. 다른 블록체인에서도 계약 코드를 작성할 수 있지만 확장성 있는 처리 능력으로 인해 이더리움을 가장 선호한다.

 

EVM

EVM은 스마트 계약을 구축 및 관리하기 위한 탈중앙화된 런타임 환경이다. 이더리움에서는 프로그램을 네트워크상의 수많은 컴퓨터가 처리한다.

 

스마트 계약은 바이트코드로 컴파일되며 EVM이 그것을 읽고 실행할 수 있다. 모든 노드가 각자의 EVM을 사용해 이러한 계약을 실행한다. 기본 정의에 의해 네트워크의 모든 노드는 해당 네트워크의 거래 사본과 스마트 계약의 내력을 갖는다. EVM은 개발자에 의해 프로그래밍된 규칙에 따라 계약을 실행할 책임이 있다.

 

가스

스마트 계약이 이더리움 네트워크의 모든 개별 노드에서 실행되는 데는 많은 에너지가 든다. 더 많은 에너지를 소모할수록 돈이 많이 들므로 스마트 계약 프로그래밍의 수준에 의존적이다.

 

가스는 계산을 수행한 비용을 가리키는 것으로 개발자가 스마트 계약 코드의 에너지 소비에 대해 이해하도록 돕는다.

 

디앱(dApp)

디앱은 크립토 토큰과 같은 인센티브와 자체적인 합의 매커니즘을 사용한다. 분산 애플리케이션은 모든 상태를 저장하지 않아도 된다. 하지만 이더리움 기반 분산 애플리케이션은 신뢰할 수 있는 상태를 저장하며, 그 결과 최종 사용자에게 경제적인 솔루션이 된다.

 

디앱 클라이언트는 이더리움 블록체인의 클라이언트 인터페이스 외의 프런트엔드를 프로그래밍해야 한다. ㅋ클라리런트는 종종 자바스크립트로 작성되는데 이는 웹브라우저에서 실행 가능하기 때문이다.

 

디앱 브라우저는 이더리움 노드에 인터페이스해서 스마트 계약과 통신하기 위해 디앱 클라이언트를 사용하며, 디앱 클라이언트는 보통 자바스크립트로 작성된다. 디앱은 이더리움 노드와 연결하도록 해주며 접속을 변경하는 간편한 프로세스를 제공한다.

 

공중 블록체인과 사설 블록체인

블록체인은 그 시초부터 비허가형(permissionless)으로 누구나 다른 사람의 허락을 받을 필요 없이 참여하도록 만들어졌다. 우리는 노드 소프트웨어를 다운로드해서 블록체인의 전체 내역을 볼 수 있고 거래를 일으킬 수 있고 정보를 저장할 수 있다. 이것은 최종 사용자에게는 많은 혜택을 가져다 주지만 블록체인을 구현하는 데 관심이 있는 비즈니스에서는 큰 도전이다.

 

공중 블록체인

공중 블록체인에서 블록을 엮는 프로세스는 항상 독립적이고 신회할 수 없거나 심지어 알지 못하는 노드들과 함께 블록을 검증하는 합의 절차에 동참한다. 공중 블록체인에서는 누구나 블록체인 노드 클라이언트를 그들의 시스템으로 다운로드할 수 있으며 누구와도 거래할 수 있고 누구나 블록 탐색기로 거래를 읽을 수 있다. 비트코인과 이더리움은 공중 블록체인의 대표적인 예다.

 

사설 블록체인

사설 블록체인을 구축하는 조직은 허가형(permissioned) 네트워크를 구성한다. 그것은 거래에 대해 더 나은 프라이버시를 제공하도록 구축되며 은행 등의 금융 기관에 적합하다. 공중 블록체인과 달리, 블록체인 노드 클라이언트를 인터넷에 연결한다고 해서 바로 거래를 일으킬 수 있는 것은 아니다. 하지만 컨소시엄 블록체인(consortium blockchain)은 미리 검증된 사람들만 네트워크에 접근해서 가치를 전송할 수 있다.

 

비즈니스에 블록체인 적용

블록체인의 쓰임새

  • 핀테크(FinTech): 금융 조직에서는 주요 보안 문제를 해결하고 사용자 경험을 향상시킬 수 있는 신기술을 항상 필요로 한다. 신기술 도입과 관련한 다운타임(서비스 불능)의 위험을 줄이기 위해 금융 조직에서는 타사의 피드백과 사례를 확보할 때까지 기다리는 것을 선호한다.
  • 인슈어테크(InsurTech): 일반적으로 보험 증권을 작성함에 있어 브로커, 보험 회사 영업사원, 변호사와 같은 제3자가 필요하다. 블록체인을 이용하면 제3자의 개입을 배제하고 계약자 스스로 자신의 파일을 작성할 수 있다.
  • 헬스케어: 헬스케어 운영은 표준적인 비즈니스 운영보다 한층 어렵다. 헬스케어에서의 데이터 유출과 램섬웨어 사고의 증가로 인해 기초 계층에서부터 보안을 제공하는 기술을 갖추는 것이 매우 중요해졌다.
  • 사이버 보안: 사이버 점죄자들은 더욱 고도화되어 가며, 조직은 그들로부터 거래 비밀, 지적 재산, 고객 정보 같은 주요 가산을 지키기 위한 경주를 한다. 모든 조직은 나름대로의 사이버 보안 솔루션을 이용하고 있음에도 매년 수백만 달러를 잃고 있다. 블록체인은 탈중앙화되고 불변하며 추적 가능하므로 보안의 여러 과제를 근본적으로 해결한다.

출처: 블록체인으로 구현하는 사이버 보안, 라즈니쉬 굽타 지음