27
2013. 12. 19. 조남수 Bitcoin 기술 분석 소프트웨어연구부문/사이버보안연구단/암호기술연구실

Bitcoin 기술분석 - 조남수

  • View
    4.779

  • Download
    2

Embed Size (px)

DESCRIPTION

'디지털통화와 비트코인' 세미나 발표 자료 한국전자통신연구원 암호기술연구실 조남수 박사 2013.9.19

Citation preview

Page 1: Bitcoin 기술분석 - 조남수

2013. 12. 19.

조남수

Bitcoin 기술 분석

소프트웨어연구부문/사이버보안연구단/암호기술연구실

Page 2: Bitcoin 기술분석 - 조남수

2

전자 화폐 (e-Cash)

David Chaum이 최초 제안

“Blind signature for untraceable payment”, Crypto 1982

발전 방향

현실 화폐의 특징과 최대한 유사하게 설계

익명성 강조

Off-line 사용

발행 기관이 제한적

위조 방지 (이중 사용 방지)

Page 3: Bitcoin 기술분석 - 조남수

3

이중 사용

문제점 실물 화폐에 비해 복제가 용이함

Off-line 거래에서 이중 사용 방지는 근본적으로 어려움

사후 추적 기능 제공

이중 사용 방지를 위해 다양한 암호 기술 적용

비효율성 증가

011101101111…

011101101111…

011101101111…

Page 4: Bitcoin 기술분석 - 조남수

4

Bitcoin

Satoshi Nakamoto 제안

“Bitcoin : A Peer-to-Peer Electronic Cash System”, 2009

기존 전자 화폐와 차별화

공개성

On-line 사용

발행 및 검증 분산화

Page 5: Bitcoin 기술분석 - 조남수

5

해쉬 함수

SHA-256, RIPEMD-160

전자 서명

ECDSA

암호학적 도구

11010 … 011

공개키

서명 검증

비밀키

키생성

균일한 길이 난수열 출력

Page 10: Bitcoin 기술분석 - 조남수

10

Block Chain을 이용한 transaction confirmation

Bitcoin 구성

Alice Bob

Sig(SKA1 ,1BTC : A1 Bob)

A1

A2

A3

Charley

Sig(SKA1 ,1BTC : A1 Charley)

Miner 이중 사용 확인

Bn-2 Bn-1 Bn …

Bn

confirmed

Transaction fail

Page 11: Bitcoin 기술분석 - 조남수

11

Transaction = input + output

하나의 transaction에 다수의 input, output 포함 가능

output의 총합은 input 총합을 넘을 수 없음

Transaction 구조

A B 1BTC

B C 1BTC

C D1 0.6 BTC

C D2 0.4 BTC

D2 E 0.4 BTC

E F 0.4 BTC

E’ F 0.7 BTC

F G 1.1 BTC

Transaction

input output

Page 12: Bitcoin 기술분석 - 조남수

12

신규 transaction의 input을 확인

이중 사용 확인

Tx5(0)

Transaction (Tx5)

input output

Tx5(1)

Tx5(2)

Tx1(0)

Tx2(1)

Tx4(2)

Tx1

Tx2

Tx3

Tx4

Tx1(0)

Tx1(1)

Tx2(0)

Tx2(1)

Tx3(0)

Tx4(0)

Tx4(1)

Tx4(2)

Tx1(1)

Tx2(0)

Tx1(0)

Tx3(0)

코인생성

이중 사용 확인

Tx2(1)

Tx4(0)

Tx4(1)

Tx4(2)

unspent outputs

Page 13: Bitcoin 기술분석 - 조남수

13

서명 및 검증

Transaction 서명 및 검증

자료 : “Bitcoin : A Peer-to-Peer Electronic Cash System”, S. Nakamoto

Page 14: Bitcoin 기술분석 - 조남수

14

Example (Real Transaction)

Hash : 98ead69d1637143d9b548482c20872a230ff657b8c4e5b1bde2ae92b98c62e06

Appeared in Block 275,686 (2013-12-18 19:36:15)

Size : 798 bytes

input

output

자료 : blockexplorer.com

Page 15: Bitcoin 기술분석 - 조남수

15

Example (Transaction Raw Data)

자료 : blockexplorer.com

Page 16: Bitcoin 기술분석 - 조남수

16

Example (Coinbase Transaction)

자료 : blockexplorer.com

Page 17: Bitcoin 기술분석 - 조남수

17

Block Chain 구조

자료 : “Bitcoin : A Peer-to-Peer Electronic Cash System”, S. Nakamoto

Page 18: Bitcoin 기술분석 - 조남수

18

Merkle Tree 구조

Tx1 Tx2 Tx3 Tx4 Tx5 Tx6

h(Tx1) h(Tx2) h(Tx3) h(Tx4) h(Tx5) h(Tx6)

a1 a2 a3 a4 a5 a6

h(a1||a2)

b1

h(a3||a4)

b2

h(a5||a6)

b3

h(a5||a6)

b4

복제

h(b1||b2)

c1

h(b3||b4)

c2

h(c1||c2)

d1

Page 19: Bitcoin 기술분석 - 조남수

19

Proof of work (hashcash)

Block 생성을 위해 일정량의 계산을 요구

전체 Block의 256-bit hash값에 대한 조건이 주어짐

0 < hash of Block < Target

조건을 만족하는 nonce를 찾는 문제

컴퓨팅 환경 및 사용자 변화와 무관하게 각 block 생성에 걸리는 시간을 일정하게 유지

난이도 조정

매 2016 block 마다 조정 (1block/10분 = 2016blocks/2주)

new Target = old Target ×

최근 2016 block 생성에 걸린 시간 (초)

2주 (초)

Page 20: Bitcoin 기술분석 - 조남수

20

Mining & Incentives

Mining

기존 block chain에 새로운 block를 계산하여 추가

최근 생성된 block이 복수일 경우, miner가 새 block을 추가할 branch 선택

기존 block에 포함되지 않은 transaction을 선택적으로 포함 (이중 사용 transaction 제외)

Incentives

각 block은 첫 transaction으로 bitcoin 발행

최초 50BTC/1block 발행, 매 21만 block마다 반감

(현재 25BTC/1block)

Block에 포함된 모든 transaction의 verification fees

Page 21: Bitcoin 기술분석 - 조남수

21

Block Example

Block #275,667

자료 : blockexplorer.com

Page 22: Bitcoin 기술분석 - 조남수

22

Genesis Block

자료 : blockexplorer.com

Page 23: Bitcoin 기술분석 - 조남수

23

Fork

(거의) 동시에 두 개의 새로운 Block이 chain에 연결

각 노드(miner)는 두 block 중 하나를 선택, 새로운 block 연결

miner의 선택에 따른 branch 사이의 경쟁

두 branch의 차이가 크게 벌어질 수록 많은 수의 miner가 긴 branch로 이동하고, 최종적으로 짧은 branch는 사라짐

Bn-2 Bn-1 Bn

Bn+1

B’n+1

Bn-2 Bn-1 Bn

Bn+1

B’n+1

Bn+2 Bn+3 Bn+4

B’n+2

Page 24: Bitcoin 기술분석 - 조남수

24

이중 사용 방지

가정 기존 block에서 사용되고 확인된 output을 새로운

transaction에 input으로 사용하는 것은 불가능

모든 transaction은 block에 추가되어야 거래가 완료

즉, 이중 사용을 위해서는 동일 output을 포함한 transaction이 서로 다른 branch에 나뉘어 있어야 함

Branch 통합 후 사라진 branch에 포함된 transaction 중 기존 block chain

에 포함되지 않은 transaction은 새로운 block에서 흡수 이중 사용 transaction은 새로운 block에서 제외됨

Page 25: Bitcoin 기술분석 - 조남수

25

Transaction 저장

Transaction 과거의 모든 transaction을 저장하지 않고 사용이 완료된

transaction에 대한 기록은 폐기

“unspent transaction” 리스트만 관리

Merkle Tree 축약

a1 a2 a3 a4 a5 a6 a7 a8

b1 b2 b3 b4

c1 c2

Root

spent spent spent spent spent spent spent

Tx1 Tx2 Tx3 Tx4 Tx5 Tx6 Tx7 Tx8

a3 a4

b1 b2

c1 c2

Root

Tx4

Page 26: Bitcoin 기술분석 - 조남수

26

51% attack 공격자가 전체 사용자의 51% 이상의 계산 능력을 지님

공격자는 두 개의 branch를 고의로 생성, 두 개의 branch 중 자신이 원하는 branch를 정당한 block chain으로 남길 수 있음

Race Attack 정당한 transaction 전송(unicast)함과 동시에 동일 input에 대한 수 백 개의

작은 transaction을 생성하여 여러 사용자에 전송(broadcast)

많은 사용자들에 전송한 transaction이 정당한 것으로 인정받을 확률이 높음

Finney Attack 공격자가 Transaction(AA’)을 포함한 block 생성

동일한 coin으로 Transaction(AB)를 지불

B가 거래를 인정하면 미리 생성한 block 발표

공격의 대상이 block confirmation까지 거래를 대기하면 방어 가능

알려진 공격들

Page 27: Bitcoin 기술분석 - 조남수

27

Q & A

Thank You