공개키와 개인키

비트코인 지갑에는 쌍으로 구성된 여러개의 개인키(k)와 공개키(K)가 들어있다.


개인키

개인키는 무작위로 추출한 단순한 숫자로 구성되어 있다. 백업을 해놓지 않고 분실할 경우 영원히 복구 불가.

1~ n-1의 숫자로 구성 될수 있으며

n은 비트코인에서 사용된 타원곡선의 위수(order)라고 정의된 상수(n=1.158*10⌒77, 2⌒256 보다 약간 작은 값)이다.

SHA256 해시 알고리즘을 통해 생성하여 n-1 보다 작으면 개인키로 사용한다.


공개키

공개키는 타원곡선 곱셈 함수를 이용하여 개인키로부터 계산되며 그 과정을 거꾸로 계산할 수 없다.

K=k*G (k는 개인키, G는 생성포인트) K가 공개키이다.


타원곡선 암호법

비트코인에 사용되는 것과 유사한 타원 곡선. 비트코인은 특정한 타원곡선과 여러 개의 수학상수를 사용하면 이 내용은 미국리표준기술원(NIST)에서 개발한 spec256k1 이라는 표준에 나와 있다.




공개키로 부터 비트코인 주소를 만드는데 사용되는 알고리즘은 '보안해시 알고리즘(SHA)'과 RACE Integrity Primitives Evaluation Message Digest(RIPEMD) 이다. 예를 들면 SHA256, PRIPEMD160 등이다.

 A = PIPEMD160(SHA256(K))

비트코인의 주소는 일방 함수를 사용해서 공개키로부터 생성된 것이다.


비트코인의 주소는 거의 항상 'Base58Check'라는 인코딩을 통해 사용자들에게 공개 된다.



< 공개키를 비트코인 주소로 전환하는 과정>


<Base58의 인코딩 과정>






'디지털 양피지 > Blockchain' 카테고리의 다른 글

[Blockchain] 비트코인 네트워크  (0) 2016.02.04
Posted by 빨간 양말