June 18,2019

해킹 가설로 블록체인 업데이트?

해킹 역응용…업데이트 방식도 다양

FacebookTwitter
리플 다음으로 주목받는 ‘이더리움’ ⓒ Pixabay

리플 다음으로 주목받는 ‘이더리움’ ⓒ Pixabay

가상화폐 거래소가 술렁이고 있다. 이더리움의 하드포크가 지난 2월 말에 진행되기 시작했기 때문이다. 참고로 하드포크는 가상화폐 (혹은 블록체인)의 업데이트 방식 중 하나이다.

이더리움은 시가 총액이 12조 원으로 리플 다음으로 높은 가치를 평가되고 있다. 이러한 이더리움이 업데이트했다고 하니, 가상화폐 거래소는 술렁일 수밖에 없다.

작년 8월 이더리움 재단은 ‘콘스탄티노플’이라는 버전으로 업데이트할 것을 공표한 바 있다. 추진 목표는 이더리움의 주요 기능인 ‘스마트 컨트랙트’를 좀 더 효율화하는 것이다. 이러한 이유로, 업데이트 내용에는 거래 수수료 절감, 합의 알고리즘 전환, 난이도 조정 등이 포함돼 있다.

그런데 추진이 쉽지는 않았다. 두 번이나 연기됐기 때문이다. 원래 출시 목표는 작년 11월이었으나, 오류로 인해 올해 1월로 미뤄졌다. 그러나 올해 1월 출시 목표도 보안 문제로 2월 말로 미뤄졌다. 당시 이더리움 콘스탄티노플의 보안 취약점을 점검한 체인 시큐리티 (Chain Security)는 해커가 보안의 취약점을 이용해 가상화폐를 탈취할 수 있다고 말했다.

이더리움 콘스탄티노플의 업데이트 작업이 두 번이나 지연됨에 따라, 2월 말 업데이트 가능성에 의문을 가진 사람이 많았다. 그러나 우여곡절 끝에 이러한 작업이 안정적으로 진행되고 있다

블록체인 오류 ‘포크’에서 착안한 블록체인 업데이트 기술

일부 사람은 이더리움 업데이트 소식에 의문을 품을 수 있다. 비허가형 블록체인 (Permissionless Blockchain)은 플랫폼을 관리할 수 있는 중앙 관리자가 없는 것이 특징이다. 그런데 이러한 유형에 속하는 이더리움을 업데이트 한다고 하니 ‘웬 말인가’하는 생각이 들 것이다.

사실, 이더리움을 포함한 비허가형 블록체인도 업데이트할 수 있다. 다만, 다수결 원칙으로 이를 동의해야만 가능하다. 그럼 블록체인의 업데이트는 어떻게 이뤄질까?

우선 이를 알기 위해서는 블록체인의 ‘포크 (Fork)’라는 개념을 이해해야 한다. 포크는 우리에게는 음식을 찍어 먹을 때 사용하는 수저 개념으로 많이 알려져 있다. 그러나 포크의 본래 의미는 ‘갈래 길’이라는 의미이다.

포크는 ‘갈래 길’이라는 의미를 가지고 있다 ⓒ Geograph

포크는 ‘갈래 길’이라는 의미를 가지고 있다 ⓒ Geograph

엄밀히 말해, 수저의 포크는 이러한 의미에서 나온 것이라고 할 수 있다. 포크를 끝을 보면 여러 갈래 길이 나와 있는 것처럼 보이기 때문이다.

그럼 블록체인에서의 포크는 무엇일까? 블록체인서의 포크는 “정보 단위인 블록을 직렬로 업데이트하는 과정에서 두 블록이 병렬로 동시에 생겨난 오류”로 정의할 수 있다. 비트코인을 예로 들어보자.

비트코인은 작업증명알고리즘 (PoW)이라는 합의 알고리즘을 사용한다. 따라서 채굴자라고 불리는 블록 생성자는 본인의 컴퓨팅 파워를 이용해 블록을 생성한다. 채굴자는 컴퓨팅 파워를 이용해 임의의 암호값을 풀면 블록이 생성된다. 그리고 대가로 비트코인을 지급받는다.

그런데 두 명 이상의 채굴자가 동시에 문제를 풀어 두 개 이상의 블록을 동시에 생성한다면 어떻게 될까? 블록이 두 갈래로 나뉘는 셈이다. 그리고 이를 ‘포크’라고 부른다.

대부분의 블록체인에서는 ‘가장 긴 체인 규칙 (Longest Chain Rule)’에 따라서 결정한다. 블록체인의 길이 두 갈래로 나눠진다면 체인 형성 또한 두 갈래로 나눠질 것이다. 그리고 블록체인은 블록이 조금이라도 더 많은 쪽을 선택하고 나머지 한쪽을 버린다. 참고로 버려지는 블록을 ‘스테일 블록 (Stale Block)’이라고 한다.

분홍색 블록이 ‘스테일 블록’에 해당한다  ⓒ 위키미디어

