[IT-Security] Chapter 4. Blockchain Technology

MJ·2023년 2월 10일
0

IT Security

목록 보기
4/9

블록체인이란?

블록체인이란 다수의 거래내역을 묶어 블록을 구성하고, 해시를 이용하여 여러 블록들을 체인처럼 연결한 뒤, 다수의 사람들이 복사하여 분산 저장하는 알고리즘이다.

블록체인의 장점

  • decentralization 탈중앙화
  • transparency 투명성
  • immutability 불변성
  • redundancy 중복성

데이터의 위변조가 불가능하여 권위있는 중개기관이 없더라도 신뢰할 수 있는 안전한 거래와 데이터처리를 할 수 있다.

블록체인이 쓰이는 곳

  • Smart Contracts:블록체인 기술은 암호화폐에만 사용할 수 있는 것이 아니라 위변조 방지가 필요한 각종 계약서 작성에 활용할 수 있다. 특히 일정한 조건이 만족되면 자동으로 계약 내용이 실행되도록 하는 스마트 계약 기능에 사용할 수 있다.
  • Cryptocurrencies
  • Electronical Auction
  • Supply Chain: 거래내역의 위변조가 어려운 블록체인 기술을 활용하여 물류관리 시스템을 운영할 수 있다.
  • Identity Management:블록체인에 기록된 개인 신원 데이터는 위변조가 불가능하기 때문에 전 세계적인 범위에서 작동하는 글로벌 신원확인 시스템에 사용될 수 있다.
  • Diamond Trade: 에버레저(EverLedger)는 전 세계 120만 개가 넘는 다이아몬드에 대해 광산에서 채굴될 때부터 감정회사와 도매상, 소매상을 거쳐 소비자에게 전달될 때까지 모든 거래내역과 다이아몬드의 일련번호, 색, 투명도, 컷, 캐럿, 크기 등 제품 상세정보를 블록체인에 기록하여 관리하겠다고 밝혔다.
  • Internet of Things
  • Government: 블록체인 기술을 활용하여 정부, 기업, 교육기관, 의료기관 등에서 발급하는 각종 문서를 위변조 없이 안전하게 관리할 수 있다. 개별 문서에 담긴 내용을 해시로 변환하여 블록체인에 저장한 뒤 여러 곳에 분산 저장하면, 해당 문서에 대한 위변조가 사실상 불가능해진다.
  • Health
  • Media
  • Finance

블록체인의 종류

Public Blockchain :

모든 사람이 관여할 수 있다. 권위 있는 조직의 승인이 없이 누구든지 인터넷에 연결된 PC, 노트북, 스마트폰, 서버컴퓨터, 채굴기 등 다양한 컴퓨터 장비를 이용하여 블록체인 네트워크에 참여할 수 있다.
이러한 블록체인 네트워크에 참여하는 개별 컴퓨터를 노드(node)라고 부르는데, 각 노드들은 블록체인에 저장된 데이터를 복사하여 저장하고, 해시 연산을 통해 새로운 블록의 생성에 참여할 수 있다. 또한 각 노드들은 언제든지 자신의 컴퓨터를 블록체인 네트워크에 연결하지 않고 접속을 차단함으로써 자유롭게 탈퇴할 수 있다. 블록체인 네트워크에 참여 또는 탈퇴하는 것은 권위 있는 조직의 승인이 필요 없이, 전적으로 해당 노드 참여자의 자유로운 의사에 따라 결정할 수 있다.
비트코인, 이더리움, 비트코인캐시, 이오스, 스텔라루멘, 스팀, 모네로 등 대부분의 암호화폐는 퍼블릭 블록체인 방식으로 운영된다

Private Blockchain :

프라이빗 블록체인(private blockchain)이란 미리 정해진 조직이나 개인들만 참여할 수 있는 폐쇄형 블록체인 네트워크를 말한다. 사적 블록체인, 폐쇄형 블록체인, 허가형 블록체인, 기업형 블록체인 또는 엔터프라이즈 블록체인(enterprise blockchain)이라고 한다. 프라이빗 블록체인에 참여하려면 반드시 권위 있는 조직의 승인을 받아야 한다. 프라이빗 블록체인 운영자의 승인을 받지 못한 조직이나 개인은 해당 블록체인 네트워크의 운영에 참여할 수 없다.

Hybrid Blockchain :

하이브리드 블록체인(hybrid blockchain)이란 퍼블릭 블록체인과 프라이빗 블록체인을 서로 연결하거나 섞은 혼합형 블록체인을 말한다. 더블체인(double chain)은 퍼블릭 블록체인과 프라이빗 블록체인을 연결한 체인이다.
컨소시엄 블록체인(consortium blockchain)이란 동일한 목적이나 가치를 가지고 있는 다수의 기업과 단체들이 하나의 컨소시엄을 구성하고 그 안에서 작동하도록 만든 블록체인이다. 예를 들어 리눅스재단이 주도하고 IBM 등이 참여하여 만든 하이퍼레저 패브릭(hyperledger fabric) 프로젝트가 있다.

블록체인의 구성요소

  1. Cryptography
  2. P2P Network
  3. Validiay Rules
  4. Consensus Mechanism
  5. Ledger

블록체인 실행도

새로운 노드 추가

  • 새로운 노드를 추가하기 위해선 노드를 추가하고자 하는 장치가 인터넷에 연결이 되어있고 블록체인을 네트워크에 유지시켜놔야 한다.
  • 요구조건:
    - transaction를 송신/수신 하기 위해 public address와 함께 private/public key 쌍을 알아야 한다.
    • 블록체인에 이미 존재하는 node가 필요하다

Public Address

  1. 사용자가 wallet에 접근한다.
  2. wallet에서 16진수로 된다 256bit 난수를 생성하여 private key를 생성한다.
  3. private key에서 Eliptic Curve Cryptography를 사용하여 Public key를 생성한다.
  4. Public key에서 hashing, RIPEMD-160, check encoding을 실행하여 Public Address를 얻는다.

트랜잭션

트랜잭션이란 여러개의 작업을 하나로 묶은 일련의 실행유닛이다.

더 이상 쪼갤 수 없는 업무 처리의 최소 단위!

각 트랜잭션들은 특정 작업으로 시작해서 연결된 모든 작업을 완료해야 정상적으로 종료되게 된다. 만약 트랜젝션에 속한 여러 작업 중 하나의 작업이라도 실패하는 경우 모든 트랜젝션이 실패한 것으로 간주한다.

비트코인의 트랜잭션 구조

  • 버전번호: 채굴자, 노드들이 트랜잭션 처리시 지켜야 할 규칙 지정
  • 입력 카운터: 트랜잭션에 포함된 입력의 개수
  • 입력 리스트: 블록의 첫 트랜잭션은 코인베이스 트랜젝션이 된다. 입력 리스트에는 최소 하나 이상의 트랜잭션 입력이 포함된다.
  • 출력 카운터: 출력의 갯수를 의미
  • 출력 리스트: 트랜잭션에 포함되는 출력 리스트
  • 로크 시간: 트랜잭셔닝 유효해지는 최단 시간을 정의

Merkel Tree

블록안에 있는 트랜잭션은 Merkel Tree 안에 저장된다.

Merkel Tree는 이진트리라는 이름으로도 알려져 있다. 이 때 이진트리는 쉽게 말해 거래를 두 개씩 묶는다는 뜻이다.

이렇게 두 개씩 트랜잭션을 묶어서 올라가게 되면 거래량이 기하급수적으로 늘어나도 특정 거래를 찾는 경로는 단순하다는 이점이 있다.

거래의 건수의 N이 증가할 때마다 특정 거래의 경로를 찾는 수는 log2(N)log_2(N) 으로 늘어나기 때문이다.

거래 내역을 위조하려는 시도가 있어도 머클 트리의 경로를 따라가면 해시값이 다른 것이 나오게 되어 거래의 위변조도 쉽고 바르게 알 수 있게 되고 이를 방지 할 수 있다.

블록

  • 루트해시란?
    모든 하위 hash들을 다시 hash 함수로 변환한 최종 hash 값. 256bit로 고정되어 있다. 하나의 block에는 모조건 하나의 root hash가 있는데 이때 하위hash가 하나라도 변경되면 root hash도 바뀌게 된다.
  • 왜 이전 hash에 연결하는것이 힘들까?
    새로운 블록을 기존 블록에 연결하기 위해선 hash값을 찾아야 하는데 새로운 블록의 hash는 반드시 미리 정해진 목표값보다 작아야 하기 때문이다. 이 해위를 작업 증명(PoW)라고 한다. 이것의 대가로 일정한 개수의 암호화폐를 지급받는 것을 채굴(mining)이라고 한다.

Consensus (합의)

블록체인의 데이터는 중앙화된 서버 대신 전세계에 흩어져 있는 수많은 노드에 보관되기 때문에 각각의 노드들은 블록에 기록하는 데이터가 위변조되지 않은 원본이라는 것을 상호간에 합의하는 과정이 필요하다.

