brunch

매거진 IT메거진

You can make anything
by writing

C.S.Lewis

왜 비트코인이 털리는가? 거래소가 털린 것!

안전하다는 비트코인 왜 털리냐? 그건 틀린 것? 거래소가 털린 것!

비트 피넥스 해킹은 정확히 거래소가 도둑맞은 것!

이 사건을 보는 우리나라 사람들의 인식을 보면 우리나라가 얼마큼 비트코인에 대해 잘 모른다는 것을 알 수 있습니다.

이번 비트 피넥스 해킹은 비트코인이 해킹당한 게 아니고 비트코인 거래소의 정보가 털린 겁니다. 비트코인 자체는 해킹이 불가능합니다. 이번 사건은 비트코인 거래소가 해킹당한 것이며 이는 거래소에 등록된 고객정보를 활용하여 해킹해 가져간 것입니다.

은행으로 이야기하면 보관 중인 현금을 해킹해서 가져간 것입니다. 


일반적인 비트코인의 거래는 거래소를 통하게 되어 있습니다. 이 비트코인의 정보가 거래소라는 매매 거래를 하는 거래소에 보관되어 비트코인 코어에 저장되어 있습니다. 일반적인 거래소 사용자들이 지갑을 활용하여 거래할 때 체크카드와 같이 비트코인 정보를 거래소에 두고 사용한다고 보시면 됩니다.


비트코인 코어는 이런 거래를 해킹으로 조작하여 자기 계좌로 가져가 버립니다. 비트 코인을 자기 휴대폰이나 pc에 두는 사람들이 있고 유럽 일부 개발자는 지갑 자체를 서버에 두지 않는 것을 선호하는 이유도 여기에 있습니다. 물론 휴대폰을 잃어버리면 분실 후 영원히 찾을 수 없다는 점도 있습니다.

은행 해킹과 비교하면 됩니다.

보이스 피싱을 하면 돈은 다른 사람의 계좌로 가게 됩니다. 이때 대포 통장으로 넘기는 이유는 대한민국은 무기명 통장이 되지 않기 때문에 대포통장을 이용하게 됩니다.


비트코인 지갑은 무기명 거래가 가능하기 때문에 자기 지갑 또는 임시 생성한 지갑으로 옮겨 버립니다. 우리는 일반적으로 비트코인의 승인을 해주는 채굴이라는 행위를 하게 되는데 그 단계를 거래소에서 6단계 또는 최소 4단계까지 승인 절차를 거쳐야 승인해 줘야 됩니다.


하지만 이 승인 절차가 길어지면 비트 값을 지불하게 됩니다. 이게 채굴이라는 언어의 비트코인이 됩니다. 이 비트 값을 지불하는 단계를 줄이고 또 빠른 거래를 위해 2단계 또는 소액인 경우 1단계로 줄여 버리는 겁니다.


그런데 이 거래소에서도 채굴 서버를 2대를 운영하게 됩니다. 이때는 내부에서 move 되기 때문에 수수료가 더 줄게 되고 (없다고 보시면 됩니다.) 여기서 안전성에 대한 타협이 일어납니다.


이번 비트 피넥스의 해킹은 비트 피넥스 내부의 비트코인을 해킹해서 가져가 버렸기 때문에 손실이 났습니다.

약 30% 이상의 손해가 있었다고 발표하였습니다.


비트코인 서버 소스는 공개 프로그램입니다.

비트코인 서버 개발을 해보시면 아시겠지만 비트코인 코아와 비트코인 정보 p2p로 생성되는 정보가 약 70기가 정보 보관됩니다. 이 70기가는 지금까지의 비트코인 정보를 모두 담고 있습니다.

우리가 거래하면 거래 정보가 순식간에 전 세계 모든 비트코인 서버에 담기게 됩니다.


그래서 한 군데 거래 정보를 조작해도 비트코인 서버 중 일부 올바른 정보가 있으면 바로 잡혀 버립니다. 그런데 왜 해킹이 일어나는 걸까요.


비트코인 자체 문제가 아니고 지갑과 거래소 프로그램의 문제입니다.

비트코인 코어를 활용한 프로그램 개발은 각 거래소에서 합니다. php , mysql를 이용해서도 쉽게 개발합니다. 저도 만들었으니 어려운 프로그램이 아닙니다.


여기서 부터는 비트코인 코어와 비트코인과 관련이 없습니다. 비트코인 서버에 거래 정보와 조회들을 명령을 주면서 거래소를 운영하는 프로그램이 해킹당했다는 겁니다.