분홍색 블록이 ‘스테일 블록’에 해당한다 ⓒ 위키미디어

이러한 특성 (가장 긴 체인 규칙)은 블록체인이 가장 높은 무결성을 가지게 한다. 외부자가 블록체인의 블록을 조작하기 위해서는 51% 이상의 블록 생성 능력을 갖춰야 하기 때문이다. 비트코인을 예로 들면, 51% 이상의 채굴자에 해당하는 컴퓨팅 파워를 보유해야 한다.

그러나 이러한 해킹 시도는 현실적으로 전혀 불가능하지 않다. 51% 이상의 블록 생성 능력을 확보하면 되기 때문이다. 물론 아직 이러한 해킹 사례에 관해서는 알려진 바 없다. 하지만 이를 블록체인 업데이트에 활용된 사례는 많다.

앞서 언급한, 이더리움도 이러한 사례에 속한다. 이더리움 재단은 채굴자의 다수결 지지를 얻어서 51% 이상의 블록 생성 능력을 갖춘 뒤에 콘스탄티노플 버전으로 업데이트를 진행을 시작한 것이다. 다시 말해, 블록체인을 다수결 합의로 해킹한 셈이다.

‘소프트 포크’와 ‘하드 포크’

블록체인 업데이트 방식은 ‘소프트 포크 (Soft Fork)’와 ‘하드 포크 (Hard Fork)’로 나눌 수 있다. 나누는 기준은 기존 블록과의 정보 호환성이다.

소프트 포크는 기존 블록의 정보를 업데이트 후에도 그대로 가져온다. 다시 말해, 업데이트 전의 블록에 담긴 정보를 그대로 가져오는 것이다. 참고로 소프트 포크로 만들어진 신규 블록 외 기존 블록은 버려진다.

소프트 포크의 대표 사례로 ‘세그윗 (SegWit, Segregated Witness)’을 들 수 있다. 세그윗은 기존 비트코인의 한계점인 ‘높은 수수료’와 ‘긴 거래 시간’을 해결하기 위해 등장한 소프트 포크이다.

에이다 (ADA)는 소프트 포크 방식으로 블록체인 플랫폼을 안정적으로 운영하고 있다. 에이다에는 메인 체인 (Main Chain)과 사이드 체인 (Side Chain)을 운영한다. 메인 체인은 실질적으로 블록체인의 운영이 이뤄지는 곳이지만, 사이드 체인은 블록체인의 효율적인 운영을 위한 실험 공간이다. 따라서 사이드 체인에서 성공적으로 이뤄진 결과를 메인 체인에 적용할 수 있다. 이때, 에이다는 소프트 포크 방식으로 사이드 체인의 결과물을 메인 체인에 적용한다.

하드 포크는 기존 블록과 정보가 전혀 호환되지 않는 새로운 블록을 만드는 것이다. 다시 말해, 하드 포크는 기존 블록에서 완전히 새로운 블록을 포크 형태로 만들어내는 방식이다. 새로 이더리움 콘스탄티노플 사례가 이에 해당한다.

하드 포크의 대표 사례로는 비트코인 캐시가 있다. 비트코인 캐시는 기존 비트코인에서 하드 포크 방식으로 업데이트된 가상화폐이다. 비트코인 캐시는 기존 비트코인보다 거래 속도가 더 빠른 것이 특징이다.

끝으로 두 유형에 해당하지 않는 블록체인 포크 사례가 있다. 특별 사례로 볼 수 있다. 2016년 6월 이더리움 재단은 서비스 취약점으로 인해 360만 개의 이더리움이 탈취되는 피해를 입었다. 이에 재단 창립자 비탈릭 부테린 (Vitalik Buterin)은 2016년 7월 20일에 이더리움이 해킹되기 이전의 시점을 기준으로 포크를 감행했다.

이에 따라 해킹 당한 블록은 버려지는 듯이 보였다. 그러나 해당 블록은 ‘이더리움 클래식’이라는 이름으로 거래소에 등장하였고, 블록은 두 갈래로 나눠지게 됐다.

해당 사례는 소프트 포크와 하드 포크에도 해당되지 않는다. 소프트 포크에 해당되기 위해서는 기존 블록에 버려져야 하는데 그대로 남아 있다. 반면 하드 포크가 되기 위해서는 기존 블록과 호환되지 않아야 하지만 호환되고 있다.

서비스 취약점으로 이더리움이 해킹당한 바 있다 ⓒ Flickr

서비스 취약점으로 이더리움이 해킹당한 바 있다 ⓒ Flickr

지금까지 블록체인의 업데이트 방식을 살펴봤다. 블록체인에서 업데이트는 불가능할 것으로 생각했을 것이다. 그러나 블록체인의 해킹을 응용해 이처럼 업데이트를 진행할 수 있다.

  • 유성민 IT칼럼니스트 (동국대 국제정보보호대학원 외래교수)다른 기사 보기
  • 저작권자 2019.03.25 ⓒ ScienceTimes

의견달기(0)