법률가라면 최소한 알고 있어야 할 블록체인 기술의 원리

법률가라면 최소한 알고 있어야 할 블록체인 기술의 원리

IPDaily 특허포차 읽기


요즘 어디를 가나 블록체인에 대한 이야기가 화두이다. 그런데 이야기를 듣고 있으면 사람마다 블록체인을 이해하고 있는 수준도 다르고 대상도 다르다는 것을 느낀다. 한편 블록체인에 대해 더 깊이 이해하고 싶은 사람들 조차도 그 분야 전공자가 아니면 블록체인에 관한 특허문서나 기술문서를 이해하기 어려울 때가 있다. 본인도 몇 년 전 이러한 혼란을 겪고 시간이 나는 대로 자료를 정리해보았다. 최근 블록체인 기술을 이용한 산업분야에서 다양한 분쟁이 발생하고 있다. 이때 법률가들은 블록체인 기술을 이용한 수많은 응용 결과물이나 서비스와 발생한 사건에 대해 법률적인 해석을 하여야 한다. 물론 매스미디어에 블록체인을 알기 쉽게 설명한 글들이 많이 있다. 그러나 기술 원리에 대한 설명이 없어 법적성질을 오해하기 쉽다. 적어도 블록체인의 구현기술에 대한 개념과 원리는 이해하고 있어야 구체적인 사건에서 정확한 정의와 해석이 가능하다. 따라서 블록체인에 적용된 기술에 대한 기본적인 원리를 개념적으로 설명하여 적어도 해시넷웹사이트에 올려진 블록체인에 대한 글들을 어려움 없이 이해할 수 있도록 하는 데에 목적을 두려고 한다. 많은 부분에서 생략, 과장 또는 각색하였다. 블록체인 분야의 소프트웨어 전문가에게는 지적할 부분이 많이 있을 것임을 미리 알린다.



IBM은 블록체인을 비즈니스 네트워크에서 트랜잭션을 기록하고 자산을 추적하는 프로세스를 효율화하는 불변의 공유 원장이며, 자산은 유형 자산(주택, 자동차, 현금, 토지) 또는 무형 자산(지적 재산권, 특허, 저작권, 브랜드)일 수 있다고 정의하고 있다. 이러한 정의는 블록체인을 관조적 입장에서 이야기할 때는 무리가 없다.

그러나 블록체인을 이용한 산업에서 발생하는 분쟁을 이해하고 핵심 쟁점을 찾기에는 부족하다. 이런 점에서 블록체인을 기술적으로 정의하는 것이 더 유익하다.

블록체인(blockchain)이란 다수의 거래내역을 묶어 블록을 구성하고, 해시(hash)를 이용하여 여러 블록들을 체인처럼 연결한 뒤, 다수의 사람들이 복사하여 분산 저장하는 알고리즘이다.

이 정의에서 다수의 거래내역을 묶은 블록들해시(hash)를 이용하여 체인처럼 연결한다는 점에 주목해야 한다.

먼저 블록체인에서 더 이상 쪼갤 수 없는 업무 처리의 최소 단위를 트랜잭션(transaction)이라고 한다. 예를 들어 AB에게 1,000원을 지급하고 B가 그 돈을 받은 경우, A가 돈을 지불하는 행위와 B가 돈을 받는 행위를 합하여 더 이상 작게 쪼갤 수가 없는 하나의 트랜잭션을 구성한다. 반면 B가 그 돈을 받지 않았다면, 그 거래의 이행이 완료되지 않아 트랜잭션을 구성하지 못한다. 블록체인에서 트랜잭션(transaction)은 법률적으로 계약의 성립여부를 의미하지 않으나 쌍방계약에서 일방의 이행을 의미할 수 있다. 따라서 의사표시의 하자와 같은 문제나 채무불이행 문제까지 해결하는 것은 아니다.

둘째, 블록체인기술을 이해하는 데에 가장 중요한 것은 블록을 체인처럼 연결시켜주는 해시(hash) 기술이다.

