블록체인 : Blockchain
⛓ 개요
블록체인은 다수의 거래내역을 묶어 블록을 구성하고, 해시를 이용하여 여러블록들을 체인처럼 연결한 뒤, 다수의 사람들이 복사하여 분산 저장하는 알고리즘이다.
누구나 열람할 수 있는 장부에 거래 내역을 투명하게 기록하고, 여러 대의 컴퓨터에 이를 복제해 저장하는 분산형 데이터 저장기술이다. 여러 대의 컴퓨터가 기록을 검증하여 해킹을 막는다.
블록체인은 분산 컴퓨팅 기술 기반의 데이터 위변조 방지 기술이다.
P2P 방식을 기반으로 하여 소규모 데이터들이 체인 형태로 무수히 연결되어 형성된 '블록'이라는 분산 데이터 저장 환경에 관리 대상 데이터를 저장함으로써 누구도 임의로 수정할 수 없고 누구나 변경 결과를 열람할 수 있게끔 만드는 기술.
근본적으로 분산 데이터 저장기술의 한 형태로, 지속적으로 변경되는 데이터를 모든 참여 노드에 기록한 변경 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가능하도록 고안되었다. 블록체인 기술은 비트코인을 비롯한 대부분의 암호화폐 거래에 사용된다. 암호화폐의 거래과정은 탈중앙화된 전자장부에 쓰이기 때문에 블록체인 소프트웨어를 실행하는 많은 사용자들의 각 컴퓨터에서 서버가 운영되어, 중앙에 존재하는 은행없이 개인 간의 자유로운 거래가 가능.
‘디지털 장부’란 컴퓨터에 저장된 기록물을 뜻한다. 실제로 컴퓨터는 현대인 삶에 큰 영향을 미치고 있다. 컴퓨터의 도입은 일상의 자료를 쉽게 저장하고, 복사할 수 있도록 만들어 주었다. 하지만, 이러한 장점은 복사된 자료와 원본 간 품질 차이마저 없애버리면서 약점으로도 작용하기도 한다. 누군가 악의를 갖고 기록을 조작하거나 잘못된 기록을 남겨도 수정된 사본과 원본 간 차이가 구분되지 않기 때문이다. 블록체인은 이러한 문제를 해결하기 위해 암호 SHA-256 기반의 암호 ‘해시(Hash) 함수’를 사용한다. 이 때문에 블록체인에 처음 만들어진 기록이 제대로 보관되는 것이다. 특정 기록물을 본래대로 변치 않게 다룰 수 있는 기술이 갖는 영향력은 이미 비트코인 사례에서 확인했듯 상당하다. 이렇듯 블록체인은 기술이 가진 파급력을 토대로 일상의 각 영역으로 녹아들 준비가 한창이다.
⛓ 시작
나카모토 사토시가 2007년 글로벌 금융위기 사태를 통해 중앙집권화된 금융시스템의 위험성을 인지하고 개인 간 거래가 가능한 블록체인 기술을 고안했다. 이후 2009년 사토시는 블록체인 기술을 적용해 암호화폐 비트코인을 개발했다.
블록체인은 사이퍼펑크 운동에 뿌리르 두고 있다. 사이퍼펑크란 중앙집권화된 국가와 거대 기업들에 대항하여 개인의 프라이버시를 보호하기 위해 암호기술을 이용하여 익명성을 보장하는 탈중앙화 시스템을 만드려는 사회운동가들이다. 1990년 데이비드 차움은 디지캐시라는 회사를 설립하고 최초의 상업적 암호화폐인 이캐시를 창시하고 익명 거래 시스템을 제안했다. 1993년 에릭 휴즈(Eric Hughes)는 〈사이퍼펑크 선언〉을 발표하고, 프라이버시를 보호하기 위해 암호화된 익명 거래 시스템을 개발할 것을 제안했다. 1997년 아담 백(Adam Back)은 익명성을 보장하고 이중지불을 방지할 수 있는 해시캐시(Hashcash)라는 가상화폐를 만들었다. 1998년 웨이 다이(Wei Dai)는 익명성과 분산 방식의 암호화폐인 비머니(B-Money)를 고안했다. 1998년 닉 재보(Nick Szabo)는 스마트 계약 기반의 암호화폐인 비트골드(bit gold)를 고안하기도 했다. 그러나 당시의 기술적 한계로 인해 실제 개발이 어려웠으며, 널리 사용되지도 못하였다.
블록체인을 처음 만든 것은 사토시 나카모토(Satoshi Nakamoto)라는 가명을 쓰는 사람이었다. 그는 2008년 10월 31일 〈비트코인 : 개인 대 개인의 전자화폐 시스템〉이라는 논문을 작성하여 암호학계 관련자들이 공동으로 사용하는 메일링 리스트로 전송하였다. 이듬해인 2009년 1월 3일 사토시 나카모토는 블록체인 기술을 적용한 최초의 암호화폐인 비트코인(bitcoin)을 개발하고 C++ 언어로 작성한 소스 코드를 배포했다. 이후 비트코인의 소스 코드를 일부 변형한 네임코인, 컬러드코인, 메타코인 등 몇 가지 새로운 코인들이 출현했다.
⛓ 구성
블록체인을 만들기 위해서는 다수의 거래 기록을 묶어 하나의 블록을 구성하는 일이다.
거래의 최소 단위는 트랜잭션(transaction, 약칭 'Tx')이다. 트랜잭션이란 더 이상 쪼갤 수 없는 업무 처리의 최소 단위를 말한다. 예를 들어, A라는 사람이 B라는 사람에게 1,000원을 지급하고 B가 그 돈을 받은 경우, 이 거래 기록은 더 이상 작게 쪼갤 수가 없는 하나의 트랜잭션을 구성한다. 만약 A는 돈을 지불했으나 B는 돈을 받지 못했다면 그 거래는 성립되지 않는다. 이처럼 A가 돈을 지불하는 행위와 B가 돈을 받는 행위는 별개로 분리될 수 없으며 하나의 거래 내역으로 처리되어야 하는 단일 거래이다. 이런 거래의 최소 단위를 트랜잭션이라고 한다
인터넷 등 온라인에서 거래가 발생한 경우, 각각의 트랜잭션별로 하나의 거래내역을 구성한다. 이 거래내역은 해시(hash) 함수를 사용하여 암호화된다. 해시 함수란 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑하는 알고리즘이다. 각각의 거래내역을 텍스트로 표시할 경우 그 길이가 각각 다를 수 있지만, 이것을 해시 함수로 변환하면 항상 일정한 길이의 해시값이 나온다. 예를 들어, SHA-256 해시 함수를 사용할 경우, 거래내역이 아무리 짧거나 혹은 길어도 해시값은 항상 2진수로 256자리(즉, 16진수로 64자리)의 고정된 길이를 가진 값으로 표시된다. 이러한 해시 연산 과정을 거쳐 하나의 트랜잭션이 하나의 해시값에 대응하는 1:1 구조를 이루게 된다. 예를 들어 아래의 거래내역을 SHA-256 해시 함수를 사용하여 변환한 해시값은 다음과 같다.
블록체인에 저장된 데이터는 네트워크에 연결된 모든 노드(node)에 복사되어 분산 저장된다. 노드란 네트워크를 구성하는 각각의 개체를 말한다. 예를 들어, 10대의 컴퓨터가 서로 연결되어 네트워크를 구성하고 있는 경우 각각의 개별 컴퓨터가 하나의 노드가 된다. 즉, 이 시스템은 10개의 개별 노드로 구성된 네트워크 시스템이다. 서버-클라이언트 구조에서는 원본 데이터가 서버에 저장되어 있고 클라이언트는 서버에 접속하여 데이터를 열람·복사·다운로드 받지만, 블록체인 네트워크 구조에서는 중앙 서버가 존재하지 않으며 네트워크에 참여하는 모든 노드들이 서로 데이터를 복사하여 동일한 자료를 분산 저장하고 있다. 블록체인에 저장된 데이터는 원본과 사본의 구별이 없다. 블록체인 네트워크에 참여하는 개별 노드들은 다른 노드에 있는 데이터를 복사하여 저장함으로써 서로 동일한 데이터를 가지게 된다. 이 때 해당 데이터 전체를 100% 동일하게 복사하여 저장한 노드를 풀 노드(full node)라고 하고, 전체 데이터의 일부분만 복사하여 저장한 노드를 라이트 노드(light node)라고 한다.
블록체인 네트워크에서 새로운 거래가 발생할 경우 그 내역은 네트워크에 연결된 모든 노드들에게 전파되어 알려진다. 각 노드들은 일정한 시간 동안 이루어진 모든 거래를 하나로 묶어 새로운 블록을 구성하고, 목표값 이하의 해시값을 찾기 위해 경쟁한다. 네트워크에 참여한 수많은 노드들 중에서 가장 먼저 목표값 이하의 블록 해시값을 찾아낸 노드가 경쟁에서 승리하게 된다. 블록 해시를 가장 먼저 찾아낸 노드는 자신이 경쟁에서 승리했음을 전체 네트워크에 알린다. 네트워크에 참여한 다른 노드들은 새로 생성된 블록의 유효성을 검사하고 아무런 이상이 없을 경우 해당 블록의 생성을 승인한다. 이런 방식으로 전체 네트워크에 참가한 노드들 중에서 과반수가 새로 생성된 블록을 승인할 경우, 해당 블록은 정식 블록으로 채택되어 블록체인에 추가된다. 만약 서로 다른 거래내역을 가진 블록이 동시에 생성될 경우 네트워크는 약 1시간 정도 기다리면서 지켜보다가 가장 긴 길이를 가진 체인을 선택한다. 이 때 선택되지 않은 다른 블록은 버려져서 고아 블록(orphan block)이 되고 더 긴 길이를 가진 블록체인의 끝에 새로 생성된 블록이 연결된다. 이러한 과정을 통해 블록체인은 거래를 처리하고 승인하는 권위 있는 중앙기관이 없이도 네트워크 참여자들의 협업을 통해 안전하고 신뢰할 수 있는 시스템을 운영할 수 있다.
블록체인에 참여하는 51% 이상, 즉 과반수의 노드가 동시에 블록체인 거래내역을 조작하는 행위이다. 100개의 노드가 있을때 51개의 노드를 장악하고 있는 그룹이 있다면 마음대로 제어가 가능하다는 이론이다. 채굴에서는 51%가 담합해서 나머지 49%의 블록을 무시하고 자기들이 발견한 블록만 고집하면 나머지를 연산량으로 찍어누르기 때문에 채굴량의 100%를 독식할 수 있고, 블록체인 기술 전체로 보면 ‘신뢰할 수 없는 불특정 다수의 다수결’에 의해 데이터의 신뢰성을 확보하는 것이 핵심 원리이므로 마찬가지로 51%가 자기가 맞다고 우기기 시작하면 신규 블럭은 물론 지난 거래내역도 얼마든지 조작이 가능하다. 즉 작동원리에서 오는 태생적 한계.
불특정한 노드가 참여하면 참여할수록 51%의 노드를 유지, 제어하는데 하드웨어 및 전기 비용이 많이 소비되므로 어느정도 성숙한 블록체인에서는 공격이 매우 어렵다. 제어 비용도 문제이긴 하지만, 공격에 성공했다 해도 그 체인에 연결된 코인이 폭락하는지라 성숙한 블록체인을 공격하는 건 웬만한 정치공작이 아닌 이상 비경제적 행위이다. 사토시 나가모토가 51% 공격을 언급한 이유는, 51% 공격이 가능하다는 차원에서 말한 것이 아니라 51% 공격이 가능한 주체가 있다고 해도 그 주체는 51% 공격을 하지 않는 것이 합리적이기 때문에 의미가 없다는 말이었다.
즉 51% 공격은 사익을 추구하는 일반적인 주체가 집행할 수는 없다. 이익에 상관하지 않고 돈을 쏟아부을 수 있는 주체, 즉 정부만이 가능하다. 하지만 이또한 네트워크의 크기가 커질수록 정부마저 개입하기 힘들어진다. 참고로 현재 비트코인은 전세계 정부가 갖고 있는 슈퍼컴퓨터를 이용해 동시에 협력해도 51% 공격이 불가능할 정도로 큰 네트워크를 갖고 있다.
하지만 채굴 그룹이 작거나 아직 성숙하지 않은 초기 코인의 경우에는 충분히 공격이 가능하기에, 이론적으로는 절대로 막을 수 없다. 게다가 51% 유지는 초기 블록체인의 원활한 통제를 위해서도 필요하기에, 51% 공격을 당하는 순간 크래커에 통수권을 넘기는 꼴이 된다. 노드 수 뿐만 아니라 채굴자 수의 51%를 점령해도 조작이 가능하기에, 초기 블록체인은 물론 채굴자 수가 적은 블록체인도 조심해야 한다. 성숙한 블록체인도 안심할 수 없는 게, 정치 공작 수준의 해킹이 이뤄지면 블록체인의 제어권이 넘어가는 건 시간 문제가 된다. 사회공학적으로 볼 때, 여론 조작, 정치 공작 등을 떠올리면 쉽다.
실제 사례로 2014년 마이닝풀이던 GHash.io(지해쉬)가 일시적으로 비트코인 해싱 파워 51%를 초과하는 일이 발생하여 가격이 폭락하였다. 지해쉬에서는 의도적으로 넘긴것이 아니라고 해명했지만 마음만 먹었으면 조작이 가능했다. 그로 인해 지해쉬의 마이닝풀에 참여하고 있던 개인들이 의도적으로 빠지게 되어 문제는 해결되었다. 2018년 5월 23일에는 시가총액 27위에 이르는 비트코인 골드의 장부가 51% 이상의 해시파워를 점유한 해커에 의해 조작되는 등 공격 성공 사례가 다수 보고된 바 있다.
더블 스펜딩(double spending), 또는 이중 지불이란 동일한 암호화폐로 두 번 이상 지출하는 것을 의미한다. 암호화폐에서 더블 스펜딩은 실제 암호화폐가 복사가 되어 지불되는 것이 아닌 충돌되는 트랜잭션이 있으면 더 많은 노드가 받아들인 트랜잭션을 받아들이고 받아들여지지 않은 다른 트랜잭션은 취소해버리는 블록체인의 특징을 이용한 악의적인 행위라고 보면 된다. 더블 스펜딩 공격을 위한 기법에는 가장 쉬운 레이스 어택이 있으며, 피니 어택, 51% 어택 등 으로도 가능하다. 모든 거래 내역이 기록되는 블록체인의 특성상, 이는 사회공학적으로 '영수증 이중 제출'로 볼 수 있다. 아니나 다를까 정치권에서도 더블 스펜딩 행위가 만연하게 이뤄지고 있다.
더블 스펜딩 류의 블록체인 어택은 타임스탬스상의 순간적인 하드포크를 사용한 방법으로써 일시적으로는 이중지불이 성공한 것으로 보일 수 있으나 곧 다른 노드들에게 적발되게 되며 전송은 무효화 된다. 그리고 대부분의 퍼블릭 플록체인 사용자들은 거래가 체인에 올라간 이후 블록이 최소한의 갯수 이상 생성되었을 때를 기준으로 트랜잭션이 확정되었다고 여겨 거래를 하고 있으므로 51% 어택을 제외한 더블스펜딩 공격은 실질적으로 의미있는 공격이 되지 못한다. 이중 제출 행위가 일정 시간 내에 발각되어 영수증 자체가 무효화 되는 과정이라 할 수 있다.
실제 사례로는 한국의 해커 그룹인 Glass Hunt's에서 레이스 어택을 통해 쉽게 더블 스펜딩에 성공하여 비트코인 카지노에서 이용하는 유튜브 영상을 유포하고 인터뷰 하는 영상도 있다. 유튜브나 구글 등에 double spending으로 검색하면 심심찮게 성공하는 영상이 돌아다닌다.
더블 스펜딩으로 인한 피해를 막는 방법은 굉장히 간단(?)한데, 거래의 컨펌(confirmation, 승인) 수가 일정 수치를 넘어갔는지를 보면 된다. 비트코인 기준으로 6 컨펌 이상이 떨어진 트랜잭션에서 이중지불 문제가 발생할 가능성은 정말 매우 희박하다. (위의 비트코인 카지노같이) 빠른 입금을 요구하는 일부 거래에서는 적은 컨펌 수의 트랜잭션도 유효한 입금 거래로 판정하는 경우가 있는데, 물론 운영자들도 바보가 아니므로 입금액이 정상적인 거래라고 판단되기 전까지는 출금을 하지 못하게 막는 등 대책을 세운 지 오래다. 이런 번거로운 과정을 대신해주는 중개업체인 비트페이(Bitpay)와 같은 지급 보증 서비스를 끼고 거래하는 방법이 있어 받는사람 입장에서는 이용하는것이 현명하지만, 중개하는 수수료가 추가될수 밖에 없고 P2P 개인간의 거래 원칙이 깨지게 된다.
한국의 암호화폐 거래소인 코인네스트에서의 암호화폐 출금 과정에서 발생한 일련의 오류들에 대해, 거래소 운영 측에서 더블 스펜딩으로 인해 발생한 문제라고 밝히기도 했다. 하지만 더블 스펜딩이 조잡하게나마나 성공하기 위해서는 출금을 실행하는 지갑 소유자(이 경우 코인네스트)측의 조작이 필수적인 만큼, 거래소 측의 단순 전산 문제를 둘러대기 위한 핑계라고 보는 것이 타당할 것이다.
블록체인 공식홈페이지에서는 최근 50만건의 거래에서는 더블 스펜딩이 발생되지 않았다고 표시되어 있지만, 트랜잭션이 취소되어 발생하는 실제 이중 지불 피해가 카운트된것이 아닌 결과적으로는 암호화폐가 복제나 위조되지 않았다는 의미인것으로 보인다.
⛓ 특징
블록체인은 대규모의 노드들 사이에서 각 노드에 분산 저장된 장부의 데이터를 항상 있도록 하는 합의 수렴 알고리즘으로 볼 수 있다. 블록체인에 기록된 데이터는 위변조가 거의 불가능하여 누구나 신뢰할 수 있고, 안전하며, 탈중앙화 방식의 시스템 운영이 가능하다.
탈중앙화 :
블록체인은 권위 있는 중앙 조직·기관·단체 등이 없이, 자유롭고 평등한 참여자들에 의해 자율적으로 유지되고 운영된다. 기존의 서버-클라이언트 구조에서는 모든 정보가 중앙에 있는 서버로 집중되기 때문에 중앙을 차지한 사람이 의사결정권한을 가지는 구조였다. 하지만 블록체인은 중앙이 없는 피투피(P2P) 방식으로 운영되기 때문에, 권위를 가진 중앙이 존재하지 않는다. 블록체인에서 의사결정 방식은 네트워크에 참여한 모든 사람들의 과반수 이상의 동의를 필요로 하는 탈중앙화(脫中央化, decentralization) 방식이다.
안전성 :
블록체인에 기록된 데이터는 분산 저장하기 때문에, 특정 노드에 대한 디도스 공격이나 랜섬웨어 공격 등으로부터 안전하다.
신뢰성 :
블록체인에 기록된 데이터는 해킹을 통한 위변조가 매우 어렵기 때문에 누구나 신뢰할 수 있다. 블록체인에 기록된 내용은 해시함수에 의해 변환되어 암호화된 형태로 저장된다. 만약 내부자 또는 외부 해커가 시스템에 침입하여 특정 데이터를 위변조할 경우, 해당 데이터의 해시값이 변경되어, 위변조 사실을 즉각 알아낼 수 있다. 블록체인에 기록된 데이터의 양이 아무리 많아도 그 중에서 단 한 글자만 변경해도 전혀 다른 해시값이 나오기 때문에, 다른 사람이 모르게 데이터를 변경·삭제·추가하는 일은 불가능하다. 게다가 해시트리 구조로 데이터를 관리하기 때문에 어떤 위치에서 어떤 내용이 위변조되었는지를 즉각 알아낼 수 있다.
공개 블록체인(Public blockchain, 개방형 블록체인): 접근 제한이 전혀 없는 블록체인.
비공개 블록체인(Private blockchains, 전용 블록체인): 특정 권한이 부여된 비공개 블록체인.
하이브리드 블록체인(Hybrid blockchain): 중앙식, 탈중앙식 기능을 모두 갖춘 블록체인.
⛓ 활용
블록체인에 저장하는 정보는 다양하기 때문에 블록체인을 활용할 수 있는 분야도 매우 광범위하다. 대표적으로 가상통화에 사용되는데, 이때는 블록에 금전 거래 내역을 저장해 거래에 참여하는 모든 사용자에게 거래 내역을 보내주며 거래 때마다 이를 대조해 데이터 위조를 막는 방식을 사용한다. 이 밖에도 전자 결제나 디지털 인증뿐만 아니라 화물 추적 시스템, P2P 대출, 원산지부터 유통까지 전 과정을 추적하거나 예술품의 진품 감정, 위조화폐 방지, 전자투표, 전자시민권 발급, 차량 공유, 부동산 등기부, 병원 간 공유되는 의료기록 관리 등 신뢰성이 요구되는 다양한 분야에 활용할 수 있다.
해시(Hash) : 해시함수는 어떤 데이터를 입력해도 같은 길이의 결과를 도출하는 함수
블록(Block) : 데이터를 저장하는 단위, 바디와 헤더로 구분된다. 바디에는 거래내용이 헤더에는 머클해시나 넌스(암호화와 관련된 임의의 수) 등의 암호코드가 담겨있다.
노드(Node) : 개개인의 서버, 즉 참여자를 노드라고 한다. 중앙관리자가 없기 때문에 블록을 배포하는 노드의 역할이 중요하며, 절반 이상의 동의가 있어야 새 블록이 생성된다.
'Encyclopedia > Info' 카테고리의 다른 글
ASSURE 모형의 절차 (0) | 2024.02.18 |
---|---|
양궁에 대해서 알아보자 (0) | 2023.10.05 |
오프쇼어링, 리쇼어링 / 세계화의 종말 (0) | 2023.07.21 |
보이차 이야기 : 차 분류 (0) | 2023.07.19 |
카메라 설정값 가이드 (0) | 2022.06.22 |
라니냐 : La Niña (0) | 2022.06.15 |
오란다 (0) | 2021.12.02 |
수력발전 (0) | 2021.08.11 |