8 October 2024
안녕하세요. 인텔렉추얼데이터입니다.
비트코인이 신고점을 기록하며 다시 한번 세간의 관심을 끌고 있습니다. 나카모토 사토시라는 익명의 인사가 주장한 이후 보안성이 보장된 거래하면 떠오르는 대표적인 것이 비트코인을 위시한 블록체인인데요. 그런데 막상 비트코인에 투자하고 관심을 가지고 있다는 사람들도 "그래서 어떻게 보안성이 담보되나요?", "위조 거래를 어떻게 방지할 수 있나요?"라고 물어보면 쉽게 답을 하지 못하는 경우가 많습니다. 그저 막연하게 거래를 위해 쓰이는 Hash화 된 지갑 정보를 판독하기 힘들고, RSA 암호화가 적용된 개인 키를 사용하기 때문에 안전하다는 인식을 갖기 좋지만 기실 대부분의 은행 등 레거시 거래에서도 이 정도의 보안성은 담보되고 있죠.
블록체인을 유지하는 2개의 기둥, 합의 구조와 불변성
블록체인이라는 시스템을 유지하는 가장 중요한 두 가지 개념은 합의 구조와 불변성입니다. 합의 구조는 분산된 블록체인 네트워크 노드가 네트워크의 실제 상태와 트랜잭션의 유효성에 대해 합의하는 것을 말합니다. 블록체인은 다양한 합의 알고리즘을 통해 이를 달성합니다. 불변성은 이미 확인된 거래(트랜잭션)의 변경을 방지하는 블록체인의 기능을 의미합니다.
이러한 트랜잭션은 보통 가상자산 전송과 관련이 있지만, 화폐가 아닌 다른 형태의 디지털 데이터 기록을 의미할 수도 있습니다. 이런 합의 구조와 불변성을 통해 블록체인은 데이터 보안을 달성하게 되는데요. 합의 알고리즘이 시스템의 규칙을 준수하고 관련 당사자들이 네트워크의 현재 상태에 동의하도록 보장하는 반면, 불변성은 새로운 데이터 블록이 유효한 것으로 확인된 데이터와 트랜잭션을 온전하게 유지합니다.
변하지 않는 보안의 핵심은 Hash간의 연결과 식별
이런 과정에서 핵심적으로 작용하는 기술은 암호화 기술, 특히 Hash라는 기능입니다. 해싱은 해시 함수로 알려진 알고리즘이 데이터 입력(어떤 크기든지)을 수신하고 고정 길이 값을 포함하는 정해진 출력을 반환하는 과정입니다.
해시 함수의 핵심 기능은 입력 크기에 관계없이 출력은 항상 동일한 길이를 나타내고, 입력 값이 약간이라도 변경되면 출력은 완전히 달라져서 쉽게 추측하기 힘들 것, 그리고 입력 내용이 변경되지 않으면, 해시 함수를 아무리 많이 실행하더라도 해시 결과는 동일하다는 조건이 필요합니다.
해시는 블록체인에서 데이터 블록의 고유 식별자로 활용되고, 각 블록의 해시는 이전 블록의 해시와 연결되어 정합성을 갖도록 생성, 이를 통해 블록이 서로 연결되어 블록체인을 형성하게 됩니다. 또한 블록 해시는 해당 블록에 포함된 데이터에 연결되어 있어서 데이터를 변경하려면 블록 해시를 변경해야 합니다. 이 해시를 통해 일차적인 정합성과 불변성이 담보되죠.
만약 전체 연산의 절반 이상을 차지한다면? 51% 공격의 가능성
요는 각 노드들이 해시를 통해 만들어진 블럭이 서로 맞는지를 통해 보안성이 담보된다는겁니다. 그런데 이 알고리즘에도 약점이 존재합니다. 비트코인은 작업증명(PoW, Proof of Work)을 사용해서 연산을 통해 일종의 문제를 가장 빨리 푼 노드에게 블록을 추가시킬 수 있는 권한을 줍니다.
이때 나머지 노드들은 해당 블록이 유효한 거래인지 승인을 하게 됩니다. 절반 이상의 승인을 거치면 유효한 거래로 확인하고 블록을 블록체인에 연결, 모든 노드에게 전파하게 됩니다. 그런데 블록체인 전체 연산량의 50%이상을 보유한 채굴자는 압도적인 채굴량을 바탕으로 전체 네트워크를 마음대로 결정할 수 있게 되며 '51% 공격'이란 공격을 수행할 수 있게 됩니다.
정상적인 거래라면 A는 B에게 1 BTC를 송금하고 송금한 거래 기록의 트랜잭션이 실제 블록에 담기어, 블록체인에 연결이 됩니다. B는 자신의 거래 내역이 블록체인에 연결되었기 때문에 A에게 돈을 주게 됩니다. 여기까지의 과정은 아래와 같이 볼 수 있습니다.
일반적으로 수많은 노드들이 서로 경쟁하는 비트코인 시스템은 거래 블록과 이어질 블록을 연속적으로 가질 수 없기 때문에 가짜 블록은 더 짧은 블록, 소위 고아 체인이 되어 가장 긴 체인만 인정하는 합의 구조에 따라 네트워크에서 무시되고 삭제됩니다. 하지만 만약에 해시파워가 전체의 51% 이상을 보유한 생성자가 임의로 블록을 생성할 수 있다면 어떻게 될까요?
개별 참여자의 이익 극대화가 만드는 보안성의 핵심
하지만 네트워크 51% 이상의 해시 파워를 보유했다는 의미는, 개인이든 그룹이든 엄청난 금액의 채굴기와 전기료를 감당하면서 네트워크에 기여하고 있다는 의미가 되기 때문에 경제적 유인이 작용하게 됩니다. 많은 비용을 투자한 마이너들은 채굴을 통해 얻은 보상이 유지 비용보다 더 높아질 것을 바라기 때문에 고아 블록이 발생하고 조작 거래가 발생, 블록체인의 신뢰도가 망가지기 시작하는 걸 바라지 않을 것이라 생각해 볼 수 있습니다.
사실 이런 본질적 구조 외에 아무리 트래블 룰이 적용되었다고 해도 사법기관과 거래소 간 KYC(Know Your Customer) 연계의 취약성, 거래소 자체의 난립으로 인한 피싱 거래소 문제, 거래소 자체의 지불준비율, 무엇보다 거래소를 통해야만 실물 경제에 쓰이는 현금으로 나올 수 있다는 문제점 등 다양한 한계가 있는 것 역시 사실입니다. 그럼에도 불구하고 전체적인 시스템이 이렇게 유지되고 있는 것은 결국 기술적인 부분은 보조이며 각 참여자들이 시스템을 망가지는 것을 원하지 않도록, 자신의 경제적 이익을 지키기 위해 움직이게 한다는 것이 시스템을 지키는 보안의 핵심 요인이 아닐까 합니다.
아직 완전히 완벽한 체계 라고는 말할 수 없지만 여기서 우리는 일반적인 보안에 대해서도 교훈을 얻을 수 있다고 생각합니다. 기술적 뼈대 위에 시스템을 지킬 수 있도록 수많은 사람들이 지켜 나가는 것이야 말로 보안성을 담보할 수 있는 조건이 된다는 것 말이죠.