해시(hash)란 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑(mapping)하는 것이다. 어떤 임의의 길이를 갖는 데이터를 해시함수(hash function)를 이용하여 해시하면, 그 결과값은 항상 같은 길이의 데이터로 변환된다. 이러한 해시 함수를 적용하여 나온 고정된 길이의 값을 해시값이라고 하고, 원래의 데이터가 같으면 해시값도 항상 동일하다. 그러나 해시값을 안다고 해서 원래 데이터 값을 알기는 거의 불가능하다. 원 데이터는 하나의 해시값을 가지나 (충돌회피 알고리즘은 별론), 하나의 해시값이 나오는 원 데이터는 무수히 많기 때문이다. 이는 암호화는 가능해도 복호가 거의 불가능하다는 것을 의미한다. 대표적인 해시 함수로는 MD5, SHA 등이 있다.

이해하기 쉽게 각색해서 설명하면, “10”를 소수로 나눈 을 십단위로 그 나머지를 단단위로 하여 두자리 숫자로 표현하고 그 중 가장 작은 숫자를 해시값으로 매핑한다고 해보자. 10를 소수 5로 나누면 몫은 2이고 나머지는 0이다 (10 = 52 + 0 :: 20). 이는 고정된 두 자리 20으로 표현된다.  소수 3으로 나누면 몫은 3이고 나머지는 1이다 (10 = 33 + 1 :: 31). 이는 고정된 두 자리 31로 표현된다. 2031 중 작은 수는 20이므로 이때 “10”의 해시값은 “20”이다. 그러나 해시값 “20”으로는 원 데이터 “10”을 알 수 없다.

 ※ 좀더 상세한 암호화 기술의 원리를 이해하려면 종단간암호화 블로그글을 참고하세요

MD5 함수를 이용하여 해시값을 구해보자. Convert string 웹사이트에서 자동으로 계산해볼 수 있다

<암호화해시> https://www.convertstring.com/ko/Hash/MD5

 4글자의 천지창조나 숫자 10의 해시값은 모두 32자의 서로 다른 데이터이다.

 

이러한 특성을 이용하여 데이터서버관리자가 비밀번호를 해시하여 저장하면 해커가 비밀번호 해시값을 해킹해도 원 비밀번호를 알 수 없다. 때문에 해시를 암호화기법으로 사용한다. 데이터 객체(data object) 담긴 짧지 않은 다양한 속성(attribute) 값들을 해시하면 각각의 데이터에 담긴 정보마다 서로 다른 해시값을 갖기 때문에 데이터 검색의 인덱스로 사용하거나 데이터의 중복 또는 수정여부를 검사할 있다.


셋째, 블록들을 해시값을 이용하여 어떻게 체인처럼 연결시켜주는 지가 블록체인의 핵심이다.

먼저 A라는 화가가 자신이 컴퓨터로 그린 이미지 파일 (컴퓨터아트) 하나를 NFT로 민팅(Minting)한다고 가정해보자. 좀더 구체적으로 A가 자신이 만든 이미지 파일을 특정 서버에 업로드하고 그 링크주소창작자이름”, “이미지파일의 종류와 크기”, “이미지파일의 종류와 특징” 정보를 “생성” 정보가 연동된 데이터로 입력하여 NFT를 발행한다고 가정해보자. 이것은 새로운 블록을 처음 만드는 과정이다. NFT라는 메타데이터에 이러한 A의 컴퓨터 아트 발행정보에 대한 데이터가 담겨있다.

NFT 발행정보의 해시값은 “6FE089E4575DFB395B4EFC518AEFCA82” 이다. 이 값은 32자로 발행정보가 같으면 항상 같고, 조금이라도 바뀌면 달라진다.


