brunch

You can make anything
by writing

C.S.Lewis

by Ash Han 한승환 Dec 21. 2016

비트코인 지갑 해킹/보안성 검증

Bitcoin Security, 원글 작성일: 2015-06-01







1. 

생성이 가능한 총 비트코인의 지갑 수는, 일반지갑 계열뿐 아니라, 멀티시그계열도 있기 때문에 


15,599,970,876,632,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000

X2 =

31,199,941,753,265,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000(311아승기 개)

가 됩니다.


다만, 보안성은 일반계열만 파훼가 되어도 무너지게 되므로, 일반지갑만 적용하였고,

리치리스트 지갑해킹의 경우, 보안을 위해 멀티시그 지갑도 사용을 하기 때문에 해당 부분을 고려하고자 한다면, 아래의 관련 값에 곱하기 2를 해주시면 됩니다.


2.

비트코인 주소생성은 SHA-256이 아닌, GPU(Scrypt)를 사용하므로, GPU 기준으로 적용했습니다.




-------------------------------------------------------------------------------------------



비트코인 지갑해킹에 대해 연구입니다.


지갑해킹에 대한, 즉 '같은 주소를 가진 지갑을 생성하는 확률'에 대한 논의가 있어왔었는데요.


기술적으로, 지갑은 이미 만들어진 똑같은 주소의 지갑을 다시 생성하는 것이 가능합니다.


만일 신규주소 생성을 하였는데, 리치리스트 TOP10에 오른 지갑 주소를 생성하게 될 수도 있는 일이죠.


이러한 것을 'Hash Collision(해시충돌)'이라고 부릅니다.


사실, 이러한 해시충돌이 빈번히 일어난다면 사실상 해당 해시방식은 파훼된 것이므로 폐기가 되겠죠. 이미 MD-4/MD-5/SHA-1 등이 이러한 방법으로 폐기가 된 것으로 알고 있습니다.


관련 포스트:

땡글


히든위키


엔하위키 from 코인플러스


사토시



지갑의 보안성이 검증되었다고 하는데, 도대체 왜 비트코인이 안전하다는 것인지 살펴보고,


이 시스템을 무너뜨리려면 어떻게 해야 하는지 고민해보겠습니다.




보안성


명제


명제 1:

비트코인의 주소는 '공개키'자체로 만들어지는 것이 아니라, '공개키'를 SHA-256으로 한번 해싱한 뒤, 다시 RIPEMD-160 처리를 하여 이루어진다. 이를 통해 주소길이가 64자리에서 34자리로 짧아지게 된다.




명제 2:

해시충돌을 일으키기 위해 사용된 방법은 '무차별대입공격(Brute force)'이다.

-사실 현재로써는 그 외의 특별한 방법이 알려져 있지 않음(이 부분은 전문가확인필요)



명제 3:

비트코인 주소 해싱작업은 비트코인 이체를 해싱하는 'SHA-256' Asics방식보다, 일반 GPU채굴이 효율 적이다.

GPU채굴해시를 기준하여 설명한다.



명제 4: 

지갑주소길이는 34자리로 구성되어 있으나 첫번째 자리는 1로 고정,

각 주소자리에 들어갈 수 있는 변수는 Base 58(알파벳 대문자+소문자+숫자)이다.

따라서, 지갑주소의 총 경우의 수는 '58의 33제곱(=58^(34-1))'이 된다.


기존 대부분의 자료들은 이를 '5나유타'개로 잘못표기하고 있지만, 

실제 계산 결과 '155아승기'의 경우의 수가 나온다.


약 322배의 오차가 있다. (해당오류는 얼마 전 엔하위키에서 수정이 됨)


즉, 100%의 확률로 해시충돌을 발견하기 위한 해시투입량은 

'15,599,970,876,632,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000' 이다.

여기에 3으로 시작하는 멀티시그(Multi-sig)주소까지 고려하면 그 두배인,

'31,199,941,753,265,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000' 가 된다.

(다만 여기에서는 어차피 일반지갑만 해킹이 되어도 비트코인 보안성이 무너지게 되는 것이므로, 1로시작하는 일반 지갑만을 고려한다. 만일 멀티시그지갑도 고려하고자 한다면, 관련 값에 2를 곱해주면 됨)


해당 해시는 얼마나 큰 값일까?




계산

현 시각 기준 알트코인 네트워크(GPU채굴)에서 투입되고 있는 총해시는 

734,106.90 MH/s (크립토코인즈인포)

즉, 초당 734,106,900,000 HashPower 이다.

(현재 채굴이 이루어지는 총 알트코인 41개 종의 해시파워를 모두 합산)



이를 시간순으로 정렬해보면 다음과 같다.



