[연재글] 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를 선물하세요.
-
연계안한사람있냐 0
ㅋㅋ같이피지컬로뚫어보자
-
나만안하나
-
오늘 할 일 0
한국사 아랍어는 굳이..... 안할게요
-
화이팅 입니다!
-
뒤에 머 써놨다고 부정행위로 잡혀가는거아니겟죠..
-
45점 이거 아낀만큼 국어 시간 더 주면 안됨?
-
x가 감소함수면 정답률 꽤 낮을 듯
-
ㄷ선지 결론이 가설을 지지하지 않는다 나오면 등급컷에 영향 있을 듯
-
시간 참 빠르네요 ㅎㅎ 높은 성적은 못 받았지만 어쨌든 운빨로 원하는 곳 갔습니다...
-
수능날 택시 1
안잡히겠죠? 아침 6시 30분쯤에 출발하려는데..
-
내후년 수능 준비라 내년에는 대성 19패스로 해결해야될듯해서
-
도시락 못해감..에휴 초코바나 하나 뜯을듯
-
지금부터 그냥 컴싸로 푸는거 연습한다 ㅅㄱ
-
강자에겐 약하고 약자에게 강한 이 대한민국에서 민주적인 방법으로 투쟁하시는 학우분들...
-
난 분명히 중고등학교 대상에 수1수2미적화학으로 설정했는데 초2, 초4,초5 과외요청이 들어오네
-
문제 읽기 추론 계산 전부 어색한데 왜 이러지 갑자기
-
걍 2024 수능 복습하고 비유전이나 봐야겠다
-
연계를봐야할지 노트나한번읽어볼지 문법문제를풀어야할지
-
다들 가채점표 뭐쓰심 10
ㅇㅂ이에 그 omr 마킹처럼 할 수 있는 가채점표 있어서 그거 쓸라고 하는데 ㄱㅊ?
-
참고하세요
-
아버지의 보물 1호 롤렉스 차고 감
-
풀 수 있다고 믿으면 풀립니다. (진심으로) 문제 풀이 들어가기 전에 잠깐멈춰...
-
어케생각함? 메가패스 50 지를 돈 없고 이기상쌤거만 듣자니 20 아까움
-
부정행위 숙지를 못하고 걸려서 강제 2년을 더하는게 가장 큰 변수임 특히 탐구과목...
-
긱사에 시계 놔두고 외버림...
-
긴장감 ㅈ되네 ㄹㅇ...
-
더 노련한 내가 간다..
-
9모 이후로 하도 불수능 떡밥이 여기저기서 도니까이제는 진짜 평이하게 나와도...
-
26점 ㅅㅅ 한국사 공부 해야겠다
-
당신은 이us지의 축복을 받았습니다 댓글로 '모든 것 위의 대성'을 입력하시면 공부...
-
이 색에 2025 박혀있다는데? ㄹㅇ임 학교에는 이미 깠자너 나도 들은거긴함 색은...
-
근데 잠 안와도 0
걍 눈붙이고 억지로 누워있으면 2시간 안엔 잠드려나 어제도 한 1시간걸려 잠들었는데
-
칼바람마렵네 2
-
답 갯수 적은거로 쭉 미는거 어떰?
-
Tdyd 80 92 91 93 84 91 마피 시즌2 95 87.81 띵모 90...
-
지우개 귀마개 샾심
-
샤프 10개 받아야지 수험표값을 이렇게라도 받아야겠어.
-
Omr은 미리 마킹해야지
-
고사장에서 먹는 거 괜찮죠?
-
부엉이 9
부엉하고울어요
-
확통이 쉽게 나옴 ->> 분명 공통 풀 시간 줬는데 3통이들 평균 미적보다 20점씩...
-
진짜 기침 토할거같이하는애 3명 화음 좆되는데이거 도망쳐야하냐 일단 진짜...
-
사실 일본어 남아서 집에 못 감
-
지금까지 달려온 여러분의 1년은 어떠셨나요? 누군가의 1년은 인생을 건 무한한...
-
수능도아니고 더프만해도 종료5분전되면 손 덜덜덜ㄷ러럴덜덜덜ㄷ덜떨면서 쳤는데.,
-
괜히 탈나면 좆됨 내일 수능끝나고 마싯는거 ㄱㄱ
-
국어 파본검사 0
언제해야되나요? 방송 나온다면 몇시쯤 나와요??
-
?
으아아 이번건 좀 복잡하네요
그런데 여기서 말하는 변조라는건 숫자를 바꾸는게 아니라 그냥 자신이 비트코인을 얻을 수 있도록 거래를 유도하는 것을 의미하는건가요?
어떤 형식이건 블록에 쓰인 거래를 바꾸면 변조가 됩니다. 근데 내가 1비트코인을 써서 10비트코인을 얻도록 하는 거래는 유효한 거래가 아니기 때문에 검증을 통과하지 못해요. 그래서 조작해봤자 쓴돈 돌려받는 정도가 고작입니다.
아 이게 이미 블록에 기록된걸 바꾸는거라 아웃풋에 인풋보다 많은 값을 넣는게
가능할 지도 모르겠네요.
다만 비트코인의 총량이 정해져 있는데 그렇게 값을 바꾸다 보면 나중에 채굴 시스템에 문제가 생길 수도 있겠죠?
채굴 보상은 발행 총량이랑 아무 연관이 없어요. 그냥 50비트코인부터 시작해서 얼마에 한번씩 절반으로 줄일 것이다 하는 걸 가지고 계산했을 때 나온 총량이 2100만인거지 이만큼을 찍어낼 것이고 시장에 이만큼이 풀렸으니 잔고가 얼마다 하는건 아니라서요.
ㅇㅎ.. 아무런 관계가 없군요..
묻힌 글 댓글 하나 달아드립니다
그시간에 글 써도 초록제목이 되는구나....ㄷㄷ
이더 샀다 폭락중 ㅎㅎ
요새 코인판은 전반적으로 하락세라서 강건너 불구경을 추천드립니다
어렵네여
쉽게 설명한다고 했는데 그림을 같이 보여드릴걸 그랬나 싶네요.
잘 읽었습니다^^