성수동 힙스터의 스타트업 이야기

블록의 구성 요소를 통해 알아본 블록체인 해킹이 어려운 이유 본문

Ⅱ. 스타트업 인사이트/스타트업 테크 설명서

블록의 구성 요소를 통해 알아본 블록체인 해킹이 어려운 이유

성수동 힙스터 2022. 7. 20. 23:50
반응형

블록의 구성 요소를 통해 알아본 블록체인 해킹이 어려운 이유

지난 포스팅에서는 웹 3.0의 핵심 기술인 '블록체인' 기본 개념과 해시함수에 대해 살펴보았다.
이번 포스팅에서는 블록체인을 구성하는 핵심 요소인 '블록'이 어떻게 이루어져 있는지 알아보고, 블록과 블록을 연결시키는데 '시함수(Hash function)'가 구체적으로 어떻게 활용되는지에 대해 조금 더 자세히 살펴보고자 한다.

< 목 차 >

1. 블록(Block)의 구성 요소
1) 블록 바디(Block Body)
2) 블록 헤드(Block Head)
3) 블록 해시 (Block Hash)

2. 블록체인 해킹이 어려운 이유

1. 블록(Block)의 구성 요소

블록이 어떻게 만들어지는지 알기 위해서 우선 블록이 어떤 구성 요소로 이루어져 있는지 살펴보자. 하나의 블록(block)은 아래와 같이 크게 바디(Body)헤더(Header), 블록 해시(Block Hash) 부분으로 구분 지을 수 있다. 블록을 이루는 세 가지 구성 요소에 대해 각각 알아보도록 하자.

블록의 구성 요소 (사진 출처: 한국정보통신기술협회)

1) 블록 바디(Block Body)

· 바디(Body) : 블록에 담기는 일정 시간 동안의 거래 기록(Transactions)을 의미한다.

블록 바디(= 일정 시간 동안의 거래 기록)

2) 블록 헤더(Block Header)

· 헤더(Header): 블록의 헤더는 단일 블록을 이전 블록과 연결시키기 위한 여러 가지 정보를 포함하고 있다.
즉, 블록 헤더에는 단일 블록을 이전에 생성된 블록과 연결시키기 위한 1) 소프트웨어의 버전, 2) 이전 블록의 해시값, 3) 블록 생성 시각, 4) 난이도(bits), 5) 논스(Nonce) 6) 머클 루트(Merkle root)의 총 6가지 정보가 포함되어 있다. 각각의 정보가 무엇을 의미하는지 간단히 살펴보자.


< 헤더가 포함하는 6가지 정보 >

1) 소프트웨어의 버전 : 이 블록 헤더를 만든 비트코인 프로그램의 버전 정보
2) 이전 블록의 해시값(previous block hash) : 직전에 생성된 블록의 정보를 암호화한 해시값
3) 블록 생성 시각(Time) : 해당 블록이 생성되는데 걸리는 대략적인 시간. 타임스탬프는 유닉스 기준일자로 표시되며 1970년 1월 1일 자정부터 경과한 시간을 초단위로 계산한 값이다.
4) 난이도(bits) : bits는 난이도 해시 목푯값을 의미하는 지표로 비트코인 채굴(mining) 난이도를 나타낸다.
5) 논스(nonce) : 블록을 만드는 과정에서 목푯값 이하의 블록 해시를 찾기 위해 임시로 사용하는 숫자
6) 머클 루트(merkle root): 블록의 바디 부분에 저장된 모든 거래정보(transactions)를 암호화하고 합치는 과정을 반복해서 얻은 최종 해시값


블록 헤드에 포함된 6가지 정보 중에 '머클 루트'에 대해 조금 더 자세히 살펴보자.

◆ 머클 루트의 생성 과정
머클 루트에 대해 이해하기 위해 머클 루트가 어떻게 만들어지는지 그 생성 과정을 단계별로 알아보자.
[Step 1] 먼저 블록 내의 모든 거래 정보들을 SHA256 형태의 해시값으로 변환한다.(이 해시값을 리프(leaf) 데이터라고 부른다.)

[Step2] 가장 가까운 노드 2개의 리프 데이터를 한쌍으로 합친 후 연결하여 해시값을 구한다.

[Step 3] 쌍을 지을 수 없을 때까지 반복하여 해시값을 구한다. 이때 최종적으로 남는 하나의 블록은 모든 거래를 합친 해시값을 포함하고 있으며 이 최종 해시값이 바로 머클 루트다. 머클 루트는 블록의 헤더(header)에 포함된다.

머클루트 생성 과정

◆ 머클 루트의 장점
위와 같은 과정을 통해 생성된 머클 루트는 다음과 같은 2가지 장점을 가진다.  
1. 특정 거래 내역을 증명하기 위해 모든 거래 내역을 검색할 필요가 없다.
머클 트리의 머클 루트는 라이트 노드(Light node)와 같은 역할을 한다. 머클 루트 값만 알면 최소한의 정보만으로도 필요한 정보를 블록에서 가져올 수 있다. 블록체인 네트워크 용량 중 큰 부분을 차지하는 거래내역을 조회하지 않고 32바이트에 불과한 값 하나로 거래내역 검증을 간편하고 확실하게 할 수 있기 때문에 사양이 낮은 기기들의 네트워크 접근성이 높아지는 동시에 탈중앙화를 통한 네트워크 안정성 향상에 기여한다.


