[연재글] BlockChain - 06. Security
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를 선물하세요.
-
나이 먹을수록 뭐든 더 어려워지냐,,,
-
수능도 끝났는데 카르시온 가셔야지 ㅋㅋ
-
어느게 더 어려웠을까요?
-
수학 n제 0
기출 풀고 n제 들어가려는데 1후 2초가 풀기 좋은 n제 뭐가 있을까요?
-
에바
-
좋은건가요? 국어를 ㅅ망쳤는데 탐구는 ㄱㅊ게 나와서…
-
왜 가냐고 묻길래 밖에서 하면 공부 이외에 신경 쓸거나 독서실 왔다갔다 하는 시간도...
-
요즘ai땜에 취업길 막막한데 초등교육과 들어갈까요 3학년까지 다님
-
재수 예정이고 사탐런 하려는데 둘중에 뭐할까요?? 사문은 무조건 하려고 했는데...
-
서울대 연세대 성균관대 고려대 한양대 경희대 이화여대 서강대 동국대 건국대/중앙대...
-
심지어 잘 봄 하...
-
생명 비유전 엄청 빨리 풀어내는, 실전컨셉의 전자책 같이 집필하실분 계신가용 수익...
-
난 물1 생1 중딩때무터 통과하면서 역학 재밌게 했었는데……..
-
영어 개년 0
영어기출 몇개년까지 보는게 좋나요?
-
홍콩을 가봤다는 사실을 깨달았다
-
수능수학20번문제 전원정답처리 해야하는거 아닌가요?(제 뇌피셜) 0
조건으로" 실수전체에서 정의된 f(x)" 가 나와있는데 이거랑 구하는거 보고 애초에...
-
어떻게 풀어야하나요
-
저격당했네;;
-
안 그래도 탐구 창났는데 여기서 영어도 2 떴으면 진짜 그냥 복학했을 듯
-
생각보다 이슈가 없는거 보면 우리나라 입시를 주도하고 여론을 주도하는...
-
국가가 날 부르노 마
-
백분위로 화작 79 확통 84 영어 2 생윤 83 정법 92 한국사 2 솔직히 잘...
-
이번 수능 35211 나왔고 광명상가 하위과 인가경 정도 가능할 것 같습니다.....
-
과외쌤한테 연락 2
과외쌤이 수능 끝나면 맛있는거 사주겠다해서 연락한다했는데 뭐라고 보내야 될까요 과외...
-
ㅇㅇ?
-
25수학 공통15번까지 스뮤스하게 풀려서 만점인줄 ㅎ 3
ㅎㅎ 주관식에서 미끄덩햇네 ㅎ
-
해보고 싶은데 필력이 너무 그지 같아서 못 알아 먹을 것 같음 ㅠ
-
국어: 내가 안 물어봤으면 안할뻔함 수학: 그나마 시켜주긴 함 영어: ㄹㅇ안함...
-
1.미미미누 교대,교사 관련 영상들 + 댓글창에 현직 교사들 댓글 2.pd수첩...
-
”일반 컷 99“
-
설사범, 연생과대, 고정경대에서 이과로 전과 힘든가요?? 0
학벌올리고 전과하고싶은디 ㅠㅠ 전과 힘든가요??
-
수능 끝나고 싹 다 가정학습 처리해줘서 2월 졸업식 때까지 학교 5일도 안 나갔음...
-
한지,세지도 ㄱㅊ나요? 제가 타임어택,안정성 떨어지는걸 극혐해서요 ㅠ
-
하고 싶은 거 다 해봐야지 나중에 후회하는 것보단 vs돈도없구자신도없음 에휴
-
침대에 달린 등도 안 끄고 잤네
-
주어진 함수 f(x)의 그래프가 다음과 같습니다. 단순하게 생각할 때 이 함수에...
-
주변에 미적 100은 많이 없는데 96 92는 진짜 개 많음 미적 1컷 92는...
-
화장실도 인기다리게 칸 개많았고 의자랑 책상도 좀 옛날거긴했는데 그래도 사이즈도...
-
아니 소재 진짜 막 쓰네.. 딥페이크 저거는 아예 저 글자 빼냐 마냐 하나로 정치...
-
1년 내내 안씻는 물스퍼거 놈들이 너무 많아
-
파업 때문이구나 ㅡㅡ
-
현실과이상의괴리 8
내적갈등 해소방안 : 한번더보기
-
국어 노베 0
국어 공부해본 적 없고 고2라서 모의고사 칠 때만 모고 푼 적 없어요. 진짜...
-
과탐가산 0
과탐 2등급 대가리가 가산5프로정도 받으면 사탐 높1이랑 비슷해지나요?
-
수리논술ㅋㅋ 1
기하 오늘 시작할 예정인데 한양대 가능한 부분? 올해 수능 미적은93점임.
-
너네 아직도 협상 중이잖아 원딜 바이퍼 잖아 피넛제카딜라이트 있잖아 제발
-
한문제 풀면 맞췄나? 틀렸나? 너무 궁금해서 채점병 도져요… 이 습관도 고쳐야할텐딩…힝…
-
얼버기 11
행복한꿈을 꿨어요
으아아 이번건 좀 복잡하네요
그런데 여기서 말하는 변조라는건 숫자를 바꾸는게 아니라 그냥 자신이 비트코인을 얻을 수 있도록 거래를 유도하는 것을 의미하는건가요?
어떤 형식이건 블록에 쓰인 거래를 바꾸면 변조가 됩니다. 근데 내가 1비트코인을 써서 10비트코인을 얻도록 하는 거래는 유효한 거래가 아니기 때문에 검증을 통과하지 못해요. 그래서 조작해봤자 쓴돈 돌려받는 정도가 고작입니다.
아 이게 이미 블록에 기록된걸 바꾸는거라 아웃풋에 인풋보다 많은 값을 넣는게
가능할 지도 모르겠네요.
다만 비트코인의 총량이 정해져 있는데 그렇게 값을 바꾸다 보면 나중에 채굴 시스템에 문제가 생길 수도 있겠죠?
채굴 보상은 발행 총량이랑 아무 연관이 없어요. 그냥 50비트코인부터 시작해서 얼마에 한번씩 절반으로 줄일 것이다 하는 걸 가지고 계산했을 때 나온 총량이 2100만인거지 이만큼을 찍어낼 것이고 시장에 이만큼이 풀렸으니 잔고가 얼마다 하는건 아니라서요.
ㅇㅎ.. 아무런 관계가 없군요..
묻힌 글 댓글 하나 달아드립니다
그시간에 글 써도 초록제목이 되는구나....ㄷㄷ
이더 샀다 폭락중 ㅎㅎ
요새 코인판은 전반적으로 하락세라서 강건너 불구경을 추천드립니다
어렵네여
쉽게 설명한다고 했는데 그림을 같이 보여드릴걸 그랬나 싶네요.
잘 읽었습니다^^