"블록체인, 안전하다는 환상 버려야"

손경호 기자2017.10.27

  • 글자 작게
  • 글자 크게

전문가들, 지적…보안토큰 등 안전한 조치 필요

'블록체인을 활용하기만 하면 다른 어떤 것 보다 안전하고 효율적인 서비스를 만들어 낼 수 있다?'

암호화폐 비트코인 거래내역을 온라인 상에 안전하게 기록하는 역할을 하는 블록체인이 등장한 뒤 이를 송금, 주식매매, 전자투표, 중고차나 부동산 계약 등 여러 중요한 거래가 필요한 분야에 활용해보려는 시도가 이뤄지고 있다.

그러나 막연하게 블록체인이 안전하다는 생각은 오히려 제대로 된 생태계를 만들지 못하게 방해하는 독으로 작용할 것으로 예상된다.

블록체인에 한 번 기록된 거래 내역을 조작하는 것은 사실상 불가능에 가깝다고는 하나 이를 실제로 활용하는 과정에서는 합의 가로채기(Concensus hijacking), 개인정보 침해, 블록체인을 통해 구현하려는 애플리케이션인 스마트계약서(SmartContract)가 위변조될 위험성이 존재하기 때문이다.

■ 블록체인 쓴다고 100% 보안 보장 못해

최근 사업 협력 차 방한한 글로벌 보안 회사 포티넷 아태 지역 솔루션 마케팅 담당 매튜 콴 디렉터는 "아직은 블록체인 프로젝트가 초기 단계이지만 시간이 지나 본격적인 상용화가 시작되면 이에 대한 보안 역량이 중요해질 것"이라고 강조했다.

지난 26일 서울 여의도에서 개최된 금융정보보호컨퍼런스(FISCON)2017에서 '금융권 블록체인 도입시 보안 고려사항'을 주제로 발표를 맡은 금융보안원 보안연구부 김동진 연구원은 "블록체인을 마치 공인인증서를 대체할 수 있는 기술처럼 여겼던 잘못된 인식은 개선되고 있으나 블록체인이 안전한 기술이라는 이유로 보안에 대해 제대로 고려하지 않는가 하면 금융 분야에서도 참여자들 간에 프라이빗 블록체인을 구성하기만 하면 모든 보안 요구사항을 충족하는 것처럼 오해를 하는 경우가 있다"고 밝혔다.

지난해 세계경제포럼은 블록체인을 "P2P네트워크에서 참여자 간 자산교환을 뒷받침하는 정보 저장소"로 정의했다. 다시 말하면 중앙 서버 없이 P2P네트워크에서 참여자들 간에 정보를 효과적으로 공유, 보관하는 기술이라는 설명이다.

김 연구원은 "이런 점에서 여러가지 블록체인에 대한 정의 중 분산데이터베이스로 보는 것이 맞다고 본다"며 "그런 점에서 블록체인이 안전해지려면 참여자들이 적절한 거래내역에 대한 컨센서스(합의)를 만들고, 보안정책을 세워야 한다"고 강조했다.

■ 키 관리-합의 가로채기-스마트계약서 취약점 보완해야

금융보안원이 발표한 '블록체인 기술과 보안 고려사항'이라는 보고서에 따르면 블록체인을 도입하는 과정에서 발생할 수 있는 보안 위협은 크게 5가지로 구분된다.

먼저 키 도난 및 분실에 대한 문제다. 비트코인을 예로들면 비트코인을 저장하는 계좌 역할을 하는 개인키가 유출되는 경우다. 김 연구원은 "심지어 공격자가 PC를 해킹해 사용자가 메모장에 붙여넣기 하는 정보 중 비트코인 계좌와 관련된 개인키라고 여겨지는 정보만 가져가는 경우도 있다"고 설명했다. 개인키는 비트코인을 거래할 수 있는 가상계좌이자 다른 사람에게 여기에 저장된 비트코인을 보낼 수 있는 열쇠역할을 한다. 때문에 어떤 식으로는 개인키가 유출되는 경우 비트코인이 도난당할 위험이 있다.

두번째로는 합의 가로채기다. 블록체인은 서로 믿을 수 없는 참여자들끼리 안전하게 가치나 정보를 교환할 수 있게 돕는다. 비트코인이나 이더리움과 같이 모두에게 공개된 퍼블릭 블록체인의 경우 참여자들의 동의를 구해 거래가 무결하다는 것을 검증하는 과정을 거친다. 이를 구현하는 방법을 합의 알고리즘(Consensus algorithm)이라고 부른다.

