비트코인 개인키,공개키관계

in #coinkorea6 years ago (edited)

대부분 비트코인의 개인키와 공개키에 대해서 막연한 지식만을 가지고 있을 것입니다. 부족하지만 나름대로 정리한 것을 올립니다.

비트코인은 유한체 내에서 정의가 되어 있습니다. 정의가 되는 타원함수는 다음과 같습니다.

y^2 mod p = x^3 + 7 mod p

p = 2^256 - 2^32 - 2^9 - 2^8 - 2^7 - 2^6 - 2^4 -1

주어진 생성점 G = (G_x, G_y)은 공개되어 있고,
임의의 수 0~(p-1) 사이에서 선택된 수를 개인키 k라 합니다. 개인키는 256bit 숫자입니다.
K = kG 수식으로 공개키 K를 구합니다. K는 좌표로서 x,y사이의 타원함수를 당연히 만족합니다. K의 좌표을 나타내는 방법은 다음과 같습니다.

0x04K_xKy : 520bit
0x02K_x : 264bit(y좌표가 짝수일때)
0x03K_x : 264bit(y좌표가 홀수일때)

비트코인 주소는 HASH160(위 공개키값)로 계산합니다. 한점 공개키를 두가지형태로 표현하므로 비트코인 주소는 2가지가 나옵니다. 이 과정에서 개인키도 구분하기 위해서 공개키가 264bit형식일때는 개인키 마지막에 0x01을 추가해서 우리가 읽기 쉬운 base58인코딩을 합니다.

정리하면 정해진 개인키에 대해서 계산된 공개키 표현을 2가지로 합니다. 그러므로 이것을 해쉬함수를 적용한 비트코인 주소는 2가지가 됩니다.

블록체인 전송에 나오는 공개키 형태는 2가지 입니다. 공개키 자체를 노출시키는 전송방법이 있고, 주소나 다름 없는 HASH160(public_key)를 노출시키는 패턴이 있습니다. 위 2가지에 해당되지 않는 전송방법도 있습니다. 개인키, 공개키 짝으로 거래가 제어되든지, 개인키,HASH160(공개키) 짝으로 거래가 제어된다고 볼 수 있습니다.

Sort:  

eliptic curved 군요..

Coin Marketplace

STEEM 0.29
TRX 0.12
JST 0.032
BTC 63506.20
ETH 3065.87
USDT 1.00
SBD 4.04