암호화폐 지갑이란 실제로 무엇인가
암호화폐 지갑이 무엇이냐고 열 사람에게 물어보면, 대부분은 코인을 보관하는 곳이라고 답할 것입니다. 그 그림은 자연스러워 보입니다 — 가죽 지갑이 지폐를 담으니, 암호화폐 지갑도 암호화폐를 담을 것이다, 라고요. 그러나 이것은 더 나아가기 전에 풀어 둘 가치가 있는 가장 유용한 오해이기도 합니다. 왜냐하면 암호화폐에서 헷갈리는 거의 모든 것이, 이것을 바로잡는 순간 비로소 말이 되기 시작하기 때문입니다.
암호화폐 지갑은 코인을 보관하지 않습니다. 당신의 코인은 파일이 아니며, 어떤 앱이나 기기 "안에" 들어 있지도 않습니다. 코인은 공유된 공개 장부 — 블록체인 — 위의 기록이며, 전 세계 수천 대의 컴퓨터가 그 장부를 계속 동기화합니다. 지갑이 실제로 보관하는 것은 한 묶음의 키입니다. 장부가 당신의 이름으로 기록한 잔액을 오직 당신만 움직일 수 있음을 증명하는 비밀 숫자들입니다.
쉽게 말하면, 블록체인이 돈을 보관하고, 지갑은 그 돈이 당신의 것이라는 증거를 보관합니다. 지갑은 지폐 지갑보다는 열쇠 꾸러미에 더 가깝습니다.
잔액을 보관하는 것은 블록체인이지 지갑이 아니다
블록체인을, 누구나 읽을 수 있지만 누구도 몰래 고칠 수 없는 거대한 공개 스프레드시트로 떠올리면 도움이 됩니다. 모든 계정에 한 행이 있고, 각 행은 잔액을 보여 줍니다. 누군가가 당신에게 비트코인을 보내도, 어떤 물체가 당신의 기기까지 이동하지는 않습니다. 네트워크는 그저 그 표를 갱신할 뿐입니다 — 한 행이 줄고, 당신의 행이 늘어납니다.
당신의 지갑은 그 표를 읽어 숫자를 보여 줍니다. 지갑 앱을 삭제해도 숫자는 사라지지 않습니다 — 그 행은 전 세계 장부의 모든 사본에 여전히 남아 있습니다. 지갑을 다시 설치하고 키를 다시 건네면, 잔액은 즉시 다시 나타납니다. 앱 "안에" 무언가가 들어 있던 적은 한 번도 없습니다. 앱은 장부를 들여다보는 창이었고, 거기에 더해 장부를 바꾸는 지시에 서명하는 도구였을 뿐입니다.
그래서 휴대전화를 잃는 것은 돈을 잃는 것과 같지 않으며, 키를 잃는 것은 바로 그것입니다.
개인키: 모든 것을 통제하는 비밀
개인키는 지갑의 심장입니다. 그것은 매우 큰, 무작위로 생성된 숫자입니다 — 너무 커서 그것을 알아맞히는 일은 사실상 불가능합니다. 개인키를 가진 사람은 그 키가 통제하는 계정에서 거래를 승인할 수 있습니다. 별도의 비밀번호도, 고객 지원 창구도, 계정 복구 양식도 없습니다. 키 자체가 권한입니다.
이는 양날의 칼입니다. 어떤 은행이나 기업도 당신의 자금을 동결하거나 압류할 수 없다는 뜻입니다. 동시에 실수를 되돌려 줄 사람이 아무도 없다는 뜻이기도 합니다. 누군가가 당신의 개인키를 복제하면, 그는 당신의 잔액을 움직일 수 있고 네트워크는 이를 받아들입니다. 장부의 관점에서는 유효한 서명은 유효한 서명이기 때문입니다. 따라서 개인키를 보호하는 것이 지갑 보안의 전부입니다.
대부분의 지갑은 원본 개인키를 보여 주지 않습니다. 대신 복구 문구를 보여 줍니다 — 보통 12개 또는 24개의 평범한 단어입니다. 그 문구는 사람이 읽을 수 있는 시드(seed)이며, BIP-39 표준에 따라 당신의 모든 키가 그로부터 수학적으로 파생됩니다. 단어를 가진 사람은 누구나 키를 다시 만들어 낼 수 있으므로, 복구 문구는 키 자체와 정확히 똑같은 주의를 받아야 합니다. 적어 두고, 오프라인으로 보관하며, 절대로 웹사이트에 입력하지 마십시오.
공개키와 주소: 안전하게 공유할 수 있는 것
모든 개인키에는 짝이 되는 공개키가 있으며, 단방향 수학으로 개인키에서 만들어집니다. 중요한 부분은 "단방향"입니다 — 개인키에서 공개키는 순식간에 계산할 수 있지만, 어떤 컴퓨터도 계산을 거꾸로 돌려 공개키에서 개인키를 되찾을 수 없습니다. 이 비대칭성이 현대 암호학 전체의 토대이며 — 비트코인 백서에 설명된 대로, 비트코인 자체의 설계도 그 위에 서 있습니다.
공개키에서 당신의 지갑은 주소를 파생합니다. 자금을 받기 위해 건네주는, 더 짧은 문자와 숫자의 문자열이며, 흔히 QR 코드로 표시됩니다. 주소는 공개적으로 공유해도 안전합니다. 누군가가 그것으로 할 수 있는 최악의 일은 당신에게 돈을 보내거나 당신의 잔액을 조회하는 것뿐입니다. 그 주소에서 지출할 수는 없습니다. 지출에는 개인키가 필요하고, 개인키는 결코 당신의 통제를 벗어나지 않기 때문입니다.
그래서 지갑은 서로 연결된 세 가지를 다룹니다.
- 개인키 — 비밀. 소유권을 증명하고 거래에 서명한다. 절대 공유하지 말 것.
- 공개키 — 개인키에서 파생된다. 당신의 서명을 검증하는 데 쓰인다.
- 주소 — 공개키에서 파생된다. 다른 사람이 당신에게 지불할 수 있도록 공유해도 된다.
서명: 지갑은 어떻게 그것이 당신임을 증명하는가
암호화폐를 보낼 때 지갑은 거래를 만듭니다 — "이 금액을 이 주소에서 저 주소로 옮겨라"라고 말하는 메시지입니다 — 그리고 그것을 당신의 개인키로 서명합니다. 서명은 미묘한 일을 해내는 수학입니다. 키 자체는 결코 드러내지 않으면서, 메시지가 개인키 보유자에 의해 승인되었음을 증명합니다.
네트워크의 모든 컴퓨터는 그 서명을 당신의 공개키와 대조해 확인할 수 있습니다. 일치하면 거래는 유효하며 기록됩니다. 메시지의 글자가 단 하나만 바뀌어도 서명은 더 이상 들어맞지 않고, 네트워크는 그것을 거부합니다. "지갑은 당신이 코인을 통제함을 증명하는 것"이라는 말이 실제로 의미하는 바가 바로 이것입니다. 당신의 잔액은, 당신의 키로 만든 유효한 서명이 그래야 한다고 말할 때에만 움직입니다.
이것은 또한 암호화폐에서 끊임없이 듣게 될 구호도 설명해 줍니다 — 당신의 키가 아니면, 당신의 코인이 아니다. 거래소나 앱이 키를 보유하고 있다면, 서명을 만들어 내는 것은 당신이 아니라 그쪽이며, 실제로 통제하고 있는 것도 그쪽입니다. 오직 당신만 키를 보유하는 지갑을 자가 수탁이라 부르며, SSP는 바로 이 모델을 중심으로 만들어졌습니다. 그것을 실제로 보고 싶다면 SSP Wallet 만나기: 2-of-2 멀티시그로 구현하는 자가 수탁을 읽어 보십시오.
지갑은 무엇이며 — 무엇이 아닌가
양쪽 면을 분명히 말해 둘 가치가 있습니다.
암호화폐 지갑은 이렇습니다: 열쇠 꾸러미, 거래 서명 도구, 그리고 블록체인을 들여다보는 창. 당신의 키를 생성하고 보호하며, 거래를 만들어 서명하고, 그것을 네트워크에 퍼뜨리며, 장부를 잔액과 내역으로 당신에게 다시 읽어 줍니다.
암호화폐 지갑은 이렇지 않습니다: 코인을 담아 둔 금고, 상담 전화가 있는 은행 계좌, 또는 어떤 물리적 의미에서 당신의 돈을 "가지고 있는" 장소. 지갑은 가치를 담지 않습니다. 체인 위에 사는 가치를 통제할 뿐입니다.
실질적인 결과가 하나 있습니다. 당신의 키가 단 한 곳에만 존재한다면, 그곳은 단일 장애 지점입니다. 그곳을 잃으면 키는 사라지고, 공격자가 그곳에 닿게 두면 키는 그의 것이 됩니다. SSP가 서명 권한을 두 기기로 나누어 메우는 것이 바로 이 빈틈이며, 그렇게 함으로써 침해당한 단 하나의 기기만으로는 자금을 움직일 수 없게 됩니다.
다음으로 갈 곳
이제 당신은 암호화폐의 나머지가 그 위에 세워진 사고 모형을 갖추었습니다. 코인은 블록체인 위에, 키는 지갑 안에 살며, 서명은 그 둘을 잇는 것입니다. 그 밖의 모든 것 — 핫 저장과 콜드 저장, 소프트웨어 지갑과 하드웨어 지갑, 브라우저 지갑과 모바일 지갑 — 은 같은 질문에 대한 서로 다른 대답일 뿐입니다. 키는 어디에 살며, 얼마나 잘 보호되는가?
이 시리즈의 다음 글들은 그 대답들을 하나씩 다룹니다. 먼저 핫 월렛과 콜드 월렛으로 시작해 온라인이냐 오프라인이냐가 지갑의 위험을 어떻게 바꾸는지 보고, 그다음 소프트웨어 지갑과 하드웨어 지갑으로 키가 물리적으로 어떻게 보관되는지 이해하십시오. 이론을 실천에 옮길 준비가 되면 첫 SSP 지갑 설정하기가 한 단계씩 안내해 줍니다.