비트코인의 경우 공격자가 어떤 방식으로 거래내역을 조작하려면 전체 블록체인에 참여하고 있는 네트워크의 51% 이상 컴퓨팅 파워를 확보하면 된다. 그러나 현실적으로 지난해 기준 최신 슈퍼컴퓨터의 60만배에 달하는 컴퓨팅 파워를 보유해야만 하는 탓에 퍼블릭 블록체인을 조작하기란 사실상 불가능 하다.

문제는 금융사, 일부 기업 등 소규모 검증된 참여자들로만 구성된 프라이빗 블록체인에서는 훨씬 적은 컴퓨팅 파워가 필요한 만큼 이를 노린 공격이 발생할 가능성을 배제할 수 없다는 사실이다.

김 연구원에 따르면 프라이빗 블록체인에서는 기본적으로 PBFT라는 합의 알고리즘이 쓰이는데 내외부 공격으로 해당 네트워크가 장악당하면 거래정보를 조작될 수 있다.

익명성이 보장되는 퍼블릭 블록체인과 달리 프라이빗 블록체인에서는 참여자가 누구인지 확인할 수 있는 만큼 해당 참여자가 누구와 어떤 거래정보를 주고 받았는지를 훔쳐볼 수 있다.

이 같은 문제를 해결하기 위해 하이퍼레저 패브릭, R3CEV 코다와 같은 블록체인 프로젝트에서는 각각 채널(channels), 노터리 서비스(Notary service) 등 개인정보에 접근할 수 있는 권한을 통제한다.

끝으로는 블록체인 프로젝트 내에서 구동되는 애플리케이션에서 취약점이 발견돼 공격이 이뤄질 수 있다는 점이다.

블록체인 프로젝트는 배시셸, 오픈SSL, GNU C 라이브러리와 같은 오프소스 소프트웨어와 마찬가지로 거의 모든 소스코드가 공개된다. 그만큼 공격에 취약할 수 있으나 제대로 보안 패치가 이뤄졌는지를 확인하기 어렵다는 한계가 있다.

블록체인 프로젝트에서 구동되는 애플리케이션은 '스마트계약서(SmartContract)'라는 이름으로 불리기도 한다. 문제는 이런 애플리케이션이 일반 소프트웨어와 마찬가지로 개발자 실력에 의존해 만들어진다는 점이다. 얼마나 보안 취약점이 없이 안전한지를 검증할만한 시스템이 갖춰져 있지 않다.

김 연구원은 "퍼블릭 블록체인 상에 고안된 스마트계약서의 경우 아무도 품질관리를 하지 않게 되는 일이 생긴다"고 강조했다. 만에 하나 취약한 스마트계약서에 악성코드를 심는다면 해당 애플리케이션을 사용 중인 모든 참여자들이 취약점에 노출될 수 있다.

■ 블록체인 보안성 높이려면…

그렇다면 이런 문제들을 해결하기 위한 대책은 뭐가 있을까?

우선 블록체인에 사용된 개인키를 하드웨어 보안토큰과 같은 곳에 안전하게 보관하고, 거래를 위한 전자서명 과정에서 여러 참여자들이 전자서명을 해야 거래가 승인되는 멀티시그니처(다중서명) 등을 활용할 필요가 있다.

프라이빗 블록체인에서 발생할 수 있는 합의 가로채기에 대해서는 프라이빗 블록체인 상 일부 기록을 퍼블릭 블록체인에 올리는 방법으로 위변조를 막는 앵커링, 여러 블록체인 프로젝트에 대한 검증을 맡는 신뢰할 수 있는 기관을 활용하는 방법 등이 고안됐다.

개인정보 침해에 대해서는 앞서 설명된 채널, 노터리 서비스와 같은 기능을 활용하는 방법에 더해 개인정보만 블록체인에서 분리해 별도 DB에 저장하는 오프체인이라는 방식도 등장했다.

오픈소스로 공유되는 블록체인 프로젝트나 스마트계약서에서 발견될 수 있는 취약점에 대응하기 위해서는 시큐어 코딩, 제3기관을 통한 코드 검토 등을 수행하며 악성코드 감염 여부를 사전에 확인하고 데이터 읽기/쓰기 등과 같은 일반적인 함수는 표준 라이브러리로 개발해 보안성 검증을 보다 쉽게 할 수 있는 방법 등을 고려해 볼 수 있다.

김 연구원은 "블록체인에 대해 명확치 않은 보안 위협에 대한 대응방법들을 구체화하고 지속적으로 모니터링하면서 더 효과적인 보안방법을 적극적으로 적용해야 한다"며 "막연하게 안전하다는 인식을 깨야하고 블록체인 프로젝트를 검토할 때 보안성에 대해 충분히 검토하길 바란다"고 강조했다.

손경호 기자 / sontech@zdnet.co.kr

X