비트코인을 비롯한 암호화폐에 대한 관심이 다시한번 뜨거워지고 오르는 가격에 수익을 보는 분들도 점점 많아지고 있는 듯 합니다. 전고점 근처에 있으니 매수해서 몇개월 이상 가지고 계셨던 분들이라면 왠만하면 손해보지 않는 가격구간에 있습니다. 한국에서는 업비트, 빗썸 등 몇개 거래소만 원화를 이용해 암호화폐를 구매하고 있고, 업비트 사용자가 압도적으로 많다는 통계가 있습니다.
저 역시 업비트를 통해 대부분의 암호화폐를 매수하던 중에 과연 거래소 지갑은 안전할지에 대한 의문이 커져서 관심을 가지고 알아보았는데, 시스템적으로 나의 지갑이라고 할 수 없는, 즉 거래를 하게는 해주나 최종적인 사용 권한은 거래소가 가지게 되는 형태로 운영됩니다. 평소에는 잘 모르지만 문제가 생겼을 때는 자산을 지키는데 어려움이 생길 수 있습니다. 즉, 결정적인 순간에 거래소에서 지갑과 보관된 자산에 대해 이용자의 의사와는 무관하게 거래소에서 처리하는 것이 가능한 구조로 운영된다는 것입니다.
이번 포스팅에서는 업비트 지갑 및 빗썸 지갑과 같은 국내 거래소 지갑에 보관할 때의 장단점과 함께 어떤 점이 국내 거래소 지갑의 유의할 점이며 제가 개인지갑을 추천하고 선택하게 된 이유에 대해 적어보도록 하겠습니다.
Table of Contents
거래소 지갑과 개인 지갑
기본적으로 거래소 지갑이던 개인 지갑이던, 하드웨어 월렛이던 소프트웨어 월렛이던 시스템적인 구조상으로는 차이가 없습니다. 어차피 자산은 각 코인의 블록체인 네트워크 안에서 보관되며 지갑이라는 추상적인 개념은 결국 암호화폐 네트워크 안에서 나의 자산의 이름표이자 이 자산을 운용할 수 있는 비밀번호 키를 가지고 있는 통장에 더 가까운 개념으로 볼 수 있습니다. 참고로, 이 비밀번호 키는 256 비트에 해당하는 랜덤한 글자도 구성됩니다.
개인 지갑을 생성하면 지갑의 이름표 역할을 하는 단 하나만 존재하는 주소를 만들게 되며, 통장 비밀번호 역할을 하는 비밀번호 키 역시 생성합니다. 지갑에 코인이 들어간다는 말은 해당 코인의 블록체인 네트워크에 내 지갑 이름표가 붙은 코인의 수량을 기록하는 과정이라고 보면 어느정도 개념상 맞습니다.
거래소 지갑 역시 방식은 동일합니다. 업비트나 빗썸 등 거래소에 회원가입을 하면 거래소에서 지갑을 만들어줍니다. 실제로 업비트에서 각 코인마다 내 지갑의 주소를 확인할 수 있습니다.
뒤에서 설명하겠지만, 거래소에서는 해당 지갑의 주소만 제공할 뿐 해당 지갑의 비밀번호 키를 공유하지 않으며, 이 점이 거래소 지갑에 자산을 보관할 때 가장 큰 리스크로 여겨지는 점 입니다.
암호화폐 지갑과 보안체계
직접 해킹이 불가능한 블록체인 네트워크
이제는 어느정도 대중적으로도 알려져있듯 비트코인을 포함한 암호화폐는 각 코인의 큰 블록체인 네트워크 안에서 해킹이 사실상 불가능한 형태로 보관되고 운용됩니다. 워낙 많은 관련 내용이 인터넷에 공개되어 있어 자세히 설명할 필요는 없을 듯 하고, 여기저기에 있는 디지털 장부에 소유내역을 보관하고, 이 장부를 동시에 모두 해킹하지 않는 한 보관된 정보를 비정상적인 방법으로 수정할 수 없습니다. 쉽게 비유하자면 철인 5종경기를 1초 안에 완료하지 않는 이상 해킹에 성공할 수 없는 것과 비슷하다고 볼 수 있겠습니다. 이는 현재까지 실현된 양자 컴퓨터를 가정해도 크게 다르지 않습니다.
비밀번호의 구성: Public Key 그리고 Private Key
정상적인 거래에는 비밀번호에 해당하는 비밀번호 키가 이용되는 만큼 비밀번호 자체의 보안도 매우 중요합니다. 비밀번호 키를 알면 해킹도 필요 없이 마음대로 거래가 가능하기 때문입니다. 이 비밀번호 키 역시 블록체인을 해킹하거나 무분별한 시도로는 알아낼 수 없는 방식의 보안을 사용하는데, 이 방식을 구성하는 것이 Public key와 Private Key 입니다. 자세히 설명하면 너무 전문적인 암호화 개념이라 간단히만 적어보겠습니다.
각 암호화폐 지갑은 생성시에 Public Key 와 Private Key 두 암호를 같이 만들게 됩니다. 이름에서 알 수 있듯 Public Key는 공개되어 있는 암호라서 해킹도 필요없이 누구나 알 수 있는 암호이며, Private Key가 실질적으로 타인이 알면 안되는 암호입니다. 그냥 들으면 왜 한 비밀번호를 공개하지 싶지만, 여기에는 용도가 있습니다.
Public Key는 누군가 나만 알아볼 수 있는 암호화 된 정보를 전달하고 싶을 때 이를 ‘암호화’ 하는데 사용됩니다. 한번 암호화 되면 겉으로 보기엔 전혀 뜻이 없어 보이는 무작위적으로 만들어진 글자들로 보이게 되어 중간에 해커가 가로채더라도 이를 해석할 수 없습니다. 이를 해석하기 위해서는 Private Key가 있어야 하며, 이는 나만 알고있다는 전제가 있으면 나만 해석할 수 있는 의미가 됩니다. 핵심이 되면서도 신기한 점은 Public Key로 암호화된 정보라도 해석은 할 수 없는 점 입니다. (자세한 내용은 너무 수학적인 내용이라 스킵하겠습니다.)
이 Public Key는 256 비트(bit), 즉 32 글자로 이루어져 있으며, 이를 현존하는 시스템으로 무작위한 시도를 통해 해킹하기 위해서는 일반적으로 수백만년이 걸린다고 알려져 있습니다.
아래 포스팅에서는 편의상 Private Key를 비밀번호 키로 적도록 하겠습니다.
암호화폐 해킹 피해가 발생되는 경우
보안이 철통같은 블록체인에도 해킹으로 인한 피해사례는 계속 알려지고 있습니다. 언뜻 보면 블록체인의 보안이 뚫린것이라고 오해할 수 있지만, 해킹 피해는 블록체인 네트워크 자체의 보안과는 경우가 다릅니다.
일반적으로 현실에서 (적어도 한국에서는) 우리가 돈을 은행에 보관하면서 은행이 강도에게 털려 나의 돈이 사라져버릴 걱정을 하지는 않습니다. 현실적으로 은행 강도가 은행털이에 성공할 가능성도 거의 없다싶이 하며 성공해도 단기간에 붙잡혀 자금이 다시 돌아오는 결론이 나는 것이 당연하다는 믿음이 있기 때문입니다. 그럼에도 사기 등의 이유로 은행을 통한 금융피해는 끊임없이 일어나고 있습니다.
블록체인 역시 사실상 직접 해킹하여 네트워크에서 자금을 터는 것은 불가능합니다. 하지만, 암호화폐 지갑의 비밀번호 키가 유출된다면 얘기가 다릅니다. 마치 통장과 비밀번호가 있으면 자금을 마음대로 탈취할 수 있듯 암호화폐 역시 지갑 주소화 비밀번호 키가 있으면 블록체인 네트워크를 해킹하지 않고도 손쉽게 자금을 빼낼 수 있습니다. 알려지고 있는 해킹 피해는 모두 이렇게 비밀번호 키 혹은 거래소 계정정보를 알아내서 자금을 빼내는 형태의 피해 입니다.
업비트의 보안
업비트는 거래되는 규모로는 한국에서 단연 최상위이자 전세계적으로도 순위가 꽤 높습니다. 당연히 수많은 해커의 해킹시도에 노출되어 있고, 업비트에서도 이런 해킹으로 부터 방어하기 위해 큰 노력을 들이고 있는 것으로 알려져 있습니다. 여차하여 업비트 계정정보가 노출되어버리는 순간 업비트 지갑에 보관된 어마어마한 규모의 자산은 순식간에 사라질 위험에 처해질 수 밖에 없으며, 실제로 이렇게 거래소가 털린 사례는 과거에도 여럿 있었습니다.
다행히 업비트의 노력으로 업비트의 서버 해킹 및 계정정보가 해킹되어 문제가 발생될 리스크는 거의 없어보입니다. 업비트 자체에서도 서버 보안에 큰 규모의 자금을 투입하고 있는 것도 이유이고, 자금 이동을 위한 모든 거래에는 네이버나 카카오 인증을 거쳐야 하기 때문에 설령 업비트 서버가 해킹되어도 업비트 지갑에서 자금이 빠져나가기는 어려울 듯 합니다. (불가능하기 보다는 한단계 보안절차가 더 있다고 볼 수 있을 것 같습니다.)
여기에 빡빡한 트레블룰 까지 있어 100만원 이상의 자금이 동일한 소유주로 확인되지 않은 외부 지갑으로 나가는 것이 사실상 봉쇄되어 있기 때문에 정말 서버를 탈탈 털어서 모든 보안절차를 무효화 하지 않는 한 보상이 어려울 정도의 큰 규모의 피해 발생은 크게 염려하지 않아도 되지 않을까 하는 것이 저의 생각이면서 다수의 의견인 것으로 보입니다.
업비트 지갑의 문제점
철통같은 보안에도 업비트 지갑에는 개인 지갑에 비해 여러 제약 및 리스크가 있습니다. 그 중에서도 가장 큰 문제는 자산 통제의 최종적인 권한을 거래소가 가지는 시스템적인 구조에서 기인합니다. 위에서도 적은 바와 같이 업비트와 같은 거래소는 사용자 지갑의 주소만 공유해줄 뿐 가장 중요한 비밀번호 키를 사용자에게 알려주지 않습니다. 즉, 업비트 지갑 사용자는 다른 모두와 마찬가지로 지갑의 주소를 이용해 거래 내역만 볼 수 있을 뿐 거래는 업비트에 요청하여 업비트가 실행해 주는 방식입니다. 이러한 구조는 결국 업비트만이 해당 자산의 거래를 실행할 수 있는 형태가 되며, 이는 사용자로서는 몇가지 리스크를 안게되는 요인이 될 수 있습니다.
업비트 자체 정책 및 내부 사정(트래블룰 포함)
업비트(그리고 다른 거래소 역시 마찬가지로)는 절대로 사용자 지갑의 비밀번호 키를 알려주지 않습니다. 나름 사용자 개인의 과실로 비밀번호 키가 유출되어 피해가 발생되는 것을 막으려는 어느정도 납득이 가는 이유도 있지만, 실질적으로는 절대적인 통제권을 사용자가 아닌 업비트가 가지는 구조로 유지하려는 것이 본질적인 이유라고 생각합니다. 즉, 업비트 지갑은 업비트가 최종 승인해야 어떤 거래라도 가능하게 하여 모든 업비트 지갑에 대해 필요하다고 여겨지는 통제가 가능한 것 입니다.
비밀번호 키를 알지 못하면 생가는 문제는 여러가지가 있습니다. 가장 흔히 접할 수 있는 문제로는 트레블룰로 인한 자금 이동의 통제를 들 수 있습니다. 업비트를 포함한 국내 모든 원화 거래소는 100만원 이상에 해당하는 가상자산의 송금을 통제하고 있는데, 이는 사용자가 본인 지갑의 비밀번호 키를 알지 못하기 때문에 가능한 통제입니다.
트래블룰도 나름의 명분은 있다고 해도 본인 소유의 다른 지갑, 특히 하드웨어 월렛(하드월렛)과 같은 콜드월렛으로 전송이 매우 불편합니다. 이를 위해서는 우선 업비트에서 인정하는 해외 거래소 (바이낸스 등) 지갑을 만들고 이 지갑이 본인 지갑이라는 것을 증명하여 승인을 받아야 하며, 승인 후 자산을 업비트 지갑에서 해외 거래소 지갑으로 옮긴 뒤 다시 최종적으로 보관하고자 하는 지갑으로 옮기는 절차를 통해야 합니다. 암호화폐는 송금할 때 마다 수수료가 붙으며, 코인에 따라 회당 수수료가 비싸기도 하기 때문에 (예를 들어 비트코인을 직접 송금하려면 회당 수십만원에 해당하는 비트코인을 수수료로 지불해야 함) 불필요하게 많은 수수료를 더 부담해야 합니다. 특히 더 저렴한 네트워크를 통한 송금도 잘 지원을 안해줘서 수수료가 저렴한 코인으로 옮기도 다시 비트코인을 사는 방식을 택하면 일반 지갑이면 안내도 될 거래 수수료가 업비트 지갑에서 나갈 때는 두번 붙게 됩니다.
이 외에도 비밀번호 키만 알면 쉽게 해결 가능한 문제가 발생했을 때도 업비트에서 도와주는 경우가 사실상 없다는 점도 문제입니다. 아래 사례를 보면 업비트 지갑을 내 지갑이라고 볼 수 없겠다는 점을 어느정도 이해할 수 있을 것이라고 생각합니다.
아직까지는 현재의 트래블룰에만 제약을 받지만, 시간이 지나며 정부 정책 변화에 따라 어떤 추가적인 제약이 더 적용될 지 알 수 없다는 점 역시 내 업비트 지갑의 통제권이 없는 리스크를 더 키우는 요인이라고 생각합니다.
여기에, 혹시라도 추후에 어떤 이유에서라도 업비트의 회사 사정으로 인해 안정적인 서비스 유지가 어려워지는 상황이라도 오면 업비트 지갑 내 자산은 최소 동결에서 최악의 경우 잃어버리게 될 수도 있습니다. 그렇게 될거라고 보이지는 않지만 더 큰 규모의 거래소였던 FTX가 증발한 사례를 보면 조금이라도 리스크는 존재한다는 점은 인지하고 있어야 합니다.
국내 상황에 따른 위험성
업비트의 정책 외에도 의도치 않은 상황에 나의 지갑을 사용할 수 없는 상황이 갑자기 닥치기도 합니다. 가장 최근의 예로, 계엄령이 선포된 직후 업비트와 빗썸의 서버가 사용량 폭주로 인해 마비되어 버리면서 접속 자체가 안되었고, 그 사이 비트코인의 가격은 수십%가 폭락하였습니다. 이런 상황에 매도하고 싶은 사람도, 매수하고 싶은 사람도, 혹시나 하는 마음에 다른 지갑으로 옮기고 싶은 사람도 자신의 지갑을 이용하지 못하면서 불안한 마음으로 지켜볼 수 밖에 없었습니다. 서버가 마비되는 경우는 이 전에도 간혹 있었습니다.
나중에 또 어떤 국내 상황에 따른 문제로 서버가 마비될지, 그 때도 다시 단기간 안에 정상화가 가능할지 역시 알 수 없다는 점은 업비트 지갑의 리스크라고 볼 수 있겠습니다.
업비트 서버 점검
예상치 못한 상황이 아니어도 서버가 멈추는 타이밍이 있습니다. 일부는 미리 공지하는 서버 점검이지만, 사전 공지가 없는 긴급점검 형태인 경우도 종종 있습니다. 주로 특정 코인에 대한 점검인 경우가 많은데, 이 경우 아예 입출금이 막혀버리고 언제 풀리는지도 명확히 알려주지 않습니다. 이 기간에는 원화를 받고 파는 것 외에 다른 지갑으로의 송금이 아예 불가능하기 때문에 혹여나 코인을 보내야 하는 경우 문제가 될 수 있습니다. 이는 사용자가 본인의 지갑에 대한 통제권이 있다면 발생하지 않는 문제입니다.
개인지갑과 콜드월렛 (하드월렛)
거래소 지갑이 아닌 개인이 비밀번호 키를 관리하는 개인지갑은 여러 형태가 있는데, 컴퓨터 내에 키가 저장되는 소프트웨어 지갑과 키가 외부 장치에 저장되는 하드웨어 지갑, 또는 항상 인터넷에 연결되어 있는 지갑인 핫월렛과 평상시에는 인터넷에 연결되어 있지 않은 지갑은 콜드월렛으로 구분합니다. 자세한 내용은 아래 포스팅에 적어두었습니다.
거래소 지갑과의 차이만 간단히 적어보면 결국 비밀번호 키를 본인이 알고 있다는 점이 핵심적인 차이 입니다. 이로 인해 업비트 정책과는 무관하게 나의 암호화폐 자산을 운용할 수 있으며, 혹시라도 업비트 지갑이 해킹되는 등의 사고로 부터 자산을 지킬 수 있습니다. 물론 실수로 비밀번호 키가 다른 사람에게 넘어가버리면 더 안좋은 결과로 이어질 수도 있기 때문에 양날의 검 이라고도 볼 수 있습니다.
그래도 암호화폐의 형태로 자산을 보관하고자 하는 이유는 탈중앙화 된 시스템의 장점에 있다는 점에서 거래소 지갑 보다는 개인 지갑이 본질적으로 암호화폐 자산 보관에는 목적에 적합하다고 생각합니다.
업비트 지갑 등의 거래소 지갑에 비해 개인 지갑이 가지는 장점에 대해서는 추후 별도 포스팅을 통해 자세히 적어보도록 하겠습니다.
마무리
이번 포스팅에서는 업비트 지갑을 비롯한 거래소 지갑의 보안성과 한계에 대해 살펴보았습니다. 거래소 지갑은 암호화폐 거래의 편리성을 제공하지만, 본질적으로 개인의 소유가 아닌 구조로 인해 자산 보호 측면에서 취약할 수 있습니다. 특히 업비트의 서버 점검, 자체 정책(트래블룰 포함), 국내 상황에 따른 잠재적 위험성은 개인 자산 관리에 있어 심각한 문제를 초래할 수 있습니다.
따라서 암호화폐를 안전하게 보관하려면 개인지갑이나 콜드월렛(하드월렛)을 적극 활용하는 것이 권장됩니다. 개인지갑은 블록체인 네트워크의 강력한 보안체계와 함께, Private Key를 소유자가 직접 관리함으로써 거래소 지갑에서 발생할 수 있는 위험을 최소화할 수 있습니다.
암호화폐의 가치는 보안과 직결됩니다. “내 자산은 내가 지킨다”는 마음가짐으로 자신의 암호화폐를 안전하게 관리하고, 거래소 지갑이 아닌 개인지갑으로 전환하는 것을 고려해 보세요. 특히, 업비트 지갑을 사용 중이라면 이와 같은 위험 요소를 인지하고 장기적으로 안전한 보관 방식을 선택하는 것이 중요합니다.