<블록체인>
Plan of attack(공격계획), 뭘배워야하는지 가이드:
섹션1에서 블록체인의 개요, 기초지식. 암호화폐, sha256해실 알고리즘. Immutable ledger배움, 다른 전통적인 ledger과의 비교. P2p network, immutable ledger를 적용시킨 네트워크. 채굴이 어떻게 이뤄지는지(논스). 암호화퍼즐. (수학개념) 비잔틴 내결함성/Byzantine fault tolerance. Consensus protocol(part1 defense against attackers, part2 competing chains). 블록체인 데모.
~What is blockchain?~
컨셉은 Stuart Haber와 W.Scott Stornetta가 제시. 논문 “How to time-stamp a digital document” 1991발표.블록체인의 개념과 특징이 논문에 존재.
“지속적으로 증가하는 데이터, 즉 블록이라고 불리는 이 데이터를 암호학을 통해 보호하고 연결하는 기술이라고 정의한다” - 위키피디아
블록은 무엇으로 구성?
데이터. prev.Hash. Hash(지문같은 존재).
첫번째 블록은 genesis block이라고 불림. 제네시스 블록은 이전 해시가 없음, 유일한 블록. 그리고 해시값이 있음. 해시값이 도출되는 과정은 나중에 설명. 블록2의 prev hash는 블록1의 hash.
~SHA256 해시 알고리즘~
지문이 사람을 식별하는 식별자라고 할수있다.
같은 원리를 디지털 문서에 적용. 그런 지문이 SHA256해시. NSA에서 만듬.
SHA는 security hash algorithm의 약자이고 256은 메모리를 차지하는 비트의 수이다. 해시의 길이는 언제난 64characters. 숫자+문자 왜냐 16진수여서. 해시의 문자는 각각 4비트. 2^4 =. 64. 64*4 = 256. 이 알고리즘은 어떤 디지털 문서에 적용가능, 영상, 텍스트, 오디오, 실행 파일, 운영체제 모두 적용가능.
동작 설명:
해시값의 input으로 같은 값을 넣으면 같은 해시값이 나옴, 랜덤값이 아니다. 같은 데이터 입력 -> 같은 해시.
The 5 requirements for hash algorithms.
- One-way, 단방향이어야 한다. 해시를 바탕으로 문서를 복원할 수 없다. 지분으로 사람을 만들 수 없듯이
- deterministic. 만약 동일한 문서를 해싱 알고리즘에 적용하면 똑같은 해시값을 얻어야 한다,.
- Fast computation, 연산이 빨라야한다.
- The Avalanche Effect, 쇄도 효과. 매우 중요한 요건!!! 동일한 문서에다가 아주 작은 변화에도 해시값은 완전 달라져야 한다. 쇄도라고 불리는 이유는 구현에 있음. 채굴 강의때 왜 중요한지 알려줌
- Must withstand collisions, 충돌 저항성. 메모리는 제한적이고 반면에 디지털 문서는 정말 많기 때문에 이러한 상황을 대처할 수 있어야 한다. Piegeon hole이라고도 한다. 즉 다시 말해 알고리즘이 인위적인 충돌에 견딜 수 있어야 한다. 예를 들어 공격자가 악의로 충돌을 만드는 문제, 이렇게해서 해시값을 같게 하면 문서 위조가 가능하다.
~Immutable Ledger~
*ledger: book or collection of financial records.
예: 집을 산다고 할때, 돈을 지불한 대가로 집을 얻음, 그럼 그 집이 어떻게 자신의 집이란것을 다른 사람에게 증명? Deed, 부동산 권리 증명서. 이 증명서를 가지고 지방 의회나 시의회 같은 곳에서 증명서를 보여주며 증명하고 등록.
그럼 당국은 어떻게 등록을 할까? 거의 대부분 ledger(원장)에 적어서 등록. 현대적인 국가일수록 디지털 원장에 저장.만약 기록들이 없어진다면, 해킹되면? 그럼 더이상 집을 소유하지 않는 것.
이때 블록체인 등장. 모든 소유 집을 팔거나 사면 체인에 추가. 집을 사게 되면 새로운 거래 내역을 추가하는 것. 누군가가 해킹을 하면? 시간이 지날수록 나의 거래 내역뒤에는 또 다른 트랜잭션들이 기록이 되어있음. 그래서 누군가 특정 블록의 데이터를 변경할려면 해당 블록의 해시가 바뀜. 그러면 그 뒤에 있는 체인이 연결이 되지 않음. 이것이 immutable ledger라는 거임. 체인 단일 블록의 변경은 불가능이다. 시간이 지날수록 어려워진다. 이것이 가장 많이 사용되는 예시이기도 하다.
~Distributed P2P Network~
어떻게해서 블록을 누군가 엄청난 속도로 해킹을 했거나, 블록의 입력오차 같은 이유로 시스템 오류가 생기면 어떻게 복원을 하게 될까?
이러한 문제들을 분산분 P2P네트워크에서 해결을 할 수가 있다.
p2p네트워크에는 많은 컴퓨터가 존재하고 다들 상호 연결되어있음. 이런 경우 네트워크는 블록체인에 어떤 영향?블록체인에는 어떻게 사용?
블록체인은 실제로 모든 컴퓨터에 복사가 된다.
부동산의 예를 계속들면 정부 컴퓨터의 한 시스템에 보관하는 대신에 수천대의 컴퓨터에 복사.
그래서 한번 블록이 추가가 되면 네트워크를 통해 정보가 공유되고 다른 컴퓨터가 해당 데이터를 가질때까지 네트워크를 통해 추가.
누군가가 해킹을 해서 해시값을 바꾸면 블록체인은 끊임없이 피어가 일치하는지 확인하기 때문에 즉각적으로 피어가 블록체인끼리 일치하지 않는 문제를 확인.
~How mining works~
한 블록안에는 여러 트랜잭션을 넣을 수가 있음. 블럭 넘버, Prev.hash존재, 그리고 블럭해시가 있음. 자기 블럭의 해시는 블럭넘버, 트랜잭션, prev.hash모두를 해싱 알고리즘에 넣으면 얻을 수가 있음.
그리고 또하나 블록이 가지는 데이터가 있는데 그게 바로 nonce. 다른 값들 같은 경우는. 근본적으로 값을 바꿀수 없음. 그리고 유일하게 해시값을 좌지우지하는것이 nonce가 됨.
채굴자들은 해시맵이라는 것이 존재하는데 채굴자들은 그 맵에서 특정 해시를 달성하도록 설정이 존재, 그래서 그 타겟보다 해시값이 크다면 고려 대상이 아님. 여기서 맵에서 낮을 수록 leading zero가 많음. 그래서 타겟을 leading zero인수로 설정하는듯.
~Bizantine Fault Tolerance~
비잔틴 내결함성. 비잔틴 제국이 점령하고자 했던 성이 있음. 4장군이 공격하려고 함. 근데 과반수가 동의해야지 공격이 가능, 아니 공격을 하든 후퇴를 하든 과반수가 동의를 해야함. 이렇게 장군중 한명은 사령관이고 한명은 배신자이다. 반역자는 누구인지 모름, 반역자가 있을 수도 없을수도 있음. 그럼 어떻게 합의 프로토콜을 생각해낼수가 있나? 장군들은 서로 구두로만 의사소통할수가 있고, 나는 누가 배신자이지 모르기 때문에 모두가 사전에 동의한 알고리즘을 사용해야함.
만약에 사령관이 반역자가 아니라고 가정하고, 나머지 3명에게 공격하라고 명령을 했을 때, 사령관은 명령을 하는 입장이기 때문에 다른이의 의견은 중요치않음. 이때 배신자는 후퇴하라고 명령을 받았다고 거짓을 한다(이는 사령관이 반역자인 경우도 있기 때문에 반대의견을 낸거임), 그럼 나머지 2명은 합의에 어떻게 도달하나? 이럴때에는 알고리즘이 잘 돌아감. (논리적으로는 잘 모르겠음, 근데 일단 여기서는 무조건 사령관의 말을 듣는다라는 식의 규칙을 따르는 판단을 함.)
그러면 사령관이 반역자일때는? 이전과 같은 식이면 결국 반역자가 말한대로 됨. 잠깐 정리를 하자면 배신자는 사령관의 명령의 반대로 되게 의도를 가짐. 이때는 본인이 사령관이자 반역자이니까 이전의 사령관의 말은 무조건 따른다, 그렇게되면 반역자의 패배가 되는거임. 그래서 해결법으로 2명에게는 공격 1명에게는 후퇴하라고 명령하는것. 그럼에도 불구하고 모두가 공격을 한다고 합의하게 됨.
결국 전달하고자 하는 의미는 전달된 정보에 대한 다수결 알고리즘으로 장군들은 전달된 정보에 기반해 의사결정을 내린다. 그리고 이 알고리즘을 바이잔틴 fault tolerance라고 함. 이 tolerance(내결성)이 얼마인지가 중요.반역자가 2명일때는? 논문에 의하면 1/3이상의 배신자가 있을때 알고리즘이 안통함.
블록체인에서는 이런 내결성을 최대한으로 높이는게 목표, 여러 공격자가 있더라도
~consensus protocol(합의 프로토콜)~
블록체인에서는 합의 프로토콜로 2가지 문제를 해결해야한다.
첫번째는 공격자로부터 네트워크를 보호하는것. 여기서의 공격은 고의적으로 악의가 있는 블록을 새로 추가하는것. 두번째 문제는 블록체인의 경쟁채인문제를 해결해야 한다는 것(Competing Chain). 멀리 떨어진 네트워크 사이에 딜레이 존재, 그리고 정말 우연하게도 동시에 채굴에 성공.
현재 다양한 유형의 합의 프로토콜이 존재한다. PoW(작업증명), PoS(지분증명), other…
Proof of work, mining에서 찾은 이 해시는 암호화 퍼즐에 관한 솔루션이며 동시에 proof of work로 암호화 문제를 해결하기 위해 모든 작업을 수행했다는 증명이다. 채굴자는 블록을 추가하면 비트코인, 이더를 받는다, 그리고 해당 블록에 포함된 transaction 수수료를 받는다.
그리고 암호화 퍼즐은 해결하기는 어렵지만 증명하기에는 굉장히 쉽다는 특징이 있다.
블록체인의 합의 프로토콜은? 2가지 블록이 들어오면 2가지 버전의 체인이 있다고 결정, 경쟁체인을 가진것. 이제 다른 블록이 추가 될때까지 기다림. 그리고 블록이 추가 되면 어떤 체인이 더 긴지 알수가 있음. 어느쪽이던 먼저 블록을 추가하면 그 체인이 이기는 것. 즉 해싱 파워가 더 강한쪽의 체인이 먼저 들어오게 됨. 즉 51%이상인 해싱파워를 가지면 이기게 됨. 지게되는 블록들은 없어짐, 보상, transaction다 사라짐 ㅜㅜㅜㅜ
'What I Learned' 카테고리의 다른 글
[WIL] Day 15 (0) | 2023.06.17 |
---|---|
[WIL] Day 14 (0) | 2023.06.10 |
[WIL] Day12 (기말준비 Day3) (0) | 2023.06.09 |
[WIL] Day 11 (기말준비 Day 2) (0) | 2023.06.06 |
[WIL] Day 10 (기말준비 Day 1) (0) | 2023.06.02 |
댓글