지난 호에서 설명한 거래소 지갑과는 달리 크립토 개인 지갑(Private Wallet)은 지갑의 관리와 입출금을 철저하게 본인 스스로 하고자 하는 사람들을 위한 옵션입니다. 앞서 설명했다시피 거래소는 해킹과 개인 정보 보호라는 관점에서는 많은 약점을 가지고 있습니다. 비교적 다량의 코인을 장기간 보관하고자 하는 경우에는 개인 지갑이 권장됩니다.

Leather wallet on wooden table

암호화폐 지갑이란 무엇인가?

우선 암호화폐 지갑(Crypto Wallet)의 개념에 대해 설명드리겠습니다. 암호화 화폐는 그 기술적 기반이 암호 기술이기 때문에 지갑의 생성과 입출금과 관련된 작업을 하기 위해 암호를 사용하게 됩니다.

사용자가 새로운 지갑을 생성할 때 실제 블록체인 상에서는 하나의 암호 쌍(Pair)을 생성됩니다. 쌍, 즉 두 개의 암호가 필요한 이유는 암호화(Encryption)와 복호화(Decryption)를 위해 각각 별도의 암호를 사용하기 때문입니다. 이 때 암호화(Encryption)를 위해 사용하는 것을 공개 키(Public Key) 또는 지갑 주소(Address)라고 하고, 복호화(Decryption)를 할 때 사용하는 것을 개인 키(Private Key)라고 합니다. 

디지털 지갑에서 흔히 주소(Address)라고 불리우는 것이 바로 공개 키입니다. 공개 키(Public Key)는 다음과 같은 경우에 사용됩니다. 

  1. 화폐를 입금 받을 때
  2. 화폐의 입출금 내역을 조회할 때

공개 키만 가지고는 출금을 할 수 없기 때문에 노출이 되더라도 걱정할 필요는 없습니다. 그렇다고 일부러 공개하고 다닐 필요는 없습니다. 

반면 개인 키(Private Key)는 다음과 같이 보다 중요한 작업을 하기 위해 사용합니다.

  1. 다른 지갑으로 화폐를 송금할 때
  2. 온라인/오프라인 매장에서 결재할 때
  3. Exchange 등에서 화폐를 거래할 때
  4. 화폐의 입출금 내역을 조회할 때
pexels-photo-101808

개인 키(Private Key)가 지갑이다

크립토 지갑은 디지털 지갑이다 보니 사용자가 지갑을 사용하기 위해 특별히 개발된 소프트웨어 또는 앱(통칭하여 지갑 앱이라고 하겠습니다)를 사용해야 합니다. 이러한 지갑 앱을 사용하다 보면 지갑 앱 자체가 지갑이라고 착각하기 쉽습니다. 

하지만 지갑 앱이 하는 역할은 공개 키와 개인 키를 사용하여 블록체인 상의 자신의 실제 지갑정보를 쉽게 다룰 수 있게 해주는 것에 불과하고 실제 지갑은 공개 키와 개인 키라는 것을 명심해야 합니다. 이중 핵심을 개인 키인데 만일 이 개인 키를 해커가 알고 있다면 내 지갑 앱을 통하지 않고서도 내 지갑에 있는 코인을 자기 마음대로 처분할 수 있게 됩니다

가장 흔히 볼 수 있는 해킹 피해 사례 중 하나는 채팅방에서 관리자를 사칭하며 도와주겠다고 접근해서 개인키를 알려달라고 하는 경우입니다. 개인 키에 대한 상식이 없으면 아무 생각없이 개인 키 정보를 보내주고 나도 모르는 사이에 내 지갑에 있는 코인을 훔쳐가게 됩니다.

블록체인은 한 번 거래가 이루어지면 취소하는 것이 불가능하고, 내 코인을 훔쳐간 상대방의 주소가 블록체인 상에 기록되어 보이기는 하지만 익명성이 보장되기 때문에 이를 추적해 되돌려 받는 것은 사실상 불가능에 가깝습니다. (물론 도둑맞은 코인을 Fiat money로 현금화하는 경우에는 신분이 드러나겠지만 Dash나 Monero같은 익명 화폐로 세탁을 하면 그마저 힘들어집니다)

그러므로 “개인 키는 지갑이다”라는 사실을 명심하여 무슨 일이 있더라도 개인 키는 아무에게도 알려주지 말아야 합니다. 

pexels-photo-220994

개인 키, 어떻게 관리할 것인가?

크립토 지갑의 위험요소는 크게 두 가지로 나뉘어 볼 수 있습니다.

  1. 해커에 의한 개인 키 또는 비밀번호 유출
  2. 지갑 앱을 설치한 스마트폰이나 컴퓨터의 분실, 고장으로 인해 지갑 접속이 불가능해지는 경우

