brunch

4-1. 비트코인 지갑과 소유권 개념 (상)

비트코인 개인키, 공개키, 주소의 작동원리

시리즈 1편부터 정주행 하기 -> [쉽게 배우는 비트코인 작동원리]



비트코인은 어디에 보관할까?


금, 지폐, 귀금속 등은 모두 금고에 보관할 수 있다.

직접 만질 수 있는 실물이 존재하기 때문이다.


하지만 그에 반해 비트코인은 실체가 없다.

만질 수 있는 물리적 형태가 존재하지 않으며, 그저 블록체인에 기록된 내용만이 소유권을 증명한다.


따라서 비트코인은 속된 말로 "디지털 쪼가리"일 뿐이다.


그렇다면 비트코인의 소유권은 어떻게 성립되는 것이며, 비트코인을 보유한다라는것은 무엇을 의미할까?


이번 글에서는 개인 키, 공개 키, 비트코인 주소(일종의 계좌번호) 간의 관계를 이해하고, 비트코인 지갑의 역할에 대해 알아볼 예정이다.



"비트코인 계좌"의 생성과정


현실에서 돈을 받고 송금하려면 대부분의 경우 은행 계좌를 개설해야 한다.

비트코인도 같은 이치로 일종의 계좌가 필요한데, 이를 Bitcoin Address(비트코인 주소)라고 부른다.


비트코인 주소가 은행 계좌와 가장 뚜렷하게 구분되는 점은 발급하고 사용하는 과정에서 은행이나 국가와 같은 제삼자가 개입하지 않는다는 사실이다.


다음은 비트코인 주소가 생성되는 과정이다.

기술적으로 보다 깊이 있는 서술을 원하시면 아래 링크의 [4-1 부록]을 참고하시기 바랍니다.

[4-1 부록] 비트코인 주소 생성 과정 심화

mbc2_0401.png image source: Mastering Bitcoin

1. Private Key(개인/비밀 키) 생성


비트코인의 개인키는 통장의 인감도장과 같은 역할을 한다.

사용자는 이를 이용해서 비트코인에 대한 소유권을 증명하고, 사용할 수 있다.


개인키는 간단하게 64개의 알파벳(a~f)과 숫자(1~9)로 표현된 랜덤 숫자라고 할 수 있다.

예). 064b18aec335291e805c624d3721cd21f08d4aa8963bb9db6fbd5ad49df3bbc3

*주의: 절대 위 개인키를 실제로 사용하지 말 것. 이미 노출된 비밀번호와 다름없는 상태.

개인키를 사용자가 직접 생성하는 방법도 있지만, 보안과 편의상의 이유로 개인키 생성 작업은 주로 비트코인 지갑 소프트웨어가 랜덤으로 대신한다.


2. Public Key(공개키) 생성


비트코인의 공개키는 계좌의 통장과 같은 역할을 한다.

잘 숨겨야 하는 개인키와 달리, 공개키는 다른 사람과 공유해도 문제가 되지 않는다.

통장을 남에게 보여줄 수는 있지만, 통장만으로 출금을 승인할 수는 없기 때문이다.


공개키는 Elliptic Curve Multiplication(타원 곡선 곱셈)를 통해서 생성된다.

이 곱셈법은 앞서 배웠던 SHA256 해시 함수와 같이 단방향 계산만 가능하고 역추산이 불가능하다.

elliptic-curve-cryptography-diagram.png image source: vmware

이렇게까지나 특별한 방법으로 공개키를 생성하는 이유는 보안에 있다.


비트코인 수신을 위해 생성한 공개키를 통해 역으로 개인키를 생성할 수 있다면, 누군가 내 지갑에 대한 소유권을 행사하여 보유하고 있는 비트코인을 도난당할 수 있기 때문이다.


따라서 비트코인은 타원 곡선 암호를 통해 개인키 보유자가 쉽게 공개키를 생성할 수 있도록 하는 한편, 누군가 반대로 역추산을 할 수 없도록 하는 단단한 암호 체계를 구축하였다.


3. Bitcoin Address(비트코인 주소) 생성


비트코인의 주소는 통장에 적힌 계좌번호라고 할 수 있다.

남에게 계좌번호를 알려주는 것과 같은 맥락으로, 주소를 알려줌으로써 비트코인을 입금받을 수 있다.


주소는 실제로 비트코인을 수신해야 하기 때문에 다음과 같은 특성을 지녀야 한다.

1. 모두에게 공개되더라도 개인키를 역추산할 수 없어야 한다.

2. 쾌적한 사용자 경험을 위해 적당한 길이를 유지해야 한다.

3. 주소 오입력으로 인한 비트코인 손실을 최대한 방지해야 한다.
*잘못된 주소로 비트코인을 전송할 시 아무도 복구할 수 없다.


위 조건을 모두 만족하기 위해 비트코인 주소타원 곡선 암호를 통해 구한 공개키를 다시 여러 함수에 집어넣고 길이를 조정하는 최적화 단계를 거쳐 생성된다.




이렇게 생성된 계좌의 구성 요소를 종합해보면 비트코인은


개인키(인감도장)을 통해 출금을 승인하고,

공개키(통장)을 통해 자금을 관리하고,

주소(계좌번호)를 통해 비트코인을 입금받는 시스템이라는 것을 알 수 있다.




이 글에서는 비트코인 주소의 기술적인 측면을 중점적으로 다뤘다.

독자의 호흡과 글의 깔끔한 전개를 고려하여 잠시 마침표를 찍고, 이어지는 (하) 편에서 비트코인 주소가 가지는 의미와 소유권 개념에 대해 추가적으로 서술할 예정이다.



참고문헌


Antonopoulos, Andreas. Mastering Bitcoin, 2nd Edition. O’Reilly Media, Inc, 2017.


Elusiv Privacy. “An Introduction to Elliptic Curve Cryptography.” Medium, Medium, 7 Dec. 2023, medium.com/@elusivprivacy/an-introduction-to-elliptic-curve-cryptography-19a6e5752fcf.



keyword
매거진의 이전글3. 비트코인 블록체인 해부하기