정보보호블록체인
목차 2 블럭체인메커니즘 블록체인플랫폼
블록체인메커니즘
1. 블록체인메커니즘 : 거래정보전파 4 멀리있는노드들간거래내용과순서는다를수있음 출처 : https://homoefficio.github.io
1. 블록체인메커니즘 : 블록체인충돌해소 5 멀리있는노드들이거의동시에 nonce 값을찾아마지막블록인 P 에각새로운블록을추가하며인접노드들에게전파 출처 : https://homoefficio.github.io
1. 블록체인메커니즘 : 블록체인충돌해소 6 초록블록을먼저받은노드들이빨간블록을전파받으면무시하고, 반대의경우도마찬가지 출처 : https://homoefficio.github.io
1. 블록체인메커니즘 : 블록체인충돌해소 7 중간지점의초록색블록을이어받은노드에서 nonce 값을구해보라색블록을전파 출처 : https://homoefficio.github.io
1. 블록체인메커니즘 : 블록체인충돌해소 8 빨간색블록을형성했었던노드에서분기가발생하면더긴초록 - 보라블록체인으로교체 출처 : https://homoefficio.github.io
1. 블록체인메커니즘 : 합의알고리즘 9 작업증명 (PoW, Proof of Work) 지분증명 (PoS, Proof of Stake) 위임지분증명 (DPoS, Delegated Proof of Stake) 합의알고리즘정리및의의
1. 블록체인메커니즘 : 블록체인기술의특징 10 Proof-of-Work (PoW) : Bitcoin, Ethereum, Litecoin o o Pros: Very secure Cons: Slow throughput, expensive computations Proof-of-Stake (PoS) : Dash, Stratis, NAV Coin, Peercoin, Decred, Nxt, Nova Coin o o Pros: Attacks more expensive, energy efficient Cons: Prone to centralisation Delegated Proof-of-Stake (DPoS) : Steemit, BitShares, EOS, Lisk, Ark, BitShares, Ethereum Casper, Tendermint, Slasher o o Pros: Cheap transactions, scalable, energy efficient Cons: Partially centralized Proof-of-Authority (PoA) : POA Network, Ethereum Kovan/Rinkeby testnet o o Pros: Simple, Cost efficient, High throughput, scalable Cons: Centralized Byzantine Fault Tolerance (BFT) : Hyperledger, NEO, Stellar, Ripple, Dispatch o o o Pros: High throughput, Transaction finality, Cost efficient, scalable Cons: Centralized, Semi-trusted Variantes: Practical Byzantine Fault Tolerance (PBFT) : Hyperledger, Federated Byzantine Agreement (FBA) : Stellar, Ripple, Delegated Byzantine Fault Tolerance (dbft) https://hackernoon.com/a-hitchhikers-guide-to-consensus-algorithms-d81aae3eb0e3
1. 블록체인메커니즘 : 합의알고리즘 11 P2P 네트워크에서는정보의지연과미도달사태를피할수없고데이터를변조할의도가없다해도이중송신에따른처리중복이나잘못된정보에의한오작동등의위험이있어정확한정보를공유하기어려움 블록체인과같은 P2P 네트워크시스템에서각노드간정보도달의시간차이가있을때, 생성된블록의정당성을검토하고해당블록을블록체인에연결하기위해네트워크참가자들의합의를얻기위한알고리즘
블록체인메커니즘 : 합의알고리즘종류 12 비트코인의경우작업증명알고리즘을사용중이며, 이더리움의경우 2017 년 8 월부터작업증명과지분증명알고리즘을 Hybrid 형태로테스트하고있음. 향후, 지분증명으로의전환을목표로하고있음 작업증명 (Proof of Work, PoW) - 블록체인에서가장보편적으로사용중인합의알고리즘으로컴퓨팅파워를이용하여특정난이도의해시값을역함수해시화하여 Nonce 값을계산해내고이를검증하는것으로합의를도출함 지분증명 (Proof of Stake, PoS) - PoW 의컴퓨팅파워낭비문제를해결하고자개발된합의알고리즘으로노드가보유한자산을기준으로권한을분배하여합의를도출하고보상을분배하는알고리즘 Proof of Elapsed Time (PoET) 등의다양한알고리즘존재
1. 블록체인메커니즘 : 합의알고리즘종류 13 Private Blockchain 의경우보편적으로 PBFT 와 PAXOS 알고리즘을사용하고있으며, Enterprise Ethereum 의대표프로젝트인 Quorum 의경우 Raft 알고리즘을채택하여사용하고있음 PAXOS - 가장일반적인합의알고리즘으로 Leader 를선정하고과반수의동의에의해합의를이룸 Practical Byzantine Fault Tolerance (PBFT) Raft - 비잔틴장군문제를해결하고자고안된합의알고리즘으로투표메카니즘을도입한 3 단계프로토콜을이용한합의도출로프라이빗블록체인에서널리이용됨 - PAXOS 를보완한형태로, 투표와랜덤타임아웃을통한리더선출로절차를단순화하는것이특징 - SBFT, Tendermint 등의다양한알고리즘존재
1. 블록체인메커니즘 : POW (Proof of Work) 14 비트코인 : 최초의블록체인기술이적용된시스템 o 합의알고리즘으로작업증명 (Proof of Work: PoW) 과가장긴체인 (Longest Chain) 을선택하는방법사용 o 최대 7 TPS 밖에처리할수없는성능의한계 o 작업증명으로인해많은에너지낭비 작업증명으로부르기도하며풀기어려운문제를빨리해결한사람에게블록을생성할수있는권한을주고그보상으로코인을제공 비트코인의경우해시함수의결과값이특정값보다작아지도록하는입력값 (Nonce) 을찾는문제 비트코인의경우약 10 분정도걸려풀릴수있도록난이도조절 비트코인은 Nonce 값을만드는데 SHA-256 이라는알고리즘사용 o SHA(Security Hash Algorithm) 은미국표준기술연구소 (NIST) 에의해공표된해시알고리즘 o SHA-256 은 256 비트로구성되어 64 자리문자열을반환 PoW 채용코인의종류 : 비트코인, 라이트코인, 제트캐시, 모네로등의 PoW 방식코인들이있음
1. 블록체인메커니즘 : POW 의작업정의 15 블록 (B) 의해쉬값 Hash(B) <= M/D 로정의 o D: 난이도 (Difficulty) o M 은난이도 D 의최대값 (2^256-1) Miner 들은반복적으로위의조건을만족하는블록 B 의해쉬값을탐색하기위해작업
1. 블록체인메커니즘 : POW 보상 16 Nonce 값을구하기위해선많은작업비용이들며이러한행위의보상이없다면아무도채굴하지않을것 비트코인에서보상은새로발행되는비트코인과해당블록에포함된거래의거래수수료의합 블록의첫거래는채굴자에게보상을주는거래로시작 출처 : : https://homoefficio.github.io/2017/11/19
1. 블록체인메커니즘 : PoW 51% 공격 17 PoW 는다수결로결정을내리는알고리즘 악의적인참여자가절반이상의해시파워를가지게된다면, 블록내용의조작이가능 https://blockinpress.com/archives/5740
1. 블럭체인메커니즘 : PoW 51% 공격 18 건강한블록체인연결방식 출처 : http://cryptochain.tistory.com/53 출처 : http://cryptochain.tistory.com/53
1. 블럭체인메커니즘 : PoW 51% 공격 19 51% 공격을받은블록체인연결방식 출처 : http://cryptochain.tistory.com/53
1. 블럭체인메커니즘 : PoW 파이널리티불확실성 20 PoW 는블록체인이분기하는경우긴체인을올바른것으로판단 짧은체인이버려지는경우트랜잭션이없었던일로되는경우가발생할수있음 비트코인같은경우이런현상을방지하기위해트랜잭션이확정되더라도 6 블럭가량기다리게하는등제한을함
1. 블럭체인메커니즘 : PoW 성능한계 21 P2P 네트워크에서단일정보를공유하는구조상네트워크에확산되는시간을없애기는불가능 여러노드간합의를통해정보의신뢰성을담보하기때문에합의에걸리는시간이필요 따라서, 성능 ( 응답시간과처리량 ) 을올리는것이어려움 블록생성에약 10 분걸리므로실시간성이보장되지않음
1. 블럭체인메커니즘 : PoS (Proof of Stake) 개요 22 지분증명으로부르기도하며앞의 PoW 와다르게컴퓨터의해시파워가아닌, 참여자의코인지분을기준으로블록을생성 PoS 는참여자의코인지분이많을수록유리해지는방식 출처 : https://brunch.co.kr/@banksalad/313
1. 블록체인메커니즘 : PoS 의 Hash 함수정의 23 Hash (Hash (Bprev), A, t) <= bal(a) M/D o Bprev 는이전블록, A 는계정 (Address), t 는타임스탬프, bal(a) 는 address A 가현재소유한 balance, D 는난이도, M 은 D 의최대값을의미 블록 B 의해쉬값은 A 가소유한밸런스와난이도의영향을받는다. 많은지분소유자가쉬운난이도의문제를풀게된다. https://medium.com/@poolofstake/a-proof-of-stake-overview-445c52558d03
1. 블록체인메커니즘 : PoS 개요 24 PoS 는 PoW 와다르게블록생성시보상이없음 대신 PoS 는해당지분만큼의거래수수료를받음 출처 : http://cryptochain.tistory.com/49
1. 블록체인메커니즘 : PoS 개요 25 자산을보유하는노드들은자신이합의하는블록에자산을증명함으로써데이터를업데이트 출처 : https://brunch.co.kr/@banksalad/313
1. 블록체인메커니즘 : PoS 개요 26 PoW 와비슷하게체인이분기되면과반수의자산이동의한블록으로합쳐지게됨 출처 : https://brunch.co.kr/@banksalad/313
1. 블록체인메커니즘 : Delegated Proof of Stake(DPoS) 27 위임지분증명이라부르기도하며특정인원에게만 PoS 를할수있도록권한을위임하는것 네트워크상노드들의투표결과로선출된상위노드에게권한을위임하여일종의대표자가되는것 위임한대표자와수익을배분함
1. 블록체인메커니즘 : DPoS 28 PoS 의경우일정지분을소유한모든노드에게블록생성권한이주어지기에시간이오래걸림 DPoS 의경우투표결과로정한상위노드라는비교적적은숫자로인해합의시간과비용이줄어듬 이미지출처 : https://brunch.co.kr/@mobiinside/1163
1. 블록체인메커니즘 : DPoS 블록대표자 ( 생산자 ) 수 Case 29 EOS : 21 BitShares : 101 Steemit : 21 Lisk : 101 Ark : 51 https://medium.com/loom-network/understanding-blockchain-fundamentals-part-3-delegated-proof-of-stakeb385a6b92ef
1. 블록체인메커니즘 : 합의알고리즘의중요성 30 앞에서언급한것과같이 P2P 네트워크에서다수의참여자들이존재하고있어이참여자들의하나의블록체인을유지하기위한수단 합의알고리즘은각노드에서블록체인을공유하기위해사용되는중요한기능이며블록체인기술의핵심이라할수있음
1. 블록체인플랫폼 : 합의알고리즘과제 31 최초의블록체인소프트웨어비트코인은 PoW 가사용되고있지만자원소모, 파이널리티불확성등의문제로컨소시엄형이나프라이빗블록체인에이용하기엔적절하지않음 컨소시엄형에서의이용을전제로한블록체인이등장하고있으며 PoW 가아닌합의알고리즘을채택하는경우가많아짐 각각의합의알고리즘의특징을정확히이해하고특성에맞게활용해야함
PBFT PBFT(Practical Byzantine Fault Tolerance)
Two Generals Problem 33 두장군 A, B 는동시에적을공격해야성을함락시킬수있음 두장군은적진을사이에두고있으며, 합의메시지는적을통과해야만도착할수있음 A 가 B 에게공격시간합의메시지를보내는경우 A 는 B 가메시지를전달받았는지확인할수없음 또한, A 의메시지가적에의해변조되었는지확인할수없음 B 가 A 에게응답하는경우 B 는 A 가응답메시지를전달받았는지확인할수없음 또한, B 의응답메시지가적에의해변조되었는지확인할수없음 A 와 B 사이에합의하는것은불가능함
Byzantine Empire 34 Src: https://www.slideshare.net/yongraejo/pbft-86070872 Page 34
BGP (Byzantine Generals Problem) 35.. Paper "The Byzantine Generals Problem, Lamport, L.; Shostak, R.; Pease, M. (1982). ACM Transactions on Programming Languages and Systems
BGP (Byzantine Generals Problem) 36 여러장군들중악의적인장군 ( 비잔틴장군 ) 이존재할시합의하는방법을연구
PBFT (Practical Byzantine Fault Tolerance) 37 Paper "Practical Byzantine Fault Tolerance and Proactive Recovery, Castro, M.; Liskov, B. (2002). ACM Transactions on Computer Systems. N = 3f + 1 N = 전체네트워크노드수 f = 비잔틴노드수
BFT (Byzantine Fault Tolerance) 38 Terminology Byzantine Fault: 시스템장애, 혹은악의적인공격에의해발생하는장애 Byzantine Failure: Byzantine Fault에의해네트워크 ( 서비스 ) 가중단된경우 BFT: 분산네트워크가정상적으로동작할수있는비잔틴노드의수
Why N = 3f + 1? 39 N = 2f + 1, f = 1? bool(x) N1 Client N3 N2
Why N = 3f + 1? 40 N = 2f + 1, f = 1? bool(x) = true bool(x) N1 Client system error! bool(x) =? N2 bool(x) = true
Why N = 3f + 1? 41 N = 2f + 1, f = 1? bool(x) = true bool(x) N1 Client N3 bool(x) =? Byzantine bool(x) = False
Why N = 3f + 1? 42 N = 3f + 1, f = 1? bool(x) = true bool(x) = true bool(x) N1 N2 Client true N4 bool(x) = True Byzantine bool(x) = False
Why N = 3f + 1? 43 N = 3f + 1, f = 1? bool(x) = true bool(x) = true bool(x) N1 N2 Client true N4 bool(x) =?? Byzantine bool(x) = False
Why N=3f+1? 44 비동기네트워크에서발생할수있는장애는 Case1 과 Case2 가존재 네트워크가작동하기위한최소한의조건이기때문에정상적인합의를위해서는 Case1, Case2 모두만족해야함 Case1 메시지전송을하지않는경우 N-f 노드간합의를수행해야함 (N = 전체노드수, f = 메시지를보내지않는노드 ) Case2 잘못된메시지를보내는경우 Case 1에서남은 (N-f) 노드중악의적인메시지를보내는노드 f개가존재할경우 (N-f)-f>f 조건이만족되어야합의가이루어짐 N>3f 최소 N=3f+1 개의노드가필요
P2P 시스템장애모델 45 BYZANTINE FAULT 모델 o 비잔틴장군문제 각지휘관들은지리적으로떨어져있는상황에서동시에공격할수있도록전령을통해합의를하는중 내부배신자가나타나공격시간을교란하면각지휘관들은어떻게정확한공격시간을판단할것인가?
PBFT(Practical Byzantine Fault Tolerance) 46 비잔틴장군문제를해결하기위한실질적인프로토콜 o 비잔틴장군문제 : 장군이악의적인행동을할수있다는점을가정 o 단순고장난노드뿐만아니라악의적인노드가있음에도불구하고전체시스템이안정적으로동작하도록하는프로토콜 BFT 계열프로토콜중실용적으로쓰일수있는가장대표적인프로토콜 리플리카중의사결정의리더역할을하는 primary 노드가있으며, primary 노드의주도하에순차적으로명령이수행됨 primary 노드가고장이나거나악의적인행동을하게될경우 'view change' 라는절차를통해 primary 노드를바꿈
PBFT(Practical Byzantine Fault Tolerance) 47 PBFT in rough 클라이언트는 Primary 노드에게요청을전송 Primary 노드는 backup 노드에게요청을전파하고합의과정을수행 합의과정이완료되면 Primary 노드와 Backup 노드는클라이언트에게완료메시지를전송 클라이언트는 f+1 개이상의똑같은답변을 backup 노드로부터받으면요청이제대로반영되었다는것을확신
PBFT(Practical Byzantine Fault Tolerance) 48 Request 클라이언트는 Primary 노드에게작업요청 (REQUEST, o, t, c)s_c REQUEST: 합의단계 o: 요청하고싶은작업 t: Timestamp c: 클라이언트식별자 s_c: 클라이언트서명
PBFT(Practical Byzantine Fault Tolerance) 49 Pre-prepare Primary 가유효한 request 를받으면아래메시지를생성후backup 노드에게전송 Backup 노드 : Primary 와 Client 를제외한모든노드 ((PRE-PREPARE,v,n,d)s_p, m) PRE-PREPARE: 합의단계 v: view number( 현재 Primary 노드가누구인지알수있음 ) n: sequence number( 몇번째 request인지알수있음 ) d: m의 message digest. m이조작되지않았음을확인 s_p: Primary 노드의서명 m: 클라이언트가보낸메시지
PBFT(Practical Byzantine Fault Tolerance) 50 Pre-prepare backup 노드는아래조건을만족하면다음단계로넘어감 view number (Primary node), sequence number ( 트랜잭션순서 ), d ( 메시지무결성 ) 체크포인트가유효한지 다른다이제스트가포함된 view number 와 sequence number 를수신하지않았는지
PBFT(Practical Byzantine Fault Tolerance) 51 Prepare Backup 노드는아래메시지를생성하여모든노드에게전송 ((PREPARE,v,n,d, i)s_i) PREPARE: 합의단계 i: 메시지를전송하는노드 i s_i: 노드i 의서명 pre-prepare 와 prepare 를메시지를 2f+1(including itself) 개이상수집한노드는 prepared(m,v,n,i) 상태가됨
PBFT(Practical Byzantine Fault Tolerance) 52 Prepare Backup 노드는아래메시지를생성하여모든노드에게전송 ((PREPARE,v,n,d, i)s_i) PREPARE: 합의단계 i: 메시지를전송하는노드 i s_i: 노드 i 의서명 pre-prepare 와 prepare 를메시지를 2f+1 개이상수집한노드는 prepared(m,v,n,i) 상태가됨
PBFT(Practical Byzantine Fault Tolerance) 53 Commit Backup 노드는 prepared(m,v,n,i) 단계에있는노드가 f + 1 개 (non-faulty nodes) 인것을확인하면 Committed(m, v, n) 상태가되어아래메시지를전송 ((COMMIT,v,n,d, i)s_i) v: view number( 현재 Primary 노드가누구인지알수있음 ) n: sequence number m: 클라이언트가보낸메시지 d: m 의 message digest. m 이조작되지않았음을 확인 i: 메시지를전송하는노드 I s_i: 노드 i 의서명
PBFT: Reply 54 클라이언트는 backup 으로부터 f+1 개이상의동일한응답을받으면요청이완료됨을확인함
PBFT(Practical Byzantine Fault Tolerance) 55 Checkpoint 모든노드들은 Pre-prepare, Prepare, Commit 메시지를 log 저장소에저장지속적으로저장되는메시지 log 용량문제를해결하기위해 Checkpoint 사용 일정한간격으로 Checkpoint 를생성하여 Checkpoint 이전의메시지는모두폐기 H=h+k, sequence number 가 H 가되면 Checkpoint 작업수행
PBFT : 결론 56 노드간투표방식의합의알고리즘제공각 Phase 를거치면서높은지연시간발생상당한트래픽발생결론 : 소규모노드로구성된네트워크에적합한알고리즘
Q & A