만약 블록을 생성하는 특정 노드가 악의를 품고 조작된 데이터를 저장하거나 네트워크에 전파한다면 시스템 전체의 신뢰도가 떨어지게 된다.

이런 악의적인 상황이 발생하더라도 네트워크를 올바른 방향으로 이끌고자하는 다수의 노드들이 상호 검증을 거쳐 올바른 블록 생성을 이끌어내는 프로세스와 알고리즘을 바로 Consensus라고 한다.

  • PoW (Proof-of-Work) : 작업증명
    블록 생성 시간동안 가장 많은 해시파워를 제공한 노드가 블록을 생성할 수 있도록 설계한다.

    컴퓨팅 파워를 통해 블록체인 네트워크에 전송된 암호화된 거래정보를 푼 뒤, 새로운 블록을 체인에 연결하는 작업을 하는 것을 의미한다.

    현재 높은 시장 가치를 형성하고 있는 주류 코인들이 채택하고 있지만 높은 전력소모를 통해 자원을 낭비한다.

    그러나 보안성은 매우 강력하다.

  • PoS (Proof-of-Stake) : 지분증명

    코인을 보유한 지분율에 따라 새롭게 생성하는 코인을 분배받는 방식의 컨센서스 알고리즘이다.

    PoW와는 다르게 일정 수 이상의 코인을 보관하고 있는 지갑을 블록체인 네트워크에 연결시켜 놓기만 하면 보상을 받을 수 있다.

    해시파워가 많이 필요하지 않으므로 경제적이고 친환경적이며 블록 생산자의 탈중앙화로 안정성을 확보할 수 있다.

    그러나 보안성이 강한지에 대한 여부가 아직까지 정확하게 검증되지 않았고 지분이 많은 이른바 고래들이 권역을 독점할 가능성이 존재한다.

  • DPoS (Delegated Proof-of-Stake) : 위임된 지분증명

    DPoS는 PoS 컨센서스 알고리즘을 변형한 형태로 위임된 지분증명 방식을 말한다. 모든 노드의 자격을 가진 주주들이 블록생성에 참여하는 방식(PoS방식) 대신에 네트워크의 모든 노드의 투표 결과로 선출한 상위 노드(이를 증인* 또는 Witness라고 함.)에게 권한을 위임하여 합의하도록 하는 방식이다.

PoS에 비해 많은 트랜잭션을 빠르게 처리할 수 있다. PoW에 비해 비용이 낮다.

그러나 증인끼리 담합할 위험이 존재하고 공개된 소수의 증인에 대한 디도스 공격 위험이 있다.

블록체인 Fork

51% Attack

블록체인에 저장된 데이터들이 블록들에 합류하기 위해선 기존 블록들로부터 과반수 이상의 승인이 필요하다 -> 여기서 51% risk 발생가능!

현실화될 위험은 극히 낮지만 만약에 이런 문제가 일어나 자신이 보유한 블록체인의 가치가 껌값이 되면 경제적인 손실이 너무 크다.

Fork

Fork는 서로 추구하는 것이 다를 때 일어난다.

즉, 블록체인 환경이 업데이트다 될 때에도 포크가 일어나는데, 새로운 환경을 만들기 위해 업데이트를 하게 되는 경우 기존의 규칙을 따르려는 블록과 새로운 규칙에 따라 기록되는 블록으로 포킹된다.

Soft Fork

Soft fork는 기존의 규칙에서 큰 틀은 바꾸지 않고 부분적인 업데이트만 일어나기 때문에 forking 된 블록끼리 호환 가능하다.

기존 규칙을 따르던 블록체인에서도 노드들이 새로운 규칙을 따르기로 합의를 한다면 두 체인은 결국 합쳐진다.

예. MS office 2010 쓰다가 업데이트 한 MS office 2013 나오면 2010으로 저장된 파일이 2013에서도 사용이 가능한 것과 같다. 그러나 기능적인 면에서 몇 가지 제한이 있다.

Hard Fork

Hard fork는 블록의 규칙을 근본적으로 바꾸는 업데이트이다. 그렇기 때문에 이전 노드들과 호환이 되지 않는다.

하드포크는 전혀 다른 블록체인이 되어 합의에 도달하지 않고 서로 분리된 채 블록이 계속 쌓여나간다.

예. 아이폰의 iOS와 갤럭시의 안드로이드 운영체제가 서로 호환되지 않는것과 같다.

0개의 댓글