109 / 736RPOW

Reusable Proofs of Work

RPOW: 계산 작업의 증거를 다시 전달하려 한 피니의 실험

컴퓨터가 작업을 수행해 디지털 증표를 만듭니다. 보낸 사람이 똑같이 유효한 복사본을 남기지 못하게 하면서 다른 사람에게 넘기려면 어떻게 해야 할까요? 할 피니는 2004년 실제로 작동하는 답을 내놓았습니다. 넘겨받을 때 기존 증표를 무효화하고 새것으로 바꾸는 방식입니다. RPOW는 디지털 화폐로 가는 중요한 실험이었지만, 여전히 특별한 서버와 그 기술적 보호에 대한 신뢰가 필요했습니다.

Reusable Proofs of Work, 줄여서 RPOW는 할 피니가 만든 실험 시스템입니다. Hashcash 계산 작업 증명을 다른 사람에게 넘길 수 있는 디지털 토큰으로 바꾸었습니다. 서버는 사용자의 요청을 처리하는 서비스입니다. 각 토큰은 지정된 서버에서 한 번만 교환할 수 있지만, 받는 사람은 같은 계산 가치를 지닌 새 토큰을 얻습니다. IBM 4758 카드와 실행 프로그램의 원격 검증으로 교환 규칙을 지키려 했습니다. 탈중앙화 네트워크도, 비트코인도 아니었습니다.

2004년 8월 15일 할 피니는 암호학 메일링 리스트의 참여자들에게 새 실험을 사용해 보라고 초대했습니다. 바탕은 애덤 백의 Hashcash였습니다. 컴퓨터는 정해진 조건을 만족하는 결과가 나올 때까지 입력을 바꿔 가며 시도합니다. 결과를 찾는 데는 계산 시간이 들지만, 이미 찾은 결과의 확인은 빠릅니다. 이런 증거를 Proof of Work, 작업 증명이라고 부릅니다. 스팸 메일을 막을 때는 계산으로 비용을 낸 우표처럼 쓸 수 있습니다. 피니는 그 증거가 한 번 쓰이고 끝나는 대신 사람들 사이를 계속 오갈 수 있을지 궁금했습니다. RPOW라는 이름은 바로 재사용할 수 있는 작업 증명이라는 뜻입니다. [1] [2] [4]

안나가 유효한 디지털 토큰을 피터에게 보낸다고 해 봅시다. 파일만 보냈다면 안나는 복사본을 남길 수 있습니다. 그래서 피터는 토큰을 RPOW 서버에 제출하고 교환을 요청합니다. 서버는 아직 쓰지 않은 토큰인지 확인한 뒤 사용 처리하고, 피터의 프로그램이 준비한 새 토큰에 서명합니다. 안나가 가진 옛 복사본은 이제 다시 교환할 수 없습니다. 피터가 새 토큰을 에바에게 보내면 에바도 같은 절차를 밟습니다. 재사용되는 것은 전달되는 가치이지, 똑같은 파일이 계속 유효한 것이 아닙니다. 받는 사람이 교환을 성공적으로 마치기 전에는 보낸 사람이 원래 토큰을 먼저 써 버릴 수 있습니다. [2] [11]

교환에 넣는 것은 새로 계산한 Hashcash나 아직 사용하지 않은 RPOW 토큰이었습니다. 나오는 것은 RSA 디지털 서명이 있는 새 토큰, 곧 수학적으로 검증 가능한 서버의 확인서였습니다. RSA는 이런 서명을 계산하는 방식입니다. 만들 때는 비밀 서명 키를 쓰고, 확인할 때는 그에 대응하는 공개 키를 씁니다. 손으로 쓴 서명의 이미지가 아니라 검증할 수 있는 숫자 데이터입니다. 서명은 토큰의 출처를 확인해 주지만 이미 교환했는지까지 알려 주지는 않습니다. 그 판단에는 사용한 입력을 기록한 목록이 필요했습니다. 이후의 전달에서는 비용이 큰 Hashcash 탐색을 매번 반복할 필요가 없었습니다. 옛 증거를 무효화하는 대신 새 서명을 얻기 때문입니다. 전기를 재활용하거나, 이미 수행한 작업에 대한 권리를 공짜로 늘리는 방식은 아니었습니다. [2]

