54
© Copyright SecurityPlus 2015 블록체인과 안전한 초연결 사회 폴라리스 최종훈

© Copyright SecurityPlus 2015 블록체인과안전한초연결사회securityplus.or.kr/data/2015/7SPConf/7SPConfSession5.pdf · •비트코인코어클라이언트는구글의LevelDB

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

© Copyright SecurityPlus 2015

블록체인과안전한초연결사회

폴라리스최종훈

발표자프로필

성명/

직급최종훈 / 주임 소속 두리안정보기술

수상 이메일 [email protected]

주요

경력

•영어학술동아리 E.T.W.TIME 51대 회장

•육군정보통신학교 KJCCS/ATCIS 조교

•두리안정보기술 시스템/네트워크 엔지니어

•폴라리스 1기 맴버

저서

강의

S

N

S

• https://www.facebook.com/cjhzz

사진

2

Agenda

나는왜블록체인발표를하는가?Ⅰ

비트코인속의블록체인Ⅱ

블록체인과안전한초연결사회Ⅲ

나는왜블록체인발표를하는가?

사건의 발단

발생일시 : 2015년 11월 4일수요일새벽 12시07분

블록체인과의첫 만남 : 2015년 11월 4일수요일새벽 12시28분

나는왜블록체인발표를하는가?

한국경제 “핀테크 보안기술 ‘블록체인’이 뜬다“ 2015-11-03 이호기 기자

나는왜블록체인발표를하는가?

한국경제 “핀테크 보안기술 ‘블록체인’이 뜬다“ 2015-11-03 이호기 기자

이게무슨말이지??????

흠…끌리는데???

나는왜블록체인발표를하는가?

발표 결정

발표결정: 2015년 11월 4일수요일새벽 12시36분

발표준비하며참고한책 5권

나는왜블록체인발표를하는가?

Youtube에서 블록체인을 검색해 보았다. 소개영상을 보자.

나는왜블록체인발표를하는가?

비트코인은 또 뭐지? 홈페이지에 접속해 보았다.

나는왜블록체인발표를하는가?

소개영상부터 한번 보자.

나는왜블록체인발표를하는가?

설치해 보지뭐.

나는왜블록체인발표를하는가?

설치가 끝나지 않는다…

나는왜블록체인발표를하는가?

사토시 나카모토의 기념비적 논문

• 2008년 8월 18일, 비트코인 도메인(bitcoin.org)이 어노니머스스피치를 통해등록됨

• 어노미너스스피치는 익명 이메일, 익명 도메인 등록 서비스를 제공

• 어노니머스스피치는 현재 비트코인을 결제 수단으로 사용

• 2008년 10월 31일 저녁 6시 10분, ‘암호화 기술‘ 메일링 리스트인 메인(Gmane)에사토시 나카모토(Satoshi Nakamoto)라는 이름의 이용자가 직접 올린 문서한편이 게시됨

제목 : 비토코인 P2P 전자 화페 시스템

본문 : 나는 새로운 전자 화폐 시스템과 관련 작업을 해 오고 있다. 이것은제3기관의 신용을 필요로 하지 않는 완전한 P2P기반이다.

주요특징 : P2P 네트워크를 통한 이중 지불 방지, 조폐 제도 또는 여타의 중앙 기관배제, 참여자 익명성 보장, 작업증명(proof-of-work)을 통한 새로운 화폐 발행, 새화폐 생성을 위한 작업 증명 과정을 통해 전체 네트워크가 이중 지불을방지하도록 보장

• 2008년 11월 9일, 오픈 소스 프로그램 디렉터리인 소스포지(sourceforge.net)에비트코인 프로젝트가 등록됨

• 2009년 1월 3일 그리니치 표준시 18시 15분 05초에 최초의 비트코인 블록이생성됨

• 그는 지금까지 발행된 전체 비트코인의 약 10% 정도를 보유한 것으로 추정됨

• 물론 그는 거의 한푼도 쓰지 않고 있음.

