[ANNOUNCE] hash cash postage implementation
날짜는 1997년 3월 28일로, 약 2,000명의 Cypherpunks 메일링 리스트 구독자들이 위의 제목이 적힌 이메일을 받은 날이다. 발신자는 엑시터 대학교의 26세 영국 박사 후 연구원인 젊은 암호학자이자 메일링 리스트에 활발히 기여한 Dr. Adam Back이다. 이메일에는 그가 “부분 해시 충돌 기반 우편 요금 제도”라고 설명하는 내용과 초기 구현이 포함되어 있다. 이는 멋진 암호학적 트릭을 기반으로 한 이메일의 일종의 우표에 해당한다.
“부분 해시를 사용하는 아이디어는 계산 비용을 임의로 비싸게 만들 수 있다는 것입니다,”라고 Back은 자신의 시스템의 장점을 설명하며 썼다. “그럼에도 불구하고 즉시 검증할 수 있습니다.”
현재 Blockstream CEO가 된 이 암호학자의 제안은 이메일 리스트에서 즉각적인 주목을 받지 못했다. 단 한 명의 독자만이 해싱 알고리즘에 대한 기술적 질문으로 응답했다. 그러나 Hashcash의 기초가 되는 기술인 작업 증명은 향후 10년 이상 디지털 화폐 연구에 영향을 미치게 된다.
“처리 비용을 통한 가격 책정 또는 스팸 메일 방지”
Back의 Hashcash는 사실 이러한 종류의 첫 번째 해결책이 아니었다.
1990년대 초반, 인터넷의 약속과 특히 전자 메일 시스템의 장점은 주목하는 기술자들에게 분명해졌다. 그럼에도 불구하고 당시 인터넷 개척자들은 이 전자 메일 시스템이 자체적인 도전을 제시한다는 것을 깨닫게 되었다.
“특히 전자 메일을 보내는 것이 쉽고 저렴하며, 동일한 메시지를 여러 당사자에게 보내는 것이 간단하기 때문에 남용을 초대합니다,”라고 IBM 연구원인 Dr. Cynthia Dwork와 Dr. Moni Naor는 1992년 백서 “처리 비용을 통한 가격 책정 또는 스팸 메일 방지”에서 설명했다.
실제로 이메일의 인기가 높아짐에 따라 스팸도 증가했다.
초기 인터넷 사용자들은 해결책이 필요하다고 동의했으며, Dwork와 Naor의 논문이 그 해결책을 제공했다.
이 두 사람은 발신자가 보내는 이메일에 데이터를 첨부해야 하는 시스템을 제안했다. 이 데이터는 해당 이메일에 고유한 수학 문제의 해결책이 될 것이다. 구체적으로, Dwork와 Naor는 공개 키 암호화 및 서명 체계를 기반으로 한 세 가지 후보 퍼즐을 제안했다.
이메일에 해결책을 추가하는 것은 그리 어렵지 않으며, 이상적으로는 일반 컴퓨터에서 몇 초의 처리 능력만 필요하고, 수신자가 쉽게 유효성을 확인할 수 있다. 그러나 이것이 요령인데, 이메일당 사소한 처리 능력도 수천 또는 수백만 개의 메시지를 동시에 보내려는 광고주, 사기꾼 및 해커에게는 누적된다. 스팸은 이론적으로 비싸고, 따라서 수익성이 없게 만들 수 있다.
“주요 아이디어는 사용자가 자원을 얻기 위해 적당히 어려운, 그러나 해결 불가능하지 않은 기능을 계산하도록 요구하여 사소한 사용을 방지하는 것입니다,”라고 Dwork와 Naor는 설명했다.
Dwork와 Naor는 용어를 제안하지 않았지만, 그들이 도입한 유형의 해결책은 “작업 증명” 시스템으로 알려지게 된다. 사용자는 자신의 컴퓨터가 작업을 수행했음을 실제로 보여주어야 하며, 이를 통해 실제 자원을 소비했음을 증명해야 한다.
멋진 해결책이지만, 아마도 시대를 너무 앞서간 것이었다. 이 제안은 상대적으로 작은 컴퓨터 과학자 집단을 넘어서는 데 큰 진전을 이루지 못했다.
Adam Back과 Cypherpunks
Dwork와 Naor가 백서를 발표한 시기와 비슷하게, 자유주의적 성향의 개인 정보 보호 활동가 그룹이 인터넷의 엄청난 잠재력을 인식하게 되었다. 이 이념적으로 동기 부여된 사람들은 개인 정보 보호 강화 기술을 중심으로 한 메일링 리스트를 통해 조직하기 시작했다. Dwork와 Naor처럼, 이 “Cypherpunks”라고 불리게 될 이들은 비교적 새로운 암호학의 과학을 이용하여 목표를 향해 나아갔다.
세월이 흐르면서, 1996년에 박사 학위를 받은 Adam Back은 이 리스트에서 더 활발한 참여자로 자리 잡았으며, 때로는 한 달에 수십 개의 이메일을 기여했다. 대부분의 Cypherpunks와 마찬가지로, 이 암호학자는 개인 정보 보호, 자유 발언 및 자유주의와 관련된 주제에 열정적이었으며, 익명 리메일러, 암호화된 파일 시스템, Dr. David Chaum이 도입한 전자 화폐 등과 관련된 기술적 논의에 참여했다.
하지만 한동안 Back은 “무기” 셔츠를 인쇄하고 판매하는 것으로 가장 잘 알려져 있었다: Phil Zimmermann의 PGP(Pretty Good Privacy) 암호화 프로그램을 미국 수출 규정의 “무기”로 규제하려는 미국 정부의 터무니없는 결정을 지적하기 위해 인쇄된 암호화 프로토콜이 있는 티셔츠였다. 미국을 떠나기 위해 국경을 넘을 때 Back의 셔츠를 입고 있으면 기술적으로 “무기 수출업자”가 되는 것이었다.
많은 사람들과 마찬가지로 Back은 Dwork와 Naor의 작업 증명 제안에 대해 알지 못했다. 그러나 1990년대 중반에는 스팸에 대응하기 위한 유사한 아이디어를 생각하고 있었고, 때때로 Cypherpunks 메일링 리스트에서 “소리 내어” 이야기했다.
“PGP를 사용하는 부수적인 이점은 PGP 암호화가 스패머에게 약간의 오버헤드를 추가해야 한다는 것입니다 — 그는 아마도 T3 링크를 통해 스팸을 보내는 것보다 초당 더 적은 메시지를 암호화할 수 있을 것입니다,”라고 Back은 예를 들어 리메일러에 더 많은 개인 정보 보호를 추가하는 맥락에서 언급했다; 이는 Dwork와 Naor의 아이디어와 다소 유사하다.
Cypherpunks 메일링 리스트는 약 반 년 만에 크게 성장했다. 처음에는 Bay Area의 스타트업 중 하나에서 모인 사람들로 구성된 온라인 토론 플랫폼으로 시작된 것이 수천 명의 구독자를 가진 작은 인터넷 현상으로 발전했으며, 종종 하루에 누가 합리적으로 추적할 수 있는 것보다 더 많은 이메일이 오갔다.
이 시기 — 1997년, 리스트의 인기가 절정에 달할 무렵 — Back은 Hashcash 제안을 제출했다.
Hashcash
Hashcash는 Dwork와 Naor의 스팸 방지 제안과 유사하며 같은 목적을 가지고 있지만, Back은 익명 리메일러 남용에 대응하는 것과 같은 추가 사용 사례를 제안했다. 그러나 이름이 암시하듯이, Hashcash는 Dwork와 Naor의 암호학적 퍼즐을 기반으로 하지 않고 해싱을 기반으로 했다.
해싱은 어떤 데이터를 — 단일 문자든 전체 책이든 — 미리 정해진 길이의 무작위 숫자로 변환하는 암호학적 트릭이다.
예를 들어, 문장 This is a sentence의 SHA-256 해시는 다음과 같은 16진수 숫자를 생성한다:
이는 일반 십진수로 “변환”될 수 있다:
또한 이진수로:
한편, 문장 This, is a sentence의 SHA-256 해시는 다음과 같은 16진수 숫자를 생성한다:
보시다시피, 문장에 단순히 쉼표 하나를 추가하는 것만으로도 해시가 완전히 바뀐다. 그리고 중요하게도, 어느 문장의 해시가 무엇이 될지는 완전히 예측할 수 없었다. 첫 번째 문장의 해시를 계산한 후에도 두 번째 해시를 그로부터 계산할 방법이 없었다. 유일한 방법은 두 문장을 실제로 해시하는 것이었다.
Hashcash는 이 수학적 트릭을 영리하게 적용한다.
Hashcash를 사용하면 이메일의 메타데이터(“보낸 사람” 주소, “받는 사람” 주소, 시간 등)가 프로토콜로 형식화된다. 추가로, 이메일의 발신자는 이 메타데이터에 무작위 숫자, 즉 “논스”를 추가해야 한다. 이 모든 메타데이터, 논스를 포함하여, 해시되어 결과 해시는 위의 무작위 숫자 중 하나처럼 보인다.
여기서 요령은 모든 해시가 “유효한” 것으로 간주되지 않는다는 것이다. 대신, 해시의 이진 버전은 미리 정해진 수의 0으로 시작해야 한다. 예를 들어: 20개의 0. 발신자는 20개의 0으로 시작하는 해시를 생성하기 위해 무작위로 올바르게 더해지는 논스를 포함해야 하지만, 발신자는 미리 그 논스가 어떻게 생겼는지 알 수 없다.
따라서 유효한 해시를 생성하기 위해 발신자는 한 가지 옵션만 있다: 시행착오(“무차별 대입”). 그는 유효한 조합을 찾을 때까지 다양한 논스를 계속 시도해야 하며, 그렇지 않으면 그의 이메일은 수신자의 이메일 클라이언트에 의해 거부된다. Dwork와 Naor의 해결책과 마찬가지로, 이것은 계산 자원을 요구한다: 작업 증명 시스템이다.
“[I]f it hasn’t got a 20 bit hash […] you have a program which bounces it with a notice explaining the required postage, and where to obtain software from,” Back은 Cypherpunks 메일링 리스트에서 설명했다. “이것은 스패머를 하룻밤 사이에 사업에서 쫓아낼 것이며, 1,000,000 x 20 = 100 MIP 년이 그들이 가진 것보다 더 많은 계산을 필요로 할 것입니다.”
특히 Back의 작업 증명 시스템은 Dwork와 Naor의 것보다 더 무작위적이다. 두 사람의 해결책은 퍼즐을 해결해야 했기 때문에, 더 빠른 컴퓨터가 느린 컴퓨터보다 항상 더 빨리 해결할 수 있었다. 그러나 통계적으로 Hashcash는 여전히 느린 컴퓨터가 때때로 더 빠르게 올바른 해결책을 찾을 수 있도록 허용한다.
(비유적으로, 한 사람이 다른 사람보다 더 빨리 달리면, 전자는 매번 그들 사이의 단거리 경주에서 이길 것이다. 그러나 한 사람이 다른 사람보다 복권을 더 많이 사면, 후자는 통계적으로 여전히 때때로 이길 수 있다 — 단지 그렇게 자주 일어나지는 않는다.)
디지털 희소성
Dwork와 Naor의 제안처럼, Hashcash — Back이 2002년에 백서에서 자세히 설명할 — 는 큰 방식으로 성공하지 못했다. Apache의 오픈 소스 SpamAssassin 플랫폼에 구현되었고, Microsoft는 호환되지 않는 “이메일 우편물” 형식에서 작업 증명 아이디어를 시도했다. 그리고 Back과 다른 학자들은 수년 동안 이 해결책에 대한 다양한 대체 응용 프로그램을 제안했지만, 이들 대부분은 큰 반향을 일으키지 못했다. 대부분의 잠재적 응용 프로그램에 대해, 네트워크 효과의 부족은 극복하기에는 너무 컸던 것으로 보인다.
그럼에도 불구하고 Dwork와 Naor, 그리고 Back(독립적으로)은 새로운 것을 도입했다. 디지털 제품의 가장 강력한 특징 중 하나가 복사하기 쉬운 것이라면, 작업 증명은 본질적으로 중앙 당사자에 의존하지 않는 가상의 희소성과 유사한 첫 번째 개념이었다: 디지털 데이터를 실제 세계의 제한된 자원인 컴퓨팅 파워에 연결했다.
그리고 희소성은 물론 돈의 전제 조건이다. 실제로 Back은 Hashcash를 Cypherpunks 메일링 리스트 기여와 백서 전반에 걸쳐 돈의 범주에 명시적으로 두었으며, 당시 세계에서 유일하게 존재했던 디지털 현금인 Chaum의 DigiCash의 Ecash와 유사하게 만들었다.
“Hashcash는 digicash가 더 널리 사용될 때까지의 임시 방편을 제공할 수 있습니다,”라고 Back은 메일링 리스트에서 주장했다. “Hashcash는 무료이며, 당신이 해야 할 일은 PC에서 몇 개의 사이클을 소모하는 것입니다. 이는 재정적으로 어려운 사람들이 백만장자, 퇴직 정부 관료 등과 동등한 조건에서 경쟁할 수 있는 자유 담론의 네트워크 문화와 일치합니다. [그리고] Hashcash는 digicash가 실패할 경우(불법화되거나 사용자 신원을 에스크로해야 할 경우) 스팸을 제어하기 위한 대체 방법을 제공할 수 있습니다.”
그러나 이름과는 달리 Hashcash는 스스로 완전한 현금으로 제대로 기능할 수 없었다(또한 Dwork와 Naor의 제안도 마찬가지였다). 아마도 가장 중요한 것은, “받은” 작업 증명은 수신자에게 쓸모가 없다는 것이다. 돈과 달리, 다른 곳에서 재사용할 수 없었다. 게다가 매년 컴퓨터의 속도가 증가함에 따라, 시간이 지남에 따라 더 많은 증명을 더 낮은 비용으로 생산할 수 있었다: Hashcash는 (하이퍼) 인플레이션의 영향을 받을 수 있었다.
작업 증명이 제공한 것은 무엇보다도 디지털 화폐 영역에서의 새로운 연구 기반이었다. 그 뒤에 이어진 여러 주목할 만한 디지털 화폐 제안은 Hashcash를 기반으로 구축되었으며, 일반적으로 작업 증명을 재사용할 수 있도록 했다. (Hal Finney의 재사용 가능한 작업 증명 — RPOW — 가 가장 명백한 예이다.)
비트코인
결국, 작업 증명은 비트코인의 초석이 되었고, Hashcash는 비트코인 백서에서 몇 안 되는 인용 중 하나로 사용되었다.
그러나 비트코인에서는 Hashcash(또는 그 변형)가 많은 사람들이 예상했던 것과 매우 다르게 활용된다. Hashcash와 다른 Hashcash 기반 제안과 달리, 그것이 제공하는 희소성은 전혀 돈으로 사용되지 않는다. 대신, Hashcash는 경쟁을 가능하게 한다. 유효한 작업 증명 — 비트코인 블록의 해시 — 을 처음으로 생성한 채굴자가 어떤 거래가 진행될지를 결정할 수 있다. 적어도 이론적으로, 누구나 동등하게 경쟁할 수 있다: 복권처럼, 작은 채굴자들도 통계적으로 가끔 유효한 작업 증명을 처음으로 생성할 수 있다.
또한, 새로운 블록이 채굴되어 일련의 거래를 확인하면, 이러한 거래는 되돌릴 가능성이 낮다. 공격자는 처음으로 블록을 찾는 데 필요한 만큼의 작업을 증명해야 하며, 이는 발견되는 추가 블록마다 누적되어 정상적인 상황에서는 시간이 지남에 따라 기하급수적으로 더 어려워진다. 속이기 위해 소비해야 하는 실제 자원은 일반적으로 속임수로 얻을 수 있는 잠재적 이익을 초과하여 비트코인 거래의 수신자에게 이러한 거래가 최종적이라는 확신을 준다.
이렇게 비트코인에서 Hashcash는 두 가지 문제를 동시에 해결했다. 중앙 집중식 발행자 없이 새로운 코인을 유통하는 트릭을 제공하면서, 분산된 방식으로 이중 지출 문제를 해결했다.
Hashcash는 최초의 전자 화폐 시스템을 실현하지 못했다 — Ecash가 그 영예를 차지하며, 작업 증명은 실제로 돈으로 기능할 수 없었다. 그러나 분산된 전자 화폐 시스템은 그것 없이는 불가능했을지도 모른다.
이 글은 비트코인 매거진의 The Genesis Files 시리즈의 두 번째 편입니다. 첫 번째 기사는 Dr. David Chaum의 eCash를 다루었습니다.