
편집자 주: 이 기사는 Alpha Commune(ID: alphastartups), 저자: Alpha Commune에서 승인을 받아 게시한 기사입니다.
1. 소개
2018년 8월 6일, Tencent Security는 "2018년 상반기 블록체인 보안 보고서"를 발표했습니다. 이 보고서는 현재 전 세계에 1,600개 이상의 암호화된 디지털 통화가 있음을 보여줍니다. 보안 문제에 27억 달러 이상의 비용이 들었고, 블록체인 보안 사고로 인한 손실 금액은 여전히 증가하고 있습니다. IOTA의 "이메일 도어 사건", USDT의 "허위 충전 취약점", EOS의 "레인보우 공격", BEC 및 SMT의 "정수 오버플로 공격 취약점", BTG의 "51% 컴퓨팅 파워 공격" 등 일련의 이벤트가 촉발되었습니다. 모두의 관심과 생각.
블록체인 보안에 대한 주요 위협은 무엇입니까? 스마트 계약의 보안 문제가 왜 그렇게 중요하고 많은 사람들의 관심을 끌고 있습니까? 스마트 계약에는 몇 가지 보안 유형이 있습니까? 현재 주류 보안 모니터링 방법은 무엇입니까? 가장 효과적인 방법은 무엇입니까? 모든 사람이 안전하고 버그 없는 스마트 계약 코드를 얻을 수 있는 방법은 무엇입니까?
이러한 일련의 이슈에 대해 Alpha Commune은 SECBIT의 설립자인 Guo Yu를 인터뷰하여 블록체인 산업의 보안 이슈와 주류 솔루션을 체계적으로 소개했습니다.
2. 6가지 유형의 블록체인 보안
이미지 설명