거래소의 프로그램의 보안을 제대로 하지 않거나, 해킹에 취약하게 되면 거래소 프로그램을 조작하여 정상 거래해버립니다. 그럼 코어에서 정보다 담기게 되고 전체 거래소에서는 반영되어 버립니다.


대부분의 해킹은 이런 구조입니다. 그래서 서버 프로그램은 중국이 가장 활발하게 개발하여 공개되어 있고 github에서 보시면 쉽게 구하실 수 있습니다.


pc 4대만 준비해서 코어와 거래소 프로그램을 세팅하면 쉽게 거래소를 만들 수 있습니다. 조금의 서버 지식과  php와 mysql  그리고 어플 개발 능력이 되면 비트코인 거래소 개발이 가능합니다.


심지어 첫 지갑은 코어 배포시 포함되어 있습니다.


비트코인은 안전합니다. 하지만 거래소의 안전이 문제입니다.

다음에 제대로 한번 포스팅하겠지만 거래소의 프로그램 개발은 중국이 가장 활발합니다. 물론 채굴장과 거래량 보유량도 중국이 가능 많습니다.

오픈 소스이기 때문에 이 프로그램들을 누구나 만들 수 있습니다. 

보안에 대해서는 각각 해결해야 됩니다. 코어에서는 안전하게 보관되고 비트코인 자체에 대해 블록체인을 조작하려고 해도 불가능하지만 거래소 프로그램을 자기가 원하는 데로 거래할 때 자신에게 보내 버린다던지 , 남의 비트코인을 자기 지갑으로 옮기도록 해버리면 지갑 중심의 거래이기 때문에 옮겨 버립니다. 


거래소의 지갑 주소, 정보 등등을 마음대로 조작해 버리게 되면 비트코인 거래는 이루어집니다. 

은행과 같이 제도권이 아니고 비화폐로 인정하기 때문에 국가나 관리 기관이 없기 때문에 손실로 보는 겁니다. 게임 포인트가 날라 가는 것과 같이 취급합니다.


어떤 거래소는 환전 요청 시 24시간 뒤 환전해 주는 이유도 이런 점 때문에 안전장치를 하나 더 둔다는 의미에서 환전을 즉시 환전해 주지 않는 경우도 있습니다. 한국에서도 크고 작은 해킹은 있었습니다. 워낙 거래량이 적은 나라이기 때문에 크게 부각되지 않지만 유사 코인을 운영 중인 네트워크 마케팅 같은 경우는 문제가 존재합니다.


거래소의 프로그램 보안의 문제입니다. 

거래소 프로그램이 결국 거래소의 신뢰도로 보면 됩니다. 작은 거래소의 경우 중국이나 공개된 거래소 프로그램을 수정해서 자긴에게 맞게 사용합니다.


그리고 우리나라는 아직 많은 양의 거래량이 없기 때문에 큰 거래는 금방 눈에 띄게 됩니다. 그래서 환전 상태에서는 직원이 직접 확인하는 경우가 많습니다. 


거래소 프로그램은 대부분 오픈 소스인 php mysql에서도 돌아갑니다. 이 프로그램을 기본으로 보안 및 가양한 장치를 넣어서 제대로 만들어야 되는데 그렇지 못한 것이 현실입니다. 


하지만 거래량 세계 1~10위 안의 회사들은 다르겠지만 서버를 지켜 내지 못했다는 점입니다. 


거래서 네덜란드나 유럽 개발자들은 비트코인 정보를 서버에 두지 않고 자기 스마트폰의 지갑에 둡니다. 자기 지갑 주소를 서버에 두는 것 자체를 싫어합니다. 


간단하나마 제가 개발했던 비트코인 서버와 지갑에 대한 지식으로 비트코인 안전성에 대해 포스팅해봤습니다. 올해 비트코인에 대한 포스팅을 몇 번 더 할 예정입니다. 작년에 개발한 자료와 실제 비트코인의 사용 예 그리고 현재 우리나라에 어설프게 사용되는 실태 등등을 이야기해보려고 합니다.


이번 해킹 사건으로 본 비트코인 시장은 우리 개발자들이 안전과 전체 그림을 가지고 접근한다면 상당한 블루오션이지만 지금까지 우리나라 개발 개념으로 접근하면 안 됩니다. 그런 이야기도 해보려고 합니다.


아무튼 이 해킹 사건으로 개발자들의 새로운 시장의 접근으로 생각해 보시면 좋겠습니다. 충분한 시장이며 기본만 충실하면 충분한 개발할만합니다. 단 한국적인 개발 문화 빨리빨리 만들어 놓고 보자식으로 접근하면 안 되는 이유이기도 합니다.  



매거진의 이전글 윈도우가 노트가 되었다. 윈도우 잉크 주목하라!
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari