[TIL & Issue Note] 20220310

블록체인과 중앙집중 시스템과의 차이점 (2) - 일처리 방식

1. 브로드캐스팅 Broadcasting

  • 네트워크에 참여한 모든 노드에게 모든 데이터를 전달하는 방식
  • 중앙서버 방식 : 중앙 서버와 특정 노드 사이에만 데이터 전달이 일어남
  • 블록체인 : 시간이 흐림에 따라 데이터가 모든 노드에 전달
  • 블록체인에서는 모든 데이터를 브로드캐스팅을 통해 전달
Gossip protocol
  • 귓속말을 하듯 피어를 통해 데이터를 전달한다.

  • 모든 데이터 -> 모든 노드 -> 블록체인에 참여한 노드는 동일한 데이터를 가지고 있다.

  • 블록체인의 모든 전송 방식은 브로드 캐스팅에 의존한다.

브로드캐스팅으로 인한 블록체인의 특성

1. 저장된 모든 내용은 비밀로 할 수 없다
  • 모든 노드의 모든 데이터 공유 -> 데이터 자체의 보안 방법 없음
  • 개인정보가 들어가 있는 데이터는 절대 사용하면 안됨
2. 브로드캐스팅 되는 시간은 노드 별로 상이할 수 있다.
  • 노드마다 데이터를 처리하는 컴퓨터 능력과 네트워크 용량 차이
  • 같은 데이터를 가지는 시간은 노드 별로 상이
  • 특정 순간의 노드 -> 서로 다른 데이터를 가짐 -> 시간이 흐름에 따라 궁극적으로 모든 노드가 동일한 데이터를 갖게 된다.
3. 시간이 흐르면, 모든 노드는 동일한 데이터를 전달 받는다.

중앙화 시스템과 블록체인 시스템의 차이

  • 중앙화 시스템 : 특정 메세지를 특정 노드와 중앙서버로만 통신한다.
  • 블록체인시스템: 모든 메세지 모든 노드에 브로드 캐스팅 한다.

2. 거래내역의 작성 및 전송

  • 중앙화 시스템 -> 웹서버 이용
  • 블록체인 시스템 -> 지갑 소프트웨어 이용

중앙화 시스템과 블록체인 시스템의 기본적인 동작 방식

  • 중앙화 시스템의 대표적인 은행의 경우 계좌번호를 이용하여 이체 금액 입력 후 전송한다.
  • 블록체인의 경우에도 비트코인 주소를 통해 암호화폐를 전송한다.

-> 주소가 복잡한 것 이외에 크게 다르지 않음

  • 중앙화 시스템의 경우 은행이 모든 이체를 처리하고 처리 시간을 예측 할 수 있다.
  • 블록체인 시스템은 요청 할 때마다 처리하는 사람이 달라지며 수수료에 따라 처리 시간도 달라진다.

이체의 처리

  • 중앙화 시스템 : 중앙 서버가 모든 이체 처리
  • 블록체인 : 브로드캐스팅 후 매번 다른 노드가 처리

브로드캐스팅 이후의 이체 처리 단계는?

  • 트랜잭션 작성
  • Peer전파를 통한 브로드 캐스팅
  • 각 노드 대기열에서 대기
브로드 캐스팅 특정 순간의 노드
  • 노드마다 데이터의 순서가 다를 수 있다.
  • 요청서 마다 전달 받는 순서는 다르나 -> 시간이 흐름에 따라 모든 노드는 모든 데이터를 수령하게 된다

메세지를 누가 처리할 것인지 정하는 규칙이 필요함

브로드캐스팅 데이터를 누가 처리할 것인지 규칙이 필요하다.

  • 은행 : 계좌이체 -> 요청한 계좌이체 -> 장부에 기록
  • 블록체인 : 계좌이체 -> 계좌이체를 요청한 메세지 -> 누군가 기록

3. 리더의 선출과 검증

리더 선출

  • 거래 내역을 적을 수 있는 권한을 가진 사람을 선출하는 것
  • 해시 퍼즐을 가장 먼저 해결한 노드가 요청서를 기록함

해시 퍼즐

  • 많은 시간과 에너지를 소모하여 겨우 해결할 수 있는 문제
  • 계산의 복잡도 -> 무차별 대입법에 의한 모든 경우 순차적 계산 -> 계산을 가장 먼저 한 특정 노드에게 기록 권한을 줌

리더 선출 시 중요한 부분

  • 문제 해결을 가장 먼저 해결
  • 비트코인과 이더리움 노드 -> 해시 퍼즐을 풀기 위해 컴퓨팅 자원 소모
  • 비트코인 해시퍼즐 10분 정도 소요

블록체인 시스템의 문제 발생

  • 중앙화시스템의 경우 기록을 기록한 은행을 신뢰함
  • 블록체인 -> 해시퍼즐을 통해 메세지 기록할 수 있는 전권 획득-> 그러나 특정 노드에 기록 후 검증하는 절차 필요함.

