국내 최대 암호화폐거래소인 업비트(upbit.com : 두나무 주식회사)가 해킹을 당해 이더리움 342,000 (약580억원)을 탈취당했다.
과거 빗섬 등 다른 거래소가 크고 작은 해킹을 당하는 과정에서도 업비트는 그나마 잘 버티고 있었는데, 이번 사고는 국내 암호화폐거래소 해킹사고 중에서도 역대급으로 기록될 가능성이 매우 높다.
지난 3년간 암호화폐거래소의 사고 내역을 살펴보면 다음과 같다.
사실 이 목록 이외에도 암호화폐거래소의 접속 정보 등의 유출에 의한 개인들의 사고까지 포함한다면 훨씬 더 많은 암호화폐 관련 사고가 있을 것이다.
하지만 이번 업비트의 사고는 그 양상이 조금 다르다. 정확한 사고 원인은 알 수 없지만 업비트 이용자 소유의 암호화폐가 유출된 것이 아니라 업비트가 자체적으로 보유하고 있는 이더리움이 털린 것이다. 이는 업비트의 공지를 보면 알 수 있다.
그런데 아마도 이 공지사항의 내용을 정확하게 이해하지 못하는 분들도 많을 것이다. 먼저 이해를 돕기위해 짧은 지식이나마 풀어본다.
“업비트 이더리움 핫월렛”
암호화폐에 대해 잘 모르는 분들은 월렛(wallet)이라는 단어를 먼저 이해해야 한다. 월렛(wallet)은 지갑이라는 의미다. 그리고 암호화폐에서 월렛은 “암호화폐의 전자지갑” 쯤으로 이해하면 된다. 뭐 이정도를 갖고 그러나..싶다면.. 다음의 질문에 답을 할 수 있어야 한다.
“암호화폐 전자지갑(wallet)에 실제 암호화폐가 저장되는가?”
이 질문에 즉각적으로 “아니오”라고 답을 하지 못한다면 암호화폐에 대해 제대로 이해하고 있다고 보기 어렵다. 암호화폐 전자지갑에는 실제 암호화폐가 저장되지 않는다. 암호화폐의 월렛에는 암호화폐 주소에 해당하는 공개키(Public Key)와 비밀번호에 해당하는 개인키(Private Key)가 저장되어 있다. 보유하고 있는 암호화폐의 잔액이나 거래내역 따위는 저장되어 있지 않다.
만약 공개키와 개인키가 무엇인지 모른다면 예전에 올린 포스트를 보고 오기 바란다.
그리고 “핫월렛(Hot Wallet)”이라 함은 언제든지 암호화폐를 입금하거나 출금할 수 있도록 온라인상에 연결되어 있는 월렛을 의미한다. 즉 암호화폐의 주소에서 암호화폐를 출금할 때 사용하는 개인키(Private Key)가 온라인 상에 저장되어 있는 것을 핫월렛이라고 한다.
따라서 해킹에 의해 암호화폐 주소(암호화폐의 계좌라 보면 됨)에 해당되는 개인키가 유출될 위험이 상존하게 된다. 개인의 암호화폐가 탈취되는 사고의 경우 100%의 확률로 이 핫월렛에 저장된 개인키가 유출된 것이라 보면 된다.
거래소에서 암호화폐를 거래하는 이용자라면 기본적으로 개인키가 저장된 월렛이 거래소의 시스템에 존재한다. 즉 핫월렛을 사용하고 있는 것이다.
위의 “업비트 이더리움 핫월렛”을 풀어쓰면 “업비트 거래소에 있는 이더리움 핫월렛 중 업비트 자신의 이더리움 주소(월렛)”이라고 쓸 수 있다. 즉 이용자의 이더리움이 아닌 업비트가 자체적으로 보유하고 있는 이더리움이라고 추측할 수 있는 대목이다.
알 수 없는 지갑의 주소는 0xa09871AEadF4994Ca12f5c0b6056BBd1d343c029 입니다.
지갑의 주소란 은행의 계좌번호와 같다. 즉 이더리움의 블록체인 네트워크에서 유일한 계좌번호에 해당하는 공개키다. 맨앞 두자리의 0x는 16진수를 의미하고 a 에서 9 까지가 이더리움 지갑 주소다. 그런데 “알 수 없는” 주소란다. 즉 이 주소의 주인이 누구인지 모른다는 의미다.
위의 주소를 알고 있으면 이더스캔이라는 프로그램으로 이 주소가 가진 이더리움의 잔액도 조회할 수 있다. 즉 이더리움 주소(계좌번호에 해당)와 잔액을 알고 있다면 돌려받으면 되지 않을까 라고 생각할 수도 있지만 기술적으로 불가능하다.
이 주소의 주인이 누군지 알 수도 없을 뿐더러 잔액을 알고 있더라도 이 주소의 개인키를 알지 못하는 이상 업비트가 그 잔액을 강제로 돌려받을 수도 없다. 진짜로 현재의 기술로는 불가능하다.
다만 이 주소의 주인을 알고 있는 사람이 있다면 제보를 바라고 주소를 공개한 것이며 타 거래소들에게 저 주소에서 일어나는 거래를 막아 일종의 계좌동결을 해달라는 간접적인 요청으로 보인다.
알수 없는 지갑으로 전송된 ETH 342,000개는 업비트 자산으로 충당
실제 업비트에 가입하고 계좌인증을 받고 현금을 업비트 계정으로 송금한 뒤 이더리움을 산다면…. 실제로 이용자의 이더리움 주소가 생성될까? 그렇지 않은 거래소가 대부분이다.
거래소는 이용자가 현금으로 이더리움을 구입하면 실제로는 업비트의 이더리움 지갑을 이용해 이더리움을 사고 이용자가 구입한 이더리움이 얼마인지를 별도 업비트의 거래시스템에 관리한다. 그리고 이번 해킹으로 인해 털린~ 이더리움 주소가 바로 그런 용도의 이더리움 주소인 것이다. 결과적으로는 업비트 자체의 이더리움 주소에서 이더리움이 해커에게 출금된 것이지만 실제로는 이용자의 이더리움이 탈취된 것과 같은 것이다.
이럴 경우를 대비해 암호화폐 거래소 들은 별도의 이더리움 주소를 보유하고 정해진 비율만큼의 별도 이더리움을 콜드월렛(뒤에서 설명)에 충당해 두고 있다. 위 문장은 그 콜드월렛에 보관 중인 별도의 업비트 이더리움 자산에서 이용자의 이더리움 거래에 사용되는 핫월렛으로 해커에게 탈취된 만큼을 이체하겠다는 의미다.
핫월렛에 있는 모든 암호화폐는 콜드월렛으로 이전
여기서 새로운 용어가 등장한다.
바로 “콜드월렛(Cold Wallet)”이다. 핫월렛은 앞에서 설명한 것 처럼 이더리움 거래에 사용되는 이더리움 주소(공개키)와 비밀번호(개인키)가 온라인에 저장되어 있는 것이다. 반면 콜드월렛은 이더리움 주소의 개인키가 저장된 월렛이 온라인상에서 삭제되고 오프라인(네트워크가 물리적으로 단절된) 저장소에 저장되었다는 것을 의미한다. 즉 거래소 시스템을 해킹해 이더리움 주소의 개인키를 탈취하는 것이 불가능해짐을 의미한다.
위에서 핫월렛에 있는 모든 암호화폐를 콜드월렛으로 이전했다는 의미는 이더리움을 출금할 때 사용되는 개인키가 저장된 월렛을 온라인 거래시스템에서 삭제하고 오프라인의 저장소로 옮겼다는 의미다.
하지만 핫월렛이든 콜드월렛이든 월렛내의 개인키가 유출된다면 이번 업비트의 암호화폐 탈취와 같은 사고는 언제든지 발생할 수 있다. 물론 인터넷과 거래소 내부 네트워크와 물리적으로 단절된 오프라인 저장소에 보관하는 것이 조금은 더 안전하겠지만 콜드월렛이 보관되고 있는 오프라인 저장소에 대한 물리적인 보안대책은 보다 강력해야 한다.
이런 콜드월렛으로 이전하는 조치는 이번 사고의 원인분석과 재발방지대책이 모두 구현될 때 까지 이더리움 월렛을 안전하게 보관하기 위해 온라인 상의 핫월렛을 오프라인 상의 콜드월렛으로 옮겨두겠다는 의미다. 당연히 이더리움 암호화폐의 입출금은 중단될 수 밖에 없으며 “가두리 펌핑” 우려가 있는 업비트 내에서의 이더리움 거래만 가능하다는 의미다.
그리고 그 조치를 모두 완료하 기간을 약 2주 정도로 잡고 있다는 의미이기도 하다.
과연 해킹일까?
이번 업비트 이더리움 탈취 사건은 명백한 보안사고다. 그러나 외부에서의 해킹인지 아니면 내부자과 관련된 보안사고인지는 아직 알 수 없다. 하지만 벌써 인터넷엔 국내 최대규모의 암호화폐 거래소가 뚫렸으니 블록체인의 해킹, 더 나아가 암호화폐 자체의 안전성은 허구라는 식의 가짜뉴스가 등장했다.
하지만 이번 업비트 이더리움 탈취 사고도 업비트의 공지사항이나 비공식적인 경로를 통해 들려오는 정보를 종합해볼 때 암호화폐 블록체인 네트워크의 결함이 아닌 월렛의 개인키가 유출된 사고로서 거래소 자체 시스템의 취약점 또는 월렛 관리상의 문제일 가능성이 99% 정도 된다고 보인다. 물론 블록체인도, 암호화폐도 사람이 만든 것이므로 결함과 취약점이 존재할 1%의 가능성을 배제할 수는 없다.
사실 암호화폐에 대해 설왕설래가 많지만 IT를 전공하는 사람들 조차도 암호화폐의 원리를 제대로 이해하고 있는 사람은 드물다. 암호화폐가 거래되는 블록체인 네트워크는 전에도 언급했지만 최신 암호기술이 대부분 사용된 매우 복잡하고 아키텍처와 기술을 쉽게 이해하기엔 너무 어려운 시스템이다. 암호화폐 관련 분야에 직접 종사하며 관련 시스템을 전반적으로 개발해보지 않았다면 말이다.
이 포스트를 통해 암호화폐를 어려워하는 분이 조금이라도 관련 용어들을 이해하는데 도움이 되었으면 한다.
#업비트해킹 #핫월렛 #콜드월렛 #지갑주소