개인 키와 공개 키는 무엇인가요?
주요 시사점 |
— 공개 키와 개인 키의 목적은 실제 자금 소유자가 결제 지급 트랜잭션에 서명하였고, 이 내용이 위조되지 않았음을 증명하는 것입니다. — 암호화폐를 소유한다고 했을 때 실제 소유하는 것은 “개인 키”입니다. — “개인 키”는 소유자가 해당 암호화폐를 쓸 수 있도록 그 권한을 잠금 해제합니다. 개인 키는 암호화폐에 대한 접근을 가능하게 해 주므로 철저한 보안을 유지해야 합니다. — 모든 개인 키와 연관된 공개 키는 하나 이상 존재할 수 있습니다. — 개인 키를 보유하고 있으면 공개 키 복구가 가능합니다. 그러나 공개 키만 사용해 개인 키를 찾는 것은 불가능합니다. |
공개 키 및 개인 키는 무엇인가요? 여기서는 공개 키와 개인 키가 어떻게 작동하는지, 그리고 알아두셔야 할 점은 무엇인지를 설명합니다.
공개 키 및 개인 키는 공개 키 암호 방식(PKC) 또는 비대칭 암호화라고 알려진, 한층 광범위한 암호학 영역의 일부인 블록체인 네트워크에 구축된 암호화폐의 통합 구성요소입니다.
PKC의 목표는 프로세스의 역전을 거의 불가능하게 만드는 동시에 한 상태에서 다른 상태로 간편하게 전환하는 것입니다. 또한, 이 과정에서 시크릿을 누설하지 않고도 시크릿을 보유했음을 증명하는 것입니다. PKC는 일방향 수학 함수입니다. 이는 위조가 불가능하여 어떤 대상(즉, 트랜잭션)의 대하여 진위를 검증하는 데 적절합니다. PKC는 공개 키와 개인 키, 두 가지 키로 구성되는 모델을 사용합니다. 여기서 흔히 공개 키는 자물쇠로 묘사되고, 개인 키는 해당 자물쇠를 여는 열쇠로 묘사됩니다.
공개 키 암호 방식(PKC)
PKC는 "Trapdoor Functions"라는 수학적 기초를 기반으로 합니다. 이는 한 방향으로 계산하기가 쉽고, 역산은 할 수 없는 수학 문제입니다.
컴퓨터가 이 문제를 해결하고자 정확한 답을 계산하려면 엄청난 시간(즉, 수천 년)이 걸릴 것입니다. PKC의 맥락에서, 소인수 분해와 같은 수학적 트릭은 암호학적 서명을 리버스 엔지니어링(즉, 위조) 하는 것을 불가능하게 만드는 Trapdoor function입니다. 이는 컴퓨터로 사실상 푸는 것이 불가능한 수학 문제를 해결해야 하기 때문입니다.
공개 키 및 개인 키의 개념
PKC의 일반적인 목적은 악의적인 도청이 발생할 가능성이 있는 공개 채널에서 디지털 서명을 사용하여 안전한 비공개 통신을 지원하는 것입니다. 암호화폐의 맥락에서는 실제 자금 소유자가 결제 지급 트랜잭션에 서명하였고, 이 내용이 위조되지 않았음을 증명하는 것이 그 목적이라고 할 수 있습니다. 이러한 모든 작업이 피어 사이의 퍼블릭 블록체인 네트워크에서 발생합니다.
암호화폐를 소유한다고 했을 때 실제 소유하는 것은 “개인 키”입니다. “개인 키”는 소유자가 해당 암호화폐를 쓸 수 있도록 그 권한을 잠금 해제합니다. 암호화폐에 대한 접근을 가능하게 해주기 때문에, 그 이름처럼 개인의 것으로 관리되어야 합니다.
개인 키 외에도 공개 키가 존재합니다. 또, 개인 키와 공개 키 사이에는 암호학적 연관이 있습니다. 개인 키를 보유하고 있으면 공개 키 복구가 가능합니다. 그러나 공개 키만 사용해 개인 키를 찾는 것은 불가능합니다.
공개 키와 개인 키는 각각 이메일 주소와 비밀번호에 해당합니다.
앨리스는 이론적으로 개인 키에서 수십억 개의 공개 키(주소)를 생성할 수 있습니다. 그러나 앨리스만 아는 개인 키(패스워드)는 단 하나이며, 이를 시크릿으로 사용하게 됩니다. 앨리스가 공개 키 주소를 생성하면, 그 주소는 비트코인과 같은 암호화폐를 전송할 수 있는 주소로서 네트워크의 모든 사용자가 공개적으로 이용 가능합니다. 앨리스만이 공개적으로 이용할 수 있는 주소의 열쇠를 가지고 있기 때문에, 해당 주소로 보낸 암호화폐에 접근할 수 있는 사람도 앨리스뿐입니다.
트랜잭션이 이루어지는 원리
앨리스의 개인 키는 앨리스의 디지털 서명이며, 트랜잭션을 진행하거나 메시지를 보내는 당사자가 앨리스임을 증명하기 위해 사용할 수 있습니다.
예를 들어 앨리스가 공개 채널을 통해 밥에게 메시지를 보내고자 하는데, 찰리가 이 채널을 청취 중이라고 가정해보겠습니다. 이때 앨리스는 자신의 개인 키로 메시지를 암호화하여 밥에게 전송할 수 있습니다. 또한 앨리스는 자신의 공개 키를 사용하여 밥에게 보내는 메시지와 함께 해시 출력(hash output)이라고 하는 특수한 값을 생성합니다. 밥은 해시 출력값, 메시지와 개인 키를 사용하여 메시지를 해독하고 읽을 수 있습니다.
찰리는 앨리스의 공개 키와 자신의 개인 키/공개 키 쌍만을 가지고 있으므로 이 메시지를 읽을 수 없습니다. 암호화 과정에 활용되는 트랩도어 함수의 우수성도 바로 여기에 있습니다. 앨리스의 메시지나 개인 키는 트랩도어 함수를 사용하여 빌드되므로, 찰리가 이를 리버스 엔지니어링할 수 없습니다.
비트코인에서 트랜잭션이란 사용자가 비트코인 UTXO 트랜잭션 모델의 입력 및 출력 값으로서 서로의 공개 주소로 비트코인을 보내고 받는 일련의 과정입니다. 앨리스는 자신의 공개 키를 웹에 공개할 수 있습니다. 다른 사람들은 앨리스가 해당 자금에 대한 개인 키의 소유자라는 사실을 알고, 그 주소로 비트코인을 보낼 수 있습니다.
보다 일반적으로, 비트코인 노드(비트코인 소프트웨어를 실행하는 사람)는 네트워크의 트랜잭션을 자동으로 확인하고 유효성을 검증합니다. 즉, 기본적인 블록체인 합의와 공개 키/개인 키 쌍이 유효하다는 암호학적 증명을 사용하여 트랜잭션이 위조되지 않았는지 확인합니다(이를 작업 증명이라 합니다). 결과적으로, PKC를 사용하는 비트코인과 같은 암호화폐에서 트랜잭션은 수학적 증거를 기반하는 가설로 보호되므로, 이를 위조하기란 거의 불가능합니다.
계속 학습하세요! 암호화폐와 블록체인에 대한 학습이 즐거우셨다면 School of Block 동영상도 참고해 보세요. 암호화폐를 안전하게 관리하는 방법.