이 해시값은 처음 생성되는 블록에 기록된다. 거래가 있을 때마다 이전 해시값과 거래에 따른 거래정보를 암호화한 해시값이 블록헤더에 저장되고 이를 다시 종합하여 해시한 루트해시값은 다음 거래 블록의 이전 해시값으로 저장된다. 이렇게 블록이 서로 체인처럼 연결된다.

A가 발행한 NFTB가 대금을 지불하고 구매하면 블록에는 구매자가 구매한 기록에 대한 거래 정보 데이터가 해시값으로 저장되고 이전 블록의 해시값도 블록헤더에 함께 저장된다. 이 두 개의 해시값으로 구성된 블록헤더값이 다시 해시되면 루트해시값을 갖으며, 블록1의 루트해시값은 거래가 발생할 때마다 네트워크에 물려있는 모든 컴퓨터에 배포되어 저장된다. 만약 거래내역 중 하나라도 위변조할 경우 루트해시가 달라지게 된다. 따라서 블록의 루트해시만 비교해 보면 다른 데이터를 일일이 비교 검사하지 않아도 데이터가 위변조되었는지 확인할 수 있다. 이어 C가 대금을 지급하고 B로부터 NFT를 구매해도 동일한 절차가 진행된다.

 

『블록체인(blockchain)』에 대해 다수의 거래내역을 묶은 블록들을 해시(hash)를 이용하여 체인처럼 연결한다는 단계까지는 설명을 마쳤다. "다수의 사람들이 복사하여 분산 저장"에 대해서는 해시를 이용한 체인 연결을 설명하면서 간단히 언급만 하였다. 언젠가 더 설명할 때가 올거라 생각한다.

이 세상에 모든 문제를 해결할 수 있는 도구는 존재하지 않듯, 블록체인이란 도구로 모든 산업을 디지털로 전환시킬 수 없다. 도구는 목적에 맞게 사용하면 된다. 그 도구를 잘 사용하려면 도구의 기능과 작동은 이해하여야 한다. 그래서 기술적인 정의가 필요하다. 

BItCoin의 실체가 무엇인지, NFT의 실체가 무엇인지 모르면 누군가의 게임판 위에서 춤추는 인형이 되기 쉽다. 새벽이 오면 눈을 크게 뜨고 있어야 한다. 그리고 피하지 말고 새벽길을 따라 내려오는 호랑이 등에 올라타야 한다.


글을 맺으며

이 글을 쓰면서 소프트웨어나 컴퓨터프로그램, 데이터 등을 정의하려고 하니 저작물의 관점과 발명의 관점에서 바라보는 정의가 서로 다르다는 점을 다시 한번 발견한다.

저작물측면에서 컴퓨터에서 표현되는 정보의 관점에서 바라보고 있다면 발명측면에서는 컴퓨터에서 돌아가는 구조의 관점에서 바라보고 있다고 할 수 있다. 문제는 소프트웨어 산업계와 이야기할 때에도 말하려는 취지에 따라 동일한 용어를 다른 의미로 사용한다는 것이다. 여러 기술문서를 살펴보니 기술의 구현 관점에서는 발명의 측면에서 바라보는 정의가 더 적합했다. 다음 기회에 이를 정리해보려고 한다.

이 글을 읽고나서 블록체인에 더 관심이 생기거든 아래 해시넷 웹사이트에 올려진 글들을 읽어 보시기 바란다글이 어렵지 않게 이해된다면 본 글의 목적을 달성했다고 말할 수 있다.


http://wiki.hash.kr/index.php/블록체인

http://wiki.hash.kr/index.php/비트코인

http://wiki.hash.kr/index.php/암호화폐

http://wiki.hash.kr/index.php/해시

http://wiki.hash.kr/index.php/트랜잭션

http://wiki.hash.kr/index.php/채굴

Comments

Popular posts from this blog

DeepSeek model V3와 R1의 모든 것

법률문서 A and/or B

[라이선스계약실무] ‘제조’(make)에 대한 라이선스에 위탁제작(Have-made)하게 할 권리가 포함되어 있는가?