비트코인암호학 중급

해시 함수가 비트코인의 뼈대가 된 이유

SHA-256은 어떻게 비트코인의 작업증명, 머클 트리, 주소 체계, 블록 연결까지 모든 보안 계층을 떠받치는가. 한 방향 함수의 핵심 성질부터 비트코인이 이 함수를 어디에 어떻게 쓰는지까지 정리합니다.

· 3분

비트코인을 한 줄로 줄이면 "해시 함수 위에 올린 돈"입니다. 작업증명도, 블록 연결도, 머클 트리도, 주소 생성도 전부 같은 함수 하나에 의존합니다. SHA-256입니다.

해시 함수란

해시 함수는 임의 길이의 입력을 받아 고정 길이의 출력을 내는 함수입니다. 비트코인이 쓰는 SHA-256은 어떤 데이터를 넣어도 256비트(64자리 16진수)를 돌려줍니다. 1바이트짜리 문자 하나도, 1기가바이트짜리 영상도 같은 64자리 결과로 환원됩니다.

이 함수가 암호학적으로 쓸모가 있으려면 네 가지 성질이 필요합니다.

결정성. 같은 입력은 항상 같은 출력을 만듭니다. 어디서 누가 돌려도, 몇 년 뒤에 돌려도 결과가 일치합니다.

산정 효율. 입력에서 해시를 계산하는 것은 빠릅니다. 일반 노트북도 초당 수백만 번을 돌립니다.

역상 저항. 해시 결과만 보고 원래 입력이 무엇이었는지 역으로 알아내는 것은 사실상 불가능합니다. 가능한 입력을 하나씩 다 돌려보는 것 외에 알려진 지름길이 없습니다.

충돌 저항. 서로 다른 두 입력이 같은 해시를 만드는 경우를 찾는 것도 사실상 불가능합니다. SHA-256에서는 약 2의 128제곱 번 시도가 필요합니다.

마지막 성질이 어바란시(avalanche) 효과를 만듭니다. 입력의 한 비트만 바꿔도 출력은 절반 가까이가 뒤집힙니다. 비트코인이 의존하는 핵심 성질입니다.

비트코인은 해시를 어디에 쓰는가

해시 함수는 비트코인의 거의 모든 곳에 등장합니다. 보안이 필요한 자리에는 거의 예외 없이 들어 있다고 보면 됩니다.

작업증명. 채굴자는 블록 헤더의 해시가 특정 난이도 목표보다 작아질 때까지 nonce 값을 바꿔가며 SHA-256을 반복합니다. 평균적으로 10분이 걸리도록 난이도가 자동 조정됩니다. 정답을 찾는 것은 어렵지만 검증은 한 번의 해시 계산으로 끝납니다. 비대칭이 핵심입니다.

블록 연결. 각 블록 헤더에는 직전 블록 헤더의 해시가 들어갑니다. 과거 어느 블록 한 비트라도 바꾸면 해당 블록의 해시가 바뀌고, 그 블록을 가리키는 다음 블록의 해시도 바뀌고, 연쇄적으로 현재까지의 모든 헤더가 깨집니다. 이것이 "블록체인"이라는 이름의 근거입니다.

머클 트리. 한 블록에 들어가는 수천 개의 거래는 양 옆 두 개씩 짝지어 해시되고, 그 결과를 다시 짝지어 해시하는 과정을 반복해 하나의 머클 루트를 만듭니다. 이 루트가 블록 헤더에 들어갑니다. 라이트 노드는 거래 전체를 받지 않고도 특정 거래가 블록에 포함됐는지 SPV 증명으로 확인할 수 있습니다.

주소 생성. 비트코인 주소는 공개키를 SHA-256으로 한 번, RIPEMD-160으로 한 번 더 해시한 결과를 인코딩한 것입니다. 두 번 해시함으로써 공개키 자체가 노출되는 시점을 거래 사용 시점까지 늦춥니다.

거래 ID. 거래의 TXID는 거래 데이터 전체를 두 번 SHA-256한 값입니다. 거래 한 비트라도 바뀌면 TXID가 바뀝니다. 디지털 지문 역할을 합니다.

왜 SHA-256이었나

사토시는 비트코인 출시 시점에 이미 표준이 된 SHA-256을 골랐습니다. 미국 NIST가 2001년 표준화했고, 2008년 시점에 가장 폭넓게 검증된 해시 함수였습니다. 이후 SHA-3 같은 후속 표준이 나왔지만 비트코인은 SHA-256을 그대로 유지했습니다.

함수가 다른 알고리즘으로 바뀌지 않은 데에는 이유가 있습니다. 비트코인은 합의 위에 돌아가고, 해시 함수를 바꾸는 것은 사실상 새 코인을 만드는 것과 같습니다. 모든 노드가 동시에 업그레이드해야 하고, 기존 채굴 장비가 전부 무용지물이 됩니다. 변경의 비용이 천문학적이라 가능한 한 건드리지 않습니다.

또 다른 이유는 양자 컴퓨팅 위협이 SHA-256보다 비대칭 키 알고리즘 쪽에 더 가깝기 때문입니다. SHA-256은 그로버 알고리즘으로 공격해도 보안 강도가 절반(128비트)으로 줄 뿐이고, 그조차 현실적인 양자 하드웨어로는 한참 멉니다. 위협 우선순위에서 뒤에 있습니다.

한 줄 정리

해시 함수는 비트코인이 신뢰 없이도 무결성과 합의를 만들어내는 토대입니다. 작업증명의 비대칭성도, 머클 트리의 효율성도, 블록의 연쇄도, 주소의 익명성도, 거래의 지문도 전부 같은 함수의 다른 활용일 뿐입니다. SHA-256 하나가 비트코인의 뼈대 절반을 차지합니다.

관련 글