나는왜블록체인발표를하는가?

누군가와 끊임없이 통신한다.

나는왜블록체인발표를하는가?

용량이 지속적으로 증가한다.

나는왜블록체인발표를하는가?

용량이 지속적으로 증가한다.

나는왜블록체인발표를하는가?

콘솔로 지갑 둘러보기 (help)

나는왜블록체인발표를하는가?

콘솔로 지갑 둘러보기 (지갑정보, 계좌번호, 잔고)

나는왜블록체인발표를하는가?

콘솔로 지갑 둘러보기 (첫 블록 정보)

나는왜블록체인발표를하는가?

Blockchain.info 를 참고해보자 (최초 50BTC 탄생)

나는왜블록체인발표를하는가?

콘솔로 지갑 둘러보기 (두번째 블록 정보)

비트코인속의블록체인

들어가기

• 거래가 담겨 있는 블록이 그 이전 블록과 연결되어 있는 형태의 정돈된 목록이다.

• 비트코인 코어 클라이언트는 구글의 LevelDB 데이터베이스를 이용해 블록체인의메타데이터를 저장한다.

• 블록은 각각 ‘뒤로’연결되어 있다. 즉 이전 블록을 참조한다.

• 한 블록 위에 다른 블록이 층층이 쌓이며, 차곡차곡 쌓이는 외관 때문에‘높이(height)’라는 용어를 사용해서 첫 블록으로부터의 거리를 표현한다.

• 가장 최근에 추가된 블록은 ‘꼭대기(top)’나 ‘끝(tip)’이라는 용어를 사용한다.

• 각각의 블록은 블록헤더에서 SHA256 해쉬 알고리즘을 이용하여 생성된해쉬값으로 식별된다.

• 각 블록과 그 부모블록을 연결해주는 해쉬의 배열은 최초블록이라고 알려진 첫생성 블록까지 이어지는 체인을 만든다.

• 블록은 단 하나의 부모블록을 가진다.

• 이전 블록 해쉬 필드는 블록 헤더 내에 들어 있으며, 이러한 특성 때문에 현재블록의 해쉬에 영향을 끼친다. 부모노드의 정체성(identity)이 변경되면 자식블록자체의 정체성도 변경된다.

• 재계산을 위해서는 엄청난 규모의 계산을 실행해야 하기 때문에 긴 체인으로연결된 블록들은 블록체인의 누적된 기록을 변경시킬 수 없으며, 이러한 특성덕분에 비트코인의 보안이 유지된다.

비트코인속의블록체인

해시율

• 마이닝을 위해 매 초당 481,180,174,000,000,000 번의 해쉬값 추출이 이루어지며, 이러한 계산이 1년간 지속되었을 때, 총 전력소비량은100 terawatt-hour 가 넘는양이며, 이는 2011년도 우리나라 총 전력사용량의 4분의 1에 해당하는 양이다.

비트코인속의블록체인

거래 취소 시도에 대한 확률

• 거래가 취소될 확률이 0.1% 이하가 될 확률

• 해커의 마이닝 파워가 10%이면 5 step만 지나도 0.1% 대로 진입하며, 20%대라도 11 step 만 지나도 0.1%대로 진입한다.

• 2011년 우리나라가 사용했던 전력량의 1/20을 해커가 사용해도, 두 시간 정도까지 유지되면 그 거래가 취소될 확률이 0.1%로 떨어진다.

비트코인속의블록체인

블록 구조

• 블록은 공개 장부인 블록체인에 거래들을 포함시키기 위해 한데 합쳐 놓은 컨테이너 데이터 구조이다.

• 블록은 메타데이터를 담고 있는 헤더와 그 뒤에 블록 크기를 결정하는 거래 목록이 길게 나열되어 있다.

• 블록 헤더의 크기는 80바이트인 반면 거래의 평균 크기는 최소 250바이트다.

• 평균적으로 블록에는 500개 이상의 거래가 담겨있다.

비트코인속의블록체인

블록구조

비트코인속의블록체인

