개발

채굴 관리프로그램 MINE ASSIST 베타버전 공개

by 파이리 posted Jun 17, 2017

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 댓글로 가기 위로 아래로

안녕하세요. 저는 S전자에서 개발자로 일하다가 지금은 작은 스타트업을 하고 있는 파이리입니다.

 

얼마 전에 채굴기 관리 프로그램을 개발하고 있다고 글을 올린적이 있었는데, 베타 테스트에 적합한 시점이 된 것 같아서 공개를 해봅니다. 아직 개발 중인 기능도 많고, 버그가 존재할 수 있습니다. 대량의 채굴기에 설치할 경우에 패치가 나오면 하나씩 다시 설치를 해주셔야 하는 불편함이 있을 수 있습니다. 안정화된 버전이 나올 때까지 소수의 채굴기에서 맛보기로만 해보실 것을 권장합니다. 

 

(현재는 claymore dual miner만 지원합니다)

 

아래는 간단한 소개입니다.

 

  1. 심플한 프로그램과 설치 절차

 

zip 파일을 다운로드 받아서, 채굴 프로그램과 같은 폴더에 압축을 풉니다. (하위의 새로운 폴더가 아닌 같은 폴더입니다) mineassist_settings.txt를 열어서 이메일, 가입 시에 발급받은 코드명, 배치 파일명(default는 start.bat 입니다)을 적어넣고 mineassist.exe를 실행합니다. mineassist 앱이나 https://www.mineassist.net 에서 원격으로 감시하고 관리합니다. 사이트를 방문하시면 다운로드 받으실 수 있습니다.

 

  1. 안전한 프로그램

 

아래의 구조와 보안 구조에서 보실 수 있지만, 기본적으로 안전한 시스템을 지향하고 있습니다. MINE ASSIST는 켜고 끄는 것 이외에 채굴 프로그램에 영향을 미치지 않습니다. (그저 로그를 읽고 start.bat을 실행할 뿐입니다)

 

  1. 채굴 관리 앱(구글 스토어 mine assist로 검색)

가입 후에 채굴 관리프로그램을 설정하셔야 관리가 가능하기 때문에 사이트 방문 후에 다운로드 받으실 것을 권장합니다.

 

 

     4. 모니터링 화면

 

step4.PNG

 

 

- windows 7, 8.1, 10에서 시험했지만 OS 버전에 따라서 채굴관리 클라이언트가 정상적으로 동작하지 않을 수도 있습니다. (제보해주시면 패치에 포함하겠습니다) 

- 베타 기간에는 수시로 사이트 점검이 있을 수 있습니다. 접속이 끊어지더라도 관리만 중단되고 채굴 프로그램은 정상 동작합니다.

 

 

      5. 가격 정책

 

고민을 많이 해봤는데 5세트 이하의 채굴기를 운영하시는 분들에게는 무료로 제공하기로 했습니다. 5세트 초과 분에 대해서는 세트당 월 1만원 수준으로 공급할 계획입니다. 물론 베타테스트 기간에는 전부 무료로 사용하실 수 있습니다.

 

 

아직 베타버전이어서 모든 기능이 들어있지는 않습니다. 웹에는 있지만 앱에는 없는 기능들도 있고요. 빠른 시일 내에 패치를 통해서 추가하도록 하겠습니다. 사용하시다가 오류가 있거나 불편하신 점 있으시면 댓글 달아주시면 수정하도록 하겠습니다.

 

 

 

 

 

==========================================

MINE ASSIST의 구조와 보안

 

소스코드를 공개해야 하는 것 아니냐라는 말씀이 있으셔서, 소스코드 공개는 1. 원본 소스는 회사의 자산이고, 2. 소스 코드 공개 시에 변조된 프로그램 유통이 가능하고 취약점에 대한 공격이 쉬워진다는 점 때문에 공개가 어렵다는 점을 말씀드립니다. (길을 다 알고 뚫는 것과 모르고 뚫는 것의 차이는 크겠죠) 그렇지만 이 시스템을 어떻게 신뢰할 것인가의 문제가 있어서 부족하지만 아래에 시스템과 시스템의 보안에 대해서 설명을 기재하였습니다. 

 

MINE ASSIST는 개별 관리프로그램을 서버가 제어하는 중앙 통제형 채굴 관리시스템입니다. 기존의 폐쇄형 시스템과는 다르게 웹과 앱으로 채굴기 제어가 가능하며, 최대한 간단하고 직관적인 시스템 구축을 목표로 개발하였습니다.

 

  1. 중앙 통제형 시스템의 위험성

 

가장 먼저 짚고 넘어가야 할 것이 중앙 통제형 시스템의 위험성입니다. 중앙 통제형 시스템이 해킹당하거나 통제권이 원하지 않는 사람에게 넘어가는 경우에는 데이터베이스에 저장된 유저 정보가 유출되거나 각 채굴기에 설치된 개별 관리프로그램에 영향을 미칠 수 있습니다.

 

  1. MINE ASSIST의 시스템 구조

 

중앙 통제 시스템인 MINE ASSIST를 신뢰할 수 있는가를 살펴보려면 먼저 그 시스템 구조에 대해서 살펴보아야 합니다. MINE ASSIST의 보안의 핵심은 기능에 따른 분리입니다. MINE ASSIST의 서버단은 웹서버, DB서버, 파일서버로 분리되어 있으며, 각 서버는 전부 다른 계정과 암호로 관리되고 있습니다.

