비트코인을 사용하다 보면 주소, 공개키, 개인키라는 용어를 자주 접하게 됩니다. 이 세 가지는 서로 밀접하게 연결되어 있지만, 각각의 역할과 개념은 다릅니다. 이번 글에서는 비트코인 주소, 공개키, 개인키의 차이점과 이들이 어떻게 작동하는지를 쉽게 설명하겠습니다.
개인키(Private Key)란?
개인키는 비트코인 사용자만이 알고 있어야 하는 비밀 키로, 자신의 자금을 사용하는 데 꼭 필요합니다. 무작위로 생성된 256비트 숫자이며, 이 키가 바로 모든 비트코인 보안의 출발점입니다.
예를 들어, 개인키는 다음과 같이 표현됩니다:
5J3mBbAH58CERn3yEvZzjNFe1Y6eD2K5FzXYZabcdEfghijKLMN
이 개인키를 통해 공개키와 주소를 생성할 수 있으며, 개인키가 유출되면 자산도 도난당할 수 있습니다.
공개키(Public Key)란?
공개키는 개인키를 통해 계산되며, 누구에게나 공개해도 되는 정보입니다. 이는 곧 개인키로 서명된 거래가 진짜임을 검증하는 데 사용됩니다. 개인키가 잠금장치라면, 공개키는 잠금을 확인하는 열쇠 역할을 합니다.
공개키는 타원곡선 암호 알고리즘(ECDSA)을 사용해 개인키로부터 생성되며, 일반적으로 다음과 같이 생겼습니다:
04bfcab12... (압축되지 않은 공개키)
비트코인 주소(Bitcoin Address)란?
비트코인 주소는 사용자 간 비트코인을 주고받을 때 사용하는 ‘계좌 번호’입니다. 공개키에서 해시 함수를 통해 생성되며, 사용자 친화적인 형식으로 나타납니다.
예시:
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
주소는 Base58Check 인코딩으로 구성되며, 앞자리 숫자로 주소 유형을 구분할 수 있습니다. 예를 들어, ‘1’로 시작하면 P2PKH 주소, ‘3’은 P2SH 주소, ‘bc1’은 Bech32 형식입니다.
세 가지의 관계
- 먼저 무작위로 개인키를 생성합니다.
- 그 개인키로부터 공개키를 계산합니다. (타원곡선 연산)
- 공개키에 해시 함수(SHA-256 + RIPEMD-160)를 적용해 비트코인 주소를 생성합니다.
즉, 흐름은 개인키 → 공개키 → 비트코인 주소로 이어집니다. 이 과정은 일방향이며, 주소나 공개키만으로 개인키를 역산할 수는 없습니다.
보안 측면에서의 중요성
개인키는 절대 노출되어선 안 됩니다. 공개키나 주소는 공개되어도 무방하지만, 개인키가 있으면 그 사람의 모든 자금을 사용할 수 있기 때문입니다.
거래 시, 송금자는 자신의 개인키로 서명하고, 수신자는 공개된 주소로 자금을 받습니다. 네트워크는 이 거래가 올바르게 서명되었는지 공개키로 검증합니다.
지갑(지갑 소프트웨어)의 역할
비트코인 지갑은 이러한 키 쌍(개인키, 공개키)과 주소를 생성하고 저장하며, 서명 및 거래 송신 등의 기능을 제공합니다. 대부분의 지갑은 BIP32, BIP39, BIP44 등 계층적 결정론(HD Wallet)을 기반으로 여러 주소를 하나의 마스터 키로 관리합니다.
결론
개인키는 비밀 열쇠로서 사용자의 자금을 소유하고 제어할 수 있는 핵심 키입니다.
공개키는 개인키로부터 파생되어, 거래 서명의 유효성을 검증하는 데 사용됩니다.
비트코인 주소는 공개키를 해시하여 만든 사용자 식별용 문자열로, 비트코인을 수신할 수 있는 창구 역할을 합니다.
이 세 가지는 각각의 역할을 가지고 있지만, 하나의 흐름으로 이어지며 비트코인 시스템의 보안성과 신뢰성을 유지하는 데 핵심적인 역할을 합니다.