NEW 기획 디자인 개발 프로덕트 아웃소싱 프리랜싱

개발

해시가 뭐길래 안전하단 거죠? 비트코인 외계어 쉽게 이해하기 3편

소화가 잘되는 비트코인 지식

 

모든 분야의 '입문'은 흥미롭습니다.

비트코인의 경우도 그렇죠.

 

유튜브에 비트코인을 검색하면 나오는 약 5~10분 길이의 영상들은 비트코인이 뭔지 잘 알려줍니다. 심지어는 재밌기까지 하죠.

 

간단하고 쉬운 설명은 절 "비트코인 별거 아니네.." 라는 착각에 빠뜨린 채, [블록체인 공부 -심화 편]으로 이끌었지만,

별게 아닌 건 비트코인이 아닌 제 두뇌였다는 걸 깨닫는 데는 오랜 기간이 걸리지 않죠.

 

분명 초반엔 "은행을 대신해", "거래를 안전하게!"처럼 귀엽고 이해 가능한 설명을 하던 사람들이 갑자기 SHA-256, 머클루트, 논스와 같은 외계어를 뱉기 시작하는데요.

 

만성 수학 기피증에 걸린 제게 수학과 공학이 만들어낸 이 거대한 장벽은 지식 대신 자괴감을 선물해줬습니다.

 

"쉽게 이해하기"라는 목표를 가진 이번 시리즈에서도 이 함수들을 최대한 외면하려 했으나…

이젠 외면이 힘들어졌습니다. 블록체인의 안전을 담당하는 해시함수는 설명에서 뗄레야 뗄 수 없거든요.

 

본격적으로 기술 용어와 개발 외계어들이 자기주장을 하기 시작하는 비트코인 및 블록체인의 진짜 원리!

오늘은 그 시작으로 블록체인의 핵심인 해시함수를 알아보죠.

 

오늘의 글은 해시함수가 무엇이며, 이게 블록체인에서 어떻게 안전을 담당하는지에 대한 답을 담고 있습니다.

 

*본 글은 '소화가 잘되는 비트코인 지식'시리즈의 세 번째 글입니다.

혹시 아직 비트코인이 뭔지 모르신다면

탈중앙화 및 블록체인에 대한 설명이 담긴 1편채굴에 대한 설명이 담긴 2편을 참조해주세요.

 

해시함수는 일종의 랜덤 비밀번호 생성기입니다. 해시함수는 특정 값(인풋)이 들어오면 이를 랜덤하게 변형시켜 해시값이라는 새로운 비밀번호를 뱉어냅니다.

 

이 해시함수는

[입력값이 바뀌면 해시값도 바뀐다]와

[해시값을 가지고 입력값을 알아낼 수 없다]

라는 두 가지 특징을 갖고 있는데요.

 

이번 장에선 해시함수의 일종인 SHA-256에 직접 값을 넣어보며 이 특징들을 하나씩 살펴보겠습니다.

*본문은 이 웹사이트를 활용, 해시값을 구했습니다.

 

 

첫 번째 특징: 눈덩이 효과

해시함수는 인풋값이 한 글자라도 변하면전혀 다른 결과값을 만들어냅니다.

눈덩이 효과

위 예시의 경우 최규재 할아버지의 "무~야~호~!""도전~"으로 바꿨을 뿐인데

그 결괏값은 "b2718..a53"에서 "57675..7d3"로 전혀 새로운 비밀번호가 생성되었죠.

 

비트코인은 이러한 특징을 활용해서 해시함수에 거래내역을 넣습니다.

10분마다 쌓이는 수백 수천개의 거래내역은 이 해시함수에 들어가 “86d52…bfa”라는 64자리 비밀번호로 바뀌는데요.

나쁜 마음을 먹은 해커가 이 거래내역 중 숫자를 하나만이라도 조작한다면 해시함수는 눈덩이 효과를 활용, 이 비밀번호를 “5418..006”이라는 전혀 다른 값으로 바꿔버립니다

 

덕분에 비트코인 시스템은 해당 비밀번호 하나만 확인한다면, 거래내역을 하나하나 살펴보지 않아도 누군가 거래를 조작했는지 손쉽게 확인할 수 있습니다.

 

 

두 번째 특징: 역추적 불가

또한, 해시함수는 결괏값을 기반으로 인풋값을 알아낼 수 없습니다.

역추적 불가

무한도전 대본을 해시함수에 넣으면 "b27... a53"라는 해시값이 나오지만

"b27...a53"이라는 값을 안다고 해서 무한도전의 대본을 찾아내는 건 매우 힘들죠.

 

비트코인 시스템은 이를 활용해 채굴자들에게 문제를 내는데요.

예를들어 “[b27... a53]라는 결과값을 가장 빨리 찾아낸 사람한테 새로운 블록과 비트코인을 보상으로 줄게!” 라는 미션을 주는거죠.

 

즉 해시함수의 역추적 불가라는 특징은 [b27... a53]라는 값으로 입력값을 추정하는 것을 불가능하게 만들기 때문에, 채굴자들은 해시함수가 [b27... a53]라는 값을 뱉어낼 때까지 0부터 숫자를 1씩 늘려가면서 넣어보는 노가다를 해야만 하는 겁니다.

 

해당 문제를 푸는건 모두에게 공평하게 어렵기 때문에, 비트코인 시스템은 누군가에게 독점이 되지 않고 안정적으로 운영이 되는 것이고요.


정리하자면 해시함수는 조금만 입력값을 바꿔도 전혀 다른 결과값을 뱉으며, 역추적이 불가능한 아주 까다로운 함수입니다.

이 덕분에 블록체인은 거래의 조작을 쉽게 감지하고, 모든 채굴자들에게 공통적으로 어려운 채굴 미션을 줄 수 있죠.

 

하지만 사실 앞선 예시처럼 [b27..a53]이라는 특정한 결과값을 알아내는 미션은 해결 불가능한데요. 이는 저 값을 찾아낼 확률이 (40억*40억*40억*40억*40억*40억)분의 1에 불과하기 때문입니다.

*이는 전세계 인구가 각자 보유한 슈퍼컴퓨터로 동시에 계산을 해도 인류가 멸종할 때까지 계산할 수 없는 수준.

 

전세계 채굴자들이 저 문제를 풀다가 실패하고 멸종하는 걸 보고만 있을 순 없는 비트코인 시스템은 결국 “난이도”라는 개념을 추가하는데요.

 

비트코인이 이 난이도 개념을 어떻게 활용해서 문제를 풀 수 있게 하는지는 다음편에서 알아보겠습니다.

댓글 0

돌망

스타트업, IT 회사, VC 등을 경험하다 현재는 카이스트에서 Business Analytics를 공부하고 있습니다. 클릭 한번에 전문지식이 쏟아지는 시대, 고급스럽기보단 소화가 잘 되는 지식을 전하려 노력합니다.

같은 분야를 다룬 글들을 권해드려요.

요즘 인기있는 이야기들을 권해드려요.

일주일에 한 번!
전문가들의 IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.

일주일에 한 번! 전문가들의 요즘 IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.