공개키와 개인키란? 암호화폐 보안은 어떻게 보장되나요?
공개키와 개인키 상세 해설: 암호화폐 보안의 기초
공개키 암호학(Public Key Cryptography)은 블록체인과 암호화폐 보안 체계의 초석입니다. 이 체계에서 각 사용자는 한 쌍의 키(개인키와 공개키)를 보유합니다. 개인키는 거래에 서명하고 자산 소유권을 증명하는 데 사용되며, 공개키는 지갑 주소를 생성하고 서명을 검증하는 데 사용됩니다. 공개키와 개인키의 작동 원리를 이해하는 것이 암호자산 보안을 보장하는 첫걸음입니다.
1. 암호학 기초
1.1 대칭 암호화와 비대칭 암호화
암호학에서 암호화 방식은 두 가지로 나뉩니다:
대칭 암호화: 암호화와 복호화에 같은 키를 사용합니다. 예: AES 알고리즘. 장점은 속도가 빠르다는 것이고, 단점은 키 배포에 보안 위험이 있다는 것입니다. 어떻게 키를 안전하게 상대방에게 전달할 것인가?
비대칭 암호화(공개키 암호학): 한 쌍의 키(공개키와 개인키)를 사용합니다. 공개키는 공개적으로 공유 가능하고, 개인키는 반드시 비밀로 유지해야 합니다. 공개키로 암호화한 데이터는 대응하는 개인키로만 복호화 가능하며, 그 반대도 마찬가지입니다.
블록체인은 주로 비대칭 암호화를 활용하여 디지털 서명을 구현하며, 데이터 암호화가 아닙니다.
1.2 타원곡선 암호학(ECC)
대부분의 블록체인은 타원곡선 암호학(Elliptic Curve Cryptography)을 사용하여 키 쌍을 생성합니다. 비트코인과 이더리움은 secp256k1 곡선을 사용합니다.
ECC의 핵심 특성:
- 개인키에서 공개키를 단방향으로 계산 가능(수학적으로 용이)
- 공개키에서 개인키를 역으로 추론하는 것은 불가능(계산적으로 불가능)
- RSA 등 전통 알고리즘에 비해 더 짧은 키 길이로 동등한 보안성 제공
2. 개인키
2.1 개인키란
개인키는 256비트(32바이트)의 난수로, 보통 64개의 16진수 문자로 표현됩니다. 예:
e9873d79c6d87dc0fb6a5778633389f4453213303da61f20bd67fc233aa33262
개인키의 가능한 수는 약 2^256으로, 이것은 천문학적 숫자(약 10^77)로 알려진 우주의 원자 총수보다 많습니다. 따라서 두 사람이 같은 개인키를 무작위로 생성할 확률은 실질적으로 0입니다.
2.2 개인키의 생성
개인키의 보안성은 그 무작위성에 달려 있습니다. 신뢰할 수 있는 개인키 생성은 암호학적으로 안전한 난수 생성기(CSPRNG)를 사용해야 합니다.
안전한 생성 방법:
- 하드웨어 지갑 내부의 진정한 난수 생성기
- 운영체제가 제공하는 암호학적 보안 난수 API
- 감사를 거친 지갑 소프트웨어
불안전한 방법:
- 간단한 숫자나 단어를 개인키로 사용
- 불안전한 난수 생성기 사용
- 신뢰할 수 없는 웹사이트나 환경에서 생성
2.3 개인키의 핵심적 지위
"개인키를 통제하면 자산을 통제한다" -- 이것이 암호화폐 보안의 첫 번째 법칙입니다.
- 개인키 보유 = 해당 주소의 모든 자산에 대한 완전한 통제권
- 개인키 유출 = 개인키를 획득한 누구나 자산을 전송 가능
- 개인키 분실 = 자산을 영구적으로 찾을 수 없음(고객센터 없음, 복구 메커니즘 없음)
3. 공개키와 주소
3.1 개인키에서 공개키로
공개키는 타원곡선 곱셈을 통해 개인키에서 파생됩니다:
공개키 = 개인키 × G(타원곡선의 기저점)
이 연산은 단방향입니다:
- 개인키 → 공개키: 간단한 계산(밀리초 단위)
- 공개키 → 개인키: 계산적으로 불가능(가장 강력한 컴퓨터로도 상상할 수 없는 시간이 필요)
3.2 공개키에서 주소로
지갑 주소는 공개키에 해시 연산을 거쳐 생성되며, 암호자산을 수신하는 데 사용됩니다.
비트코인 주소 생성 과정:
- SHA-256으로 공개키를 해시
- RIPEMD-160으로 다시 해시
- 버전 접두사 추가
- 체크섬 계산(이중 SHA-256의 처음 4바이트)
- Base58Check 인코딩
이더리움 주소 생성 과정:
- Keccak-256으로 공개키를 해시
- 마지막 20바이트(40개의 16진수 문자) 취득
- "0x" 접두사 추가
- 선택: EIP-55 혼합 대소문자 체크섬 적용
3.3 키 관계 체인
시드 구문 → 시드(Seed) → 개인키 → 공개키 → 주소
(단방향 파생, 불가역)
| 요소 | 공개 가능 여부 | 역할 |
|---|---|---|
| 시드 구문 | 절대 비밀 | 모든 키의 백업 및 복구 |
| 개인키 | 절대 비밀 | 거래 서명, 자산 통제 |
| 공개키 | 공개 가능 | 서명 검증 |
| 주소 | 공개 가능 | 자산 수신 |
4. 디지털 서명
4.1 서명 원리
디지털 서명은 개인키의 가장 중요한 응용입니다. 암호화폐 거래를 발행할 때:
- 거래 생성: 송신자 주소, 수신자 주소, 금액 등의 정보 포함
- 거래 해시: 거래 데이터에 해시 연산을 수행하여 거래 "다이제스트" 획득
- 개인키 서명: 개인키로 거래 다이제스트에 서명하여 디지털 서명 생성
- 거래 브로드캐스트: 거래 데이터와 서명을 네트워크에 브로드캐스트
- 서명 검증: 네트워크 노드가 송신자의 공개키로 서명의 유효성 검증
4.2 서명의 특성
- 신원 인증: 거래가 실제로 개인키 보유자에 의해 발행되었음을 증명
- 변조 불가: 거래 데이터가 수정되면 서명이 무효화
- 부인 불가: 서명자가 자신이 거래에 서명했음을 부인할 수 없음
- 개인키 비노출: 검증 과정에서 공개키만 필요하며, 개인키는 절대 노출되지 않음
4.3 ECDSA와 Schnorr 서명
ECDSA(타원곡선 디지털 서명 알고리즘): 이더리움과 비트코인이 원래 사용하는 서명 알고리즘. 매번 서명할 때마다 다른 출력을 생성(난수 k 도입), 서명 길이 약 71-73바이트.
Schnorr 서명: 비트코인이 2021년 Taproot 업그레이드에서 도입. ECDSA와 비교하여:
- 서명 집약 지원(여러 서명을 하나로 합침)
- 선형 특성으로 다중서명 방식이 더 효율적
- 서명 길이가 64바이트로 고정
5. 시드 구문(BIP-39)
5.1 시드 구문이란
시드 구문은 12개 또는 24개의 영어 단어로 구성된 시퀀스로, 개인키의 사람이 읽을 수 있는 백업 형태입니다. 시드 구문 표준(BIP-39)은 2,048개의 미리 정의된 영어 단어 표에서 선택합니다.
예(12단어 시드 구문):
abandon ability able about above absent absorb abstract absurd abuse access accident
5.2 시드 구문에서 키로
BIP-39/BIP-32/BIP-44 표준은 시드 구문에서 여러 주소를 파생하는 계층적 결정적(HD) 경로를 정의합니다:
- 시드 구문 → 시드: 시드 구문 + 선택적 비밀번호 구문(Passphrase)이 PBKDF2 함수를 통해 512비트 시드 생성
- 시드 → 마스터 키: 시드가 HMAC-SHA512를 통해 마스터 개인키와 체인 코드 생성
- 마스터 키 → 자식 키: 계층적 파생 경로(예: m/44'/60'/0'/0/0)를 통해 무한 수의 자식 키 쌍 생성
이것은 의미합니다:
- 하나의 시드 구문으로 여러 체인의 여러 주소를 관리 가능
- 시드 구문만 백업하면 모든 파생된 키와 주소를 복구 가능
5.3 Passphrase(제25번째 단어)
BIP-39는 시드 구문 위에 선택적 비밀번호 구문(Passphrase)을 추가하는 것을 지원하며, 이는 추가적인 보안 레이어로 작용합니다:
- 같은 시드 구문 + 다른 Passphrase = 완전히 다른 키 세트
- 시드 구문이 도난되어도 Passphrase 없이는 자산에 접근 불가
- 하지만 Passphrase를 잊으면 자산도 찾을 수 없음
6. 키 보안 위협
6.1 일반적인 공격 방식
| 공격 방식 | 설명 | 방지 |
|---|---|---|
| 피싱 공격 | 가짜 웹사이트나 고객지원이 시드 구문/개인키를 편취 | 어떤 웹사이트에도 시드 구문을 입력하지 않기 |
| 악성 소프트웨어 | 트로이 목마가 기기에 저장된 키를 탈취 | 하드웨어 지갑으로 개인키 격리 |
| 중간자 공격 | 거래 중 수신 주소를 변조 | 하드웨어 지갑 화면에서 주소 확인 |
| 사회공학 | 공식 직원을 사칭하여 민감 정보 요구 | 어떤 공식 기관도 개인키를 요구하지 않음 |
| 무차별 대입 | 모든 가능한 개인키 조합 시도 | 256비트 키 공간으로 무차별 대입 불가능 |
| 공급망 공격 | 악성 펌웨어가 사전 설치된 하드웨어 기기 | 공식 채널에서 하드웨어 지갑 구매 |
6.2 양자 컴퓨팅 위협
이론적으로 충분히 강력한 양자 컴퓨터는 Shor 알고리즘을 통해 공개키에서 개인키를 추론할 수 있습니다. 그러나 현재:
- 기존 양자 컴퓨터는 위협 수준에 도달하지 못함
- 블록체인 커뮤니티는 양자 저항 서명 알고리즘을 연구 중
- 비트코인 주소는 해시 함수를 사용하여(주소에서 공개키 추론도 불가능) 추가 보호를 제공
- 이더리움 로드맵에 양자 저항 업그레이드 계획 포함
7. 키 관리 모범 사례
7.1 백업 전략
- 시드 구문을 종이나 금속판에 수기로 기록(전자 저장이 아님)
- 지리적으로 분산된 안전한 장소에 여러 부의 백업 보관
- Shamir 비밀 공유 방식을 사용하여 시드 구문을 분할 저장 고려
- 신뢰할 수 있는 가족에게 백업 보관 위치를 알림(긴급 상황 대비)
7.2 스토리지 보안
- 대액 자산은 하드웨어 지갑으로 저장
- 일상적으로 사용하는 핫월렛과 장기 저장 콜드월렛을 분리
- 정기적으로 백업의 완전성 확인
- 같은 기기에서 대액 자산과 일상 브라우징을 관리하지 않기
7.3 운영 보안
- 안전한 환경에서 시드 구문을 생성하고 사용
- 전송 전 전체 목표 주소를 꼼꼼히 확인
- 모든 승인 거래의 내용을 이해하고 검토
- 더 이상 필요하지 않은 컨트랙트 승인을 적시에 취소
8. 키 기술의 진화
8.1 다자간 계산(MPC)
개인키를 여러 조각으로 분할하여, 서명 시 다자간 계산을 통해 완료하며, 어떤 단일 조각으로도 독립적으로 거래에 서명할 수 없습니다. 이는 단일 장애점 위험을 제거합니다.
8.2 계정 추상화
ERC-4337 등의 표준은 스마트 컨트랙트 로직을 사용하여 전통적인 개인키 서명을 대체할 수 있게 하며, 소셜 복구, 다중 인증 등 더 유연한 보안 모델을 지원합니다.
8.3 양자 저항 암호학
블록체인 커뮤니티는 격자 기반 암호학, 해시 서명 등 후양자 암호학 방안을 적극적으로 연구하여 미래의 양자 컴퓨팅 위협에 대비하고 있습니다.
요약
공개키와 개인키는 암호화폐 보안 체계의 핵심입니다. 개인키는 온체인 자산을 통제하는 유일한 자격증명이며, 그 생성, 저장, 사용의 보안성이 자산의 안전성을 직접 결정합니다. 키 쌍의 작동 원리, 디지털 서명의 메커니즘, 시드 구문의 관리 방법을 이해하는 것은 모든 암호화폐 참여자가 자신의 자산을 보호하기 위한 필수 지식입니다.
암호자산 관리를 시작할 준비가 되셨나요? 다음과 같은 방법으로 시작할 수 있습니다:
안드로이드 사용자는 APK를 직접 다운로드할 수 있습니다. VPN 불필요.