블록당 거래 수

비트코인속의블록체인

블록 헤더

• 블록 헤더는 블록 메타데이터의 3가지 집합으로 구성되어 있다.

• 첫째, 현재의 블록이 블록체인에 있는 이전 블록과 연결되었음을 나타내는 이전 블록 해쉬값이 있다.

• 둘째, 난이도, 타임스탬프, 난스(nonce)이며 채굴 결쟁과 연관된다.

• 셋째, 머클 트리 루트다. 머클 트리 루트는 블록 내에서 거래 전부를 효율적으로 요약하는 데 사용되는 데이터 구조다.

비트코인속의블록체인

블록의 식별자

• 블록의 해쉬는 블록 헤더를 SHA256알고리즘 통해 2번 해싱해서 얻어진다.

• 블록 해쉬는 유일하고 확실한 방법으로 해당 블록을 식별하며, 모든 노드는블록 헤더를 간단히 해싱함으로써 독립적으로 블록 해쉬값을 얻을 수 있다.

• 블록 해쉬는 실제로 블록의 데이터 구조에 포함되어 있지 않다. 해당 블록을네트워크에서 전송받으면서 각 노드에 의해 계산 된다.

• 블록 해쉬와는 달리 블록 높이는 특유의 식별자는 아니다.

• 두 개 이상의 블록들이 블록체인 내에서 동일한 위치를 점하기 위해경쟁하면서 동일한 블록 높이를 가지게 될 수도 있기 때문이다.

• 비트코인 네트워크로부터 새로운 블록이 전송되면 각각의 노드는블록체인에서 해당 블록의 위치(높이)를 적극적으로 확인한다. 또한 블록의높이는 빠른 검색을 위해 색인 작업을 거친 데이터베이스 테이블 내에메타데이터로 저장될 수도 있다.

비트코인속의블록체인

블록체인에 블록 연결하기

• 비트코인 풀 노드는 최초블록에서 시작된 블록체인의 로컬 복사본을 가지고 있다.

• 노드가 네트워크로부터 새로 생성된 블록들을 전송받고 나면, 수신된 블록의 유효성검사 후에 유효하다고 검증되면 기존의 블록체인에 블록들을 연결시킨다.

• 각 노드가 새 블록을 검증하는 리스트

• 해당 블록의 데이터 구조는 문법적으로 유효하다

• 해당 블록 헤더 해쉬는 (작업증명을 시행하는) 목표 난이도보다 작다.

• 해당 블록의 타임스탬프는 (시간 오류를 고려해서) 향후 2시간 이내다.

• 해당 블록의 크기는 허용할 수 있는 한도 내에 있다.

• 제일 첫 거래(첫 거래에만 적용)는 코인베이스 생성거래다.

• 블록 내에 있는 거래 전부는 거래 체크리스트를 이용해서 유효함을 판단한다.

• 각 노드가 거래를 검증하는 주요 리스트

• 거래의 구문(syntax)과 데이터 구조가 정확해야 한다.

• 입력값이나 출력값 목록이 비어 있지 않다.

• 출력값 금액과 노드의 총 금액이 0보다 크고 2,100만 비트코인보다 작은범위에 있어야 한다.

• 입력값 금액이 출력값 총액보다 작은 경우 해당 거래는 거절한다.

• 거래 수수료가 비어있는 블록에 들어가기에 너무 작을 때는 해당 거래를거절한다.

• 풀이나 메인 브랜치에 있는 블록에 짝을 이루는 거래가 존재해야 한다.

블록체인

비트코인속의블록체인

머클 트리

• 비트코인 블록체인 내에 있는 블록 각각은 머클 트리를 이용해서 해당 블록에 들어 있는 모든 거래의 요약본을 가지고 있다.

• 머클 트리는 이진 해쉬 트리(binary hash tree)라고도 하는데, 규모가 큰 데이터 집합의 완전성을 효율적으로 요약하고 검증하는 데사용된는 데이터 구조이다.