2. 거래내역을 위변조 하려는 잘못된 해시값이 검출되는 경우 네트워크 접속을 차단할 수 있어 보안성이 높다.
머클 루트는 모든 거래내역들이 합하여 해시화된 값이므로 하나의 거래내역에 작은 변화가 생겨도 상위 해시값이 모두 변하기 때문에 위변조가 불가능에 가깝다.

3) 블록 해시(Block Hash 또는 Hash of the block)

· 블록 해시(Hash of the block) : 블록 해시특정 블록을 다른 블록과 구분 짓는 식별자 역할을 하는 블록 이름 정보를 말한다. 블록 해시는 블록 헤더의 6가지 정보*를 입력값으로 하고, 여기에 SHA256 해시함수를 2회 적용해서 계산되는 값으로 32바이트의 숫자 값이다.

블록 해시 (사진 출처: 한국정보통신기술협회)

여기서 주의할 점은, 이름이 블록 해시(Block hash)지만, 그 값은 블록 전체를 해시한 값이 아니라, 블록 헤더만을 해시한 값이라는 것이다. 다음 블록에 이전 블록의 블록 해시가 포함되어 가상의 고리(Chain)로 연결된 구조를 가진다. 예를 들어 블록 1 다음에 블록 2가 생성되었다면, 블록 2에는 블록 1의 헤더를 해시한 값, 즉 블록 1의 블록 해시가 포함된다.
블록 해시를 구하는 과정을 정리하면 표식화하면 다음과 같이 정리할 수 있다.

블록해시 구하는 과정

2. 블록체인 해킹이 어려운 이유


이전 포스팅에서 블록체인의 개념에 대해 설명할 때, 블록체인은 데이터(거래기록)의 편집/삭제가 불가능하고 데이터를 추가만 할 수 있는 데이터 베이스(DB)라고 설명한 바 있다.

그렇다면 왜 블록체인은 완료된 거래기록의 변경(=편집/삭제)이 불가능하고 '추가'하는 것만 가능한 것일까? 위에서 살펴본 블록 해시의 생성 과정을 다시 한번 상기시켜 보면 그 이유를 알 수 있다.

완료된 거래 기록의 변경(편집 및 삭제)이 불가능한 이유

위 그림을 보면 알 수 있듯, 개별 거래 기록해시값은 해당 거래가 포함된 블록의 머클 트리 해시(merkle hash) 계산의 입력값으로 사용되고, 머클 트리 해시는 블록 해시(block hash)의 입력값으로 사용된다.
따라서, 거래 정보가 변경되면 머클 트리 해시(merkle hash)가 변경되고, 머클 트리 해시(merkle hash)가 변경되면 블록 해시(block hash)가 변경되고, 블록 해시의 변경은 다음 블록의 블록 해시 변경으로 연쇄적으로 이어지게 된다.

그리고 블록 해시는 '작업 증명(PoW)'이라는 노가다를 통해 해답(nonce값)을 찾아야 구할 수 있으므로, 거래 정보를 변경한 블록부터 그 이후의 모든 블록을 순서대로 다시 채굴해야 한다. (작업 증명에 대해서는 다음 포스팅에서 자세히 설명할 예정이다.)

블록 하나를 채굴하는데 평균 10분이 소요되고, 2022년 7월 20일 현재 기준 총 블록 수가 약 74만 5764블록이므로, 제네시스 블록에 포함된 거래를 변경하면 약 746만 분(= 약 14.2년)의 시간이 소요된다. 그 14년의 시간이 흐르는 동안에도 새로운 블록들이 평균 10분마다 하나씩 계속 생성되므로, 이를 모두 뒤집는 것은 사실상 불가능하다.

즉, 완료된 거래 정보를 변경하려면, 변경하려는 거래 정보가 포함된 블록부터, 그 이후의 모든 블록까지 다시 채굴해야 하는데 여기에는 많은 시간이 소요된다. 심지어 그동안 전 세계의 모든 노드에 새로운 블록이 계속 추가되므로, 완료된 거래 정보의 변경(편집/삭제)은 현실적으로 불가능에 가깝다고 볼 수 있다.

따라서, 블록체인은 완료된 거래기록의 변경(삭제 또는 수정)은 현실적으로 불가능하고, 거래기록의 추가만 가능한 것이다.

참고자료: 블록체인 해설서, 만화로 배우는 블록체인, 블록체인 혁명, 블록체인 비즈니스의 미래, 유튜브 채널 '노마드 코더' 블록체인 영상 시리즈


이번 시간에는 블록을 이루는 세 가지 구성요소에 대해 살펴봤다. 그리고 블록체인의 해킹이 현실적으로 불가능에 가까운 이유에 대해 블록 해시 생성 과정을 통해 알아보았다.


다음 시간에는 암호화폐 채굴(mining)작업 증명(Proof of Work)에 대해 알아볼 예정이다. 그리고 실제로 암호화폐 채굴을 통해 생성된 블록 정보를 확인하는 방법에서도 살펴보고자 한다.




반응형
Comments