암호화폐 지갑의 공개 키와 개인 키란? 어떻게 작동하나요?
공개 키와 개인 키는 비트코인 등 암호화폐에서 필수적인 요소예요. 이 키 덕분에 중앙화된 제3자의 승인 없이도 지갑에서 암호화폐를 안전하게 주고받을 수 있어요. 이 키들은 public-key cryptography(PKC) 구조의 일부이며, 디지털 자산의 안전을 보장하는 핵심 구성 요소예요. 그렇다면 공개 키와 개인 키는 무엇이고, 어떻게 함께 작동해 내 자산을 보호할까요?
공개키 암호화란?
공개키 암호화(PKC)는 비대칭 암호 방식을 활용해 데이터의 진위와 무결성을 검증하는 기술이에요. PKC는 원래 컴퓨터에서 메시지 암호화와 복호화에 사용됐지만, 지금은 암호화폐에서 트랜잭션을 암호화하고 검증하는 데 사용돼요.

PKC는 '트랩도어 함수'라는 일방향 수학 함수를 기반으로 해요. 한 방향으로는 쉽게 계산할 수 있지만, 반대로 풀기는 거의 불가능해요. 이론적으로는 풀 수 있지만, 실제로는 양자 슈퍼컴퓨터와 수천 년이 필요할 만큼 어렵죠.
공개 키란?
공개 키는 사용자가 자신의 계정으로 암호화폐를 받을 수 있도록 해주는 암호 코드예요. 누구나 공개 키로 트랜잭션을 보낼 수 있지만, 해당 암호화폐를 실제로 '해제'하고 소유를 증명하려면 개인 키가 필요해요.

실제로 자금을 받을 때 사용하는 공개 키는 '주소'라고도 불리며, 공개 키를 짧게 줄인 형태예요. 예를 들어, 최초의 비트코인 주소는 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa예요.
공개 키는 누구에게나 자유롭게 공유해도 괜찮아요. 콘텐츠 크리에이터나 기부 단체의 페이지에서 암호화폐 주소(공개 키)를 본 적이 있을 거예요. 누구나 송금할 수 있지만, 실제로 자금을 사용하려면 개인 키가 반드시 필요해요.
개인 키란?

개인 키는 내 공개 주소와 연결된 자산의 소유권을 증명하고 사용할 수 있게 해주는 암호 코드예요. 개인 키는 여러 형태로 존재할 수 있어요:
- 256자리 이진 코드
- Hexadecimal code of 64 digits.
- QR 코드
- Mnemonic seed phrase.
개인 키는 어떤 형태든 매우 큰 숫자예요. 이처럼 큰 숫자인 이유는 보안 때문이에요. 개인 키로 공개 키를 만들 수 있지만, 반대로 공개 키에서 개인 키를 찾는 것은 사실상 불가능해요. 또, 하나의 개인 키로 여러 공개 키를 연결할 수도 있어요.
경고! 개인 키는 절대 누구와도 공유하지 마세요!
공개 키와 개인 키는 어떻게 작동하나요?
지갑을 생성할 때, 보안 칩의 진짜 난수 생성기(TRNG)가 개인 키를 만들어줘요. 이 키는 긴 영숫자 문자열로 구성돼요.
개인 키는 오직 나만의 것이며, 자산을 인출하거나 이체, 기타 트랜잭션을 할 때 필요해요.
복잡한 알고리즘이 개인 키를 바탕으로 공개 키를 생성해요. 이 공개 키는 긴 숫자 문자열로 압축되어 지갑 주소로 사용돼요.
개인 키가 어떻게 공개 키를 생성하나요?
개인 키는 비대칭 암호화(예: RSA, ECC, DSA 등 수학적 알고리즘)를 통해 공개 키를 생성해요.
여기서는 비트코인 등 최신 블록체인에서 널리 쓰이는 타원 곡선 암호화 방식의 원리를 간단히 설명할게요.
- 타원 곡선 선택
먼저, 특정한 수학적 특성을 가진 타원 곡선을 선택해요. 비트코인에서는 secp256k1 곡선을 사용해요.
- 고유 점 도출
개인 키는 큰 정수로 표현되는 임의의 숫자예요. 이 숫자를 곡선 위의 고유한 점으로 변환하는데, 이를 점 곱셈(point multiplication)이라고 해요.
- 공개 키 생성
이렇게 얻은 곡선 위의 점이 바로 공개 키가 돼요. (x, y) 두 좌표로 표현하지만, 보통 x좌표만 사용해 압축된 공개 키를 만들어요.
- 고유 점 압축(선택)
효율성을 위해 전체 공개 키를 더 짧게 압축할 수 있어요. 그래도 암호화 작업에는 문제가 없어요.
- SHA-256, RIPEMD-160 해싱
비트코인에서는 압축된 공개 키를 SHA-256과 RIPEMD-160 해시 함수로 두 번 해싱해요. 이 과정을 거치면 'Public Key Hash(PKH)'라는 짧고 고정된 값이 만들어지고, 비트코인 주소에 사용돼요.
- 체크섬 추가(선택)
일부 블록체인에서는 PKH에 체크섬을 추가해 오류를 방지해요. 모든 암호화폐가 적용하는 것은 아니에요.
- Base58 인코딩
마지막으로 PKH(체크섬 포함 또는 미포함)를 Base58 형식으로 인코딩해, 혼동되는 문자를 제거하고 사람이 읽기 쉬운 주소로 만들어요.
이렇게 만들어진 주소가 바로 암호화폐를 주고받을 때 사용하는 공개 주소예요.
공개 키에서 개인 키를 역산하는 것은 사실상 불가능하지만, 개인 키로 공개 키를 만드는 과정은 타원 곡선의 수학적 특성 덕분에 투명하게 이뤄져요. 덕분에 개인 키를 노출하지 않고도 지갑 소유권을 증명할 수 있어요.

비대칭 암호화
공개 키와 개인 키는 함께 메시지를 암호화하고 복호화하는 데 사용돼요. 누군가의 공개 키로 메시지를 암호화하면, 해당 개인 키를 가진 사람만 복호화할 수 있어요. 즉, 암호화된 메시지는 오직 수신자만 읽을 수 있죠. 발신자의 신원을 증명할 수 있다는 점도 비대칭 암호화의 장점이에요.
예를 들어, 친구 Patrick에게 비밀 메시지를 보내고 싶다면 먼저 Patrick의 공개 키로 메시지를 암호화하고, 내 개인 키로 서명해요. Patrick은 자신의 개인 키로만 이 메시지를 복호화할 수 있어요.
개인 키와 공개 키로 암호화폐 트랜잭션은 어떻게 처리될까요?
예를 들어, Patrick에게 비트코인을 보내고 싶다고 해볼게요. 먼저 Patrick의 공개 주소(공개 키의 짧은 버전)가 필요해요. 내 개인 키로 트랜잭션에 서명하면, 트랜잭션이 변조되지 않았음을 증명할 수 있어요. 이 트랜잭션은 암호화되어 비트코인 네트워크의 노드에서 검증을 받아요.
이후 Patrick의 지갑은 자신의 개인 키로 트랜잭션 메시지를 복호화해 비트코인을 받을 수 있어요. Patrick이 개인 키를 안전하게 보관해야 하는 이유도 여기에 있어요. 개인 키가 노출되면 자산도 모두 위험해질 수 있어요.
블록에 채굴된 진짜 트랜잭션은 취소할 수 없으니, 서명 전 반드시 올바른 공개 주소와 네트워크인지 확인하세요.
개인 키는 어디에 저장될까요?
개인 키는 암호화폐 지갑(모바일·데스크톱 소프트웨어 지갑 또는 하드웨어 지갑)에 저장돼요.
Binance나 Coinbase 같은 거래소에 암호화폐를 보관하면, 거래소가 개인 키의 보관자(custodian)가 돼요. 수탁형 지갑에서는 마치 은행 금고에 현금을 맡기듯, 거래소에 내 개인 키를 맡기는 셈이에요.
비수탁형(자가 수탁) 지갑에서는 내 개인 키를 직접 관리할 수 있어요. 다행히 대부분의 비수탁형 암호화폐 지갑은 사용자가 직접 개인 키를 다루지 않아도 자동으로 보관·서명해줘요.
백업용으로는 시드 구문이나 여러 하드웨어 장치를 활용해 개인 키를 안전하게 보관할 수 있어요.
공개 키와 개인 키가 암호화폐를 어떻게 통제할까요?
공개 키와 개인 키의 원리를 이해하는 것은 암호화폐 트랜잭션을 이해하는 데 매우 중요해요. 암호화폐를 '보유한다'는 것은 사실상 그 자산의 개인 키를 갖고 있다는 의미예요.
직접 키를 보관할지, 신뢰할 수 있는 수탁자를 선택할지는 각자의 투자 성향과 위험 선호도에 따라 달라질 수 있어요.
개인 키를 완전히 직접 통제하고 싶다면 Tangem Wallet 같은 최신 하드웨어 지갑을 고려해 보세요. 이 지갑은 개인 키를 노출하지 않고 안전하게 관리해줘요.
거래소 등 수탁형 솔루션을 선택할 경우, 보안과 규제를 중시하는 신뢰할 수 있는 회사를 고르는 것이 중요해요.
마무리
공개 키는 이메일 주소, 개인 키는 비밀번호와 비슷하다고 생각해 보세요. 누구나 내 이메일로 메시지를 보낼 수 있지만, 비밀번호를 입력해야만 내용을 볼 수 있죠. 개인 키는 이메일 비밀번호처럼 꼭 나만 알고 있어야 하고, 공개 키는 자유롭게 공유해도 괜찮아요.