안국법률사무소

A Leading Korean Law Firm
For Foreign Investors and Immigrants
Since March 9, 2001
+82-2-3210-3330

암호재산이 갖는 재산권으로서의 성격에 관한 논의의 공학적 기초 : 블록체인 기술

암호재산이 갖는 재산권으로서의 성격에 관한 논의의 공학적 기초 : 블록체인 기술

 헌법소원을 위해서 작성하고 있는 서면의 초안 일부로 헌법재판소 재판관과 연구관을 위한 글입니다. 많은 분들이 지혜를 모아서 더 좋은 설명 방법을 제안하여 주실 것을 부탁드립니다.(정희찬 변호사 hcjeong@anguklaw.com)

여러 분의 소중한 제안으로 더 좋게 수정된 글이 다음의 링크에 담겨 있습니다. 감사드립니다. (2018. 2. 9.)


암호재산의 재산권으로서의 성격에 관한 논의의 공학적 기초 : 블록체인

. 블록체인 기술과 관련된 암호 기술의 요점

(1) SHA256 해시 함수

⓵ SHA256 해시 함수의 뜻

⓶ SHA256 해시 함수의 활용 : ‘다이제스트(digest)’에 의한 거래의 검증

(2) 공개키와 개인키 기술

⓵ RSA 알고리즘

⓶ RSA 알고리즘의 활용 : 거래의 수단으로서의 ‘인증’

. 블록체인 기술이 단순 암호 기술을 넘어서는 부분

(1) 암호 기술에서 블록체인 기술로

(2) 블록체인 기술의 정의

. 블록체인 기술을 이용한 암호재산의 구현 사례 : 비트코인


블록체인 기술에 관한 논의는 비록 공학의 영역에 속하나 암호재산(가상화폐)의 재산권 대상성에 대한 이해에 소요되는 측면이 어느 정도 있으므로 최소한의 범위에서 그 요점을 설명하도록 하겠습니다.

가. 블록체인 기술과 관련된 암호 기술의 요점

 암호재산즉 블록체인 기술과 관련하여 암호 기술은 직접적으로는 거래의 검증과 거래의 수단을 위하여 이용되고 있습니다.

(1) SHA256 해시 함수

⓵ SHA256 해시 함수의 뜻

