보안정보
전문화된 보안 관련 자료, 보안 트렌드를 엿볼 수 있는
차세대 통합보안관리 기업 이글루코퍼레이션 보안정보입니다.
블록체인 시대의 보안위협과 대응방안
2019.12.26
15,113
1. 개요
중앙화된 시스템 기반의 화폐, 재화, 전자화폐, 금융투자상품 등과 달리 가상화와 분산처리가 가능한 비트코인(Bitcoin)은 블록체인(Blockchain) 기술을 바탕으로 거래의 신뢰성과 안정성이 확보된 탈중앙화 시스템을 구축하였다.
[그림 1] Control Structure of Currencies
(출처 : The Case for Central Bank Electronic Money and the Non-case for Central Bank Cryptocurrencies)
법정통화로 통용되는 화폐 또는 전자화폐는 중앙 발행기관을 통해 발행규모나 교환을 보장한다.
중앙 발행기관은 중앙원장(Centralized Ledgers)을 통해 데이터의 보관 및 검증 기능을 수행하지만 블록체인은 분배 및 봉인, 검증절차를 통해 분산원장(Distributed Ledger)기능을 제공할 수 있게 되었다.
[표 1] 중앙화와 탈중앙화 된 환경에서 데이터 보관 및 검증 기능 비교
이번 호에서는 금융, 공공, 민간 등 다양한 분야에서 적용되고 있는 블록체인 기술에서 발생할 수 있는 보안위협을 해결하기 위한 대응방안에 대해서 알아보고자 한다.
2. How to Blockchain
블록체인은 권한(Permission) 및 합의 방식(Consensus Algorism)에 따라서 퍼블릭 블록체인(Public Blockchain), 프라이빗 블록체인(Private Blockchain), 컨소시엄 블록체인(Consortium Blockchain)으로 분류된다.
퍼블릭 블록체인은 비트코인(Bitcoin)이나 이더리움(Ethereum)과 같이 누구나 네트워크에 참여하여 거래내역은 물론 네트워크에서 발생하는 여러 행위들이 공유되는 공개형 블록체인이다.
이와 반대로 프라이빗 블록체인은 나스닥(NASDAQ)의 링크(LINQ)나 미진(Mijin)과 같이 폐쇄형 블록체인으로 허가된 참여자 외에 거래내역과 행위들이 공유되지 않는다.
컨소시엄 블록체인은 퍼블릭 블록체인과 프라이빗 블록체인의 성격이 결합된 형태로 코다(Corda)나 하이퍼레저 패브릭(Hyperledger Fabric)과 같이 연합형 블록체인을 기반으로 반(半)중앙형 성격을 띄게 된다.
[표 2] Public, Consortium, Private 블록체인 비교
블록체인 플랫폼은 합의 알고리즘(Consensus Algorithm)이나 데이터 구조(Ledger Data format) 등을 통해서 △탈중앙화(Decentralization, 중앙집중화된 환경을 벗어나 자율운영이 가능한 환경), △ 확장성(Scalability, 사용자 수에 따라 유연하게 대응할 수 있는 것을 의미), △ 보안성(Security, 블록체인을 구성하고 있는 데이터나 권한 등이 안전하게 관리되는 것을 의미)의 블록체인 의 트릴레마(Trilemma, 세 가지 요소 중 각각 받아들이기 어렵거나 불리한 어려운 선택을 의미)의 문제를 해결하기 위해 발전해왔다.
블록체인 기술은 분산원장(Distributed Ledger)구조로 인해 새로운 거래 발생시에 모든 원장데이터와 대조를 통해 확인하는 과정을 거치기 때문에 네트워크 확장 시에 거래처리속도가 저하되고 이로 인해 확장성에 문제가 발생하게 된다.
결국 탈중앙화(Decentralization)와 확장성(Scalability)은 서로 모순된 정의이기 때문에 두 가지 조건을 모두 만족하는 것은 쉬운 문제가 아니다.
하지만 일부에서는 탈중앙화와 확장성이라는 두 가지 조건을 양립하기 위해 기술적인 대안을 제시하고 있다. △ 작업증명(PoW, Proof of Work)에서 지분증명(PoS, Proof of Stake)방식으로 합의 알고리즘을 변경, △ 위임지분증명(DPoS, Delegated Proof of Stake), △ 온-체인(On-Chain)과 오프체인(Off-Chain) 방식, △ 샤딩(Sharding)등을 통해서 해결책을 제시하고 있으나 완벽한 대안은 아니다.
금융기관과 같이 중앙원장기술을 기반으로 구축되어 있는 환경의 탈중앙화 기술은 확장성 뿐만 아니라 이중지불이나 개인정보보호, 컴플라이언스, 비용 등 문제도 발생되기 때문에 블록체인 기술을 안착시키기 위해서는 비즈니스 목적에 맞는 기술과 적용방안이 필요하다.
[표 3] 블록체인 기술에 따른 세대별 특징과 한계성
3. Blockchain Based Security Threat
블록체인의 보안위협들은 블록체인의 △ 확장성(Transaction or Scalability), △ 최종성(Transaction Finality), △ 상호운영성(Interoperability), △ 신원 증명 및 관리의 부재(Lack of Identification and Management)등의 기술적인 이슈가 기반이 되기 때문에 태생적인 한계나 미흡한 구현 등으로 인해 발생한 문제 해결을 위해서는 각 위협요소에 대한 이해가 필요하다.
이를 위해서 St. Cloud State University에서 발표한 ‘Security Threats Classification in Blockchains’를 토대로 블록체인의 보안위협에 대해서 설명해 보고자 한다.
‘Security Threats Classification in Blockchains’에 따르면 블록체인에서 발생하는 보안위협은 △이중지불(Double Spending), △ 마이닝/마이닝풀(Mining/Pool), △ 암호화폐지갑의 위협(Wallet Threat), △ 네트워크 위협(Network Threats), △ 스마트 컨트랙트 위협(Smart Contracts Threats)의 5개의 대분류와 30개의 세부항목으로 분류할 수 있다고 한다.
언급하고 있는 모든 보안위협 중에서도 실제 피해사례나 위험도가 높은 보안위협에 대해서 좀 더 자세하게 살펴보자.
[표 4] Taxonomy of Blockchain Security Threats (출처 : Security Threats Classification in Blockchains)
1) Wallet Threats
암호화폐 지갑은 일상에서 사용하는 지갑의 기능과 같이 돈을 저장하는 것이 아니라 개인키 (Private Key), 공개키(Public Key) 그리고 자산을 관리하는 소프트웨어 프로그램을 의미한다. 공개키가 보인 소유의 계좌번호이고, 개인키가 계좌 비밀번호와 유사한 역할을 수행하기 때문에 개인키를 소유하는 것은 공개키에 따른 자산의 모든 관리권한을 의미하게 된다.
암호화폐 지갑은 작동 방식에 따라 2로 정의될 수 있다. 실시간으로 편리한 사용이 가능하여 단기 및 소액 투자용으로 사용되지만 해킹이나 악서코드 등에 노출될 가능성이 높은 핫 월렛(Hot Wallet)과 USB 저장장치처럼 하드웨어지갑으로 해킹의 위험에서 상대적으로 안전하여 장기 및 고액투자용으로 사용되지만 장치를 분실하면 찾기 어려운 콜드 월렛(Cold Wallet)이다.
암호화폐 지갑의 보안위협은 간단히 말해서 ‘개인이나 암호화폐거래소에서 개인키를 얼마나 안전하게 관리할 있는가’의 문제에 달려있다. 개인의 경우 암호화폐가 저장되어 있는 암호화폐 지갑의 개인키가 저장된 개인PC나 모바일 기기가 공격 대상이 되거나, 암호화폐거래소의 경우 암호화폐 지갑의 개인키가 저장되어 있는 서버가 공격 대상이 되어 암호화폐가 인출되게 된다.
[그림 3] 공격대상에 따른 암호화폐 지갑 공격 흐름도
국내•외 주요 암호화폐 거래소에서 발생한 암호화폐 탈취공격의 상당수는 On-line Wallet에 해당하는 핫 월렛에 저장되어 있던 개인키가 탈취되면서 암호화폐의 전송권한이 공격자에게 넘어가게 되고 이로 인해 보유하고 있는 암호화폐가 공격자의 암호화폐 지갑으로 인출되는 경우들이 대다수였다. 2014년 12월에 발생한 암호화폐거래소의 경우에도 거래소 서버가 공격 당해서 개인키 파일이 유출되었고, 이로 인해 핫 월렛에 존재하던 18,866 비트코인이 손실되었다.
이와 같은 암호화폐 지갑의 안전성 문제가 지속적으로 대두되자 암호화폐 거래 자산관리 시에는 자산의 70%를 콜드 월렛에 보관하도록 권고하고 있다.
2) Smart Contracts Threats
스마트 컨트랙트(Smart Contracts)는 1994년 닉 자보(Nick Szabo)가 최초로 제안한 개념으로 서면으로 작성되어 있는 기존 계약서(Contract)를 중개자 없이 P2P로 블록체인의 분산원장기술(Distributed Ledger Technology)을 이용하여 ‘스스로 이행이 되는 자동화된 약정(Automated Self-Enforced Agreements)’ 행위를 의미한다.
금융, 지적재산권, 공유경제, 물류 유통과 같이 상호 거래 및 검증이 빈번하게 발생하고 업무 자동화가 가능한 시스템이 대표적인 업무영역이라고 볼 수 있다. 스마트 컨트랙트는 기존의 계약과 관련된 거래 비용의 감소와 합의에 따른 신뢰를 바탕으로 보안성의 장점을 앞세워 다양한 서비스들이 출시되었지만 2016년에 발생한 DAO(Decentralized Autonomous Organization)해킹사고로 기술적 한계가 드러나게 되었다.
[그림 4] 재귀호출 취약점(Recursive Calls Vulnerability) 공격 흐름도
(출처 : Solidity & Systems Programming on the Blockchain)
발견된 취약점은 특정 계정의 잔액과 합계를 갱신하는 splitDAO()함수가 재호출되기 이전에 어떠한 함수라도 호출시키면 무한으로 자금을 이동시킬 수 있는 문제가 있다. 쉽게 말해서 A계좌에 있는 100만원을 B계좌로 50만원 출금신청을 하는 경우 A계좌의 100만원에서 50만원을 차감하기 전에 다시 B계좌로 출금을 시도하고 다시 또 50만원을 출금하는 행동을 반복하면 A계좌에서는 50만원을 차감하기 전에 새로운 출금요청이 왔기 때문에 100만이 그대로 존재하게 되고 B계좌에는 출금한 50만원들이 꾸준히 쌓이게 되는 것이다.
이러한 이중지불문제는 플랫폼의 존폐를 논할 정도로 심각한 문제이기 때문에 DAO프로젝트의 책임 개발자는 하드포크(Hard Fork)를 통해서 문제를 해결하였으나 기술적 개선이 없는 플랫폼 분리라는 점에서 가치가 평가절하되는 후폭풍을 몰고 오게 되었다.
스마트 컨트랙트는 블록체인 기반의 어플리케이션을 구성하는 코드(Code)를 의미한다. C언어나 자바(Java)와 같은 프로그래밍 언어를 가지고 어플리케이션을 구현하는 것과 같이 스마트 컨트랙트도 솔리디티(Solidity)나 고(Go) 등의 프로그래밍 언어를 기반으로 구현되게 된다.
프로그래밍 언어를 기반으로 개발자에 의해 구현된 프로그램이기 때문에 기존 프로그래밍 언어로 구현된 어플리케이션에서 발생되는 △ 입력데이터 검증 및 표현, △ 보안기능, △ 시간 및 상태, △ 에러처리, △ 코드오류 등 소프트웨어 개발 시에 고려해야 하는 보안문제들이 그대로 드러나게 된다.
이를 위해서 소프트웨어 개발 시에 존재할 수 있는 잠재적은 보안 위협을 제거하고 보안을 고려하여 기능을 설계 및 구현하는 등의 일련의 보안활동을 의미하는 소프트웨어 개발보안 방안을 준수하는 것이 필요하다. 특히 스마트 컨트랙트의 경우 기존의 프로그래밍 언어에서 사용할 수 있는 보안점검 도구들이 미비하기 때문에 단위 테스트와 감사가 무엇보다 중요하다.
[표 5] 스마트 컨트랙트에서 발생하는 보안 취약점
4. Blockchain Security Countermeasures
블록체인은 탈중앙화된 환경에서 데이터의 보안과 신뢰성을 확보할 수 있는 기반기술이기 때문에 무엇보다 기술 자체에 대한 보안을 통해 사용자의 신뢰성을 확보하는 것이 중요한 기술이다. 따라서 협의 가로채기, 비정상 거래, SW취약점, 키 관리 강화, 거래소 인프라 강화 등 블록체인에서 발생할 수 있는 문제점을 인지하고 이를 해결하기 위한 방안이 절대적으로 중요하다.
유효성 검증을 통한 비정상 참여자에 대한 모니터링과 거래처리속도 향상을 위한 선택적 거래정보 저장, 합의 알고리즘 보완 및 개선 등 블록체인에서 발생할 수 있는 보안문제들이 해결되었을 때 비로소 사용자의 신뢰를 얻을 수 있는 새로운 기술로 정착될 수 있을 것이다.
[표 6] 블록체인에서 발생하는 보안문제점과 해결방안(출처 : 금융보안원, 블록체인 기술과 보안 고려사항
지금까지 ‘Security Threats Classification in Blockchains’로 발표된 블록체인의 보안위협을 기준으로 블록체인의 보안위협 요인과 대응방안에 대해서 살펴보았다.
블록체인은 기존의 금융권에 반하는 목적을 갖는 암호화폐를 기반으로 고안되었으나 신원확인, 문서보관, 금융거래관리 등 분산환경을 기준으로 다양한 분야에서 활용가치를 인정받고 있다.
특히 금융과 공공분야에서는 블록체인 산업의 생태계 활성화를 위해 다양한 사업 추진을 하고 있다. 또한 해외시장 개척의 교두보로 삼거나 블록체인 기술을 접목한 신규 사업의 발굴을 위해 꾸준히 노력해오고 있다. 데이터의 보안성과 신뢰성을 보장하는 새로운 시장에 대해서 대부분 낙관적인 시각을 보이고 있으나 실제 적용을 위해서는 데이터 처리 문제나 컴플라이언스 등 해결해야 할 문제들이 있는 것도 사실이다. 신중하고 장기적인 그리고 손익계산을 통한 비즈니스적인 관점으로 신중히 접근해야만 블록체인 적용을 통한 효과를 보장 받을 수 있을 것이다.
5. 참고자료
[1] The Case for Central Bank Electronic Money and the Non-case for Central Bank Cryptocurrencies
https://research.stlouisfed.org/publications/review/2018/02/13/the-case-for-central-bank-electronic-money-and-the-non-case-for-central-bank-cryptocurrencies
[2] Security Threats Classification in Blockchains
https://pdfs.semanticscholar.org/91bb/bb31101cbc2e803726d7210b4100f7b09ac5.pdf
[3] Solidity & Systems Programming on the Blockchain
https://pospi.github.io/talk-solidity-blockchain-intro/#66
[4] Common Vulnerabilities and Exposures
https://en.bitcoin.it/wiki/Common_Vulnerabilities_and_Exposures
[5] 금융보안원, 블록체인 기술과 보안 고려사항
https://www.fsec.or.kr/common/proc/fsec/bbs/42/fileDownLoad/1267.do
[6] Virtual Currency Myth and Reality (Extended Version of GFIN Open Seminar)