• 머클 트리는 암호 해쉬를 담고 있는 이진 트리이다.

• 머클 트리는 블록 내에 있는 모든 거래를 요약하며, 특정 거래가 블록 내부에 포함되는지 여부를 검증하는데 매우 효율적인 프로세스를제공한다.

• 머클 루트라고 부르는 해쉬 하나가 남을 때까지 노드 쌍을 반복적으로 해싱해서 머클 트리를 만든다.

• 비트코인 머클트리에 사용되는 암호 해쉬 알고리즘은 SHA256이며, 두 번 적용되기 때문에 ‘더블 SHA256’이라고도 한다.

비트코인속의블록체인

머클 트리의 효용성

• 머클 트리는 짝수 개의 리프 노드가 필요하다. 홀수 개 있는 경우, 마지막 거래 해쉬를 복사해서 짝수 개의 거래를 만든다.

• 이런 방법으로 1000건 이상의 거래를 보유하더라도 해당 거래를 요약해서 32바이트 크기에 불과한 머클 루트 한 개를 생성할 수 있다.

• 아래 그림은 단지 32바이트 크기의 해시 4개의 길이(총 128바이트)인 머클 경로(merkle path)를 생성함으로써 거래 K가 블록 내에포함되어 있다는 사실을 노드가 입증할 수 있다는 것을 보여준다.

• 풀 블록체인을 보관하지 않는 단순지불검증(SPV)노드는 머클 경로를 이용해서 풀 블록을 다운로드 받지 않고서도 거래를 검증한다.

비트코인속의블록체인

분산화된 합의

• 비트코인은 중앙 통제 기관이 없지만 모든 풀 노드가 권위 있는 기록이라고 신뢰할 수 있는 공개 장부 완본을 보유하고 있다.

• 블록체인은 중앙 통제 기관에 의해서 생성되지 않고 네트워크 내에 있는 모든 노드에 의해 독립적으로 수집된다.

• 사토시 나카모토의 주요 발명품은 합의 도출(emergent consensus)을 위한 분산화 메커니즘이다.

• ‘도출적(emergent)’이라는 의미는 합의가 일어나는 정확한 시점이나 선출 과정이 없다는 의미이다.

• 합의는 독립적인 노드 수천 개가 모두 간단한 규칙을 따르면서 만들어 낸 비동기 상호작용의 도출적 결과물이다.

• 비트코인의 분산화된 합의는 다음과 같은 네가지 프로세스가 서로 상호작용하면서 이루어진다.

• 포괄적인 판단 기준에 근거하여 모든 풀 노드가 각 거래마다 독립된 검증 실시

• 작업증명 알고리즘을 통해 증명된 계산법을 사용하여 채굴 노드들이 검증된 거래들을 새로운 거래에 독립적으로 추가

• 모든 노드들이 새 블록을 독립적으로 검증한 후 체인에 블록을 연결

• 모든 노드가 작업증명을 통해 이루어진 최고 누적 연산 체인을 독립적으로 선택

비트코인속의블록체인

블록 채굴하기(작업증명 알고리즘)

• SHA256으로 채굴한다.

• 채굴은 블록 헤더를 반복적으로 해싱해서 해시 결과값이 특정 목표치와 일치할 때까지 하나의 매개변수를 변화시키는 과정이다.

• 암호 해시 알고리즘의 주요 특성은 사실상 동일한 지문을 생성하는 두 개의 다른 입력값을 검색하는 것이 사실상 불가능하다는 점이다.

• 변수로 사용된 숫자를 난스(nonce)라고 한다.

• 채굴자들은 거래로 가득 차 있는 후보 블록을 구성한다.

• 그다음 해당 채굴자가 블록 헤더의 해시를 계산하고 현재의 목표값 보다 작은지 조사한다. 해시가 목표값보다 큰 경우 난스를 조정해서다시 시도한다.

• 비트코인 네트워크 내의 현 난이도에서 채굴자들은 블록 헤더 해시보다 충분히 작은 결과값을 가지는 난스를 찾기 까지 수천 조 번의시도를 거듭하야 한다.