현재 비트코인에 투입되는 네트워크 해시총량을 비트코인 시스템을 붕괴(해시충돌을)시키는데, 투입한다면 몇년의 시간이 필요할까?


엄청 오랜기간이 걸린다는 것을 알 수 있다.


그러나 컴퓨터산업계는 현재까지 성공적으로 '무어의 법칙(Mooore's law)'이 적용되고 있으므로,


무어의 법칙을 적용해본다(스압).


                              .

                              .

                              .



현재를 시작점으로 무어의 주기를 계산하면, 약 131번째 무어주기가 되는 196.5년 뒤에, 더 정확하게는 약 196년 뒤가 되어야 해시충돌을 찾아낼 수가 있다는 점을 알 수 있다.


즉, 단순 대입공격으로는 무어의 법칙을 적용하더라도 '기원 2211년'이 되어야 첫 해시충돌을 일으킬 수 있다. (다만 Birthday attack등을 적용하면 달라질 수 있음)


또한 해당 방법으로 비트코인 시스템이 파훼가 되면, 사실상 원리적으로 유사한 방법을 사용하는 대부분의 암호화체계가 무너지게 된다. 사실 그 시점이 되면 훨씬 더 강력한 체계의 암호화(보안)기법을 만들어낼 수 있을 것이기 때문에 당연히 보안도 강화되게 된다.




경제성


위의 해시 조건을 모두 채우더라도, 비트코인 시스템을 무너뜨릴 경제 동기가 생길 수 있을까?

얼마 이상의 비용을 들여야 해킹이 가능한가?


현재 코빗 API기준 체결가는 27만 4900원 (작성일 기준: 2015-06-01)



지갑생성 작업을 위해 필요한 GPU해시가격은 GH 당 43602.56원이다.



위 해시충돌값을 찾기 위해 투입해야 하는 해시 값은 

15,599,970,876,632,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000


따라서 충돌을 찾기 위해 해시값을 투입할 경우, 치러야 하는 비용은,

680,198,666,146,634,000,000,000,000,000,000,000,000,000,000,000,000,000원이 된다.


현재 해시 충돌을 성공적으로 하고, 그것이 우연히 리치리스트 1위 지갑이었다고 하더라도,


들어있는 돈은 약 

리치리스트 1위 지갑 비트코인

124,956 btc


비용에 비해 턱없이 적은 금액이다.


게다가, 처음 발견하는 해시충돌 지갑 주소가 리치리스트에 있는 지갑일 확률은 매우 낮다. 대부분의 경우, 아무것도 없는 지갑일 확률이 크다.


해시 충돌을 통해 리치리스트 100위 안의 지갑을 100%확률로 해킹해내기 위한 투입금액은,

리치리스트100위 지갑발견 비용(원화)

80,900,497,456,475,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000


지구상에 없는 금액이다.





비트코인 지갑주소 해킹 시스템 보안성 및 경제성 검토 요약 및 결론


1.

만들 수 있는 총 주소의 수는 일반적으로 알려져있는

5,025,906,331,956,380,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000개(5나유타)

가 아니라, '1계열의 일반주소 + 3계열의 멀티시그 주소'을 포함해서 총,

31,199,941,753,265,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000(311아승기 개)

이다.


2.

지갑 시스템의 해시 충돌 발견을 위해서 해시를 투입할 경우,

즉, 중복되는 지갑주소가 생성되기 위해서는

현재 비트코인 전체 네트워크 해시를 모두 투입하고, 무어의 법칙을 적용했을 시


196년 소요



3.

단순 해시충돌발견이 아닌, 상위 100개의 리치리스트 지갑을 해킹하기 위해서는 

80,900,497,456,475,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000원을 사용해야함


(리치리스트 중 멀티시그 주소까지 해킹하고자 한다면, 두 배의 금액을 들여야 함)


그러나 해당 돈은 지구 상에 있는 모든 돈을 합친 것보다도 훨씬 큰돈이며,

그렇게 많은 해시도 지구 상에 존재하지 않는다.




결론

미래는 알 수 없는 것이므로, 무언가 획기적으로 새로운 방법이 생긴다면 가능할 수도 있지만,

현재 지구 상에 존재하는 자원과 기술로는 비트코인 해킹 불가능


안심하시고 잘쓰세요^^






비트코인 철학과 집단지성이용을 위해, 계산소스를 오픈소스화하였고 아래 링크에서 누구든지 조회가 가능합니다. 정확도를 위해 출처의 모든 값은 실시간 API값으로 설정했으므로, 실시간으로 변경이 됩니다.


-오픈소스 주소




작가의 이전글 비트코인의 성장
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari