이 장은 뒤에 이어질 모든 기술적 장이 기대게 될 암호학 개념의 작은 도구 상자를 마련한다. 블록체인에는 경찰도, 중앙은행도, 본사도 없다. 누가 무슨 말을 했는지 보증해 주거나 기록이 사후에 조작되지 않았음을 담보해 줄 신뢰 기관에 기댈 수 없다는 뜻이다. 블록체인은 그 권위의 자리에 수학을 앉힌다. 무거운 일의 거의 전부를 네 가지 수학적 도구가 해낸다. 데이터에 변조를 드러내는 지문을 찍어 주는 해시 함수(hash function), 생면부지의 두 사람이 비밀번호 한 번 공유하지 않고도 비밀을 주고받고 신원을 증명하게 해 주는 공개키 암호(public-key cryptography), 비밀을 조금도 드러내지 않으면서 누가 무엇을 승인했는지 증명하는 디지털 서명(digital signature), 그리고 산더미 같은 데이터를 짧은 값 하나로 요약하는 머클 트리(Merkle tree)가 그것이다. 이 가운데 웹3(Web3)를 위해 발명된 것은 하나도 없다. 모두 수십 년 묵은, 동료 평가를 거친 기술이며, 지금 이 순간에도 평범한 웹 통신과 은행 거래와 메신저를 지키느라 하루에 수십억 번씩 쓰이고 있다. 웹3의 기여는 이 부품들을 단단히 엮어, 신뢰할 심판이 필요 없는 하나의 시스템으로 조립한 데 있다. 그 시스템을 이해하려면 먼저 부품을 이해해야 한다 — 그리고 다행히, 부품 하나하나는 수식 한 줄 없이 친숙한 비유만으로 붙잡을 수 있다.
쉽게 말해: 블록체인은 "기관을 믿어라"를 "수학을 검산하라"로 바꾼다. 이 장은 그 네 조각의 수학을 쉬운 말로 설명한다. 그래야 이 책의 나머지가 이 도구들을 마음껏 쓸 수 있다.
구독하면 이 장이 여기서 열립니다.
내 초대 링크
쉽게 말해
블록체인은 "기관을 믿어라"를 "수학을 검산하라"로 바꾼다. 이 장은 그 네 조각의 수학을 쉬운 말로 설명한다. 그래야 이 책의 나머지가 이 도구들을 마음껏 쓸 수 있다.
무엇이든 SHA-256에 넣으면 64자리 코드가 돌아온다. 같은 입력은 언제나 같은 코드를 낳고, 코드는 짧아서 비교하기 쉬우며 — 결정적으로 — 입력에서 쉼표 하나만 바뀌어도 코드는 완전히 달라진다. 데이터가 늘 지니고 다니는 지문처럼 움직이는 셈이다.
해싱은 과일을 믹서에 가는 일과 같다. 딸기와 바나나를 스무디로 만들기는 빠르고 쉽지만, 스무디에서 원래의 온전한 과일을 되살려 내기는 불가능하다. 갈기는 한 방향으로만 작동한다. 해시는 당신 데이터의 스무디다. 만들기는 쉽고, 되돌리기는 불가능하다.
해시는 사람의 지문과 닮았다. 짧고, 사실상 고유하며, 그 사람 전체를 살피지 않고도 비교할 수 있다. 그러나 이 비유에는 단서가 필요하다. 진짜 지문은 매끄럽게 변한다 — 일란성 쌍둥이의 지문은 서로 비슷하다 — 반면 해시는 일부러 정반대로 움직인다. 데이터의 가장 미세한 변화도 전혀 무관한 지문을 낳는다(눈사태 효과). 그리고 지문으로 사람을 알아볼 수는 있어도, 해시로부터 데이터를 재구성할 수는 결코 없다.
문서의 해시를 공개하는 것은 편지를 고유한 밀랍 도장으로 봉하는 것과 같다. 봉인은 누구나 볼 수 있다. 누군가 편지를 열어 고치면 봉인이 더는 맞지 않고, 변조는 모두에게 드러난다.
열린 채로 찰칵 잠글 수만 있는 자물쇠를 대량으로 만들어, 아무에게나 우편으로 보내고 공공장소 바구니에 쌓아 둔다고 상상해 보자. 그 자물쇠들을 여는 열쇠는 오직 나 혼자 갖는다. 이제 세상 누구든 상자에 메시지를 넣고 내 자물쇠 하나를 채워 내게 보낼 수 있고, 그것을 열 수 있는 사람은 나뿐이다. 열린 자물쇠가 나의 '공개'키(누구나 잠그는 데 쓸 수 있다)이고, 내 주머니 속 열쇠가 나의 '개인'키(오직 나만 열 수 있다)다. 비밀을 나눠 가질 필요가 전혀 없었다 — 나눠 준 것은 자물쇠뿐이다.
RSA는 차리기는 순식간이지만 되돌리기는 사실상 불가능한 수학 문제 뒤에 개인키를 숨긴다. 특정한 소수 두 개를 섞기는 쉽고, 그 결과물을 도로 갈라놓기는 끔찍하게 어렵다. 당신의 비밀이 안전한 것은 금고 속에 숨겨서가 아니라, 공개된 수학을 거꾸로 돌리는 일이 실행 가능한 어떤 컴퓨터의 능력도 넘어서기 때문이다.
타원곡선 암호는 다이어트한 공개키 암호다. RSA가 하는 일 — 비밀 지키기, 서명 만들기 — 을 전부 하되, 휴대전화나 바코드에 쏙 들어갈 만큼 작은 키로 한다. 주요 블록체인들이 올라타 있는 것이 바로 이 특정한 변종이다.
한국 독자에게 익숙한 인감 제도를 떠올려 보자. 등록된 인감도장은 나만 갖고 있으므로 그 인영을 찍을 수 있는 사람은 나뿐이지만, 인영이 진짜인지는 누구든 인감증명서와 대조해 확인할 수 있다. 디지털 서명은 수학으로 만든 인감이다. 도장(개인키)은 오직 내 것이라 그 자국은 나만 만들 수 있고, 확인(공개키)은 누구나 할 수 있다. 다만 두 가지가 다르다. 종이 인감의 확인은 등록 관청이라는 기관에 기대지만 디지털 서명의 검증은 수학만으로 이루어지고, 종이 인영과 달리 디지털 인장에는 그 문서의 정확한 내용의 지문까지 함께 찍혀 있어서 한 문서에서 떼어 다른 문서에 붙일 수 없다.
디지털 서명은 나를 믿지 않고 내 비밀을 결코 보지 못하는 사람들에게 "내가 주인이며, 정확히 이 메시지를 승인한다"를 증명하게 해 준다. 이 하나의 능력 — 신뢰할 중개자 없는 검증 가능한 승인 — 이야말로 심판 없는 장부를 애초에 가능하게 만드는 것이다.
녹아웃 방식의 스포츠 토너먼트를 그려 보자. 모든 거래는 1회전의 선수다. 각 경기는 한 쌍을 함께 해싱해 "맞붙이고", 승자가 다음 회전에 올라가 다시 짝지어 해싱된다. 회전을 거듭할수록 판이 절반씩 줄어, 마침내 단 하나의 우승자 — 머클 루트 — 가 남아 토너먼트 전체를 대표한다. 1회전의 어느 선수든 무엇 하나만 달라져도, 그 여파가 끝까지 번져 올라가 다른 우승자가 나온다.
응원하는 선수가 토너먼트에 출전했음을 증명하는 데 모든 경기의 전체 결과가 필요하지는 않다. 그 선수가 대진표를 밟아 올라간 경로의 결과들 — 짧은 목록 하나 — 만 있으면 된다. 우승자의 이름을 알고 있는 사람이라면 누구든 그 짧은 목록을 따라 올라가, 같은 우승자에 이르는지 확인할 수 있다. 머클 트리는 데이터의 아주 얇은 조각만 보여 주고도 "이 항목은 이 데이터셋 안에 있다"를 증명하게 해 준다.
머클 트리는 블록체인이 규모가 커져도 무결성의 약속을 지키게 해 주고, 데이터센터만이 아니라 휴대전화도 참여하게 해 주는 장치다. "이것이 사실인가?"라는 질문을, 수백만 건의 기록에 대한 질문에서 몇십 개의 해시에 대한 질문으로 압축한다.
이 장의 자물쇠들은 훌륭한 자물쇠다. 그러나 아무리 완벽한 자물쇠도, 도둑에게 열쇠를 건네주거나, 골판지 문짝에 달아 두거나, 읽지도 않은 계약서에 서명한다면 소용이 없다. 암호학은 웹3의 보안에 필요조건이지만, 충분조건 근처에도 가지 못한다. 이 구별을 책의 끝까지 시야에 담아 두기 바란다.
이 장에서 다루는 내용
- 암호학적 해시 함수: 데이터의 지문
- 공개키 암호: 낯선 이에게 건네줄 수 있는 자물쇠
- 디지털 서명: 비밀을 내주지 않고 승인을 증명하기
- 머클 트리: 산더미 같은 데이터를 하나의 값으로
- 암호학이 보장하는 것과 보장하지 않는 것에 관한 노트
- 종합
이 장에서 설명하는 용어
전체 내용은 책에 실려 있습니다.
전체 책 구매8장을 무료로 받아 보세요
구독하면 암호학을 다룬 8장이 이 사이트에서 열립니다. 친구를 초대하면 제3부의 나머지 장도 열립니다.
확인 메일 한 통에 이어 7일간의 무료 이메일 강좌 '쉽게 말해, 웹3'를 보내 드리고, 가끔 책 소식을 전합니다. 언제든 구독을 해지할 수 있습니다.