본문 바로가기

소득증대 및 생활 정보/투자 및 금융 정보

비트코인의 암호화 알고리즘

반응형

비트코인의 암호화 알고리즘

비트코인이 사상 첫 암호 화폐로써의 가치는 존재하지만, 여러 단점도 존재하듯이 현재 출현하는 양자 컴퓨팅을 방어하기 위한 암호 화폐들 역시 완벽할 수는 없을 것이다. 양자 컴퓨팅이 현재 상용화된 것은 아니지만, 양자 컴퓨팅을 대비하는 post-양자 암호 및 암호 화폐들에 대한 연구도 끊임없이 이루어져야 할 것이다.

비트코인은 하나의 체인만 유지하는 블록체인 기술을 사용하고 지속적으로 블록을 생성하기 위해 작업증명 알고리 즘을 통한 채굴 과정을 행한다.


비트코인은 대표적으로 두 가지 암호 알고리즘을 사용한다. 첫 번째는 거래자들의 거래를 위한 타원곡선 암호 (Elliptic Curve Cryptography) 알고리즘이며, 두 번째는 작업 증명(Proof of Work)을 위한 에스에이치에이대시이오륙 해시 알고리즘이다. 암호 화폐에서 이러한 암호 기법은 굉장히 중요한데, 이러한 알고리즘을 적용하기 때문에 가상화폐로서의 가치를 가질 수 있기 때문이다. 그러나 올해 초,  에스에이치에이대시이오륙의 이전 버전인  에스에이치에이대시일이 뚫렸으며, 향후 양자 컴퓨터의 시대가 도래함에 따라 큐비트의 ‘중첩’과 ‘얽힘’의 특성을 이용한 연산 능력은 기존 암호 체계 및 비트코인을 위협하는 데 충분할 것으로 보여진다. 그에 따라 양자 컴퓨팅을 대비한 ‘post-양자 암호(해시 기반 암호, 격자 기반 암호, 부호 기반 암호)’에 대한 연구가 이루어지고 있으며, 해당 암호를 기반으로 하는 새로운  호 화폐도 출현하고 있다.  현재 존재하는 수많은 암호 화폐 중 가장 많은 관심을 받는 비트코인을 토대로, 비트코인에서 사용되는 암호 알고리즘에 관해 설명한다. 


타원 곡선 암호 알고리즘


 비트코인을 이용한 거래는 기존의 방식과 다소 차이가 있다. 이루어지는 모든 거래가 검증받고 블록체인에 포함되기 위해서는 디지털 서명이 필요하며, 해당 서명에 필요한 것이 공개키와 개인키 암호 방식이다. 개인키는 무작위로 추출된 숫자로 구성되어 있으며 4비트씩 64개의 16진수로 표현된 수, 2의256승이 되며, 공개키는 구해진 개인키를 타원곡선 암호 알고리즘에 적용하여 생성한다. 타원곡선 암호는 이산 대수 문제의 어려움을 이용한 것이다. 예를 들면, K = k * G라는 식에서 K는 공개키, k는 개인키, G는 상수이다. 즉 미리 정의한 개인키와 상수를 곱한 결과가 공개키가 된다. k를 알고 있다면 G를 곱하여 K 를 쉽게 계산할 수 있다. 그러나 K만 알고 있는 상태에서 k를 찾는다는 것은 대입할 수 있는 모든 값을 고려해야하기 때문에 굉장히 어려워진다. 결론적으로, 거래자들이 거래하는 시점에 타인에게 표출되어도 괜찮은 공개키 주소가 다른 사람으로부터 코인을 전송받을 때 사용되고, 자신의 코인을 상대방의 공개키 주소로 전송할 때 해당 코인이 자신의 것임을 입증하기 위한 서명으로써 개인키가 사용된다.


작업증명 알고리즘 


