[연재글] BlockChain - 06. Security
게시글 주소: https://m.orbi.kr/00012401564
1편 : https://orbi.kr/00012313138
2편 : https://orbi.kr/00012318427
3편 : https://orbi.kr/00012334500
4편 : https://orbi.kr/00012341994
5편 : https://orbi.kr/00012367982
이 글은 암호화폐와 그 근간을 이루고 있는 블록체인에 대해 살펴보는 글이지 비트코인과 이더리움 시장을 예측해 투자 타이밍을 조언하는 글이 아님을 알려드립니다. 이걸 본다고 투자하는데 도움이 되지 않습니다. 기술은 개발자에게 투자는 주갤러에게.
안녕하세요 야심한 밤 공부하다가 하기싫어 글쓰러 왔습니다. 저번 글에서 블록을 만들어 체이닝하는 것을 소개해드리면서 기본적인 블록체인의 구조는 설명이 끝났습니다. 그런데 이게 안전하다 안전하다 하는데 왜때문에 안전한지 제대로 설명을 드리지 않은 것 같아 이번 글에서는 안정성 위주로 설명을 드려볼까 합니다. 그 전에 블록체인 네트워크가 어떻게 다수결로 체인을 동기화하는지부터 설명을 드리는 게 이해에 도움이 될 것 같네요.
1. 합의(consensus)
블록체인 네트워크는 주기적으로(보통 새 블록이 생성돼 전파되는 시점) 체인을 동기화하며 어떤 체인을 메인 체인으로 가지고 갈 지 동기화합니다. 이를 합의 매커니즘이라고 하는데요, 저마다의 블록을 캐는 노드들이 어떻게 모든 내용을 복붙하지 않고 합의에 이르러 같은 체인을 유지하는지 설명드리겠습니다. 사실 이건 별로 대단한 매커니즘이 있지는 않아요. 그냥 어떤걸 고를 지 같은 원칙을 가지고 움직이면 결국 하나로 모이게 되거든요. 기본적으로 모든 노드는 "가장 많은 노력이 든 체인" 을 메인 브랜로 선택합니다. 다른 브랜치는 메인 브랜치가 될 가능성이 있지만 아직 메인 브랜치가 되지 못한 채로 있다가 사라지기도 하고, 메인 브랜치로 승격되기도 합니다. 이 메인 브랜치를 고르는 단 하나의 원칙 "가장 많은 노력이 든 체인을 메인 브랜치로 한다"를 따르게 되면 결국 모든 노드는 같은 브랜치를 메인 브랜치로 하게 되겠죠? 왜냐하면 시간이 지나면 결국 모든 블록 데이터를 모든 노드가 공유하게 될 테니까요. 거기서 가장 많은 노력이 든 브랜치를 고르면 같은 녀석이 나올 수밖에 없겠죠. 여기서 가장 많은 노력이라 함은 체인의 길이가 길거나, 길이가 같은 경우 블록의 크기가 더 큰(더 많은 Tx를 포함하고 있는) 것을 뜻합니다. 체인의 길이가 길다는 것은 블록이 많다는 것이고, 그 블록을 캐기 위해 더 많은 컴퓨팅 파워를 사용했기 때문에 이를 우선적으로 택하는 것이고, 거래가 많다는 것은 블록체인의 빠른 검증을 위해 유리하기 때문에 이를 택하는 것이죠. 이런 식으로 모든 노드는 결국 같은 브랜치를 하나의 메인 브랜치로 선택하게 됩니다.
2. 브랜치 생성-합의 시나리오
블록이 여러 군데에서 거의 같은 시간에 발견되는 경우에 어떻게 합의에 이르는지 살펴보도록 할게요. 이 설명을 보시면 위에서 설명한 합의 매커니즘이 좀 더 이해가 가실거에요.
1) N-1번 블록을 부모로 한 N_A, N_B 블록이 동시에 아주 먼 곳(지리적으로 먼 곳이 아닌 P2P 토폴로지상으로 먼 곳)에서 채굴되었습니다.
2) 일정의 시간이 지나 전 세계의 절반 노드는 N_A의 생성 정보를 수신했고 나머지 절반은 N_B 블록의 생성 정보를 수신했습니다. 이 시점에서 세계의 절반은 N+1_A를 만들기 시작했을 것이고, 나머지 절반은 N+1_B를 만들기 시작했습니다.
3) 시간이 좀 더 지나 전 세계에 N_A, N_B 블록의 생성 정보가 전달되었습니다. 이때 각각의 노드는 자기가 먼저 받은 블록 옆에 형제처럼 새로 받은 블록을 가지쳐놓고(브랜치) 일단 하던 일을 합니다.
4) 어느 시점에서 N+1_A가 채굴되었고, 이 정보가 전 세계에 전달되었습니다.
5) N_A를 먼저 받았던 노드들은 이 뒤에 자연스럽게 N+1_A를 이어 붙이고 바로 N+2_A를 채굴하기 시작합니다. 이들에게는 N - N_A, N+1_A가 한 줄기로 자연스럽기 때문에 여전히 메인 브랜치는 A 브랜치입니다.
6) N_B를 먼저 받았던 노드들은 N+1_A를 N_A 뒤에 이어붙이고 N_B보다 N_A가 더 큰 노력이 들었다는 것을 확인합니다. 그리고 이 노드들은 A 브랜치를 메인 브랜치로 선택하고 즉시 N+1_B를 만들던 작업을 중지합니다. 이제 B 브랜치는 메인이 아니니 유지할 필요가 없거든요. 그리고 N+1_A를 부모로 하는 N+2_A를 만들기 시작합니다.
7) 이제 전 세계는 같은 브랜치를 메인 브랜치로 가지는 합의에 도달합니다.
뭔가 되게 아무것도 아닌데 놀랍게 합의에 도달하죠? 이렇게 거의 동시에 같은 블록을 채굴하는 경우는 생각보다 자주 일어나지 않는다고 합니다. 그리고 브랜치가 또 브랜치를 갈라서 가지가 아주 복잡해지는 경우는 거의 발생하지 않는다고 해요. 보통은 브랜치가 2단계가 되기 전에 합의에 도달한다고 합니다.
3. 블록체인의 변조 저항성
블록체인은 그 자체로 변조에 저항성이 있습니다. 이를 설명하기 위해 몇 가지 사항들을 되짚어보도록 할게요.
1) 비트코인 블록은 대략 10분에 한개정도 채굴된다.
2) 비트코인 블록을 만드는 작업은 해시를 찾는 작업이다.
3) 해시를 찾는 방법은 무작위 대입밖에 답이 없다.
4) 해시함수의 특성상 입력값이 조금만 바뀌어도 결과값은 예측 불가능하게 변한다.
뭐... 이것만 봐도 블록 자체의 안정성이 어떻게 확보되는지 이해가 가시는 분들도 있을 것 같긴 하지만, 예를 들어 설명해드리면 이해가 더 쉬울 것 같네요.
내가 친구에게 3BTC를 주고(현재 시세 기준 약 천만원) 중고차를 친구에게 구입했어요. 내가 발행한 트랜잭션이 N-2번 블록에 있고, 지금 마이너들은 N+1번 블록을 찾는 중이라고 가정해봅시다. 친구는 그걸 확인하고 제게 차키를 줬습니다. 이제 이 차는 제껍니다. 그런데 난 내 트랜잭션의 output을 조작해 내가 낸 돈이 친구가 아닌 나에게 되돌아오게 하고 싶어요. 이를 위해 트랜잭션의 output을 변경합니다. 그랬더니 N-2번의 해시값이 변경되면서 더이상 난이도 조건을 만족하지 않게 됐어요. 다행히 난 대학 연구원이라 슈퍼컴퓨터를 사용할 수 있어서 연구실 컴을 몰래 돌려(그러면 안됩니다) N-2번 블록의 해시를 다시 찾아냈어요. 음? 그렇게 해놓고 보니 N-1번 블록의 입력값에 N-2번 블록의 해시값이 들어가기 때문에 N-1번 블록의 해시값도 변경돼버렸네요. 또 연구실 컴을 돌려 N-1번 블록을 새로 만들어냅니다. 그랬더니 N번 블록도 같은 작업을 해줘야 해요. N번 블록까지 열심히 캐놓고 보니 N+1번 블록이 채굴됐다는 정보가 들어오네요. 하지만 내가 받은 N+1번 블록은 내가 만든 N번이 아닌 네트워크가 공유하고 있는 N번 블록의 자식이기 때문에 내 거래를 메인 브랜치로 심으려면 난 N+1번 블록도 새로 캐야 해요. 운좋게 내가 N+1번 블록과 N+2번 블록을 누구보다 빠르게 채굴했어요. 그리고 난 그 정보를 네트워크에 공유해 내가 변조한 체인이 메인 브랜치가 되도록 해요. 성공! 연구실 슈퍼컴퓨터를 몰래 돌린 결과 난 3BTC를 다시 내 지갑으로 되돌리면서 친구에게서 차를 받았어요.
자, 말로는 되게 금방 뚫리는 것 같은 위의 시나리오가 얼마나 골때리는 일인지 살펴보도록 하죠. 우선 비트코인은 전세계 수많은 컴퓨터들이 동시에 해시를 찾기 위한 쇼를 한 결과로 하나의 블록을 만들어냅니다. ASIC 채굴기가 나오면서부터 비트코인은 난이도 인플레가 심해져서 이제는 세계의 어떠한 단일 컴퓨터도(슈퍼컴 포함) 10분 안에 블록을 캐낼 수 없을 정도라고 합니다. 지금의 블록은 오로지 집단 노가다의 산물인거죠. 따라서 여러분이 정말 부자 내지는 정말 고학력자라서 슈퍼컴이고 뭐고 맘대로 갖다 쓸 수 있다고 해도 블록을 다시 캐는 속도는 새 블록이 생기는 속도보다 거의 확실하게 느리다는 말이죠. 운 좋게 한두개의 블록은 10분 안에 채굴할 수도 있겠지만, 통상적으로 고가의 거래 내지는 고도의 신뢰가 필요한 거래는 6번 이상의 컨펌을 거칩니다. 이 말은 다시 말하면 이 거래를 변조하기 위해 6개의 블록을 다시 채굴해야 한다는 말이에요. 단일 컴퓨터로 N-6부터 시작해서 N+M까지의 블록을 따라잡아 채굴한다? 가능할 것 같지 않을 시나리오죠? 이런 식으로 블록체인에 한번 명시된 거래는 사실상 변조가 불가능합니다. 이게 블록체인이 신뢰를 주는 이유지요. 물론 방금 캔 블록에 있는 거래는 변조할 수 있습니다만, 1컨펌만으로 거래를 성사시킬 정도의 금액이라면 저렇게 큰 노력을 들이는 게 의미가 없겠죠?
4. 51% 어택
그럼 이런식으로 생각해볼 수 있을 것 같네요. "단일 컴퓨터로 안되면 네트워크를 통째로 갖다 쓰면 되잖아?" 네 맞아요. 위에서 말했듯 새 블록이 생기면 전 세계 노드들이 어떤 걸 메인 브랜치로 가져갈 지 선택한다고 했죠? 그럼 내가 전세계 노드의 절반 이상을 내가 변조한 블록을 고르도록 하면 내가 의도한대로 모든 거래를 변조할 수 있게 되는거죠. 이걸 51% 어택이라고 해요. 실제로는 51%까지 필요가 없다고 하더라구요. 노드들이 블록을 전파하는 시간도 있고, 내 브랜치 위에 블록이 한두개만 더 올라가도 거의 확실하게 메인 브랜치가 굳어지기 때문에 그렇다고 해요. 그런데, 내가 조작할 수 있는 거래는 오로지 내 거래뿐입니다. 내가 사인해서 잔고를 사용할 수 있는건 내 지갑에 있는 돈뿐이니까요. 한마디로 51% 네트워크를 동원해서 할 수 있는게 겨우 한 사람의 거래 조작이라는 겁니다. 그리고 이걸 변조해서 전파에 성공했다고 했을 때, 나머지 51%-1명의 사람들의 받는 보상은 없어요. 네 없어요. 다시 캔 블록 보상이 있지 않냐구요? 이미 그건 정상 블록체인이 생성되던 시점에도 만들어지던 보상이잖아요. 물론 그 보상을 먹는 사람이 달라질 수는 있겠지만, 전세계 51% 사람들이 12.5BTC를 나눠먹으면 뭐 얼마나 떨어지겠어요? 그렇다고 이 난리를 치는 사람이 자기 거래 변조하면서 전세계 51% 사람들에게 자기가 거래를 변조해 얻은 이익을 나눠줄까요? 나눠먹으면 얼마나 되겠어요. 51% 사람들은 아무 보상도 없이 좋다고 누군가의 거래 하나를 조작하기 위해 자기 컴퓨팅 파워를 기꺼이 바쳐줄까요? 말도 안 되는 얘기죠? 물론 비트코인 초기에, 노드 갯수가 얼마 되지 않아 강력한 컴퓨팅 파워를 지닌 노드가 대부분의 블록을 채굴하던 시절에는 그 노드가 맘만 먹으면 블록을 변조할 수 있었겠지만, 이런건 코인 발행 초기에 발행인이 노드를 많이 만들어놓으면 해결할 수 있는 문제여서 사실상 이런 사태가 일어날 수는 없다고 봐도 무방해요.
이번 글은 좀 짧네요. 간단하게 일어날 수 있는 거래 조작 시나리오와 이에 대해 블록체인이 얼마나 안정성을 지니고 있는지 살펴봤습니다. 유일하게 블록체인을 조질 수 있는 방법은 SHA256 해시를 예측하거나 매우 빠른 시간에 찾아낼 수 있는 방법을 찾는 건데, 지금까지 알려진 방법은 rainbow table 밖에는 없어요. fait 팀도 저런건 못만듭니다. 물론 SHA256 레인보우 테이블을 만드는 데 드는 시간은 비트코인의 수명이 다하는 것보다 훠어어어어얼씬 느릴 것이구요. (그래서 일각에서는 NSA 같은데서 SHA256 rainbow table을 만들려고 비트코인을 만든게 아니냐는 음모론(?)도 제기하고 그럽니다. 만든사람이 누군지 모르니 뭘 끼워넣어도 말은 되는거죠 ㅎㅎ) 어쨌든 아직까지는 뚫을 수 없는 해시함수를 보안에 사용하고 있고, 심지어 이게 체인을 이루고 있어 블록체인의 방어력은 무시무시합니다. 다음 글에서는 이렇게 블록에 실린 거래가 어떻게 검증되는지 알아보도록 하겠습니다.
작성자 아들딸 까까사주기:
BTC 14eM4cd28q77Q4AujrV6jGBDH9unX3zD3f
ETH 0xf05C7196CF4e3494023aeABB6053d053ecB3937A
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
전남친/전여친이 유튜브 알고리즘에 뜬 적 있으신 분 0
진짜좆같네 채널추천안함이랑 관심없음 했는데도 뜨면 기분 확 잡침
-
미래가 어둡다 0
일단 고3 때 담임쌤한테 대가리 박아야함 성적표 나올 날이 두렵구나
-
이전 글 : https://orbi.kr/00070005760 위 링크로 가시면...
-
1번은 어떤힘이 대체 뭐에요 다들 뭐라쓰심? 전 걍 안썼어요..
-
아예 없습니다. 예외적으로 일부 로스쿨에서 일부 유리한 학과는 있을 수 있겠네요....
-
24수능때 미적 만점자들은 진짜 수학 괴수같다는게 느껴졌는데 올해는 뭔가 어중이...
-
내년 수능보는데 22개정이 좋음? 안그럼 그냥 시발점 15개정 듣는게 좋을까
-
이대논술 0
이대 논술 중에 생명과학과 쓴 분 계신가요? 합격 컷이 너무 궁금합니다ㅠㅠ
-
집대성 채널에 미3누 올라왔네
-
기차지나간당 8
부지런행
-
궁금하네
-
정신이 건강해짐 나를 위한 시간이 늘어남
-
합격예측 0
메가가 나음 진학사가 나음?? 진학사로 보는게 낫겟지?? 걍 둘다 결제해야하나
-
재매이햄 1
?
-
컷도낮으면서준비하나도안해도되고개꿀빨수있는특기업나?
-
1지망면접망치고 0
서울대약대.. 제시문 면접 개망했다 교수님이 추가질문을 안하길래 나한테 관심이...
-
수능 만점자들은 근데 11
수능 만점이라는 사실만으로 평생 주목받을 수 있으니까 연예계나 유튜브 같은 거...
-
CPA판사 배출 로스쿨판사 배출 학부검사 배출 로스쿨, 학부로스쿨 배출...
-
제가 2학년 겨울방학때 전학을 가게 될거 같은데요 이번 2학년때 스포츠 생활을 듣고...
-
프사 움짤도 ㄱㄴ? 15
루비짤 주움
-
그러면 어쩌라고 선택권이 없는데 지금 여자로 다시 태어날수도 없고 슈발
-
시험 일주일 남았는데…사이버대 출신, 언어재활사 시험 응시 불가 4
[세종=뉴시스] 박영주 기자 = 언어재활사 국가시험을 일주일가량 앞두고 사이버대 등...
-
의대도 돈 많이 못벌수있다면서요;; 전 돈이 목표인데 그럼 어디로가야하죠?
-
나 대전으로만 좀 보내줘요 법원행정처야
-
. 2
근데 대창은 기름덩어리인데 왜 먹는거지.. 쩝쩝
-
잘 자 5
넵
-
이대 수리논술 2
오전 수논 진짜 감이 안잡히는데 이거 변별이 되긴 하는건가…? 만점자가 기본...
-
오붜치할사람 3
고급시계
-
현역들이 아니라 대학생하다가 온 사람들은 알텐데 특히 공대생들은 선배한테 이야기...
-
개미쳤는데 ㅋㅋ
-
ㅋㅋ 글리스트 대박이네
-
특이사항: 3학년 내신 때 화작(을 빙자한 문학 수특 공부) 들을 예정 소설가가...
-
목표가 어디임
-
레전드 수험표로
-
언미물2화2 7
를 실제로 하는놈이 있다고??
-
"확률과 통계"
-
화작생윤사문 3
그리고 "미적" 유사담요단 선택과목
-
이제 답은 화학에서 탈출뿐임 생명+ 1개 추천좀.. 사,과탐 상관ㄴㄴ
-
실환가 ㅋㅋ
-
무슨 생각하시나요
-
ㅇ…이게뭐노
-
기확생2지2 2
공부해야지 으하하
-
현재 평균 갓반고 이과 2.8인데 2학년때 좀 낮음 2학년이 3.2 1학년이 2.5...
-
그게불가능한게 너무슬픔뇨
-
의사 망한건 0
모르겠고 나라 망한건 트루인듯 국가부도의 날때 사연편지 라디오에 가는거마냥 안힘든 직종이 없음
-
뻥임뇨
-
정부가 기초과학분야 RnD를 팍팍 지원해줘서 모두다 설물천을 바라보는 가능세계는...
-
수능끝나고 푸는문해전 왤케재밋노
-
좀 구체적인 이유 아시는 분
으아아 이번건 좀 복잡하네요
그런데 여기서 말하는 변조라는건 숫자를 바꾸는게 아니라 그냥 자신이 비트코인을 얻을 수 있도록 거래를 유도하는 것을 의미하는건가요?
어떤 형식이건 블록에 쓰인 거래를 바꾸면 변조가 됩니다. 근데 내가 1비트코인을 써서 10비트코인을 얻도록 하는 거래는 유효한 거래가 아니기 때문에 검증을 통과하지 못해요. 그래서 조작해봤자 쓴돈 돌려받는 정도가 고작입니다.
아 이게 이미 블록에 기록된걸 바꾸는거라 아웃풋에 인풋보다 많은 값을 넣는게
가능할 지도 모르겠네요.
다만 비트코인의 총량이 정해져 있는데 그렇게 값을 바꾸다 보면 나중에 채굴 시스템에 문제가 생길 수도 있겠죠?
채굴 보상은 발행 총량이랑 아무 연관이 없어요. 그냥 50비트코인부터 시작해서 얼마에 한번씩 절반으로 줄일 것이다 하는 걸 가지고 계산했을 때 나온 총량이 2100만인거지 이만큼을 찍어낼 것이고 시장에 이만큼이 풀렸으니 잔고가 얼마다 하는건 아니라서요.
ㅇㅎ.. 아무런 관계가 없군요..
묻힌 글 댓글 하나 달아드립니다
그시간에 글 써도 초록제목이 되는구나....ㄷㄷ
이더 샀다 폭락중 ㅎㅎ
요새 코인판은 전반적으로 하락세라서 강건너 불구경을 추천드립니다
어렵네여
쉽게 설명한다고 했는데 그림을 같이 보여드릴걸 그랬나 싶네요.
잘 읽었습니다^^