Leo's Garage

Mastering Bitcoin 2nd - Programming The Open BlockChain Ch.4-2 본문

BlockChain/Mastering Bitcoin

Mastering Bitcoin 2nd - Programming The Open BlockChain Ch.4-2

LeoBehindK 2018. 8. 31. 00:06
728x90
반응형

계속되는 출장 덕분에... Ch.4-2 정리가 늦어지고 있다.
폭염 이후 이어지는 폭우로 인해서 ㅜㅜ 출장지에 발이 묶여 버렸다.
얼른 집으로 돌아가고 싶은 마음 뿐이다.

Bitcoin Addresses
지난번 시간에 우리는 Bitcoin Private Address에서 Public Address를 생성하기 위한 암호학 관련 내용을 다루었다. 어려운 내용이고 필자도 중간에 잘못 이해한 부분이 있었는데 그 부분은 우선 표시를 해두고 차후에 다시 확인 후 내용을 추가하도록 하겠다. 



The bitcoin address is derived from the public key through the use of one-way cryptographic hashing. A "hashing algorithm" or simply 

"hash algorithm" is a one-way function that 

produces a fingerprint or "hash" of 

an arbitrary-sized input



비트코인 주소는 Public key에 hashing 알고리즘을 이용하여 생성된다.

비트코인 주소는 Public Key와 같지 않다. 비트코인 주소는 Public key로부터 단방향 함수를 이용하여 도출되는 결과값이다. 




비트코인 주소는 위와 같은 순서로 생성되게 된다. 

Public Key에 SHA256, RIPEMD160이라고 하는 즉, Double Hash 함수를 이용하여 Public Key Hash를 생성하는데 160Bit로 구성되어 있다.

이 결과 값에 Base58Check Encoding 방식을 이용하여 최종적으로 

비트코인 주소를 생성하게 되는데 그 과정은 다음과 같다.





위 그림에서 보다시피, Version의 경우에는 해당 결과 값이 어떤 내용을 담고 있는지 보기 쉽게 만들어주는 역할을 하고 Checksum의 경우에는 실제 해당 데이터가 올바른지 아닌지를 판별하게 도와주는 역할을 한다.

Key Formats

같은  Private Key라도 다른 방식으로 표현될 수 있다.
예를 들어 실제 raw data 혹은  Hex data의 경우에는 소프트웨어 내부에서 사용되고 좀처럼 사용자가 구경하기 힘들다.

그래서 지갑 사이에서 키를 넣거나 추출할 경우에는 일반적으로  
WIF(Wallet Import Format)을 사용하게 된다. 





위 표에서 볼 수 있듯이 Private Key는  WIF와 WIF-compressed 형태 두 가지로 표현할 수 있다.


Public Key 또한 표현 방법이 여러가지가 존재한다.





위 그림에서 볼 수 있듯이 가장 처음에 타원 곡선 암호 방식으로 생성을 하게 되면, (x,y) 형태의 좌표로  Public Key를 생성받게 된다.

그 아래에 보면 Prefix로 04를 넣고 x,y 순으로 나열한 것
그리고 y값이 짝수냐 홀수냐에 따라서 02, 03을 Prefix로 넣은 방식

이렇게 두 가지로 Public Key 형태를 변경할 수 있다.

여기서 한 가지 짚고 넘어가야 할 점은 다음과 같다. 

만약에 하나의 Private Key에서 도출된 Public Key의 표현형이 여러개라면 Hashing 함수를 지난 비트코인 주소 값은 여러개가 만들어 질 수 있다.

이러한 혼란스러움을 해결하기 위한 방법은 다음과 같다. 

만약에 지갑에서 Compressed Public Key를 생성할 경우에 Private Key를 추출한다면  WIF-compressed 방식으로만 추출할 수 있다.

반대의 경우도 마찬가지이다.

Paper Wallets

종이 지갑은 다양한 디자인과 크기 그리고 형태를 가지고 있다. 
종이 지갑은 Private Key를 종이에 프린트한 형태인데 종종 비트코인 주소도 같이 포함하기도 한다.

종이 지갑은 백업으로 만들거나, 오프라인 비트코인 저장소로 활요할 때 유용한데 이런걸 흔히 "Cold Storage"라고 알려져 있다.

만약에 종이지갑이 오프라인에서 생성되고 컴퓨터 시스템에 저장된 적이 없다면, 해커나 키로거들 그리고 다른 온라인 컴퓨터 도둑? 들로 부터 안전할 수 있다.

다만 종이 지갑의 단점은 말 그대로 프린트된 키가 도난되거나 촬영되어질 수 있다는 점이다. 이러한 점을 방지하기위해 좀 더 정교한 종이 지갑들은 
BIP-38을 이용하여 지갑 주인이 기억하고 있는 PassPhrase로 지갑을 보호한다.


728x90
반응형
Comments