Search

7장 - 블록체인 암호화 기법

대분류
블록체인
소분류
Blockchain - 그라운드X
유형
공개키
트랜젝션
BFT
최종 편집 일시
2024/10/29 07:57
생성 일시
2022/07/31 04:56
15 more properties

블록체인과 공개키 암호

블록체인은 암호학적 기법을 토대로 만들어진 기술
Bitcoin은 네트워크 참여자 모두가 같은 ‘원장’을 공유함으로써 투명한 거래가 가능
원장은 어느 주소에 BTC가 있는지 기록하지만 그 주소가 누구에게 속하는지는 기록하지 않음 (anonymity)
Bitcoin은 공개키암호를 사용하여 명시적인 비밀교환과정 없이 BTC의 소유권 증명을 실행

공개키 암호화를 사용한 소유권 증명

대부분의 블록체인 주소는 공개키로부터 도출된 값
Bitcoin : Hash 160 of a public key where Hash 160 = RIPEMD 160 + SHA256
Etthereum : Rightmost 160 bits of Keccak hash of a public key
Bitcoin의 경우
임의의 주소 X에 10 BTC가 있다고 가정할 때 Alice는 X에서 또다른 임의의 주소 Y로 5 BTC를 전송(i.e., transfer 5 BTC from X to Y)하는 거래를 성사시키기 위해 X로 변환되는 공개키와 짝을 이루는 비밀키로 해당 거래를 서명할 수 있어야 한다.
Ethereum의 경우
임의의 주소 X에 위치한 어카운트의 잔고에 10 ETH가 있다고 가정할 때 Alice는 X에서 또다른 임의의 주소 Y에 위치한 어카운트로 5 ETH를 전송 (i.e., transfer 5 ETH from the account at X to the account at Y)하는 거래를 성사시키기 위해 X로 변환되는 공개키와 짝을 이루는 비밀키로 해당 거래를 서명할 수 있어야 한다.

구현 방법으로 나눠본 블록체인

UTXO(Unspent Transaction Output) 기반 블록체인
블록체인에 사용 가능한 토큰(e.g., Bitcoin) - UTXO들과 사용 자격 검증방법을 기록
일반적인 자격검증방법은 UTXO의 정보와 일치하는 공개키로 검증가능한 전자서명을 제출하는 것
Bitcoin이 대표적인 UTXO 기반 블록체인
어카운트 기반 블록체인 (Account-based Blockchain)
어카운트는 블록체인을 구성하는 주체(entity)를 표현하며 상태를 기록
사용자는 어카운트를 사용할 때마다 어카운트 공개키로 검증가능한 전자서명을 생성
상태를 기록할 수 있기 때문에 스마트 컨트랙트를 구현하기에 용이
Ethereum, Klaytn이 대표적인 어카운트 기반 블록체인

Ethereum 어카운트, 주소, 상태

Ethereum의 어카운트는 Ethereum의 주체(entity)를 표현하고 그 상태를 기록하는데 사용
어카운트는 EOA(Externally Owned Account)와 스마트 컨트랙트로 구분
Ethereum 사용자는 EOA를 사용
사용자는 임의의 공개키와 비밀키 쌍(Key Pair)을 생성한 뒤 공개키를 어카운트 주소로 변환하여 EOA를 생성
별도의 승인과정이 필요없으며 Ethereum 네트워크와 통신도 필요없음
위 과정으로 인해 어카운트는 특정 키페어에 종속
사용자의 상태(state)는 어카운트 주소로 찾을 수 있는 블록체인 저장공간에 기록

트랜잭션(Transaction, TX)

블록은 트랜젝션들을 일정한 순서로 정렬하여 저장하는 컨테이너
트랜젝션은 어카운트의 행동
트랜젝션의 순서는 중요; TX_1 → TX_2와 TX_2 → TX_1은 다름
블록체인 참여자들은 블록을 검증할 때 트랜잭션들이 올바른 순서대로 정렬되었는지를 확인 후 합의
각각의 트랜잭션들은 어카운트에 연결된 공개키로 검증가능한 서명을 포함

Confirmation vs. Finality

Confirmation 숫자는 트랜잭션이 블록에 포함된 이후 생성된 블록의 숫자
임의의 트랜잭션 T가 포함된 블록의 높이가 100, 현재 블록높이가 105라면 T의 confirmation 숫자는 6
PoW를 사용하는 블록체인들은 finality가 없기 때문에 confirmation 숫자가 중요
Finality란 블록의 완결성을 의미
합의를 통해 생성된 블록이 번복되지 않을 경우 완결성이 존재
PoW 기반 합의는 확률에 기반하기 때문에 경우에 따라 블록이 사라질 수 있으므로 완결성이 부재함
PoW 블록체인은 수학적으로 복잡한 퍼즐을 풀어 블록을 제안할 자격을 얻는 구조
만약 두명의 서로 다른 참여자가 동시에 퍼즐을 풀어 두개의 올바른 블록을 생성한다면 두 블록 중 하나는 (eventually) 사라지게 됨
이 때문에 블록이 확률적 완결성을 갖기까지 일정 갯수 이상의 블록이 생성되기를 기다려야 함

Understanding Bitcoin’s 6 Confirmations Rule

네트워크 시차로 인해 생성된 우연한 복수의 블록들 가운데 하나가 선택되는데 필요한 블록은 두어개 정도 → 2~3 confirmations
퍼즐을 빠르게 풀 수 있는 악의적인 참여자(공격자)가 있을 경우 그 참여자의 해시능력(Hash Power)에 따라 필요한 confirmation 숫자가 달라짐
해시능력이 높을 수록 퍼즐을 푸는 속도도 빠르기 때문에 주어진 문제를 먼저 풀 확률이 높아짐
해시능력이 높은 참여자는 longest chain을 임의로 선택 또는 생성할 수 있음
따라서 해시능력을 감안하더라도 임의로 블록체인을 변경하지 못할 정도로 충분히 많은 블록이 생성되기를 기다려야할 필요가 생김
Bitcoin의 6 confirmation 법칙은 공격자가 전체 해시능력의 약 25%를 가질 때를 가정한 숫자

BFT 기반 블록체인

BFT 기반 블록체인은 블록의 완결성이 보장됨
네트워크가 동기화되어 있기 때문
블록 생성이 PoW에 비해 빠르고 경제적
하지만 네트워크 동기화의 필요로 인해 참여자의 숫자가 제한됨
네트워크 참여자 구성이 고정되어 있어야 합의가 가능
구성이 변경될 경우 모든 네트워크 참여자가 새로운 구성을 인지하기 까지 합의 불가능
합의 알고리즘이 네트워크 동기화를 가정하고 짜여졌기 때문에 네트워크 사용량이 높음
참여자가 많아질 경우 네트워크 오버헤드로 인해 합의가 느림