작업증명

  • 모든 노드가 블록에 기록된 데이터를 검증에 참여할 수 있다.
  • 검증시에는 어떠한 자격 조건도 필요 없으며 원할 때 누구든지 시스템에 참여하여 기록 전체에 대해 검증 가능하다.
  • 작업증명을 통해 블록체인 시스템의 투명성을 확보할 수 있다.
블록 검증 이후 두 가지 상황
  • 전달받은 블록 에 대한 동의 -> 블록에 대한 기각 -> 블록에 대해 동의하지 않으면 블록을 폐기
  • 비트코인 : 평균 10분에 한번 씩
  • 이더리움 : 평균 15초에 한번 씩
합의
  • 네트워크의 모든 노드가 동일한 블록에 대해 동의함
  • 모든 노드의 저장된 데이터가 일치하게 됨
  • 매번 리더 선출 -> 하나의 블록에 대한 기록을 수행한 노드는 단 하나
  • 각각의 블록 -> 리더로 선출된 노드 = 중앙 서버의 역할 수행

블록체인에서 하나의 진실을 유지하는 비결

  • 각각의 블록 단위로 리더 선출
  • 리더가 중앙 서버의 역할 수행
  • => 중앙 서버 없이도 거래할 수있는 블록체인 시스템 탄생

블록체인 원리(1) - 해시 함수와 암호화 기법

1. 해시 함수

해시함수

  • 입력 길이와 상관없이 항상 일정한 길이의 출력을 나타내는 함수
  • 충돌회피 기능 : 입력이 달라지면 출력이 달라진다.

해시함수 성질

  1. 임의의 입력에 일정한 길이만 출력한다.
  2. 입력이 변경되면 출력이 변경되는 성질 -> 입력의 사소한 변화도 감지할 수 있다.
  3. 출력값으로 입력값 유추가 불가능 하다.

충돌회피기능의 해시 함수

  • 입력의 사소한 변화 -> 완전히 다른 출력 산출
  • 문서의 변경 여부를 해시 값 만으로 감지

2. 비대칭 암호화 기법

암호화 함수

  • 특정 입력 메세지를 알아볼 수 없는 출력 메세지로 변경
  • 문장 내용의 보호를 목적
  • 암호를 원래 문장으로 만드는 방법을 모른다면 내용 추측이 불가능
  • 메세지를 복원할 수 있는 방법이 존재
  • 암호화 <-> 복호화

암호화 함수 종류

  • 해시함수 -> 단방향 함수
  • 암호화 함수는 복호화 과정을 통해 암호화 된 원래 문장을 확인할 수 있다.-> 암호화/복호화 시 특정 데이터를 이용

대칭형, 비대칭형 암호화

  • 대칭형 암호화 기법 -> 암호화/복호화 키가 동일
  • 비대칭형 암호화 기법 -> 암호화/복호화 키가 다름

공인인증서

공인인증서의 이용의 경우

  • 비대칭 암호화 기법
  • 디지털 서명 기법

비대칭 암호화 기법

  • 개인키 : 자신만 간직하는 비밀키
  • 공개키 : 모든 사람이 공유
  • 비밀키로 암호화 진행 시 공개키로만 복호화 가능, 공개키로 암호화 시 비밀키로만 복호화 가능
  • 블록체인에서 문서의 무결성 기여
  • 디지털 서명과도 연관이 있다 -> 개인키를 이용하여 특정 문서의 제작자임을 증명하는 방식

3. 블록체인에서 해시 함수와 암호화 기법의 이용

블록체인에서 해시 함수와 암호화 기법 이용

  • 해시함수 : 입력 메세지의 변경 여부 탐지
  • 비대칭 암호화 기법 : 디지털 서명 수행

-> 비트코인 블록체인 : 거래내역에 대한 특정 해시 값을 기록 -> 해시 값의 변경은 입력 메세지의 변조를 의미

거래내역 브로드 캐스팅

  • A의 거래내역을 해시값을 R이 기록한 해시값과 비교 검증

비트코인 블록체인

-> 거의 모든 기록을 해시 함수로 기록 -> 32바이트로 기록 값을 항시 검증 -> 기록의 조작 여부를 판별

블록체인에서 비대칭 암호화 기법

  • 비트코인 수령자 보호
  • 거래내역의 조작 방지

공개키를 이용하여 수령자 보호

  • 비트코인 주소를 통해 주고받음
  • 브로드캐스팅을 통해 모든 노드에게 노출
  • 비트코인 주소 공개키에 대한 정보
  • 공개키로 잠긴 정보는 한 쌍이 되는 개인키를 가진 사람만이 열람 가능
  • 공개키를 이용하여 개인키를 갖은 수령자만 거래내역을 복호화 가능

A는 B에게 비트코인을 주었다는 사실을 기록 -> A의 개인키 -> A의 공개키로 이 사실이 복호화 공개키로 수령자만이 비트코인을 받을 수있도록 보호 개인키를 이용하여 실제 거래자를 증명 -> 비대칭 암호화 기법