180126 내용정리 - 블록체인 기술과 보안 고려사항(보안기술연구팀, 2017.08.17) (1)보안위협 내용
내용정리 - 블록체인 기술과 보안 고려사항(보안기술연구팀, 2017.08.17)
본문의 내용은 해당 보고서를 읽고 정리한 내용입니다.
1. 개요
○ 이 보고서는 EU 산하 정보보호기구인 ENISA의 보고서(금융권에서 블록체인 시스템 도입 시 고려해야할 보안 이슈와 보안 강화방안 제시)를 토대로 작성된 보고서로 금융권에서 안전한 블록체인 시스템 도입을 위해 참고 가능한 보안 위협과 이에 대한 대응방안을 제시한 보고서입니다.
2. 금융권 블록체인 도입 시 보안 위협
○ 이 보고서에는 크게 키 관리, 거래 검증 및 합의, 참여자 권한관리, 블록체인 SW보안, 서비스보안으로 총 5가지로 보안 위협을 분류하였고 이에대한 총 12개의 취약점에 대한 정보를 담고있습니다.
1. 키관리
- 키 도난 및 분실
- 취약한 키 생성
2. 거래 검증 및 합의
- 합의 가로채기
- 사이드 체인 내 비정상 거래 발생
3. 참여자 권한 관리
- 개인정보 침해
- 권한 오남용
4. 블록체인 S/W 보안
- 블록체인 S/W 취약점
- 스마트 컨트랙트 취약점
5. 서비스 보안
- 분산 서비스 거부 공격
- 가용성 저하
- 비정상거래 탐지 불가
- 상호 운용성 미제공
아래의 정리 내용은 본 내용을 옮겨 적지 않고 보고서를 읽고 제가 아는 범위의 지식 내에서 이해한 내용입니다.
1. 키관리
(1) 키 도난 및 분실
○ 이 내용은 사용자의 Private Key가 공격자에 의해 도난되거나 실수로 분실될 경우에 발생하는 문제점에 대한 내용입니다.
○ 참여자는 본인만의 고유한 Private Key를 사용함으로써 예를들어 Transaction을 발행할 때 이를 입증하는 전자서명을 하여 Transaction을 발행하고 증명하는 수단으로 사용합니다.
○ 이 Private Key가 참여자의 단말의 저장소에 저장이 되는데 이 때 Plain Text로 저장이 되거나 서명 같은 작업에 사용된 이후에도 메모리에 남아있는 경우 공격자가 접근이 가능할 수 있습니다.
○ 이렇게 될 경우 공격자에 의해 자산 또는 기밀 거래가 유출이 되는 문제가 발생할 수 있습니다.
○ 또한 참여자가 본인의 Private Key에 대한 접근 권한을 상실하거나 분실한 경우에는 본인의 자산을 사용할 수 없게 되는 문제가 발생할 수 있습니다.
○ 이전에 정리한 메디블록 인터뷰 Q&A중에 이러한 취약점에 대한 문제에 대해 질문하였는데 메디블록 대표분도 이 문제는 모든 블록체인 가상화폐 시스템의 공통 문제이기 때문에 협력하여 추후에 해결방안을 마련해 나가야 할 것 같다고 했던 내용이 있었던 것 같습니다.
(2) 취약한 키 생성
○ Private Key생성 방식이 안전하지 않을 경우 'Key 재생성 공격'을 통해 공격자가 참여자의 Key를 획득할 수 있습니다.
○ 안전하지 않다는 것은 난수 생성 방식의 문제로 공격자가 예측을 통해 참여자의 난수 값을 추측할 수 있는 일이 가능하여 무작위 대입 공격을 통해 키를 재생성하는 공격이 가능한 경우를 말합니다.
○ 또한 당장은 아니지만 양자 컴퓨팅에 의해 무작위 대입공격이 빠르게 이루어져서 공격할 수도 있습니다.
○ 비트코인에서 Private Key 생성에 관한 내용은 Steem의 정리글 링크를 남겨두겠습니다. ( *링크: https://steemit.com/kr/@easyblockchain/2kjjep)
2. 거래 검증 및 합의
(3) 합의 가로채기
○ Public Block Chain에서는 주로 참여자 중 과반수의 동의로 합의를 도출하기 때문에 공격자가 과반수를 장악할 경우 거래 유효성 검증 프로세스를 조작할 수 있습니다.
○ 비트코인 White Paper를 정리하면서 본 51%공격이 바로 이러한 내용인데 정리할 때 51% 공격은 투자비용이 천문학적으로 들어가야 가능하기 때문에 사실상 불가능하다라고 정리하였는데 이 보고서에서는 클라우드 컴퓨팅 등 인프라 확보 비용이 점차 저렴해져서 공격이 현실화될 가능성이 존재하다고 합니다.
(4) 사이드 체인 내 비정상 거래 발생
○ 사이드 체인은 메인체인과 상호연계하여 가상화폐 호한성을 제공하거나 스마트 컨트랙트, 거래 기밀성 등의 추가 기능을 제공하는 블록체인입니다. 링크에 있는 발표자료를 보시면 이해하는데 도움이 될 것 같습니다. (링크: https://steemit.com/kr/@tenihil/9-28)
○ 이러한 사이드 체인에 유효하지 않은 자산이 이전되어 거래되거나 중단될 시 메인체인으로 Transaction들을 반영해야 하는데, 이 때 발생하는 메인체인의 부하 문제를 다루고 있습니다.
3. 참여자 권한 관리
(5) 개인정보 침해
○ 이 문제는 Public Block Chain에서 발생하는 문제입니다. 참여자는 본인이 참여하지 않은 거래까지 모든 거래 이력을 다운로드 할 수 있고 이를 통해 거래 추적이 가능하여 개인정보 침해가 발생할 수 있는 문제가 있습니다.
○ Private Block Chain의 경우에는 일반적으로 거래정보의 기밀성이 가능하지만 참여자 권한관리가 미흡할 경우 개인정보 침해가 발생할 수 있다고 합니다.
○ Private Block Chain 구성이 가능한 Hyperledger fabric, R3 Corda는 각각 Channel, Notary service 기능을 통해 거래 기밀성을 보장한다고 합니다.
○ 또한 블록체인은 삭제할 수 없기 때문에 '잊혀질 권리' 문제가 발생할 수 있습니다.
(6) 권한 오남용
○ 블록체인은 분산구조이기 때문에 참여자 권한 관리 등의 통제가 모든 참여자에게 일관성 있게 적용되는 것을 보장하기 어렵다고 합니다. 이부분은 Private Block Chain에서 발생할 수 있는 문제인 것 같습니다.
○ 따라서 일관적이지 않은 통제로 인해 권한 오남용이 발생하여 보안사고가 발생할 수 있다고 경고하고 있습니다.
4. 블록체인 S/W 보안
(7) 블록체인 S/W 취약점
○ 이부분에 대해서는 이더리움의 Parity 취약점 사건을 예로 들수 있을 것 같습니다. (링크: https://steemit.com/kr/@ironpark/15-parity)
○ 대부분 S/W는 오픈소스이기 때문에 안전할것이라 생각되지만 알려지지 않은 취약점이 존재할 수 있다고 합니다.
○ 또한 S/W 보안 패치가 분산 구조에서 모든 참여자에게 적용되었음을 보장하기 힘든 부분도 존재합니다.
(8) 스마트 컨트랙트 취약점
○ 스마트 컨트랙트는 개발자의 코딩으로 작성되며 따로 보안성 검증 절차 및 기능은 존재하지 않기 때문에 보안적 결함이 존재할 수 있고 Contract가 복잡할수록 발생 가능성이 높다고 합니다.
- '16.5월 발표된 보고서(P. Vessenes, "Ethereum Contracts are Going to be Candy for Hackers")에 따르면 인터넷에 공개되어 있는 Ethereum Smart Contract 템플릿 코드 중 많은 수에 심각한 취약점이 존재한다고 합니다.
- '16.6월 이더리움 DAO사건이 이 취약점의 예시입니다. (자세한 내용 링크 : http://www.seunghwanhan.com/2016/07/the-dao.html)
5. 서비스 보안
(9) 분산 서비스 거부(DDoS) 공격
○ 공격자는 블록체인의 분산된 노드를 통해 블록체인 네트워크에 대량의 스팸거래를 발생시켜 거래 유효성 검사 시간을 지연시켜 블록체인 전체에 대한 DDoS공격을 수행할 수 있습니다.
- 실제로 '16.3월 평균보다 높은 수수료를 제시한 대량의 스팸거래로 인해 비트코인 서비스가 거의 중단되었다고 합니다.
- 수수료를 높게 제시하면 우선적으로 포함되기 때문에 평균 적인 수수료를 제시한 정상거래들은 DDoS 현상이 발생하는 원리입니다. 이후 비트코인 채굴자는 비정산적으로 높은 거래 수수료를 제시하는 거래같이 의심되는 거래에 대해 우선순위를 낮추어서 유사한 공격에 대응하였습니다.
○ 또한 DDoS 공격을 위한 스팸거래 요청은 악성코드에 감염된 참여자에 의해 발생할 수 있으며 분산구조로 인해 전체 참여자에 대한 악성코드 감염 여부 확인 등 대응이 어렵습니다.
○ Private Block Chain의 경우 의심 거래를 발생시키는 참여자를 네트워크에서 차단하는 등의 조치가 가능하지만 공격자가 많은 노드를 장악할 경우 여전히 DDoS 공격이 가능합니다.
(10) 가용성 저하
○ 블록체인 참여자가 급증하여 Transaction 수도 많아지고 누적도 많이 쌓이게 되면 이후에 새로운 Transaction이 추가되는데 더 많은 시간과 관리 비용이 증가하여 가용성이 저하된다는 설명입니다.
- Full Node를 보관하고 관리하여야 하는 금융회사는 거래 정보량이 급격하게 늘어나게되면 이에 따른 추가 서비스 확대가 제한적일 수 있습니다.
- 또한 과반수의 동의를 얻는 과정에서 과반수가 점점 커지기 때문에 노드가 늘어날 수록 새로운 Transaction에 대한 처리시간이 증가할 수밖에 없을 것이고 이에따른 서비스 개발도 제한적으로 될 것이라고 설명되어 있습니다.
(11) 비정상 거래 탐지 불가
○ Public Block Chain의 경우 참여자의 익명성으로 인해 거래자 식별이 불가능하기 때문에 사기거래, 자금세탁 및 테러자금 조달등의 비정상거래를 탐지해내기 어렵습니다.
○ 거래소에서 환전을 위해 자신의 은행계좌 사용하기 때문에 이 계좌를 추적하는 것은 가능하지만 거래가 발생하는 것을 사전에 차단하기는 어렵습니다.
○ 또한 금융 사기 및 고객 실수로 인한 비정상거래에 대해 거래의 유효성을 입증받아 처리될 경우 다시 복구하기 어렵습니다.
○ 이외에도 다음과 같은 비정상거래등이 존재합니다.
- 이중지불 : 자신이 지불한 대가를 거래가 성립되고 나서 다시 되돌리거나 사용한 대가를 재활용하는 방법
- 유출된 Key 서명 : 공격자에 의해 Key가 유출된 정상 참여자의 키로 서명된 거래
- 정책 미준수 거래 : 서비스 정책에 어긋난 거래로서 프라이빗 블록체인에서 참여자가 허가받지 않은 서비스에 대하여 거래를 요청한 경우에 해당
(12) 상호운용성 미제공
○ 블록체인 간 자산이전, 기능 확장, 연계 서비스 개발 시 블록체인 간 호환성이 요구되거나 상호운용성이 제공되지 않아 예상치 못한 보안 위협이 발생가능하다고 하는데 아마 이부분은 사이드체인에서 발생할 수 있는 문제점과 유사한 것 같습니다.
○ 블록체인별 서로 다른 지갑 S/W 사용에 따른 호환되지 않는 키 생성 알고리즘, 거래 요청 및 통신 프로토콜등이 존재하며 표준 지갑 규격이 개발되고 논의되어야 할 것입니다.