안전 해시 알고리즘(Secure Hash Algorithm) – 256’ 함수는 미합중국 국방부 산하 국가보안국(National Security Agency)에서 개발된 함수로 입력되는 값의 크기와는 무관하게 출력되는 값이 256bit로 고정되어 있는 (수학적 의미에서의함수입니다.

여기서 출력되는 값이 바로 – 잘게 쪼갠다는 뜻에서 암호학에서 차용된 용어인 – ‘해시(hash)’ 값입니다.

 

이와 같은 해시’ 함수는 ㈀특정 입력 값에 대하여 오로지 단 하나의 해시 값만이 존재한다는함수로서의 일반적 특징 이외에도 ㈁특정 입력 값의 길이와는 무관하게 출력 값이 고정된 길이(예컨대, 256bit)를 가진다는 특징 및 ㈂현재의 기술로는 해시 값을 가지고 원래의 입력 값을 복호화(decode)하는 것이 현실적으로 불가능한 것으로 알려져 있다는 등 세 특징들을 갖추고 있습니다.

⓶ SHA256 해시 함수의 활용 : ‘다이제스트(digest)’에 의한 거래의 검증

블록체인 기술과 관련하여 SHA256 함수가 활용되는 가장 중요한 부분이 바로 거래의 검증입니다.

어떤 집단(이를 검증 네트워크라고 할 수 있습니다)의 구성원 내지 참여자 모두에게 주어져 있을 뿐만 아니라현실 세계에서 발생하는 미리 예측할 수 없는 사건을 그대로 담고 있는 것이기 때문에 서로 완전히 동일한 내용을 가질 것이 예정되어 있고나아가 사후적으로 절대 변경될 수 없어야 할 것이 요청되는한 묶음의 데이터를 생각해보도록 하겠습니다예컨대 어떤 은행이 개설한 모든 계좌들의 시간 순서에 따른 거래 내역들을 일주일 동안 한 파일 속에 그 순서대로 모은 것을 생각해볼 수 있습니다.

㈁이러한 한 묶음의 데이터’ 전체를 입력 값으로 하여 SHA256 함수로 구한 일정한 크기의 해시 값은 단 하나 있을 것입니다각 참여자는 데이터 자체를 일일이 대조하는 대신 자신이 보유한 한 묶음의 데이터의 다이제스트로서 그 SHA256 해시 값을 구해서 서로 대조하여 그 일치 여부를 확인해 볼 수 있겠습니다. 이 방법은 해시 값 일치의 경우 데이터가 무결하다는 점을 확인할 수 있을 뿐불일치의 경우 과연 누구의 데이터가 진정한 것인지를 가릴 수 있는 수단이 없다는 단점을 가지고 있습니다.

㈂이러한 단점을 해결하는 여러 방법들 중 하나가 바로 블록체인 기술이라고 할 수 있습니다여기서 블록이란 위에서 말한 한 묶음의 데이터를 말합니다블록체인 기술을 구현하고 있는 참가자들의 검증 네트워크(이는 인터넷에 연결된 여러 컴퓨터들이 블록체인 알고리즘을 담고 있는 어떤 프로그램을 동시에 실행하고 있는 경우 성립됩니다)단순히 각자가 가진 어떤 데이터 블록의 해시 값들을 서로 대조하는 대신에그 데이터 블록에 어떤 데이터(이는 보통 ‘nonce’라고 불립니다)를 추가해야지만 그 데이터 블록의 해시 값이 미리 제시된 조건(보통 일정한 수즉 ‘target’ 값보다 작아지는 조건)을 만족시키게 되는가와 같은 문제를 참가자 모두에게 출제하고 이를 함께 협력해서 풀도록 만듭니다.

이 문제를 푸는 것은 단순히 해시 결과 값을 구하는 것이 아니라 일정한 조건을 만족하는 입력 값을 구하는 것이기 때문에 상당한 시간과 노력을 필요로 합니다반면에 일단 이 문제를 풀면 그 정답 여부를 확인하는 것은 단지 그 데이터 블록에 ‘nonce’를 추가해서 그 해시 결과 값을 구해보는 것즉 그 결과 값이 미리 제시된 조건을 충족시키는지만 보면 되는 것이기 때문에 이러한 검증에는 거의 시간과 노력이 들지 않습니다.

블록체인 기술의 기초가 되는 아이디어는⓵어떤 데이터 블록의 완성을 위해서 이와 같은 문제와 그 해답즉 ‘target’ 값과 ‘nonce’ 값 역시 그 데이터 블록 자체 내에 그 일부로서 반드시 포함되어야만 하고⓶여기서 한 걸음 더 나아가 이렇게 검증이 완료된 데이터 블록의 해시 값을 그 다음에 시간적으로 이어지는 데이터 블록 내에도 그 일부로서 포함시켜 블록들을 체인처럼 연결시킨다는 발상에 있습니다.

㈃즉이러한 아이디어로써 전에 제기한 문제즉 상호 불일치의 경우 과연 누구의 데이터 블록이 진짜인지를 가릴 수 있는 수단이 마련되게 됩니다현실 세계에서 미리 예측할 수 없는 사건들이 발생하는 것에 따라 그 내용(데이터)이 그때마다 모든 네트워크 참가자들에게 배포되고 그 결과로 각자에게 그러한 데이터들이 하나의 데이터 블록을 구성할 수 있을 정도의 크기로 모이게 되면 즉시 자동적으로 이 블록 후보에 포함되어 있는 문제를 그 모든 네트워크 참가자들이 협력해서 풀어내는 작업이 시작됩니다그 결과로 누군가로부터 해답을 얻게 되면 그 해답을 해당 데이터 블록에 기재하고 그 블록을 완성하게 됩니다이렇게 완성된 블록은 다시 모든 네트워크 참가자들에게 배포하게 됩니다그러면 이를 배포받은 참가자들이 이렇게 받은 블록 속 ‘nonce’를 자신이 보유하는 데이터 블록에 합체하여 그 해시 값을 구한 다음 이를 배포된 블록의 해시 값과 대조해 정말로 일치하는지를 보면 간단히 자신이 보유하는 데이터 블록의 무결성 여부를 확인할 수 있습니다만약 자신이 보유하는 데이터 블록의 해시 값이 일치하지 않는다면 자신이 보유한 데이터 블록은 폐기하고 배포된 것으로 대체하게 될 것입니다.

㈄한편 이러한 블록을 조작(위조변조)하려는 네트워크 참가자들이 있다고 상상해보겠습니다. 이것이 성공하기 위해서는이들은 그 조작한 데이터 블록에 대한 ‘nonce’ 값을 가장 먼저 구해서 그 조작된 데이터 블록을 완성시켜버려야 합니다그러나 조작에 참여하려는 네트워크 참가자들은 그렇지 않은 참가자들에 비하여 소수이므로 해답을 구하는 데에 소요되는 컴퓨팅 파워를 상대적으로 적게 가지고 있을 것이며 나아가 조작 자체에도 필요한 시간 소비가 있을 것입니다따라서 해당 네트워크의 과반수 컴퓨팅 파워에 해당하는 수를 상당 정도 넘어서는 규모의 참가자들로 하여금 자신들에게 동조하도록 설득하지 못하는 한 이들의 이와 같은 조작은 절대로 성공할 수 없습니다.

 

㈅물론 이러한 네트워크에 연결된 컴퓨터(이를 ‘node’라 합니다)들에는 이와 같은 알고리즘을 구현한 프로그램이 설치되어 있어야 하고 만약 이 프로그램 자체가 해킹이 된다면 문제가 발생할 수 있습니다하지만 이 프로그램은 이른바 피어 투 피어(Peer-To-Peer)’ 방식 내지 탈중앙화 애플리케이션(DApp)’ 방식으로 구동되기 때문에 설사 어떤 컴퓨터에 설치된 프로그램 자체에 해킹이 이루어지더라도 이러한 해킹은 일부 노드들에 대해서만 이루어질 것이기 때문에 전체 네트워크의 무결성에는 영향을 주지 않습니다.

(2) 공개키와 개인키 기술

 위에서 블록체인 네트워크에서 블록체인을 이루는 각 데이터 블록에 담기는 내용이란 보통 현실 세계에서 발생하는 미리 예측할 수 없는 사건이라고 하였습니다이러한 사건들 중 가장 중요한 것은 별도의 거래 네트워크’(이는 위에서 말한 검증 네트워크와는 구별됩니다)에 참가하고 있는 참가자들 사이의 – 예컨대거래를 위한 – 통신 내용입니다검증 네트워크에 의하여 검증되는 대상이 되는 데이터가 이미 생성 단계에서 조작(위조변조)된 상태라면 애초 데이터 블록에 대한 검증은 무의미해질 것입니다따라서 이와 같은 통신 내용이 위조나 변조되지 않고 통신 상대방 및 검증 네트워크에 안전하게 도달될 수 있도록 확실하게 보장하는 기술이 필요합니다그런데 이에 관한 기술은 이미 널리 대중화되어 있으며 그 가운데 하나가 공개키/개인키 기술입니다.

⓵ RSA 알고리즘

ECDSA 알고리즘 등을 이용하는 비트코인의 경우 RSA 알고리즘을 이용하는 것은 아니지만 공개키/개인키 기술의 전형이 바로 RSA 알고리즘이고 다른 경우도 결국 마찬가지의 아이디어에 기초한 것이라고 볼 수 있기 때문에 가장 간단하게 이해할 수 있는 이 RSA 알고리즘을 설명함으로써 공개키/개인키 기술을 소개하도록 하겠습니다. RSA 공개키 알고리즘은 이를 개발한 Ron Rivest, Adi Shamir, Leonard Adleman의 성의 첫 글자들을 조합하여 명명되었습니다.

㈀평문(plain text) P를 암호화한 결과인 암호문(cyphertext)을 C라 하면 나머지를 구하는 연산을 mod로 표시할 때,

C = P^E mod N

의 관계에 서는 E와 N이 존재하게 됩니다예컨대 P=123이면 (E, N)가 (5, 323)일 때 C=225이 됩니다.

㈁마찬가지로 이 경우,

P = C^D mod N

의 관계에 서는 D와 N이 존재하게 됩니다위의 경우에서 “123=225^D mod 323”이 되는 D는 29입니다.

이산수학의 논의에 따르면 실제 활용에서 상당히 큰 수가 되는 N을 신속하게 소인수 분해할 수 있는 기술(예컨대양자컴퓨팅이나 리만가설의 입증)이 발견되지 않는 한 E, N을 가지고 D를 알아내는 것은 현실적으로 불가능하다는 점이 밝혀져 있습니다.

㈂어떤 사람이 다른 사람과 비밀이 보장되는 통신을 하고자 할 경우 그 다른 사람에게 암호화키인 (E, N)을 공개키로서 알려 주고 이를 통해 평문을 암호화하여 그 결과인 암호문을 달라고 요청하면 됩니다암호문을 받아 자신만이 가지고 있는 개인키인 복호화키 (D, N)를 가지고 복호화하여 평문을 획득할 수 있는 것입니다이 과정에서 암호화키인 공개키만이 외부에 공개될 뿐 복호화키인 개인키는 전혀 공개되지 않게 됩니다.

⓶ RSA 알고리즘의 활용 거래의 수단으로서의 인증

㈀이러한 RSA 알고리즘에 의한 공개키/개인키 쌍은 위에서 본 바와 같이 도청이 불가능한 통신을 가능하게 합니다.

㈁이외에도 블록체인 기술과 관련해서 이 공개키/개인키 쌍은 인증(authentification)’을 위해서도 사용할 수 있습니다이는 보통 디지탈 서명이라고 불리기도 합니다이 경우에는 거꾸로 암호화키를 개인키 내지 서명용 키로 사용하고 복호화키를 공개키 내지 검증용 키로 사용합니다만약 수신인이 공개키로써 복호화에 성공하여 평문을 얻을 수 있다면 이는 송신인이 그만이 알고 있는즉 개인키인 암호화키로써 암호문을 만들었다는 점을 확인한 것이 됩니다. 송신인이 개인키로 암호화하는 방법으로 서명하였음을 알 수 있는 것입니다.

㈂해당 블록체인에서 채택하고 있는 암호화 방식을 따른 공개키/개인키 규약을 채택하여 주소를 생성함으로써 간단히 위와 같은 거래 네트워크에 참가할 수 있으며 이 경우 이 주소는 신원을 식별하는 표시(ID)로 이용됩니다개인키로써 서명을 함으로써 이 개인키에 할당된 주소’ 명의로 어떤 전언(message)를 다른 주소로 전달하는 통신 내지 법률적 의미의 의사표시가 기술적인 인증 내지 서명에 의하는 방식으로 그 진정성립에 의문이 없는 상태에서 가능해지는 것입니다.

나. 블록체인 기술이 단순 암호 기술을 넘어서는 부분
(1) 암호 기술에서 블록체인 기술로

암호 기술은 ⓵거래 네트워크 속에서 주소로 특정되는 거래자들 사이에서 거래가 진정한 의사에 기하여 이루어진다는 점을 확실히 할 수 있을 뿐만 아니라 ⓶검증 네트워크 속에서 이러한 거래들이 기록된 데이터 블록이 위조나 변조가 되지 않도록 확실히 보장하는 방법을 제공해줍니다.

하지만 암호 기술 그 자체는 그러한 방법의 가능성만을 제공할 뿐 이러한 방식으로 네트워크를 사용할 수 있도록 컴퓨팅 파워를 그 참가자들이 자발적으로 제공하게 하는 행위의 동기까지 제공해주는 것은 아닙니다.

위에서 본 바와 같이 블록체인 기술은 검증 네트워크를 구성하고 유지할 유인을 참가자들에게 제공해야만 합니다물론 거래 네트워크는 거래 기타 통신의 필요성을 느끼는 사람이 각자의 동기를 갖고 있을 것이기 때문에 그 참가자들에게 별도로 유인을 제공할 이유가 없습니다하지만 거래 네트워크의 주소 정보들을 포함한 거래 데이터들의 내역들을 보관하고 지속적으로 검증하는 역할을 하는 검증 네트워크의 참가자들즉 노드들에 대해서는 반드시 어떤 유인이 제공되어야만 하며 이러한 유인이 없는 경우 검증 네트워크의 구성과 유지가 불가능하게 될 것입니다.

사실 블록체인 기술의 핵심은 공지공용의 기술인 암호 기술에 있는 것이 아니라 이를 활용하여 검증 네트워크의 참가자들에게 검증 활동을 지속할 수 있도록 하는 유인을 제공하는 알고리즘에 있으며 이러한 알고리즘을 구성하는 방법은 하나만 있는 것이 아닙니다.

유명한 비트코인’ 검증 네트워크의 경우에는 거래 네트워크가 하는 기능이 비트코인이라고 하는 무형의 대상을 그 일억 분의 일을 단위(사토시 단위)로 하여 거래 네트워크 참가자들 사이에서 이전되도록 하는 것이고 검증 네트워크가 하는 기능은 이러한 거래의 진정성 검증과 거래 내역의 무결성 검증을 확보하는 것입니다따라서 검증 네트워크에 참여하는 노드들에게는 이 네트워크를 통해 거래되는 무형의 대상인 비트코인을 검증 활동에 대한 대가로서 특수한 알고리즘에 따라 신규 발행(거래 내역 무결성 검증)하거나 수수료 지급(거래 진정성 검증)을 하는 방식으로 유인을 제공합니다.

비트코인 검증 네트워크는 화폐와 같은 기능을 수행할 수 있는 무형의 대상을 창조하기를 원했던 사람에 의하여 설계되었기 때문에 이상과 같은 최소한의 알고리즘을 채택한 것이지만 나아가 해당 블록체인의 설계 목적에 따라서 거래 내역 무결성 검증과 거래 진정성 검증 이외의 기준으로도 해당 블록체인이 창조하는 무형의 대상즉 암호재산을 발행하고 배분하는 내용의 알고리즘을 채택할 수도 있는 것입니다예컨대블록체인의 저장 공간을 제공하는 노드들에 일정한 기준에 따라 암호재산을 발행하거나 배분할 수도 있고심지어는 블록체인 자체의 유지와는 무관한 활동즉 블로그에 글을 작성하여 게시한 후 다른 참가자들의 추천을 받은 횟수에 따라서 암호재산을 발행받거나 배분받을 수도 있는 것입니다.

활성화된 블록체인은 기본적으로 절대적으로 신뢰할 수 있는 네트워크라는 기초적인 내재적 가치를 지니게 되고 여러 응용된 형태의 블록체인은 그 이외의 내재적 가치도 함께 지니게 되며 결국 그 내부에서 발행되고 거래되는 무형의 대상은 이와 같은 신뢰 네트워크가 과거로부터 현재까지 쌓아온 가치에 대한 지분으로서의 의미를 가지게 됩니다.

(2) 블록체인 기술의 정의

 ⓵ 결국 블록체인 기술은 ㈀이상과 같은 핵심 암호 기술을 토대로 하여 사람들로 하여금 자발적인 참여를 유도하도록 설계된 알고리즘을 갖춘 컴퓨터 프로그램과 ㈁이러한 프로그램이 실행되는 하드웨어 그리고 ㈂이러한 하드웨어들을 연결하는 통신망 등이 유기적으로 참여자들 각자의 동기 부여에 의하여 분산적으로 운용되도록 하는 기술이라고 정의될 수 있습니다.

⓶ 즉블록체인 기술은 암호 기술에 바탕을 두고 있지만 단순히 기계적으로만즉 기계의 작동만으로 구현될 수는 없다는 특징이 있습니다.

다. 블록체인 기술을 이용한 암호재산의 구현 사례 : 비트코인

(1) 위에서 유명한 비트코인’ 검증 네트워크의 경우 이 검증 네트워크에 참여하는 노드들에게 이 네트워크의 중개를 통해 거래 네트워크 속에서 거래되는 무형의 대상인 비트코인 자체를 바로 그 검증 활동에 대한 대가로서 특수한 알고리즘에 따라 신규 발행(거래 내역 무결성 검증)해주거나 수수료 지급(거래 진정성 검증)을 하는 방식으로 유인을 제공한다고 설명하였습니다.

(2) 우선 비트코인 검증 네트워크에 참여하기 위하여 참가자는 자신의 노드를 구축할 필요가 있습니다이는 https://bitcoin.org/ko/download 등과 같은 누리집에 접속하여 노드 구축용 프로그램(무료 오픈소스로 MIT 라이센스하에 배포됩니다)을 다운로드받아 설치하는 것으로 수행할 수 있습니다이 프로그램이 설치되는 컴퓨터는 인터넷에 연결되어 있기만 한다면 최근 기준으로 평범한 사양의 가정용 컴퓨터이어도 무관합니다.

(3) 이렇게 노드 구축용 프로그램즉 일명 채굴용 프로그램을 설치하여 실행시키면 컴퓨터 전원을 내리지 않는 한 ⓵거래 검증(거래 진정성 검증)과 ⓶블록 검증(거래 내역 무결성 검증)을 자동적으로 수행하게 됩니다예컨대해당 컴퓨터가 가끔씩 채굴에 성공하는 경우즉 ‘nonce’를 찾는 문제를 가장 먼저 해결하게 되는 경우 이에 대한 보상으로 비트코인을 신규로 발행받게 됩니다.

안국법률사무소 변호사 정희찬 02-3210-3330

댓글 남기기