MINE ASSIST의 관문이라고 할 수 있는 웹서버는 2048비트의 rsa private key가 있어야만 접속할 수 있으며, 이 키는 단 2명만 가지고 있습니다. 2048비트의 private key를 뚫기 위해서는 일반적인 표준 PC로 계산했을 때 13,751,783,021년이 걸리기 때문에 뚫는 것이 불가능한 수준이라고 보아야 하고, private key가 유출되거나 막대한 computing 파워를 설사 뚫어냈다고 해도 시스템에 영향을 미치기 위해서는 로그인 계정과 다른 관리 계정으로의 권한 상승(escalation)을 해야하기 때문에 다시 한번 관리 계정의 비밀 번호를 뚫어내야 합니다. 이렇게 웹서버를 뚫더라도 디비 서버와 파일 서버에 접근하기 위해서는 다시 각각의 서버의 계정과 비밀 번호를 확보해야 하므로 MINE ASSIST의 통제권을 확보하는 것은 매우 어려운 일이라고 할 수 있습니다.

 

  1. 해킹의 실익과 통제권을 확보한 해커가 할 수 있는 것

 

해킹을 하고자 한다면 해커에게 해킹에 따른 이득이 있어야 합니다. 완벽한 보안이란 없기 때문에 MINE ASSIST가 해킹 당한 상황을 가정해서 해커가 얻을 수 있는 이익과 사용자들이 입을 수 있는 최대의 피해에 대해서 살펴보겠습니다. MINE ASSIST를 해킹했을 때 해커가 가져갈 수 있는 것들은 이메일, 암호화된 패스워드, 채굴기의 macaddress, 기타 채굴에 관한 정보들입니다. 이 중에서 이메일과 암호화된 패스워드가 해커가 얻을 수 있는 이익이라고 볼 수 있고, 암호화된 패스워드를 복호화한다면 타 사이트의 해킹에 사용할 수 있습니다. (그러나 패스워드는 spring security의 random salt를 이용해서 암호화되기 때문에 복호화 하는 것은 불가능한 수준이라고 할 수 있습니다) 서버의 통제권을 확보한 해커가 장기간 방치된다면, 웹서버의 코드들을 분석해서 새롭게 코딩을 한 후에 모든 채굴기의 관리프로그램에게 명령을 내리는 것이 가능해집니다. 이 때 사용자들이 입을 수 있는 최대의 피해는 '재부팅'입니다. 서버와 관리프로그램은 정해진 프로토콜로 통신을 하기 때문에 정해진 명령 이외에 다른 동작은 수행할 수 없기 때문입니다. 결론적으로, 저는 해커가 막대한 노력을 들여서 굳이 해킹을 할 유인이 없다고 생각합니다.

 

  1. SQL injection, 파라미터 injection

 

SQL injection은 고전적인 방법이지만 강력한 방법이기도 합니다. 얼마 전에 여기X때가 털린 방법이기도 하고요. 소규모 쇼핑몰 사이트들은 로그인 창에 10자 내외의 쿼리를 적어넣는 것만으로도 뚫리는 경우도 있습니다. SQL injection을 방어하는 방법은 Prepared statement를 사용하는 것입니다. 쉽게 말해서 '이건 쿼리가 아니라 파라미터야'라고 인식하게 만드는 것입니다. MINE ASSIST는 Prepared statement를 사용하는 mybatis framework를 사용하고 있으며, SQL injection에 대해서 완벽하게 방어하고 있습니다. 

SQL injection 이외에 클라이언트가 보내는 파라미터를 변경하는 방법도 있습니다. 예를 들면 admin=false 같은 값을 클라이언트로 받는다면, admin=true로 변조해서 서버를 속이는 것입니다. MINE ASSIST는 클라이언트로부터 받은 파라미터들은 모두 정확한 값인지 검증하고 있습니다.

 

  1. https connection

 

채굴기에서 서버로 보내는 정보들을 제외한(이 정보들은 http로 보내집니다.) 웹 <-> 서버의 통신, 앱 <-> 서버의 통신은 모두 https로 이루어지고 있습니다. https에 대해서 간단하게 설명을 드리면, 데이터를 안전한 레이어로 감싸서 다른 사람들이 가로채지 못하게 하는 것입니다. 통신이 안전하지 않은 네트워크에서 이루어지는 경우(공개된 장소의 와이파이 등) 오고 가는 패킷들을 분석해서 데이터를 가로채는 것이 가능합니다. 그러나 https를 이용하면 데이터를 가로채는 것이 매우 어려워집니다. 단적으로 각종 19금 사이트들이 https로 사이트를 구성해놓은 경우에는 warning 화면이 안뜨고 접속이 되는 것을 볼 수 있죠. 국가조차도 가로채는 것이 어려워집니다.

또한 사이트 접속시에 https를 붙인 https://www.mineassist.net 으로 접속하는 것을 권장합니다.

 

     6. 외부 다운로드 제한

 

채굴기 관리 프로그램은 https://www.mineassist.net 이외의 곳에서는 다운 받으실 수 없습니다. 클라이언트 프로그램이 여기저기 유통되는 경우 변조된 프로그램에 의한 해킹으로 인한 위험이 있기 때문입니다. 

 

 

 

24

파이리님의 서명

Blockchainnovation

ERC20 토큰 개발, 암호화폐 지갑 개발, 스마트 컨트랙 개발

default debug random = 0 / type = READ / detected = READ

Articles

77 78 79 80 81 82 83 84 85 86
default debug random = 0 / type = READ / detected = READ