두 경우 모두 중요한 것은 개인 키 또는 비밀 번호 등을 안전하게 백업하면서도 외부로 유출이 되지 않도록 해야 한다는 점입니다. 많은 사람들이 개인 키를 컴퓨터 파일에 일반 문서로 저장해 놓는 경우가 많은데 이 경우에는 악성 코드나 해킹 도구를 사용하면 나도 모르는 사이에 유출될 수 있습니다. 특히 공공장소에서 인터넷에 접속한 컴퓨터는 여러 취약점으로 인해 해커가 내 컴퓨터 내의 파일을 쉽게 들여다 볼 수 있다는 것을 명심해야 합니다.

따라서 개인 키를 안전하게 보관하기 위해서는 다음과 같은 방법이 권장됩니다.

  1. 페이퍼 월렛(Paper Wallet): 가장 바람직한 방법으로 스마트폰 분실이나 컴퓨터 고장 등을 고려해 개인키를 종이에 인쇄하여 따로 집안의 금고 등 안전한 곳에 보관하는 것입니다.
  2. 암호화한 파일에 보관: 워드 파일로 보관하고자 한다면 반드시 파일을 열 때 자신만이 알고 있는 암호로 암호화하여 저장합니다.
  3. 암호화된 압축 파일: 압축 파일을 생성하여 압축 파일 자체에 암호를 걸어주는 방법입니다. 압축 파일 관리 프로그램이 암호 지정 기능을 지원하는 경우에는 개인키가 저장된 파일을 압축한 후 비밀 번호를 지정하고 원본 파일은 지우고 휴지통까지 비워줍니다.

자, 이렇게 개인 키를 꽁꽁 숨겨두었다면 정작 거래나 송금이 필요할 때는 어떻게 할까요? 사실상 대부분의 지갑 앱들은 개인 키의 중요함을 인지하고 있기 때문에 송금이나 인출시 개인 키를 요구하는 대신 지갑 앱 내에서 개인 키를 다시 한번 암호화하여 앱 내에 저장해 놓습니다.

사용자는 앱 비밀번호나 지문 인식, SMS, Google Authenticator 인증 등의 대체 인증 방식으로 암호화된 개인 키를 사용할 수 있게 해주므로 매번 개인키를 입력하지 않아도 됩니다. 심지어 하드웨어 월렛의 경우에는 사용자는 자신의 지갑의 개인 키가 무엇인지 영영 모르게 하므로 개인 키 노출로 인한 피해를 원천적으로 방지합니다.

pexels-photo-887751

어떤 지갑 앱을 사용할 것인가?

어떤 암호화폐를 사용할 것이냐에 따라 지갑 앱은 달라집니다. 현재 Bread나 Ethos 같은 곳에서 유니버설 월렛을 제작하고 있어서 조만간 하나의 앱에서 대부분의 암호화폐 지갑 역할을 하는 날이 올 것으로 보입니다. 하지만 아직까지는 각 암호화폐 별로 서로 다른 지갑 앱을 사용해야 한다고 보아야 합니다. 다음은 대표적인 암호화폐의 지갑 앱 정보입니다.

  1. Bitcoin (BTC) : 암호화폐의 시조인 만큼 사용할 수 있는 지갑 앱의 종류도 다양합니다. 다음 링크에 들어가면 다양한 지갑 선택 옵션을 보실 수 있습니다.
    https://bitcoin.org/ko/choose-your-wallet
  2. Bitcoin Cash (BCH) : 비트코인과 뿌리가 같은 만큼, 다양한 지갑을 사용할 수 있습니다.
    https://www.bitcoincash.org/#wallets
  3. Litecoin (LTC) : 전용 지갑인 Litecoin Core 를 사용합니다.
  4. Ripple (XRP) : Toast Wallet, Exarpy, 하드웨어 월렛 Ledger Nano S도 Ripple을 지원합니다.
  5. Ethereum (ETH) : 공식 홈페이지에서 제공하는 지갑 또는 온라인 지갑 MEW(My Ether Wallet)이 가장 많이 사용되는 지갑입니다.
  6. Cardano (ADA)  : Daedalus 월렛을 사용합니다.
  7. Verge (XVG) : 홈페이지에서 다양한 지갑을 소개하고 있습니다.
    https://vergecurrency.com/langs/ko/#wallets
  8. Stellar (XLM) : 홈페이지에서 다양한 지갑을 소개하고 있습니다.
    https://www.stellar.org/lumens/wallets/

다음 회에서는 실제 사례를 중심으로 한 개인키 보안 수칙에 대해 다루겠습니다.