• 난이도란 쉽게 말해서 얼마나 많은 리딩 비트가 0이어야 하는지를 나타낸다.

비트코인속의블록체인

블록 채굴하기(작업증명 알고리즘)

• 초기 난이도 1에 비해서 알마나 어려워 졌는지를 나타낸다.

• 목표 난이도는 전기료 및 전기료를 내기 위해 사용되는 통화에 대한 비트코인 환율과 밀접하게 관련있다.

• 고성능 채굴 시스템은 가능한 한 고속으로 전기를 해싱 계산법으로 전환해 주는 실리콘 구조물이 최근에 제작되면서 효율성이 높아졌다.

• 채굴시장에 끼치는 주된 영향력은 비트코인 내부에서 전기 1킬로와트시에 대한 가격이다.

• 왜냐하면 전기세가 채굴의 수익성과 그에 따라 채굴 시장으로 진입하거나 시장을 빠져 나갈 때의 인센티브를 결정하기 때문이다.

비트코인속의블록체인

블록 채굴하기(난이도)

• 난이도 재설정은 자동적으로 풀 노드 전부에서 독립적으로 실행된다.

• 2016개의 블록마다 노드는 전부 작업증명 난이도 목표값을 재설정한다.

• 난이도를 재설정하기 위한 방정식을 통해 마지막 2016번째 블록을 찾는 데 걸리는 시간을 측정하고 측정 시간과 20,160분(블록 간격10분을 기준으로 2주의 시간)이라는 예상 시간을 비교한다.

• 실제 시간과 원하는 시간 사이의 비율이 계산되고 대응되는 조정값(상승 혹은 하락)이 난이도를 결정한다.

비트코인속의블록체인

• 현재 채굴은 특수 용도의 직접 회로를 장착한 하드웨어 채굴 리그를 이용하며, 수십 만 개의 직접회로가 믿기 힘든 속도로 동시에SHA256알고리즘을 가동한다.

• 이 특수기계는 USB를 통해 채굴 노드에 연결된다.

• 1초당 수조 개의 난스를 테스트한다.

비트코인속의블록체인

블록 채굴하기(비트코인 마이닝 풀 점유율)

비트코인속의블록체인

블록체인 분기

• 가장 난이도가 높은 체인을 선택함으로써 모든 노드는 네트워크 전역의 합의를 이끌어 낸다.

• 블록체인은 분산화된 데이터 구조이기 때문에 블록체인의 복사본들의 내용이 항상 동일한 것은 아니다.

• 각 노드는 항상 작업증명을 가장 많이 시행한 블록체인을 선택해서 연장하려고 한다. 이를 최장 체인(longest chain) 혹은 최고 누적난이도 체인(greatest cumulative difficulty chain)이라고 한다.

• 모든 노드가 최장 누적난이도 체인을 선택하는 한, 전 세계 비트코인 네트워크는 결국 일관된 상태로 수렴하게 된다.

비트코인속의블록체인

블록체인 분기(동시에 발견된 두 개의 블록)

비트코인속의블록체인

블록체인 분기(두 개의 블록이 전파되어 네트워크가 두 개로 분열)

비트코인속의블록체인

블록체인 분기(하나의 분기로 확장되는 새 블록)

비트코인속의블록체인

블록체인 분기(새로운 최장 체인으로의 네트워크 수렴)

비트코인속의블록체인

합의 공격

• 적어도 이론상으로는 해싱 파워를 이용해 정직하지 않거나 파괴적인 목적을 달성하려는 채굴자들(혹은 풀)에 의한 공격에 비트코인 합의메커니즘은 취약하다.

• 합의 공격은 오로지 가장 최근 블록에만 영향력을 미치며, 향후 발생하는 블록에 대해서 서비스거부 공격 등을 야기할 뿐이다.

• 값비싼 품목을 판매하는 상인은 구매자에게 제품을 건네주기 전에 최소 6회의 승인을 기다려야 한다.

