[EOS Inside] 암호화폐 거래소들의 보안수준은 어떨까? #1편

[EOS Inside] 암호화폐 거래소들의 보안수준은 어떨까? #1편






안녕하세요, 디온(@donekim)입니다. 이미 많은 분들이 미디어를 통해 소식을 접하셨겠지만 지난 3월 29일에 빗썸에서 내부자 횡령 사고로 판단되는 도난 사건이 발생했었습니다. 이 도난 사건으로 인해 빗썸에서 보관 중이던 EOS토큰 313만 개, 정확히는 3,130,2673.99개가 순식간에 유출되어 버리는 웃지 못할 해프닝이 벌어졌습니다.




빗썸에서는 콜드 월렛이라고 부르는 bithumbshiny라는 계정, 그리고 핫월렛이라고 부르는 g4ydomrxhege 계정 2개에 나누어서 EOS토큰을 보관하고 있습니다. 그 중에서 핫월렛이라고 하는 g4ydomrxhege계정에 보관 중이던 약 313만 개의 EOS가 3월 29일 오후 11시 경에 순식간에 ifguz3chmamg 계정으로 전송되기 시작했던 것입니다.


Image Source : EOS Detective


도난된 EOS토큰들은 해당 계정에서 Huobi, HitBTC, WB.com, EXmo, Kucoin, Changelly 거래소 등으로 다시 한 번 흩어지기 시작했습니다. 물론 현재 이오스에는 EOS Detective와 같이 계정의 활동을 한 번에 파악하기 좋은 툴들이 있기 때문에 토큰들을 여러 계정(거래소)으로 분산을 시킨다고 하더라도 빠르게 파악이 가능합니다.

그래서 암호화폐 거래소들의 핫라인을 통해 해당 사실을 통보받은 거래소들, BP들의 발빠른 대처로 시장에 큰 재앙이 올 뻔했던 위험천만한 상황을 모면할 수 있었죠. 아직 이 도난 사고에 대한 모든 내용이 상세히 밝혀지고 원상 복구가 되었다고는 할 수 없지만, 다른 거래소들이나 BP차원에서의 아낌 없는 도움 덕분에 시장에 충격이 오는 것을 막을 수는 있었습니다.

우리들은 이쯤에서 과연 암호화폐 거래소들의 기본적인 보안 수준이 어느 정도인지를 판단해볼 필요가 있습니다. 내부적으로 프라이빗키를 어떻게 보관을 하고 있는지, 어떤 과정을 거쳐서 프라이빗키에 접근이 가능하도록 보안 설계가 되어 있는지는 잠시 논외로 하고 “기본적으로 암호화폐 거래소들은 EOSIO 시스템에서 제공하고 있는 보안기능을 얼마나 잘 사용하고 있는지”를 살펴볼까 합니다. 먼저, 이번 포스팅에서는 본격적으로 거래소들의 상태를 살펴보기에 앞서 기본적인 사항에 대해 짚어보도록 하겠습니다.




#1. 기본적인 수준의 보안설정






제가 지난 포스팅 [EOS Inside] 이오스 계정 오너키 변경방법을 통해 간단히 설명드린 바 있는 것처럼, EOSIO 소프트웨어는 프라이빗키에 권한 계층을 구분할 수 있도록 설계가 되어 있습니다.

  • A라는 프라이빗키에는 토큰 전송이나 클레임 등만 할 수 있는 활동 권한(Active permission)을 주고,
  • B라는 프라이빗키에는 해당 계정의 활동 권한(Active permission)을 담당하는 프라이빗키를 포함하여 계정의 프라이빗키를 모두 변경함으로써 안전한 소유권을 유지할 수 있는 소유 권한(Owner permission)을 주는 것입니다.


그래서 토큰 전송, 에어그랩 토큰 클레임, 투표 등 일상적인 활동 시에는 활동 권한에 연결된 키를 활용하고 혹시라도 활동 중에 활동 권한에 사용되는 프라이빗키를 도난당한 경우, 소유 권한에 연결된 프라이빗키로 도난당한 프라이빗키의 연결을 해제해버릴 수 있습니다. 마치 카드 분실 신고를 하는 것처럼요.

EOS메인넷 런칭 초기에 생성된 계정들은 이 활동 권한(Active permission)과 소유 권한(Owner permission) 모두에 하나의 키(Single key)가 연결되어 있지만, 모든 계정 소유자들은 자신들이 원하는 경우 각각의 권한별로 다른 키(Multi key)를 설정하여 사용함으로써 계정의 보안 수준을 훨씬 높여서 안전하게 사용할 수 있습니다.




#2. 조금 더 나아간 수준의 보안설정




Image Source : Blockgenic


