
9월 5일, Odaily가 주최하고 36Kr Group이 전략적으로 공동 조직한 POD 회의가 베이징에서 열렸습니다. Chuangyu의 솔루션 부서 책임자인 Zhou Qipeng이 컨퍼런스의 보안 포럼에서 "스마트 계약 보안 상태 및 미래"라는 제목의 연설을 하도록 초대받은 것을 알고 있습니다.
공유에서 Zhou Qipeng은 스마트 계약의 생성 및 적용, 보안 사고 및 보안 위험 분석을 체계적으로 소개하고 스마트 계약의 대규모 소셜 적용에서 스마트 계약 보안을 처리하기 위한 전략을 제안했습니다.
Zhou Qipeng은 미래에 스마트 계약의 사회적 적용에 세 가지 주요 어려움이 있다고 말했습니다. 산업 응용 프로그램이 증가할 것입니다.높을수록 세 번째는 스마트 계약의 미래이며 개발자 외에도 비개발자도 작성할 수 있어 스마트 계약의 보안에 큰 도전을 가져올 것입니다.
이와 관련하여 Chuangyu "404" 보안 연구소는 일련의 스마트 계약 검증 시스템 "Haotian Tower"를 개발한 것으로 알고 있습니다. 이 시스템은 퍼블릭 체인, 얼라이언스 체인 및 기타 팀과 긴밀하게 협력하여 애플리케이션 계층에서 보안 보호 기능을 제공하고 스마트 계약 및 논리적 복잡성이 증가하는 애플리케이션 시나리오를 지원합니다.
다음은 연설의 전체 텍스트입니다. 즐기십시오.
오늘 제 연설은 네 부분으로 나누어져 있는데 첫 번째는 우리의 생각을 촉발시키는 스마트 계약에서 발생한 보안 사고에 대해 논의하고 왜 스마트 계약의 보안에 대해 논의를 시작해야 하는지에 대한 것입니다. 두 번째 부분에서는 스마트 계약의 보안 위험에 대해 간략하게 요약하고 이 문제를 모든 사람에게 설명합니다. 세 번째 부분은 블록체인 + 애플리케이션의 경우 스마트 계약의 보안에 관한 것입니다. 마지막은 앞으로 스마트 컨트랙트를 어떻게 할 것인지, 그리고 우리만의 아이디어와 제안도 내세운다.
첫 번째는 스마트 계약 보안의 현상 유지를 살펴보는 것입니다.
그 전에 스마트 컨트랙트라는 명사에 대해 설명을 드리고자 합니다. 스마트 계약은 블록체인의 핵심 기술 중 하나입니다. 스마트 컨트랙트라고 불리는 이유는 스마트 컨트랙트가 블록체인의 최상위 아키텍처에 내장된 블록체인에서 자동으로 실행될 수 있는 프로그램 코드이기 때문입니다. 그래서 우리는 블록체인 기술을 지금 누구나 사용하는 스마트폰 운영체제에 비유하거나, 블록체인의 기반 기술을 네트워크 분산 운영체제로 볼 수 있다면 스마트 컨트랙트를 실행하는 프로그램이라고 간단히 이해할 수 있습니다. 이 네트워크 분산 운영 체제에서. 따라서 스마트 계약은 정보화된 방식으로 계약을 전파, 확인 및 실행하는 계약입니다.
스마트 계약은 블록체인의 탈중앙화 특성을 기반으로 합니다., 제3자 없이 신뢰할 수 있는 거래를 허용하고 이러한 거래는 추적 가능하고 되돌릴 수 없지만 이러한 요소는 스마트 계약 기술의 발전을 촉진합니다. 스마트 계약의 궁극적인 목적은 원래의 종이 계약이나 계약 텍스트보다 더 나은 보안 솔루션을 제공하는 동시에 계약 위반과 그에 따른 분쟁을 줄여 거래의 효율성을 크게 향상시킬 수 있는 것입니다.
역사로 돌아가고 싶다면 이 개념은 1994년 과학자 Nick Szabo가 제안했습니다. 그 당시 인터넷은 아직 초기 단계였으며 스마트 계약이라는 아이디어 만 제안했습니다. 2008년에 블록체인 버전 1.0이 탄생하여 자연스럽고 신뢰할 수 있는 환경을 제공하지만 이 환경은 몇 가지가 부족하고 제3자가 실행하고 호출할 수 있는 더 많은 인터페이스를 제공할 수 없으므로 블록체인 1.0은 몇 가지 간단한 기능만 지원한다고 할 수 있습니다. 2014년 블록체인 버전 2.0이 출시되었는데, 이때 블록체인 1.0의 신뢰 환경 속성을 보유하면서 튜링 완전성을 지원하기 시작했고 개발자가 호출하고 실행할 수 있는 인터페이스를 설계했으며 시나리오 해결 가능성을 제공했습니다.
다음으로 스마트 계약이 실제로 실행된 후 생성된 쌍을 검토할 수 있습니다.전체 이력 프로세스에 상대적으로 큰 영향을 미치는 보안 사고, 이것은 Ethereum의 DAO 이벤트 인 2016 년에 일어난 일입니다.
2016년 6월 15일 공격 계약이 생성되었습니다. 6월 17일 공격이 시작되었고 Vitalik Buterin은 공격 사실을 알게 된 직후 중국 커뮤니티에 알렸습니다. TheDAO 가디언은 DAO 자산 전송 속도를 늦추기 위해 커뮤니티가 이더리움 네트워크를 차단하기 위해 스팸 거래를 보낼 것을 제안했습니다. 이후 Vitalik은 공식 블로그에 [긴급 업데이트: DAO의 취약점] 공지를 발표했습니다. 공격에 대한 세부 사항을 설명하고 소프트 포크 솔루션을 제안했으며 롤백은 없습니다. 트랜잭션 및 블록이 취소되지 않습니다. 소프트 포크는 블록 높이 1760000부터 시작하여 DAO 및 하위 DAO와 관련된 모든 거래를 유효하지 않은 거래로 간주하여 공격자가 27일 후에 도난당한 자산을 인출하는 것을 방지합니다. 그 후 자산을 회수하기 위한 하드포크가 있을 것입니다.
계약 자체가 어떻게 공격을 받는지 살펴보겠습니다. 먼저 좌측은 DAO 스마트 컨트랙트의 인출 기능이 작성된 코드 스니펫이고, 우측은 해커 공격 컨트랙트의 코드 스니펫이며, 공격 컨트랙트 실행 시 DAO 스마트 컨트랙트의 인출 기능은 DAO 스마트 계약은 외부에서 직접 호출할 수 있으며, 계층별로 연속적인 재귀 호출이 실행되어 해커가 공격 계약을 사용하여 계약의 외부 호출을 통해 원래 계약의 많은 디지털 자산을 전송할 수 있으므로 DAO 사건이 발생합니다. . 하드 포크가 발생했기 때문에 가장 큰 영향은 Ethereum의 퍼블릭 체인에 있습니다.
다음으로 일부 분석스마트 계약의 보안 위험。
스마트 컨트랙트 코드의 특징을 말씀드리자면 4가지로 요약해 보았습니다.
첫 번째는 계정 설계입니다.스마트 계약은 두 가지 유형의 계정을 설계했습니다. 하나는 공개-개인 키 시스템에 의해 제어되는 외부 계정이고 다른 하나는 계약 계정이라고 하며 코드 자체.
두 번째는 블록체인 2.0에 가스라는 것이 있다는 것입니다. 계약 코드가 복잡할수록 계약을 실행하는 동안 더 많은 가스를 사용해야 합니다. 이로 인해 문제가 발생하는데 호출자가 제공한 가스가 부족하면 계약에서 실행한 코드가 롤백되고 계약 호출자도 자체적으로 gasPrice를 설계할 수 있으며 채굴자는 더 높은 트랜잭션에 우선 순위를 부여합니다. gasPrice이므로 gasPrice를 상대적으로 낮게 설계하거나 너무 높게 설계하는 등의 경우에는 무리가 있습니다.
다음은 기능인데, 여러 기능이 포함된 기능인데, 첫 번째는 대체 기능(편집자 주: 스마트 컨트랙트를 호출할 때 지정된 기능을 찾을 수 없거나 기능이 전혀 지정되지 않은 경우 대체 기능이 호출됩니다. ), 그리고 동시에 자금을 받기 위한 transfer, send, call.value 등의 기능을 설계하고, 계약을 맺기 위한 selfdestruct 등의 기능도 있습니다.
마지막은 함수 호출로 기존의 호출 방식과 유사합니다.
다음으로 스마트 컨트랙트 언어의 특징을 살펴보자.
이 언어와 관련된 기능의 기본 가시성은 공개입니다.계약이 작성되는 한 기능은 디자인 권한이 없는 사용자에게 공개됩니다.
두 번째는 많은 수치 계산을 포함합니다.
세 번째는 세 가지 예외 처리 방법인 require, assert 또는 revert를 설계하는 것입니다. 그것들은 다릅니다.require는 일반적으로 함수 앞에 입력 변수와 협력 상태 변수가 조건을 충족하는지 확인하기 위해 작성되며 조건이 충족되어야만 실행됩니다. Assert는 함수의 내부 오류를 확인하고 오류가 발생하면 강제로 중지하도록 개발자 관점에서 함수의 끝에 작성되는 함수입니다. 되돌리기 기능은 더 특별하여 일부 유효하지 않은 코드를 발견하면 이전 상태를 모두 롤백합니다. 이 세 가지 기능에는 또 다른 차이점이 있습니다. 되돌리기는 반환될 수 있으며 계약이 실행되지 않으면 가스를 지불할 필요가 없습니다.
앞서 언급했듯이 계약 자체는 외부 계정과 계약 계정의 구분이 있으므로스마트 계약 위험의 첫 번째이자 가장 일반적인 문제는 액세스 제어 문제입니다.
이러한 상황은 특정 사용자만이 호출할 수 있도록 접근통제 기능이 설정되어야 합니다. 저는 일부 마이닝 기능을 호출할 수 있는 계약 사용자이지만 코드 프로세스에서 해커가 악의적인 계약을 작성하거나 공격 계약을 작성하여 모든 사람이 계약 소유자가 될 수 있도록 권한을 향상시킬 수 있습니다. 계약 내용 기능 또는 계약 계정 기능은 나중에 일련의 문제를 일으킬 것입니다.
다음은 소유자 생성자 오류의 예입니다.
생성자는 계약이 배포될 때만 호출되며 체인 자체에 연결되지 않습니다. 일반 함수는 임의로 호출할 수 있으며 코드도 블록체인에 작성됩니다. 데이터든 계약이든 모든 사람은 상황을 이해해야 합니다. 일단 체인에 있으면 모두 볼 수 있으므로 일반 기능이 체인에 작성된 후 모든 팀, 악의적인 해커가 참조하고 연구할 수 있습니다. 또는 흰 모자 .
간단한 코드 코밍을 해보자. 여기 생성자 Owner가 있다. 다음 함수로 정의된 함수에서 Owner 함수의 대소문자가 변경된 것을 볼 수 있다. 대소문자 오류로 인해 이러한 구조가 발생한다. 일반 공공 기능.
다음으로 스마트 컨트랙트에서 생각하는 것을 정리했습니다.현재 보안 위험이 비교적 큰 네 가지 이유가 있습니다.
우선 첫 번째는 스마트 컨트랙트가 전체 블록체인 아키텍처에서 중간 프로토콜 계층의 최상위 계층에 속한다는 것입니다. 계층 응용 프로그램 및 상위 계층 응용 프로그램 자체에 보안 문제가 있습니다.확률, Windows 운영 체제 기반의 이전 응용 프로그램에 따르면 문제의 확률이 상대적으로 높을 것입니다.
두 번째는 언어의 발달 시간이 매우 짧고 언어 자체가 완벽하지 않다는 것입니다. 지금까지 이 언어 버전은 0.4.24 정도인데, 일반적으로 공개할 수 있는 개발 언어 버전은 모두 V1.0이나 V1.1 등으로 되어 있어 버전 자체의 개발 시간이 오래 걸린다. .
세 번째 문제는 국내 프로젝트 측면에 속하는데, 현재 경험이 부족하고, 언어 자체의 개발 시간이 매우 짧으며, 공식 릴리스를 포함하여 솔리디티 언어를 기반으로 한 예제나 데모 표준 문서가 상대적으로 적습니다. 경험이 적고 언어 기능에 익숙하지 않은 경우 전통적인 인터넷 개발 소프트웨어를 사용하여 블록체인을 개발할 것이며 보안 경험이 부족하면 문제가 발생합니다.
마지막으로 현재 스마트 컨트랙트 코드 검토에 대한 완벽한 기준은 없으며, 그러한 기준이 없다면 여전히 모든 사람이 명확하지 않은 부분이 많으며 더 많은 이상한 문제가 발생할 것입니다.
다음은 공개 소스 프로젝트인 DAPS의 통계와 발표된 분산 응용 프로그램의 보안 문제를 보여주는 것입니다. 재귀 호출 취약성, 액세스 제어, 정수 오버플로, 확인되지 않은 기본 호출, 임의 오류 등과 같은 10가지 범주가 있습니다.
마지막 이유는 스마트 계약 자체도 최상위 응용 프로그램이고 자체 보안 문제를 포함하여 아직 알려지지 않은 영역이 많기 때문에 더 많은 프로젝트 당사자, 더 많은 화이트 햇, 더 많은 보안 벤더가 협력하여 지속적으로 기술, 더 강력하고 더 많은 소셜 애플리케이션을 제공하는 상위 계층 애플리케이션도 있습니다.
다음으로 스마트 계약의 향후 적용 시나리오에 대해 큰 추측이나 기대를 하고 싶습니다. 우선, 이제 블록체인이든 스마트 계약이든 소셜 애플리케이션과 결합되어 실제로 우리 삶의 일부와 통합되었습니다.
우선, 첫 번째 금융 속성은 홍콩의 Ant Financial의 이전 뉴스와 같이 블록체인 기술을 사용하여 현재 천천히 진행되고 있는 보험, 증권 및 주식 등록과 같은 일부 원래 금융 애플리케이션을 포함하여 국경 간 송금을 수행합니다. 모양.업. 제2의 사물인터넷 어플리케이션, 이제 사물인터넷과 블록체인 기반의 렌터카 어플리케이션이 점차 등장하고 있습니다. 세 번째 공급망은 Baidu가 아침에 소개했을 때 Baidu 백과사전의 문서 편집 및 추적도 상륙 건설 과정에 있습니다. 공공 서비스 분야를 포함한 에너지 분야의 P2P 편의 공유 분야는 우리 문화, 교육, 재산권, 의료 등의 분야에서 점차 등장하고 있습니다.
아래에 몇 장의 사진을 보여주고 먼저 전통적인 송금과 블록체인 송금의 차이점을 소개하겠습니다. 전통적인 송금의 경우 국내 송금은 괜찮고 속도도 매우 빠르지만 일단 해외 국경 간 송금을 포함하게 되면 효율성이 매우 낮아 중개은행과 청산망이라는 문제가 발생하게 되는데 신뢰 문제를 해결하면 효율성이 떨어집니다.
이 시나리오를 블록체인에 놓고 스마트 계약으로 구현하면 체인 자체의 탈중앙화 신뢰 메커니즘을 통해 스마트 계약으로 자산 이전을 실현할 수 있으며 자산에서 언제든지 정산할 수 있습니다. 앤트파이낸셜이 처음 할 때는 필리핀에서 홍콩으로 송금하는 데 수십 초 정도 걸렸다.
두 번째 응용 분야는 전통적인 공급망 금융에 있으며, 이전에 노출된 백신 사건과 같이 일부 국내 기관이 블록체인 기술을 과감하게 사용하여 상품의 출처를 추적하는 것을 보았습니다. 소스인 백신 제조사는 블록체인 기술로 제어할 수 없지만 전체 백신은 콜드체인으로 운송되고 각 모니터링 스테이션과 각 병원의 데이터를 업로드하여 중간에 있는 일부 개인의 악의적인 행동을 방지할 수 있으므로 결과적으로 전송 중 데이터 손실 손실 및 변조.
세 번째는 전통 물류에 대한 것입니다. 알고 보니 전통 물류에는 많은 문제점과 상호 불신이 있었습니다. 이전에 타오바오를 사용했을 때 가장 큰 문제는 구매자가 먼저 지불했는지 판매자가 먼저 배송했는지였습니다. 나중에 Alipay가 나타나 세 번째 문제를 해결했습니다. -파티 트러스트 문제.집을 사서 그 돈을 중간 플랫폼에 줘. 온라인 쇼핑과 결제 시나리오를 결합할 수 있는 블록체인이 있다면 상호 불신의 문제를 해결할 수 있으며 구매자는 상품을 받는 순간 체인에 주문 정보를 제출할 수 있습니다. 구매자의 계좌에 있는 돈은 스마트 계약을 통해 판매자의 계좌로 직접 송금될 수 있으며, 개인 정보를 유출하는 택배 정보를 모두가 접하게 되는 지금을 포함하여 주문 변조 및 개인 정보의 위험을 포함하여 숨겨진 데이터의 정보 ID입니다.
백신, 병원, 의료 시스템의 경우 모든 제약 공장의 약품 정보를 체인에 업로드할 수 있으며 약국에서 판매하는 알약을 체인에서 확인할 수 있습니다.환자는 의사와 연결될 수 있으며 앱을 사용하여 알 수 있습니다. 과거 투약 정보 및 확인된 병원을 포함한 건강 정보를 모두 찾을 수 있습니다.
예전에 대담한 환상을 만들어 봤는데 한번 볼까요?미래에 스마트 계약의 상태는 어떻게 될까요?
첫 번째는 블록체인 + 응용 프로그램으로 미래에 광범위한 산업을 포함할 수 있습니다.Baidu의 블록체인 플랫폼은 오늘 아침에 몇 가지 기능을 소개했습니다.첫 번째는 저작권과 결합됩니다.많은 상업 사진이 체인에 업로드될 것입니다. 미래에는 우편 서비스, 게임 등을 포함하여 디지털 음악 저작권과 디지털 영화 저작권이 있을 수 있으며, 이는 우리 삶과 점점 더 깊이 통합되고 점점 더 많은 산업을 포함합니다.
두 번째는 산업이 많아질수록 각 산업마다 고유한 특성이 있어 산업 적용의 복잡도가 점점 높아지고 있으며 현재 스마트 계약의 코드는 300~500줄입니다. , 계약에는 수천 줄 또는 수만 줄의 코드가 있을 수 있으며 코드 논리가 복잡할수록 논리적 허점과 보안 위협이 더 많이 발생합니다.
마지막 시나리오는 아직 개발자가 상대적으로 적고 앞으로 점점 더 많은 개발자가 성숙해질 것이며 앞으로는 개발자뿐만 아니라 일반인을 위한 많은 스마트 계약 응용 프로그램이 제공될 것입니다. 우리 사람들은 지금 APP를 사용하는 것처럼 단순히 데이터, 수량 또는 가격을 입력하면 자발적으로 스마트 계약을 생성할 수 있습니다. 사람들. 그래서 그들은 현재 사용되는 방식으로는 현실적이지 않은 문제를 점점 더 많이 만들고 있습니다.
우리는 Chuangyu 404 실험실도 이전 소개와 결합된 것을 알고 있습니다.앞으로 더 광범위하고 더 복잡한 응용 프로그램이 있을 것으로 예상되며 더 많은 스마트 계약 시나리오가 있을 것으로 예상됩니다.우리는 스마트 계약 스마트 검증을 설계하고 개발했습니다. 수동 감사의 경우 자동화 및 인텔리전스를 통해 AI를 통해 많은 퍼블릭 체인 프로젝트 당사자와의 심층 통합, 전체 체인에서 생성된 스마트 계약 표준 및 미래에 생성되는 스마트 계약이 사용하는 응용 프로그램을 더 건강하고 강력하게 만들고 나타나는 보안 허점을 줄여 이러한 스마트 계약이 우리 삶에 편리함을 제공하고 경제적 손실을 줄일 수 있습니다.
후자의 두 개는 현재 내부 버전의 스크린샷입니다.우리는 이름을 Haotian Tower로 정의합니다.이러한 제품 또는 시스템을 통해 더 많은 스마트 계약 개발자 및 사용자에게 안전한 서비스와 보증을 제공할 수 있습니다.
오늘의 소개는 여기까지입니다 앞으로 기술에 대해 고민하는 학생이나 프로젝트 파티가 있었으면 좋겠습니다 관심있으신 분들은 저희와 소통해주시면 감사하겠습니다 감사합니다