여기서 가치는 체코 코루나나 달러로 표시한 가격이 아니라 계산 난이도 등급이었습니다. 당시 Hashcash는 데이터를 짧은 숫자 지문으로 만드는 SHA-1을 사용했고, 앞에 정해진 개수의 0비트가 있는 지문을 찾았습니다. 비트는 이진수 한 자리입니다. 필요한 0이 하나 늘어날 때마다 평균 시도 횟수는 대략 두 배가 됩니다. 따라서 등급 21인 토큰 하나는 등급 20인 토큰 두 개와 같은 기대 작업량을 나타냈고, 두 개로 나눌 수도 있었습니다. 합치거나 나눌 때는 이 계산 가치의 합을 유지해야 했습니다. 그렇다고 고정 환율이나 구매력이 보장된 것은 아닙니다. 더 빠른 컴퓨터는 같은 종류의 토큰을 더 싸게 만들 수 있었습니다. [2] [10]

Double spend는 같은 가치를 두 번 쓰는 이중 지불을 뜻합니다. 이를 막으려면 RPOW에 이미 교환한 증거의 목록이 있어야 했습니다. 다만 전체 데이터베이스가 보호 카드 안에 있던 것은 아닙니다. 일반 호스트 컴퓨터가 저장하고, 카드는 그 상태를 확인할 지문을 보관하며 조회 때 암호학적 증거를 검사했습니다. 여기에는 Merkle Tree의 원리가 쓰였습니다. 지문을 나무 구조로 연결해 하나의 공통 지문을 기준으로 데이터 일부를 확인하는 방법입니다. 기록 변경뿐 아니라 방금 쓴 토큰이 아직 기록되지 않은 옛 데이터베이스로 되돌리는 일도 찾아내려는 목적이었습니다. 이 보호가 없으면 운영자는 같은 입력을 여러 번 새 토큰으로 바꿀 수 있습니다. [3]

서버는 민감한 처리를 IBM 4758 안에서 수행했습니다. 일반 컴퓨터에 꽂는 독립적인 컴퓨터 카드로, 서명 키와 민감한 상태를 주변 컴퓨터의 소유자에게서도 보호하려 했습니다. 물리적 침입을 감지하면 비밀 데이터를 지울 수 있었습니다. 호스트는 메시지를 전달하고 데이터베이스를 저장하지만, 설계상 신뢰하는 대상은 아니었습니다. 서버를 운영한다는 이유만으로 새 토큰을 마음대로 만들 수 없게 한다는 것이 피니의 핵심 구상이었습니다. 하지만 보호가 성립하려면 하드웨어와 프로그램이 올바르게 작동하고 키도 안전해야 했습니다. 어떤 경우에도 뚫리지 않는다는 무조건적인 약속은 아니었습니다. [3] [9]

소스 코드 공개만으로는 부족합니다. 운영자가 보여 주는 프로그램과 실제 실행하는 프로그램이 다를 수 있기 때문입니다. RPOW는 remote attestation, 즉 원격으로 구성을 증명하는 방식을 썼습니다. 카드는 실행 중인 프로그램에 관한 서명된 정보를 제공했습니다. 관심 있는 사람은 공개 코드를 맞는 도구로 컴파일하고, 만들어진 프로그램 이미지의 지문을 카드가 보고한 지문과 비교할 수 있었습니다. 소스 파일의 글자 자체를 비교하는 것은 아니었습니다. 서명에 대한 신뢰는 인증서 사슬을 따라 IBM의 키까지 이어졌습니다. 실제로 어떤 프로그램이 돌아가는지 확인하는 데는 도움이 되지만, 코드에 버그가 없거나 제조사와 인증 절차가 절대 실패하지 않는다는 증명은 아니었습니다. [3] [9]