위에서 설명한 “권한별 키쌍 분리사용” 이외에도 EOSIO 소프트웨어에서는 멀티시그(Multi-Sig)기능을 제공합니다. 여기서 멀티시그란 하나의 트랜잭션을 승인하는데 있어서 여러 개의 서명이 필요한 기능을 의미합니다.

예를 들어서 기존에 A라는 계정에서 EOS토큰을 거래소로 보낼 때 멀티시그를 설정해놓지 않은 경우에는 스캐터 데스크탑에 입력해 놓은 내 계정으로 로그인을 해서 마지막에 수락(Allow)버튼만 클릭해서 서명을 하면 곧바로 토큰 전송이 가능합니다.

그러나, B라는 계정에서 토큰을 전송하기 위해서는 B뿐만 아니라 C라는 계정의 서명도 있어야 하도록 미리 설정을 하는 경우에는, C라는 계정(정확히는 C라는 액티브 권한의 프라이빗키 소유자)도 해당 토큰 전송이라는 트랜잭션을 수락(Allow)버튼만 클릭해서 서명을 해야합니다.




예를 들어 위처럼 설정이 되어 있으면, 토큰 전송을 위해서는 해당 계정들 중 15개 이상의 계정소유자들의 서명(Multi-Sig)이 있어야 하는 것입니다.


Bitfinex 이오스 계정 : bitfinexdep1


현재 암호화폐 거래소들 중에서 가장 보안설정에 대한 이해도가 높은 곳은 바로 Bitfinex입니다. 현재 빗피넥스에서는

① 액티브 권한과 오너 권한의 키를 분리하여 사용하고 있고,

② 오너 권한을 사용하기 위해서는 2개 이상의 서명(Multi-Sig)가 필요

하도록 설정이 되어 있습니다. 따라서 계정탈취 및 토큰 도난과 같은 사고가 발생할 확률이 극히 드물고, 혹시나 특정 권한에 연결되어 있는 프라이빗키 하나를 도난당하는 사고가 발생하더라도 충분히 자체적으로 곧바로 대처가 가능합니다.




#3. 빗썸 거래소의 보안 수준




이번에 도난사고가 발생한 빗썸 핫월렛 계정 : g4ydomrxhege



빗썸의 콜드월렛 계정 : bithumbshiny


위에서 살펴본 Bitfinex와는 사뭇 대조적인 인상을 느낄 수 있는 빗썸의 계정들입니다. 액티브 권한과 오너 권한에 하나의 키(Single key)를 사용하고 있으며 멀티시그는 설정이 되어 있지 않습니다.

해당 프라이빗키에 접근하는 내부적 절차 또는 프라이빗키의 보관 장소의 보안성에 대해서는 논외로 하고, 이와 같이 계정 권한에 연결된 키를 하나의 단일한 키(Single key)로 사용하는 것은 보안수준이 제일 낮은 수준이라고 할 수 있습니다.

혹시라도 해당 프라이빗키가 유출이 되면 해커들은 바로 해당 계정에 연결된 키쌍을 변경하고 자기 계정처럼 사용이 가능하며 빗썸에서 딱히 손을 쓸 수 있는 방법은 없게 됩니다. 즉, 일단 프라이빗키가 노출되고 나면 빗썸에서는 다른 거래소나 BP들에게 도와달라고 요청을 하는 일 말고 본인들이 조치하거나 컨트롤 할 수 있는 것이 아무것도 없는 것입니다.

이미 EOSIO 소프트웨어에서는 모든 계정의 보안성을 높여 안전하게 사용할 수 있는 시스템을 설계해 놓았으나, 정작 고객들의 소중한 자산들을 예치하고 있는 거래소는 이 기본적인 편의기능을 사용하지 못하고 있는 실정입니다. 다음의 이어지는 포스팅에서는 과연 국내 암호화폐 거래소들을 포함하여 다른 거래소들의 보안 수준이 어떠한지에 대해 살펴보도록 하겠습니다.


본 포스팅은 미디엄에서 쉐어투스팀(@share2steem)을 통해 작성되었습니다.

Posted from Medium via Share2Steem

[쉐어투스팀(Share2steem)이란?]
쉐어투스팀은 트위터, 인스타그램, 미디엄, 유튜브, 트위치 등 스티밋의 계정과 연결된 다른 SNS의 글이나 영상, 사진 등의 포스팅을 스티밋 피드로 업로드할 수 있는 써드파티앱니다. 사전에 쉐어투스팀을 통해 다른 SNS채널의 계정을 연결시켜 놓은 상태라면, 언제든지 간단한 해시태그 입력만으로 다른 SNS에 업로드한 글을 그 즉시 스티밋에도 업로드하실 수 있습니다.

아래의 배너를 클릭하시면 쉐어투스팀을 통해 트위터, 인스타그램, 미디엄, 유튜브, 트위치에 업로드한 콘텐츠들을 스티밋에 함께 공유하실 수 있습니다!