• 다수의 채굴 파워를 가지고 있는 공격자는 간단한 방법을 통해 특정 거래를 무시할 수 있다. 다른 채굴자가 채굴한 블록 안에 해당 특정거래가 담겨 있는 경우, 공격자는 의도적으로 블록에 대한 분기를 만들고 해당 블록을 다시 채굴해서 특정 거래를 제외시키도록 할 수있다. 이러한 유형의 공격은 공격자가 채굴 파워의 다수를 통제하는 한 특정 주소 혹은 주소 집합에 대해 서비스거부를 계속 유지할 수있다.

• 비트코인을 쓸모없게 만들어 버리려는 목표를 가진 악성 공격을 하려면 막대한 투자와 은밀한 계획이 필요하며, 대부분 국가가 후원해주는 상황 하에서 공격이 진행된다.

• 최근들어 P2Pool 채굴 등과 같이 비트코인이 한층 개선되면서 채굴 작업에 대한 통제를 분산화하는 데 그 목적을 두고 있으며, 이를 통해비트코인 합의 공격이 좀 더 어려워지고 있다.

블록체인과안전한초연결사회

비트코인의 보안

• 비트코인은 전통적인 지불 수단과는 완전히 다르다. 비트코인 거래에서는 특정 가치에 대해서만 특정인에게 승인하기 때문에 위조 또는수정될 수 없다. 거래 당사자의 신분 등 어떠한 개인 정보도 유출되지 않고 추가적인 결제를 만들 권한도 없다. 따라서 비트코인 결제네트워크는 암호화시키거나 도청으로부터 보호할 필요가 없다. 안전하지 않는 와이파이나 블루투스 등의 공개 채널을 통해서도 보안성을유지한 채 비트코인 거래를 사실상 전송할 수 있다.

• 컴퓨터에 설치된 수천 개의 소프트웨어들 중 악성(rough)소프트웨어가 단 하나만 있어도 키보드와 파일들에 해를 끼쳐 지갑어플리케이션에 저장되어 있는 비트코인을 훔쳐낼 수 있다.

• 컴퓨터상에 비트코인을 저장하게 되면서 사용자들은 컴퓨터 보안의 필요성에 초점을 맞추게 되었다. 이로 인해 하드웨어 암호화, 키 저장및 하드웨어 지갑, 다중서명 기술, 디지털 에스크로의 형태로 정보 보안의 영역에서 엄청난 혁신적 결과물이 나왔다.

• 물리적 비트코인 저장 / 하드웨어 지갑 / 리스크 균형 맞추기 / 리스크 다각화하기 / 멀티시그와 거버넌스 / 생존력

블록체인과안전한초연결사회

Blockchain 1.0 (currency / http://coinmarketcap.com/currencies/views/all/)

블록체인과안전한초연결사회

Blockchain 2.0 / 3.0 (contracts, government, health, science, literacy, culture, and art)

구분 예

General 에스크로 거래, 담보계약, 제3자 중재, 다자간 서명 계약

Financial transactions 주식, 사모펀드, 크라우드 펀딩, 채권, 뮤츄얼 펀드, 금융파생상품, 연금, 보조금

Public records 토지 와 부동산 소유권, 차량 등록, 사업자 등록증, 혼인 증명서, 사망 진단서

Identification 운전면허증, 신원증명서, 여권, 유권자 등록

Private records 차용증서, 대출, 계약, 내기, 서명, 유언장, 신탁, 에스크로(조건부 날인 증서)

Attestation 보험증, 소유증, 공증 문서

Physical asset keys 집, 호텔 방, 렌탈 카, 자동차 접근권

Intangible assets 특허, 상표, 저작권, 예약, DNS

블록체인과안전한초연결사회

분류

블록체인과안전한초연결사회

사이드체인

블록체인과안전한초연결사회

ethereum

블록체인과안전한초연결사회

ethereum

블록체인과안전한초연결사회

53

감사합니다!