블록체인 2.0 버전 기술 아키텍처
첫 번째 계층, 암호화.암호화는 해시 알고리즘, 디지털 서명, 난수 등 블록체인의 기반이 되는 지원 기술입니다. 이러한 암호화 기술에 문제나 허점이 있으면 이를 기반으로 구축된 블록체인 전체에 대한 신뢰가 무너집니다.
현재 암호화 기술은 상당히 성숙했지만 거대한 허점의 가능성은 상대적으로 적지만 여전히 일부 프로젝트에 문제가 있음을 배제하지 않습니다. 2017년 7월 15일, "사물 인터넷의 세계 최초 통화"로 알려진 IOTA는 MIT 산하 학술 연구 그룹인 DCI로부터 IOTA 팀에 약점이 있음을 상기시키는 이메일을 받았습니다. IOTA의 해시 알고리즘 Curl-P, DCI 시스템에 대한 성공적인 공격을 수행하여 사용자 자금을 훔칠 수 있습니다. IOTA는 이후 DCI의 이메일에 대해 의문을 제기하고 반박했지만 지금까지 이 취약점으로 인해 자금을 도난당한 사용자는 없었지만 이 사건은 암호화 기술 측면에서 IOTA 및 기타 프로젝트의 보안에 대해 모두의 우려를 불러일으켰습니다.
두 번째 계층은 사용자 개인 키의 생성, 사용 및 보호입니다.사용자가 블록체인에 참여하기 위한 인증서는 한 쌍의 공개키와 개인키이며, 각 개인이 블록체인을 통해 상호 작용하기 위한 전제는 안전한 개인키를 가지고 있고 자신의 개인키를 보관할 수 있다는 것입니다. 개인 키의 재판 및 보호 질문은 매우 중요합니다.
올해 7월 EOS 개인키 생성 툴의 보안 위험으로 인해 해커들이 생성된 개인키에서 허점을 찾아 '무지개' 공격을 감행해 계정 디지털 자산을 도용하고 수천만 달러의 손실을 입었다. 디지털 자산.
세 번째 계층, 노드 시스템 보안 취약성.이 문제는 기존 보안의 범주에 속하며, 예를 들어 블록체인 노드는 버퍼 오버플로와 같은 기존 보안 취약점을 가질 수 없습니다. 또한 블록체인 노드의 구현은 블록체인의 합의 프로토콜을 충실하고 정확하게 구현할 수 있어야 하며 노드는 노출되어서는 안 되는 API 인터페이스를 노출할 수 없으므로 해커가 방해 없이 일부 핵심 노드 정보를 얻을 수 있습니다. Ethereum과 EOS 모두 심각한 보안 취약점에 노출되었습니다. 보안의 이 부분도 중요합니다.
네 번째 계층은 기본 합의 프로토콜입니다.현재 시장에 나와 있는 주류 블록체인 합의 프로토콜에는 POW, POS, DPOS 및 PBFT가 포함됩니다. 기본 합의 프로토콜은 블록체인의 전체 구조가 신뢰할 수 있는지 여부와 진정으로 합의를 통해 블록체인을 형성할 수 있는지 여부를 결정합니다. 합의 프로토콜 자체가 이론이나 기술 구현에서 단순하지 않기 때문에 진정으로 안전하다고 입증된 합의 프로토콜은 많지 않습니다. Bitcoin의 POW와 같이 오랫동안 검증된 합의 프로토콜은 비교적 안전합니다. 합의 프로토콜에는 보안, 분산화 및 효율성이라는 불가능한 삼각형이 있으며 이 세 가지는 동시에 두 가지만 달성할 수 있습니다. 효율성을 추구한다면 탈중앙화를 희생하거나 보안을 희생해야 합니다.
블록체인 시스템의 합의 프로토콜이 안전한지에 대한 질문은 매우 중요합니다.
이미지 설명
미국 드라마 '실리콘밸리' 속 '컴퓨팅 파워 51% 공격'
다섯 번째 계층은 스마트 계약입니다.스마트 계약은 계약 참가자가 이러한 약속을 이행할 수 있는 계약을 포함하여 디지털 형식으로 정의된 일련의 약속입니다. 모든 참가자는 소위 DAPP(탈중앙화 애플리케이션)라고 하는 애플리케이션 계층에서 계약을 생성할 수 있습니다. 가장 많은 보안 문제가 발생하는 곳이기도 합니다.
스마트 계약 보안 위험에는 세 가지 측면이 포함됩니다.첫째, 허점이 없습니다.계약 코드에 일반적인 보안 허점이 있습니까?둘째, 믿을만한가.허점이 없는 스마트 계약은 안전하지 않을 수 있으며 계약은 공정하고 신뢰할 수 있어야 합니다.셋째, 특정 규범과 절차를 준수합니다.계약서 작성을 위해서는 디지털 형태의 약속 정의가 필요하기 때문에 계약서 작성 프로세스가 충분히 표준화되지 않으면 엄청난 위험이 숨어 있기 쉽습니다.
현재 시장에 나와 있는 많은 스마트 컨트랙트가 보안 취약점을 가지고 있습니다.예를 들어 6월 3일 SECBIT는 이더리움에서 동일한 오류가 있는 81개의 컨트랙트를 발견했습니다.ERC20 토큰 컨트랙트의 transferFrom 기능에는 엄청난 위험이 숨겨져 있습니다.한 번 배치되면 6월 6일 SECBIT는 ERC20 토큰 계약 FXE가 비즈니스 로직 구현에 허점이 있음을 발견했습니다.완전히 제로 위험.
블록체인 산업 종사자, 스마트 계약 사용자 또는 암호화폐 소유자로서 암호화 및 스마트 계약 프로그래밍에 대한 해당 지식을 습득해야 하며 금융 보안 계약 및 공개 및 개인 키와 관련된 코드를 임의로 복사하여 사용해서는 안됩니다. 악의적인 공격자가 심각한 취약점이 있는 코드를 인터넷에 공개적으로 유포하고 기술 개발 능력이 부족한 조직이 이를 사용하도록 유도한다면 사용자에게 치명적인 타격과 돌이킬 수 없는 손실을 입힐 것입니다.
여섯 번째 계층은 인센티브 메커니즘의 설계입니다.스마트 계약에서 협업을 완료하려면 일반적으로 해당 경제적 인센티브 메커니즘을 설계해야 합니다. 경제적 인센티브는 블록체인 기술에서 매우 획기적인 개념입니다. 진정으로 건강하고 활기찬 블록체인 생태계에는 좋은 인센티브 메커니즘이 필요합니다. 그러나 경제적 인센티브의 설계가 충분히 안전하지 않고 전형적인 폰지류 게임과 같이 생태계가 구축되지 않을 수 있으므로 모두가 경계해야 합니다.
3. 스마트 컨트랙트의 세 가지 주요 이슈
위에서 소개한 6계층 블록체인 보안 문제는 모두 해당 기술 수준에 따라 구분되며, 기술 수준이 낮을수록 더 안정적입니다.
스마트 계약은 상대적으로 유연하고 누구나 생성할 수 있기 때문에 상대적으로 보안 문제가 발생하기 쉽습니다.
모든 사용자가 합의를 기반으로 계약을 작성할 수 있으며 모든 일반인이 특정 법률에 따라 계약을 작성할 수 있는 것처럼 이 법률은 합의 메커니즘(플랫폼)이며 이 계약에도 내부 제약이 있습니다. , 모든 조치는 계약 조건에 따라 수행되어야 합니다. 따라서 스마트 계약의 보안 위험은 사용자의 재산 손실과 직접적으로 관련됩니다.
지금까지 SECBIT은 시장에서 스마트 계약과 관련된 세 가지 주요 문제점을 발견했습니다.
첫째, 정수 오버플로로 표시되는 보안 허점입니다.보안 취약점은 대개 코드를 작성한 사람에 의해 우연히 도입되어 계약의 일부 기능적 부분이 실패할 수 있습니다.최악의 경우 해커 공격으로 이어져 사용자가 코인을 잃고 해커가 많은 코인을 생성하기도 합니다. 허공에서. 예를 들어 BEC, SMT, EDU는 정수 오버플로 보안 취약점으로 인해 해커의 공격을 받아 통화 가치가 0이 되었습니다.
둘째, 스마트 계약 권한 제어.일반적으로 관리자는 스마트 계약으로 설정되며 관리자는 일반적으로 슈퍼 권한을 가지고 있습니다.이 유형의 계약은 관리자의 개인 키를 도난당하면 막대한 손실을 입기 쉽기 때문에 상대적으로 큰 보안 위험이 있습니다. . SECBIT의 불완전한 통계에 따르면 상위 570개의 토큰 계약 중 342개의 계약이 관리자만 호출할 수 있는 기능(Only Owner)을 가지고 있으며 많은 계약에는 코인 발행, 코인 소각, 계정 동결, 이체 종료 및 기타 기능이 있습니다. 과도한 권한.
올해 7월 10일 암호화폐 거래 플랫폼 Bancor는 공격을 받아 미화 1,250만 달러 상당의 이더리움, 미화 1,000만 달러 상당의 Bancor 토큰, 미화 100만 달러 상당의 Pundix 토큰을 잃었다고 주장했습니다. 분석 결과, Bancor 플랫폼의 도난은 BancorConverter 계약과 관련이 있는 것으로 밝혀졌으며 공격자(해커/내부자)는 관리자 계정의 개인 키를 획득하고 관리자의 ID를 사용하여 사용자의 토큰을 훔쳐 막대한 피해를 입혔습니다. 사용자.손실.
셋째, 규범적 문제.현재 많은 스마트 계약 구현을 위한 통일된 사양이 없습니다. 스마트 계약은 쌍방향 방식의 다중 협업으로, 계약이 표준화되지 않으면 다른 사람들이 계약의 동작을 오해하기 쉬워 많은 보안 문제가 발생합니다.
예를 들어, 한 기관에서 실시한 불완전한 통계에 따르면 Ethereum 토큰, USDT 등을 포함하여 올해 속속 발생한 "허위 충전" 사건은 시장에 있는 3,619개의 단일 토큰 계약이 다음과 같은 위험이 있음을 보여줍니다. "가짜 재충전" 취약점.그 중에는 잘 알려진 토큰이 많이 있습니다.
정상적인 상황에서 충전 과정에서 이체에 실패하면 계정에 충전되지 않으며 계정 잔액은 여전히 0입니다. 다만, 계약서에 "허위 충전" 허점이 있는 경우, 이체 실패 시 시스템은 충전 실패(값)를 표시하지 않으며, 거래소는 그 결과를 충전 성공으로 오판하게 됩니다. 해커가 이 허점을 발견하면 계속해서 "거짓" 충전을 한 다음 돈을 인출하여 거래소에 직접적인 손실을 입힐 것입니다.
4. 공식 검증의 중요성
현재 시장에서 스마트 계약 보안 문제에 대한 세 가지 주요 검사 방법이 있습니다.첫 번째는 테스트, 두 번째는 감사, 세 번째는 공식 검증입니다.이 테스트에서는 정수 오버플로 취약성 및 기타 문제가 있는지 여부를 감지하기 위해 프로그램이 다양한 가능한 입력을 통해 자동으로 실행되어야 합니다. 그러나 이 테스트는 일반적으로 100% 커버하는 것이 불가능하며 누락이 있어야 합니다. 감사는 전문가의 전문지식에 의존하여 감사하는 것인데 아무리 전문적인 전문가라도 누락이 있을 수 있습니다.처음 두 가지 전통적인 방법은 계약에 허점이 없다는 것을 보장할 수 없지만 공식 검증은 이를 수행할 수 있습니다.
공식 검증은 세 가지 유형의 문제를 해결할 수 있습니다.첫 번째 범주는 안전하고 완벽합니다.수학적 추론 방법을 통해 계약의 모든 동작을 캡처하고 커버하여 모든 가능성을 포괄하여 계약에 허점이 없도록 합니다.두 번째 범주는 신뢰할 수 있습니다. 개방적이고 투명합니다.계약 작성자는 자신이 한 작업을 설명해야 할 뿐만 아니라 코드가 수행하고 있음을 모든 사람에게 증명해야 합니다. 이것은 현재 공식적인 검증을 통해서만 가능합니다.세 번째 범주는 규범적 문제입니다.위에서 언급한 허위 충전 취약점은 이더리움의 ERC20 사양이 매우 모호하고 불완전하기 때문입니다. 어떻게 하면 완벽하게 쓸 수 있나요? 이를 위해서는 계약서의 명세를 자연어나 텍스트로 기술할 수 없으며 수학적 논리 언어로 공식화하고 엄격하게 정의해야 합니다.
형식검증은 이미 산업계, 특히 안전 시스템과 관련된 분야에서 많은 응용 사례를 가지고 있습니다. 오랫동안 기능과 효과를 얻었으며 보안 업계 전문가가 보증합니다.
현재 공식 검증에는 모델 확인 및 연역적 추론이 포함됩니다. SECBIT은 연역추리 분야에서 10년 이상의 과학적 연구 성과와 공학적 경험을 축적했으며, 그 기술은 상대적으로 세계를 선도하고 있습니다.
Zeppelin 및 Ethereum 공식 웹 사이트와 같이 상대적으로 권위 있고 안전한 회사는 문제가 있는 스마트 계약 코드를 게시했습니다. 권한에 의존하지 않고 모두에게 공개되는 보다 신뢰할 수 있는 스마트 컨트랙트 코드베이스가 있다면 이 문제에 대한 좋은 해결책이 될 것입니다. 이에 SECBIT은 많은 노력을 기울여 현재 누구나 무료로 사용하기 편리한 세계 최초의 공신력 있는 오픈소스 스마트 컨트랙트 코드 라이브러리를 구축하고 있습니다.