디지털 토큰을 교환한다는 점에서 RPOW는 eCash를 떠올리게 합니다. 그러나 원래 설명된 시스템은 블라인드 서명으로 개인정보를 보호하지 않았습니다. 피니는 보호 카드까지 암호화된 연결과, 발행하고 받은 토큰의 연결 관계를 저장하지 않는 검증 가능한 프로그램에 의존했습니다. 호스트 컴퓨터는 토큰 내용을 평문으로 볼 수 없어야 했습니다. 그래도 사용자의 네트워크 주소, 통신 시각과 크기는 관찰할 수 있었습니다. 같은 토큰을 다시 제출하면 일부 사건을 서로 연결할 가능성도 있었습니다. 보존된 문서에는 이미 Tor 지원이 설명되어 있습니다. Tor는 여러 중계 지점을 거쳐 연결하여 사용자의 원래 네트워크 주소를 서버에 숨기는 네트워크입니다. 반면 블라인드 서명은 나중에 추가할 수 있는 기능으로 제시했습니다. 이 계획을 당시 설명된 동작에 이미 포함된 기능으로 보아서는 안 됩니다. [8] [10]

RPOW에는 돌아가는 서버와 사용할 수 있는 클라이언트 프로그램이 있었습니다. 종이 위의 제안에 그치지 않은 것입니다. 그렇지만 피니는 처음부터 초기 시험판이라고 경고했습니다. 서버 프로그램을 바꿔야 하면 이전에 발행한 토큰이 무효가 될 수도 있었습니다. 용도는 개인적·실험적·비상업적 이용이었으며, 가치가 보장되는 돈이 아니었습니다. 보호 카드가 있어도 운영자에게 서버를 계속 켜 두라고 강제할 수는 없습니다. 원래 프로젝트는 끝났고, 남은 웹페이지와 코드는 역사 자료입니다. 당시 SHA-1, RSA, 하드웨어를 설명하는 것은 오늘날 결제 서비스를 그대로 만들라고 권하는 뜻이 아닙니다. [1] [4] [5] [7]

피니는 닉 자보의 Bit Gold 구상 일부를 실제로 보여 주려 했습니다. 디지털 물건을 만드는 데 비용이 들게 하고, 이후에는 다른 사람에게 넘기게 하자는 생각입니다. RPOW 문서는 여러 서버의 협력도 예상했으므로, 영원히 컴퓨터 한 대만 쓰는 설계로 단정하면 지나친 단순화입니다. 다만 각 토큰에는 교환해야 할 서버가 정해져 있었고, 기계를 늘리는 것만으로 그 의존성이 없어지지는 않았습니다. Bitcoin은 다른 길을 택했습니다. 독립 노드, 즉 검증 소프트웨어를 실행하는 컴퓨터가 공통 규칙과 공개 이력을 확인합니다. 채굴자는 다음 유효한 블록을 추가하려고 경쟁합니다. 블록은 이전 기록과 연결된 거래 묶음입니다. RPOW는 Proof of Work만으로 해결되지 않는 문제를 보여 줍니다. 모두가 유효한 이전 순서를 어떻게 알아볼지, 그 과정에서 누구를 믿어야 할지도 정해야 합니다. [1] [6] [11]

더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 Hal Finney, Adam Back, Hashcash, Nick Szabo, Bit Gold, Proof of Work. 다음 항목에서도 이 글을 참조합니다 b-money, Bit Gold, Hal Finney.

DOC · 001Hal Finney — RPOW overview1차 출처 DOC · 002Hal Finney — RPOW theory1차 출처 DOC · 003Hal Finney — RPOW security model1차 출처 DOC · 004Hal Finney — RPOW launch announcement1차 출처 DOC · 005Nakamoto Institute — archived RPOW source문서 DOC · 006Bitcoin whitepaper1차 출처 DOC · 007Hal Finney — What is RPOW?1차 출처 DOC · 008Hal Finney — RPOW privacy without blinding1차 출처 DOC · 009Hal Finney — IBM 4758 security1차 출처 DOC · 010Hal Finney — RPOW frequently asked questions1차 출처 DOC · 011Hal Finney — The RPOW world1차 출처
개정일: 1차 출처 우선 · 투자 조언이 아닙니다