공개키란 무엇인가

공개키(Public Key)란?

공개키는 암호학의 핵심 개념으로, 비트코인 네트워크에서 매우 중요한 역할을 합니다. 공개키는 개인키로부터 타원곡선 디지털 서명 알고리즘(ECDSA, 특히 secp256k1 곡선)을 통해 생성되는 길고 복잡한 문자열(일반적으로 256비트)입니다. 쉽게 말해:

  • 정의: 공개키는 누구와도 공유할 수 있는 값으로, 비트코인을 받거나 거래 서명을 검증할 때 사용됩니다.

  • 개인키와의 관계: 개인키는 자금 소유권을 증명하기 위해 거래에 서명하는 “비밀 키”이고, 공개키는 그로부터 파생되어 타인이 해당 서명이 유효한지 검증할 수 있게 해주는 “공개 키”입니다.

  • 생성 방식: 개인키 → 공개키 변환은 일방향(역연산 불가)이므로, 안전성이 보장됩니다.

공개키와 비트코인 주소의 관계

비트코인에서 공개키 자체가 곧바로 수신용 주소로 쓰이지는 않습니다. 공개키는 추가 처리 과정을 거쳐 실제 주소가 됩니다. 주소 유형(P2PKH, P2SH, 세그윗, 탭루트 등)에 따라 공개키가 변환·활용되는 방식이 달라집니다:

  1. P2PKH(레거시 주소)

    • 공개키를 SHA-256, RIPEMD-160 해시로 변환해 짧은 공개키 해시를 만듭니다.

    • 버전 바이트와 체크섬을 붙여 “1”로 시작하는 주소가 생성됩니다.

    • 예: Public Key → Hash → 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

  2. P2SH(스크립트 주소)

    • 공개키가 멀티시그 등 스크립트의 일부로 포함되고, 스크립트를 해시해 “3”으로 시작하는 주소를 만듭니다.

    • 주소에는 공개키가 직접 보이지 않으며, 스크립트 논리 안에 포함됩니다.

  3. 세그윗(SegWit) 주소

    • 공개키는 여전히 핵심이지만, 서명 데이터가 분리 저장되어 효율이 높습니다. 공개키 해시 또는 스크립트 해시는 Bech32로 인코딩되어 “bc1q”로 시작합니다.

    • 거래 시 공개키는 “위트니스 데이터”의 일부로 제공됩니다.

  4. 탭루트(Taproot, P2TR 주소)

    • 공개키는 슈노르 서명 기술과 함께 처리되어 “bc1p”로 시작하는 탭루트 출력이 생성됩니다.

    • 공개키는 더 복잡한 조건부 스크립트를 지원하면서 프라이버시를 강화합니다.

공개키의 역할

  • 비트코인 수신: 주소(공개키에서 파생)를 상대에게 공유하면 상대가 BTC를 보낼 수 있습니다.

  • 거래 검증: 비트코인을 지출할 때, 공개키로 개인키 서명을 검증하여 거래의 정당성을 보장합니다.

  • 보안성: 타원곡선 암호의 수학적 복잡성 덕분에 공개키로부터 개인키를 유도하는 것은 사실상 불가능하므로, 공개적으로 공유해도 안전합니다.

쉬운 비유

공개키는 “우편함 번호”, 개인키는 “우편함 열쇠”에 비유할 수 있습니다. 다른 사람에게는 우편함 번호(주소)를 알려 편지를 보내게 할 수 있지만(BTC 수신), 우편함을 여는 열쇠(개인키)는 본인만 가지고 있습니다. 공개키는 주소를 생성하고 서명을 검증하는 “기술적 설계도”에 가깝습니다.

간단한 예시

  • 개인키 예: 5J3mBbAH58CpQ3Y5RNJpUKPE62SQ5tfcvU2JpbnkeyhfsYB1Jcn

  • 파생된 공개키 예: 04x1...(아주 긴 16진수 문자열)

  • 최종 주소 예: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa(P2PKH 유형)

Last updated