P2P 네트워크를 제공하는 비트코인에서 모든 노드는 중앙관리자 없이 코인을 전송하고, 거래가 유효한지 인증해 야 한다. 즉 모든 노드는 특정시간 동안 승인된 모든 거래를 블록 안에 포함시키고, 블록을 완성해야 한다. 완성된 블록은 비트코인 네트워크에서 모두에게 공유되기 때문에, 결과적으로 모든 거래 기록을 가지고 있는 분산 장부인 블록체인은 무결성을 제공할 수 있게 되는 것이다. 이렇게 위와 같이 블록을 생성하는 과정(채굴)이 필요하며, 이 과정에는 ‘작업증명’이라고 불리는 합의 알고리즘이 적용된다. 작업증명 알고리즘에는 일방향성을 가지는 해시 함수인 에스에이치에이대시이오륙 암호화 알고리즘이 사용된다. 작업증명은 새로 생성하려는 블록의 헤더부분을 에스에이치에이대시이오륙으로 해시하여 블록 해시값인 출력된 값이 특정 목표치 값보다 작은 값이 나 올 때 까지 Nonce인 블록 헤더에 포함되어 있는 변수의 값을 지속적으로 변경시키며 답을 찾아내는 알고리즘이다. 특 정 목표치 값보다 작은 값을 찾아낸다면 블록을 생성하는 데 성공한 것이다.



양자 컴퓨터 


양자 컴퓨터는 큐비트라는 양자 비트를 사용한다. 에너지의 최소 단위를 뜻하는 양자를 이용하는 큐비트는 상태를 중첩시키고, 둘 이상의 큐비트를 얽히게 할 수 있기 때문에, 기존의 컴퓨터가 작업을 순차적으로 처리하는 데 반해 양자 컴퓨터는 동시에 수행할 수 있게 되었다. 고전적인 컴퓨터에서의 비트는 0 아니면 1의 상태를 가질 수 있다. 그러나 ‘중첩’현상에 의해 큐비트는 0과 1의 상태를 동시에 취할 수 있게 되었고, 또한 두 개의 양자는 거리에 무관하게 서로 연결되어 있기 때문에 하나의 상태가 다른 양자의 상태에 영향을 미치게 된다. 즉 양자의 상태가 1이면 다른 양자도 1이 되며, 또한 반대도 가능하다. 이러한 ‘중첩’ 현상과 ‘얽힘’ 현상에 의하여 두 개의 큐비트가 얽히게 되면, 두 개의 큐비트가 동시에 표현할 수 있는 상태는 총 4가지인 영영, 영일, 일영, 일일이 된다. 양자의 이러한 특성 때문에 큐비트의 개수(n)를 증가시킬 때마다 상태의 수는 2의 지수 단위로 증가하게 되며, 결국 기존 컴퓨터보다 월등한 처리능력을 가질 수 있는 것이다.


양자 컴퓨팅을 대비하는 가상화폐


 2017년 초, 구글(Google)이 에스에이치에이대시일의 충돌 현상을 입증했으며, 연산 횟수는 약 922경인 9,223,372,036,854,775,808번에 달한다. 비트코인에서 사용되는 에스에이치에이대시이오륙은 256비트의 해시 출력 값을 생성하는 데 반해 에스에이치에이대시일 해시 알고리즘은 160비트의 해시 값을 생성한다. 즉 에스에이치에이대시일보다 훨씬 긴 비트수를 가지기 때문에 현재 에스에이치에이대시이오륙은 안전하지만, 그러나 양자 컴퓨터의 상용화 및 큐비트 증가에 따라 미래에까지 안전하다고는 할 수 없는 것이다.

큐비트의 개발은 꾸준히 진행되는 중이다. 향후 큐비트의 개수가 54개를 넘어서면 초당 1경 이상의 상태를 갖게 된다. 즉 에스에이치에이대시일 알고리즘의 충돌 현상을 발견하는 데 수분이 채 안 걸린다는 것이다. 물론 에스에이치에이대시이오륙은 에스에이치에이대시일 보다 훨씬 더 걸리겠지만 앞서 말 했듯이 안심할 수는 없는 것이다. 비트코인에서 사용하는 타원곡선 암호와 에스에이치에이대시이오륙 해시 함수는 양자 컴퓨팅 연산에 취약한 알고리즘이다. 혹여나 비트코인의 암호 및 해시 알고리즘이 양자 컴퓨팅 때문에 뚫리게 된다면 공개키 주소를 더 이상 사용할 수 없을 것 이며, 채굴 과정중 적용되는 작업증명 알고리즘 역시 ‘합의’라는 개념이 무너져 이용할 수 없게 될 것이다.

반응형