KR20210041310A - 스마트 컨트랙트 검증 장치 및 방법 - Google Patents

스마트 컨트랙트 검증 장치 및 방법 Download PDF

Info

Publication number
KR20210041310A
KR20210041310A KR1020190123850A KR20190123850A KR20210041310A KR 20210041310 A KR20210041310 A KR 20210041310A KR 1020190123850 A KR1020190123850 A KR 1020190123850A KR 20190123850 A KR20190123850 A KR 20190123850A KR 20210041310 A KR20210041310 A KR 20210041310A
Authority
KR
South Korea
Prior art keywords
verification
invariant
unit
condition
smart contract
Prior art date
Application number
KR1020190123850A
Other languages
English (en)
Other versions
KR102269174B1 (ko
Inventor
오학주
소순범
이명호
Original Assignee
고려대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 고려대학교 산학협력단 filed Critical 고려대학교 산학협력단
Priority to KR1020190123850A priority Critical patent/KR102269174B1/ko
Publication of KR20210041310A publication Critical patent/KR20210041310A/ko
Application granted granted Critical
Publication of KR102269174B1 publication Critical patent/KR102269174B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/401Transaction verification

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • Software Systems (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Finance (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

스마트 컨트랙트 검증 장치 및 방법에 관한 것으로 스마트 컨트랙트 검증 장치는 적어도 하나의 불변식 후보를 포함하는 불변식 후보군을 생성하는 불변식 처리부 및 컨트랙트의 적어도 하나의 검증 대상을 획득하고, 상기 불변식 후보를 이용하여 상기 적어도 하나의 검증 대상 각각에 대한 검증 조건을 생성하는 검증부를 포함할 수 있으며, 상기 검증부는 상기 적어도 하나의 검증 대상 중에서 반환 대상을 검출하여 상기 불변식 처리부로 전달하되, 상기 반환 대상은 타당하지 않은 검증 조건에 대응하는 검증 대상을 포함할 수 있다.

Description

스마트 컨트랙트 검증 장치 및 방법{APPRATUS AND METHOD FOR VERIFICATION OF SMART CONTRACTS}
본 발명은 스마트 컨트랙트 검증 장치 및 방법에 관한 것이다.
스마트 컨트랙트(Smart Contract, 스마트 계약 등으로 지칭 가능함)는 복수의 계약자 간에 협의된 디지털화된 계약서 또는 이와 같은 계약서 내의 계약 내용을 자동적으로 이행해주는 프로그램 코드(프로그램이나 소프트웨어 등으로 지칭 가능함)를 의미한다. 근자에는 가상 화폐나 보안 프로그램과 같은 블록체인 기반 기술의 발달에 따라 스마트 컨트랙트에 대한 관심이 급격히 증가하고 있다.
스마트 컨트랙트는 다른 프로그램보다 상대적으로 안전성을 검증하는 작업이 중요하다. 왜냐하면, 첫 번째로 스마트 컨트랙트는 처리 결과에 따라서 개인의 재산 상황을 직접적으로 변경할 수 있는 반면에 누구나 소스 코드를 열람할 수 있으므로 누군가 스마트 컨트랙트 내부의 결함을 발견하여 악용하는 경우 막대한 재산상 피해를 야기할 수 있기 때문이다. 예를 들어, SMT(SmartMesh) 해킹 사건과 같이 스마트 컨트랙트 코드 상에 존재하는 정수 오버플로우(integer overflow) 취약점을 이용하여 토큰을 무한 생성하여 다수인에게 금전적 피해를 입히는 것과 같은 문제점이 발생될 수 있다. 두 번째로 스마트 컨트랙트는 다른 여타의 프로그램들과는 달리 블록체인 등을 통해 한번 배포된 이후에는 수정하는 것이 불가능하다(immutability). 이와 같은 이유들로 인해 스마트 컨트랙트 프로그램은 블록체인 등을 통해 배포되기 전에 프로그램 코드에 문제점이 존재하는지 여부가 더욱 엄밀하게 확인 및 검증되어야 한다.
이와 같은 검증을 위해 스마트 컨트랙트 프로그램의 배포 전에 보안 전문가들에게 코드 감사(auditing)를 의뢰하기도 하나, 사람에 의한 안전성 검증은 한계가 명확하다. 따라서, 이와 같은 검증을 자동화하기 위한 도구가 개발 및 안내되어 왔으나, 이들 도구는 프로그램의 일부에 대해서만 검증을 수행하기 때문에 스마트 컨트랙트 프로그램 내의 모든 취약점을 검출할 수 없는 한계가 존재하였다(불건전성, unsoundness). 한편, 이들 도구 중에서는 프로그램의 전부에 대해 검증을 수행하는 도구도 존재하나, 이들은 너무 많은 수의 허위 경보(false positive)를 생성하기 때문에 스마트 컨트랙트에 대한 분석 결과가 부정확해지는 단점이 존재한다.
미합중국 공개특허 US 2018/0183600 A1 (2018.06.28. 공개) 미합중국 등록특허 7,146,352 B2 (2006.12.05. 등록) 일본국 공개특허 특개2001-142937호 (2001.05.25. 공개)
본 발명은 스마트 컨트랙트의 취약점을 누락 없이 정확하게 검증할 수 있는 스마트 컨트랙트 검증 장치 및 방법을 제공하는 것을 해결하고자 하는 과제로 한다.
스마트 컨트랙트 내에 숨어있는 트랜잭션 불변식을 자동으로 유추함으로써 취약점을 정확하게 검증할 수 있는 스마트 컨트랙트 검증 장치 및 방법을 제공하는 것을 또 다른 해결하고자 하는 과제로 한다.
상술한 과제를 해결하기 위하여 스마트 컨트랙트 검증 장치 및 방법이 제공된다.
스마트 컨트랙트 검증 장치는 적어도 하나의 불변식 후보를 포함하는 불변식 후보군을 생성하는 불변식 처리부 및 컨트랙트의 적어도 하나의 검증 대상을 획득하고, 상기 불변식 후보를 이용하여 상기 적어도 하나의 검증 대상 각각에 대한 검증 조건을 생성하는 검증부를 포함하고, 상기 검증부는 상기 적어도 하나의 검증 대상 중에서 반환 대상을 검출하여 상기 불변식 처리부로 전달하되, 상기 반환 대상은 타당하지 않은 검증 조건에 대응하는 검증 대상을 포함할 수 있다.
스마트 컨트랙트 검증 방법은 적어도 하나의 불변식 후보를 포함하는 불변식 후보군을 생성하는 단계, 컨트랙트의 적어도 하나의 검증 대상을 획득하는 단계, 상기 불변식 후보를 이용하여 상기 적어도 하나의 검증 대상 각각에 대한 검증 조건을 생성하는 단계 및 상기 적어도 하나의 검증 대상 중에서 반환 대상을 검출하되, 상기 반환 대상은 타당하지 않은 검증 조건에 대응하는 검증 대상을 포함하는 단계를 포함할 수 있다.
상술한 스마트 컨트랙트 검증 장치 및 방법에 의하면, 스마트 컨트랙트의 취약점을 누락 없이 정확하게 검증할 수 있게 되는 효과를 얻을 수 있다.
또한, 스마트 컨트랙트 내에 숨어있는 트랜잭션 불변식을 자동으로 유추함으로써 취약점을 정확하게 검증할 수 있게 되어 종래의 스마트 컨트랙트 분석 또는 검증 기술의 한계를 극복할 수 있는 효과도 얻을 수 있다.
또한, 배포될 스마트 컨트랙트의 안전성이 보다 개선될 수 있으므로, 블록체인 생태계와 같이 스마트 컨트랙트가 이용될 여러 생태계의 안전도가 증가되는 효과도 얻을 수 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 스마트 컨트랙트 검증 장치의 일 실시예에 대한 블록도이다.
도 2는 컨트랙트의 일례를 설명하기 위한 도면이다.
도 3은 불변식을 설명하기 위한 프로그램 코드의 일례이다.
도 4는 스마트 컨트랙트 검증 장치의 일 실시예에 대한 제어 블록도이다.
도 5는 검증부의 동작의 일례를 설명하기 위한 제1 도이다.
도 6은 검증부의 동작의 일례를 설명하기 위한 제2 도이다.
도 7은 검증부의 다른 실시예에 대한 블록도이다.
도 8은 스마트 컨트랙트 검증 장치의 동작을 프로그램 코드로 표현한 일례를 도시한 도면이다.
도 9는 스마트 컨트랙트 검증 장치의 성능을 다른 종래의 장치와 비교한 결과를 나타낸 제1 도표이다.
도 10은 스마트 컨트랙트 검증 장치의 성능을 다른 종래의 장치와 비교한 결과를 나타낸 제2 도표이다.
도 11은 스마트 컨트랙트 검증 방법의 제1 실시예에 대한 흐름도이다.
도 12는 스마트 컨트랙트 검증 방법의 제2 실시예에 대한 흐름도이다.
도 13은 스마트 컨트랙트 검증 방법의 제3 실시예에 대한 흐름도이다.
이하 명세서 전체에서 동일 참조 부호는 특별한 사정이 없는 한 동일 구성요소를 지칭한다. 이하에서 사용되는 '부'가 부가된 용어는, 소프트웨어 또는 하드웨어로 구현될 수 있으며, 실시예에 따라 하나의 '부'가 하나의 물리적 또는 논리적 부품으로 구현되거나, 복수의 '부'가 하나의 물리적 또는 논리적 부품으로 구현되거나, 하나의 '부'가 복수의 물리적 또는 논리적 부품들로 구현되는 것도 가능하다.
명세서 전체에서 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 어떤 부분과 다른 부분에 따라서 물리적 연결을 의미할 수도 있고, 또는 전기적으로 연결된 것을 의미할 수도 있다. 또한, 어떤 부분이 다른 부분을 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 부분 이외의 또 다른 부분을 제외하는 것이 아니며, 설계자의 선택에 따라서 또 다른 부분을 더 포함할 수 있음을 의미한다.
'제1' 이나 '제2' 등의 용어는 하나의 부분을 다른 부분으로부터 구별하기 위해 사용되는 것으로, 특별한 기재가 없는 이상 이들이 순차적인 표현을 의미하는 것은 아니다. 또한, 단수의 표현은 문맥상 명백하게 예외가 있지 않는 한, 복수의 표현을 포함할 수 있다.
이하, 도 1 내지 도 8을 참조하여 스마트 컨트랙트 검증 장치의 여러 실시예에 대해서 설명하도록 한다.
도 1은 스마트 컨트랙트 검증 장치의 일 실시예에 대한 블록도이다.
도 1에 도시된 바에 의하면, 스마트 컨트랙트 검증 장치(100)는 검증부(110, Validator) 및 불변식 처리부(170)를 포함할 수 있으며, 실시예에 따라서 타당성 판단부(180)를 더 포함할 수 있다. 또한, 필요에 따라 입력부(101) 및 출력부(102)를 더 포함하는 것도 가능하다. 검증부(110), 불변식 처리부(170), 타당성 판단부(180), 입력부(101) 및 출력부(102) 중 적어도 둘은 상호 전기적으로 연결되어 정보(데이터)를 송수신할 수 있도록 마련된다. 이 경우, 이들은 케이블, 회로 및/또는 유무선 통신 네트워크를 기반으로 데이터를 송수신할 수 있다.
스마트 컨트랙트 검증 장치(100)는 각종 연산 처리 및 신호 생성이 가능한 적어도 하나의 장치를 포함할 수 있으며, 적어도 하나의 장치는 프로세서를 이용하여 구현될 수도 있고, 또는 프로세서가 설치된 컴퓨팅 장치를 이용하여 구현될 수도 있다. 여기서, 프로세서는, 예를 들어, 중앙 처리 장치(CPU, Central Processing Unit), 마이크로 컨트롤러 유닛(MCU, Micro Controller Unit), 마이컴(Micom, Micro Processor), 애플리케이션 프로세서(AP, Application Processor), 전자 제어 유닛(ECU, Electronic Controlling Unit), 그래픽 처리 장치(GPU, Graphic Processing Unit) 및/또는 각종 연산 처리 및 제어 신호의 생성이 가능한 처리 장치 등을 포함할 수 있다. 이들 처리 장치는 예를 들어 하나 또는 둘 이상의 반도체 칩 및 관련 부품을 이용하여 구현될 수 있다. 컴퓨팅 장치는, 예를 들어, 데스크톱 컴퓨터, 랩톱 컴퓨터, 서버용 컴퓨터, 스마트 폰, 태블릿 피씨, 스마트 시계, 두부 장착형 디스플레이(HMD, Head Mounted Display) 장치, 휴대용 게임기, 로봇, 가전 기기, 기계 장치 및/또는 이외 정보 처리 기능을 수행할 수 있는 적어도 하나의 전자 장치를 포함할 수 있다.
검증부(110)는 입력부(101)로부터 또는 별도의 저장 매체(미도시)를 통하여 컨트랙트(Contract, 계약 등으로 표현 가능함)를 획득하고, 획득한 컨트랙트의 안전성을 검증할 수 있도록 마련된다. 컨트랙트는 특정 조건이나 상황에 따라 미리 정의된 내용을 자동으로 실행해줄 수 있는 프로그램 코드를 포함할 수 있다.
일 실시예에 의하면, 검증부(110)는 불변식 처리부(170)로부터 불변식 후보군(Group of invariant candidates)을 수신할 수 있으며, 수신한 불변식 후보군을 이용하여 컨트랙트의 안전성을 검증/확인할 수 있다. 여기서, 불변식 후보군은 적어도 하나의 불변식 후보(들)를 포함하는 적어도 하나의 집합을 포함한다. 예를 들어, 검증부(110)는 수신한 불변식 후보군의 적어도 하나의 불변식 후보에 대한 귀납성(inductiveness) 여부와 컨트랙트 내의 모든 검증 대상(예를 들어, 프로그램 코드 내의 쿼리 또는 쿼리 등을 포함하는 기본 경로 등)의 안전성을 검사함으로써 컨트랙트의 안전성을 확인할 수 있다.
불변식(invariant)은 어떠한 일련의 동작을 수행하는 동안에도 변하지 않고 일정하게 유지되는 조건, 속성, 성질 또는 상태 등을 의미한다. 불변식은 함수(수식이나 명령문 등) 등의 형태로 표현될 수 있다. 불변식은, 예를 들어, 트랜잭션 불변식(transaction invariant) 및 루프 불변식(loop invariant) 중 적어도 하나를 포함할 수 있다. 트랜잭션 불변식은 트랜잭션의 처리 과정에서도 변하지 않는 조건, 속성, 성질 또는 상태 등을 의미한다. 트랜잭션 불변식은 컨스트럭터(constructor) 함수(생성자 함수)의 종료 시나 외부에서 호출 가능한 함수(예를 들어, 컨스트럭터 이외의 함수로써, 함수 접근 제어자가 public 혹은 external인 함수 등)의 실행 전후에도 항상 만족된다. 루프 불변식은 어떠한 루프(Loop, 룹 등으로 표현 가능하다)가 실행되는 동안에도 변하지 않는 상태, 성질 또는 조건 등을 의미한다. 루프 불변식은 각 루프가 실행되기 전(루프 입구 지점)에서 항상 만족된다.
불변식은 프로그램 코드 내에 명시적으로 표현되어 있을 수도 있고 및/또는 프로그램 코드 내에 명시적으로 표현되지 않아 코드로부터 추정 또는 확인해야 할 수도 있다. 불변식 후보는 이와 같이 컨트랙트에서 이용된 불변식을 추정하기 위해 미리 수집, 정의, 설정 또는 정제된 적어도 하나의 불변식(들)을 의미한다. 불변식 후보는 귀납적이면서도 컨트랙트 내의 적어도 하나의 검증 대상의 안전성을 증명할 수 있도록 생성된 것일 수 있다.
검증부(110)는 컨트랙트의 안전성 검증을 위한 검증 조건(verification condition, 도 4의 113a)을 생성할 수도 있다. 검증 조건(113a)은 컨트랙트의 적어도 하나의 검증 대상(예를 들어, 기본 경로(도 4의 111a) 등) 각각에 대응하여 생성된 것일 수 있다. 실시예에 따라, 컨트랙트의 검증 대상(111a) 모두에 대해 검증 조건(113a)이 각각 생성될 수 있다. 검증 조건(113a)의 생성을 위해 상술한 불변식 후보군이 이용될 수도 있다.
보다 구체적으로, 검증부(110)는 불변식 처리부(170)에 의해 생성된 불변식 후보의 귀납성과 쿼리의 안전성에 관한 검증 조건(113a)을 소정의 수식 형태로 구성하고, 구성된 수식의 타당성(validity) 여부를 검사하도록 마련된 것일 수 있다. 여기서, 소정의 수식은 예를 들어, 1차 논리식(FOL: First-Order Logic 또는 first-order formula)을 포함할 수 있으나, 이에 한정되는 것은 아니다.
생성된 검증 조건(113a)은 검증부(110)에 의해 직접 타당성 여부가 판단될 수도 있고, 또는 타당성 판단부(200)에 의해 판단될 수도 있다. 후자의 경우, 검증 조건(113a)은 타당성 판단부(200)로 전달되고, 타당성 판단부(200)는 수신한 검증 조건(113a)의 타당성 여부를 판단한 후, 판단 결과를 검증부(110)로 전달할 수 있다.
만약, 검증부(110) 또는 타당성 판단부(200)가 검증 조건(113a)이 타당하다고 판단한 경우라면(예를 들어, 모든 쿼리가 안전하다고 증명된 경우 등), 검증부(110)는 컨트랙트가 안전하다고 판단할 수 있다. 이 경우, 검증부(110)는 타당성이 부재한 것으로 판단된 검증 조건 또는 이에 대응하는 검증 대상(이하 반환 대상)이 존재하지 않으면, 컨트랙트가 안전하다고 판단할 수 있다. 판단 결과는 출력부(102)로 전달될 수 있으며, 이에 응하여 출력부(102)는 컨트랙트가 안전하다고 미리 정의된 방식으로 외부에 보고할 수 있다.
반대로 검증부(110) 또는 타당성 판단부(200)가 검증 조건(113a)이 타당하지 않다고 판단하면(예를 들어, 안전성 검증에 실패한 쿼리가 존재할 경우 등과 같이 반환 대상이 존재하는 경우), 검증부(110)는 반환 대상(즉, 타당성이 부재한 것으로 판단된 검증 조건 또는 이에 대응하는 검증 대상)을 불변식 처리부(170)로 전달할 수 있다.
불변식 처리부(170)는 불변식 후보군을 생성할 수 있으며, 보다 구체적으로는 귀납적이면서도 가능한 한 많은 쿼리들의 안전성을 증명할 수 있는 불변식 후보군을 생성하고 생성된 불변식 후보군을 검증부(110)로 전달할 수 있다. 불변식 처리부(170)는 트랜잭션 불변식을 생성할 수도 있고, 루프 불변식을 생성할 수도 있으며, 또는 양자 모두를 생성할 수도 있다.
일 실시예에 의하면, 불변식 처리부(170)는, 도 1에 도시된 바와 같이, 초기화부(171) 및 정제부(173)를 포함 가능하다.
초기화부(171)는 최초의 불변식 후보군을 생성하고, 생성한 최초의 불변식 후보군을 검증부(110)로 전달함으로써, 검증부(110)가 최초의 불변식 후보군을 이용하여 컨트랙트를 검증하도록 할 수 있다. 초기화부(171)는 사용자의 조작이나 미리 정의된 설정에 따라 동작 가능하다. 예를 들어, 초기화부(171)는 새로운 컨트랙트가 입력될 때마다 최초의 불변식 후보군을 생성하도록 마련될 수 있다. 필요에 따라, 초기화부(171)는 불변식 후보군 내의 적어도 하나의 불변식 후보 중에서 크기가 가장 작은 불변식 후보를 선택한 후, 선택된 불변식 후보를 불변식 후보군에서 제거할 수도 있다.
정제부(173)는 검증부(110)로부터 반환 대상을 수신하면, 반환 대상을 기반으로 이전에 검증부(110)에 전달된 불변식 후보군(예를 들어, 최초의 불변식 후보군 또는 이후에 새로 정제 및 생성되었던 불변식 후보군 등)을 정제하여, 새로운 불변식 후보군을 생성할 수 있다. 실시예에 따라서, 불변식 처리부(170)는 검증 조건(113a)이 모두 타당하여 안전성이 증명되거나 및/또는 미리 정의된 분석 시간을 경과한 경우에는 더 이상 새로운 불변식 후보군을 생성하지 않을 수 있다.
검증부(110) 및 불변식 처리부(170)의 동작에 대한 보다 세부적인 내용은 후술하도록 한다.
타당성 판단부(200)는 검증부(110)가 생성한 검증 조건(113a)을 수신하고 수신한 검증 조건(113a)에 대한 타당성/비타당성(invalidity) 여부를 판단한 후, 판단 결과를 검증부(110)로 송신할 수 있다. 일 실시예에 의하면, 타당성 판단부(200)는 소정의 해석 프로그램 또는 이를 수행하기 위한 장치를 이용하여 구현될 수 있으며, 여기서 소정의 해석 프로그램은, 예를 들어, SMT 솔버(Satisfiability Modulo Theories Solver) 등을 포함할 수 있다. 설계자의 선택에 따라서, 타당성 판단부(200)는 도 1에 도시된 바와 같이 스마트 컨트랙트 검증 장치(100) 내에 마련될 수도 있고, 및/또는 스마트 컨트랙트 검증 장치(200)와 물리적으로 분리되고 유무선 통신 네트워크를 통해 상호 통신 가능하게 연결된 하나 또는 둘 이상의 다른 컴퓨팅 장치에 마련될 수도 있다. 여기서, 다른 컴퓨팅 장치는, 예를 들어, 데스크톱 컴퓨터, 랩톱 컴퓨터, 서버용 컴퓨터 및/또는 기타 다양한 적어도 하나의 전자 장치 등을 포함할 수 있다.
실시예에 따라서, 상술한 검증부(110), 불변식 처리부(190) 및 타당성 판단부(200)는 하나의 처리 장치(예를 들어, 중앙 처리 장치 등)를 이용하여 구현될 수도 있고, 또는 둘 이상의 물리적으로 분리된 처리 장치를 이용하여 구현될 수도 있다. 이들이 둘 이상의 물리적으로 분리된 처리 장치를 이용하여 구현된 경우, 검증부(110), 불변식 처리부(190) 및 타당성 판단부(200) 모두가 각각 물리적으로 분리된 처리 장치를 이용하여 구현될 수도 있고, 또는 이들 중 일부만이 물리적으로 분리된 다른 처리 장치를 이용하여 구현될 수도 있다.
입력부(101)는 외부로부터 스마트 컨트랙트 검증 장치(100)의 동작에 필요한 정보를 수신하고 이를 직간접적으로 검증부(110)로 전달할 수 있다. 예를 들어, 입력부(101)는 스마트 컨트랙트를 입력 받고 이를 검증부(110)에 전달함으로써 검증부(110)가 스마트 컨트랙트에 대한 검증 동작을 수행하도록 할 수도 있다. 이 경우, 스마트 컨트랙트는 솔리디티 언어로 작성된 것일 수 있다. 입력부(101)는, 범용 직렬 버스(USB, Universal serial bus) 단자 등과 같은 데이터 입출력 단자, 키보드 장치, 마우스 장치, 트랙볼, 트랙패드, 화상 촬영 장치 및/또는 각종 센서 등 사용자의 조작에 따라 또는 자동으로 데이터를 입력 받을 수 있는 적어도 하나의 장치를 포함할 수 있다.
출력부(102)는 검증부(110)의 최종적인 판단 결과를 외부로 출력할 수 있도록 마련된다. 예를 들어, 출력부(102)는 컨트랙트의 적어도 하나의 검증 대상(즉, 기본 경로) 각각에 대한 안전성 또는 불변식의 귀납성에 대한 검증 결과를 출력할 수 있다. 설계자의 선택에 따라서, 출력부(102)는 검증 결과를 미리 정의된 전자 문서의 형태로 출력할 수도 있다. 출력부(102)는 실시예에 따라서, 데이터 입출력 단자, 모니터 장치, 프린터 장치, 사운드 출력 장치(스피커 등을 포함할 수 있음) 및/또는 이외 정보를 출력할 수 있는 적어도 하나의 장치를 포함할 수 있다.
도면에서는 생략되어 있으나, 스마트 컨트랙트 검증 장치(100)는 스마트 컨트랙트 검증 장치(100)의 동작에 필요하거나 동작 결과 획득된 적어도 하나의 데이터를 일시적 또는 비일시적으로 저장하기 위한 저장 매체를 더 포함할 수 있다. 예를 들어, 저장 매체는 컨트랙트, 적어도 하나의 불변식 후보, 검증부(110)가 생성한 기본 경로(111a)나 검증 조건(113a), 검증부(110)나 타당성 판단부(180)의 판단 결과, 불변식 처리부(170)가 생성한 불변식 후보군 및/또는 스마트 컨트랙트 검증 장치(100)의 동작/기능에 관한 애플리케이션(프로그램 또는 앱 등으로 지칭 가능함) 등을 저장할 수 있다. 여기서, 스마트 컨트랙트 검증 장치(100)의 동작/기능에 관한 애플리케이션은 설계자 등에 의해 직접 저장 매체에 입력된 것일 수도 있고, 입력부(101) 또는 통신부(미도시) 등을 통해 전달 또는 갱신된 것일 수도 있다. 통신부를 이용하는 경우, 스마트 컨트랙트 검증 장치(100)의 동작/기능에 관한 애플리케이션은 전자소프트웨어 유통망을 통해 전달 또는 갱신된 것일 수 있다. 이와 같은 저장 매체는 롬(ROM) 및/또는 램(RAM) 등과 같은 주기억장치를 포함할 수도 있고, 및/또는 플래시 메모리 장치, 솔리드 스테이트 드라이브(SSD, Solid State Drive) 및/또는 하드 디스크 드라이브(HDD, Hard Disc Drive) 등과 같은 보조기억장치를 포함할 수도 있다.
이하, 검증부(110) 및 불변식 처리부(170)에서 이용 또는 처리되는 컨트랙트 및 불변식에 대해 먼저 설명하도록 한다.
도 2는 컨트랙트의 일례를 설명하기 위한 도면이다. 도 2는 컨트랙트의 일례를 솔리디티(Solidity) 언어를 기반으로 표현한 것이다. 도 2에서 c는 컨트랙트를, C는 컨트랙트 집합을 G*는 전역 상태 변수(global state variable) 선언의 집합을, F*는 적어도 하나의 함수 정의(f)의 집합을 의미한다. x는 함수 명칭을, S는 명령문을 의미한다. a는 기본 명령문이며, A는 적어도 하나의 기본 명령문(a)을 포함하는 기본 명령문 집합을 의미하고, E는 산술 표현식(예를 들어, a+b)을 의미하고, B는 부울 표현식(예를 들어, a≥b)을 의미한다.
도 2에 도시된 바에 의하면, 컨트랙트(c)는 적어도 하나의 전역 상태 변수 선언(G*)과 적어도 하나의 함수 정의의 집합(F*)을 포함할 수 있다. 집합(F*) 내의 각각의 함수 정의(f)는 함수 명칭(x)과 명령문(S)으로 정의될 수 있다. 여기서, 명령문(S)은 기본 명령문의 집합(A), 조건문(if B S1 S2), while-루프 및 시퀀스(S1; S2) 중 적어도 하나를 포함할 수 있다. 각 while-루프는 루프 입구 지점(loop header)을 뜻하는 루프 레이블(l)을 포함할 수 있다. 기본 명령문 집합(A)의 각각의 기본 명령문(a)은, 예를 들어, 변수 할당문(x := E), 배열 원소 할당문(x [y] := E ), 가정문(assume (B)) 및/또는 단언문(assert (B)) 등을 포함할 수 있다. 여기서, 변수 할당문은 코드 내에서 사용되는 변수에 대한 값을 할당할 수 있도록 마련된다. 배열 원소 할당문은 통상적인 프로그래밍 언어에서 사용되는 배열 변수의 원소들에 대한 값 할당을 모델링하며, 예를 들어 솔리디티 언어에서의 매핑 타입 변수의 원소들에 대한 값 할당을 모델링하도록 마련된다. 가정문은 조건의 성립 여부를 판단할 수 있게 하며, 조건의 성립 여부에 따라 순차적인 명령문의 실행 여부가 결정될 수 있다. 즉, 조건이 성립되면 순차적인 명령문이 계속해서 실행되고, 조건이 성립되지 않으면 현재의 트랜잭션(transaction, 작업 또는 처리 등으로 표현 가능하다)의 실행이 취소되고, 프로그램은 가정문의 실행 전 상태로 회귀된다. 단언문은 검증하려는 대상(이하 검증 대상, 예를 들어, 정수 오버플로우 취약점에 대한 안전성, 정수 언더플로우 취약점에 대한 안전성, 제수(除數)가 0인 경우에서의 취약점 등에 대한 안전성)을 표현할 수 있다. 단언문은 검증 대상을 표현하기 위한 적어도 하나의 쿼리(query, 단언문 내에 표현된 수식)를 포함할 수도 있다. 쿼리는 자동으로 프로그램 내에 삽입될 수도 있고, 또는 프로그래머의 조작에 따라 수동으로 삽입될 수도 있다. 예를 들어, 개발자는 assert 문을 이용하여 쿼리를 프로그램 내에 삽입할 수 있으며, 보다 구체적으로 예를 들어, 덧셈 연산에 대한 정수 오버플로우 취약점을 검증하기 위해, 스마트 컨트랙트 내에 존재하는 모든 덧셈 연산에 대해 하기의 수학식 1을 삽입할 수도 있다.
Figure pat00001
검증부(110)는 이와 같은 컨트랙트의 특성과 불변식 처리부(170)에서 전달되는 적어도 하나의 불변식을 이용하여 컨트랙트의 안전성을 검증하게 된다.
도 3은 불변식을 설명하기 위한 프로그램 코드의 예시로, 컨트랙트의 일례를 표현한 것이다.
도 3에 도시된 컨트랙트의 경우, 컨스트럭터 함수가 실행되면(제5 줄 참조), 전체 공급량은 10,000으로 설정되고, 송금인(sender)의 계좌 잔액(balance) 역시 10,000으로 초기화되도록 설계되어 있다. 이 경우, 초기화되지 않은 계좌의 잔액은 0이 되고, 모든 계좌의 총합은 10,000의 값과 동일하게 된다.
컨트랙트의 제10 내지 14 줄을 참조하면, 송금 트랜잭션(function transfer)은 송금인의 계좌의 잔액이 송금할 금액(value)보다 같거나 큰 경우(제11줄)에만, 송금인의 계좌 잔액에서 송금할 금액을 차감하고(제12 줄), 수금인(to)의 계좌 잔액에 송금할 금액을 부가하도록 설계되어 있다(제13 줄). 또한, 제16 내지 20 줄을 참조하면, 수금 트랜잭션(trasnferFrom)은 송금자의 계좌 잔액(balance[from])이 같거나 송금할 금액(value)보다 큰 경우(제17 줄)에만, 송금인의 계좌 잔액에서 송금할 금액을 차감하고(제18 줄), 수금인(to)의 계좌 잔액에 송금할 금액을 부가하도록 기재되어 있다(제19 줄).
이와 같이 설계된 컨트랙트의 코드에서 제12 줄 및 제19 줄의 연산은 보호문이 존재하므로 안전함을 알 수 있다. 그러나, 제13 줄 및 제18 줄의 연산에 대해서는, 각각 함수 내에 직접적인 보호문이 존재하지 않아, 이들의 안전성 여부를 직관적으로 파악하기는 어렵다. 그러나, 명시적 보호문이 부재함에도 불구하고, 제13 줄 및 제18 줄의 연산은 안전하다. 왜냐하면, 트랜잭션의 시작과 종료 시에 하기의 수학식 2와, 수학식 2의 계산 과정에서 정수 오버플로우가 발생하지 않는다는 특성이 일정하게 유지되기 때문이다. 즉, 트랜잭션 불변식이 성립하게 된다.
Figure pat00002
구체적으로, 수학식 2 에 기재된 바와 같이 전체적인 계좌 총합은 트랜잭션 전후에 동일하게 10,000으로 유지된다. 또한, 송금인의 계좌의 잔액이 충분한 경우에만 송금이 허용되므로(제11 및 17 줄 참조), 정수 오버플로우가 발생하는 비정상적 상황은 발생하지 않게 된다. 다시 말해서, 각 계좌의 최대 값은 10,000이므로, 제11 및 17 줄의 조건문과 결합하였을 때 제12, 제13, 제18 및 제19 줄의 산술 연산은 256bit 연산(최댓값 2256-1)에서 모두 안전하다. 따라서, 상술한 컨트랙트는 안전하다고 판단될 수 있다.
이와 같은 트랜잭션 불변식이 성립함은 귀납적(inductive)으로 확인될 수 있다.
이하, 상술한 컨트랙트 및 불변식에 대한 내용을 기반으로 검증부(110) 및 불변식 처리부(170)의 동작에 대해 보다 구체적으로 설명하도록 한다.
도 4는 스마트 컨트랙트 검증 장치의 일 실시예에 대한 제어 블록도이다.
도 4에 도시된 바에 의하면, 검증부(110)는 입력부(101) 또는 저장 매체로부터 적어도 하나의 컨트랙트를 수신하고, 동시에 또는 순차적으로 불변식 처리부(170)의 초기화부(171) 및 정제부(173) 중 적어도 하나로부터 불변식 후보군을 수신할 수 있다. 구체적으로 예를 들어, 검증부(110)는 (c, ψ, μ)의 3가지 요소를 입력값으로 수신하여 획득할 수 있다. 여기서, c는 컨트랙트, ψ는 불변식을 의미하고, μ(μ: label → FOL)는 각 루프 레이블마다의 루프 불변식 매핑을 의미한다. 검증부(110)는 수신한 적어도 하나의 컨트랙트 및 불변식 후보군을 기반으로 컨트랙트의 안전성을 검증할 수 있다. 일 실시예에 의하면, 검증부(110)는 불변식 처리부(170)로부터 전달받은 불변식 후보(ψ, μ)의 귀납성 및 컨트랙트(c)에 포함된 적어도 하나의 명령문(쿼리)의 안전성을 확인함으로써, 컨트랙트의 안전성을 검증할 수 있다.
일 실시예에 의하면, 검증부(110)는 경로 집합 생성부(111), 조건 생성부(113) 및 결과 처리부(119)를 포함할 수 있다.
경로 집합 생성부(111)는 프로그램을 분할하여 적어도 하나의 기본 경로(111a, basic path)(들)을 획득할 수 있다. 기본 경로(111a)는 적어도 하나의 명령문(들)의 실행 경로를 포함한다. 일 실시예에 의하면, 기본 경로(111a)는 함수 입구(function entry), 함수 출구(function exit) 및 함수 입구와 출구 사이의 적어도 하나의 명령문(들)의 시퀀스를 포함하는 경로를 포함할 수도 있고, 및/또는 루프 입구(loop entry) 및 루프 내에 존재하는 적어도 하나의 명령문들의 시퀀스를 포함하는 경로를 포함할 수 있다. 보다 구체적으로 예를 들어, 기본 경로(111a)는 하기의 수학식 3과 같이 정의될 수 있다.
Figure pat00003
여기서, l1은 기본 경로(111a)의 시작 지점(즉, 함수 입구 또는 루프 입구)을, l2는 기본 경로(111a)의 종료 지점(즉, 함수 출구 혹은 루프 입구)을, a1; … ;a2는 기본 명령문들의 시퀀스를 의미한다. φ1은 기본 경로(111a)의 시작 지점(l1)에서의 불변식이고, φ2는 기본 경로(111a)의 종료 지점(l2)에서의 불변식이다. 이 경우, 시작 지점(l1)이 함수의 입구라면, φ1은 트랜잭션 불변식이고(즉, φ1=ψ), 시작 지점(l1)이 루프의 입구라면 φ1은 시작 지점(l1)에서의 루프 불변식이 된다(즉, φ1=μ(l1)). 한편, 함수가 컨스트럭터라면, 임의의 상태를 가정해야 하므로 φ1=true로 주어질 수 있다. 마찬가지로 종료 지점(l2)이 함수 출구이면, φ2는 트랜잭션 불변식이고(즉, φ2=ψ), 루프 입구이면, φ2는 루프 불변식이다(즉, φ2=μ(l2)).
경로 집합 생성부(111)에서 생성된 기본 경로(111a)는 조건 생성부(113)로 전달될 수 있다. 조건 생성부(113)는 각 기본 경로(111a) 별로 검증 조건(113a)을 생성할 수 있다. 보다 구체적으로 예를 들어, 조건 생성부(113)는 각 기본 경로(111a)마다 불변식 후보의 귀납성 여부 및 쿼리의 안전성 여부에 대한 적어도 하나의 식들을 생성함으로써 검증 조건(113a)을 생성할 수 있다. 이 경우, 조건 생성부(113)는 초기화부(171)에서 전달된 초기 불변식 후보군 또는 정제부(173)에서 전달된 새로운 불변식 후보군을 이용하여 검증 조건(113a)을 생성할 수 있다.
일 실시예에 의하면, 조건 생성부(113)는 하기의 수학식 4로 표현되는 명령문(함수)을 이용하여 검증 조건(113a)을 생성할 수도 있다.
Figure pat00004
여기서, ∧는 논리 연산자 AND를 의미한다. 또한,
Figure pat00005
Figure pat00006
Figure pat00007
는 하기의 수학식 5와 같이 정의될 수 있다.
Figure pat00008
수학식 4에서,
Figure pat00009
는 불변식 후보의 귀납성에 관한 조건을 표현한 식이고,
Figure pat00010
는 기본 경로에 존재하는 쿼리들의 안전성에 관한 조건을 나타낸 식이다. 또한, 수학식 5에서 sp는 후조건 변환기(strongest post-condition predicate transformer)를 의미한다. 후조건 변환기(sp)는 각 기본 경로에서 존재하는 기본 명령문(쿼리)들의 영향을 나타내도록 정의된 것일 수 있으며, 예를 들어, 하기의 수학식 6과 같이 정의될 수 있다.
Figure pat00011
여기서, FOL은 1차 논리식을 의미한다. 다시 말해서, 수학식 4의 검증 조건 생성 함수(GenVC())는 각각의 후조건 변환기(sp)를 합성하여 획득된 함수(명령문)에 미리 정의된 값(
Figure pat00012
및 true)을 입력하여 나온 결과를 기반으로 귀납성 여부 및 안전성을 판단할 수 있도록 설계된 것일 수 있다.
도 5는 검증부의 동작의 일례를 설명하기 위한 제1 도로, 후조건 변환기의 일례를 나타낸 것이다.
일 실시예에 의하면, 후조건 변환기(sp)는, 도 5에 도시된 바와 같이, 정의될 수 있다. 도 5에서,
Figure pat00013
Figure pat00014
에 존재하는 변수 x가 새로운 변수 x'으로 교체된 것을 의미한다.
후조건 변환기(sp)는 각각의 기본 명령문(a) 마다 정의될 수 있으며, 기본 명령문(a)의 종류에 따라 서로 상이하게 정의될 수 있다. 예를 들어, 기본 명령문(a)은 변수 할당문(x := E), 배열 원소 할당문(x [y] := E ), 가정문(assume (B)) 및 단언문(assert (B)) 중 적어도 하나일 수 있으며, 각각의 명령문(a)마다 도 5와 같이 상이한 후조건 변환기(sp)가 정의될 수 있다. 후조건 변환기(sp)는 기본 명령문(a), 전제조건(
Figure pat00015
) 및 현재까지 누적된 쿼리 안전성에 대한 식(
Figure pat00016
)이 주어졌을 때, a에 의한 영향을
Figure pat00017
에 추가로 반영하도록 설계된 것일 수 있다. 만약 기본 명령문(a)이 단언문(assert())일 경우 쿼리 안전성에 대한 식을 현재까지 누적된 쿼리 안전성에 대한 식(
Figure pat00018
)에 추가로 부가하여 누적하는 작업을 수행하도록 설계될 수 있다.
조건 생성부(113)는 이와 같은 방식으로 적어도 하나의 기본 경로(111a)에 대해 각각 검증 조건(113a)을 생성한다. 이 경우, 조건 생성부(113)는 경로 집합 생성부(111)가 생성한 기본 경로(111a) 중에서 일부의 기본 경로(111a)에 대해서만 검증 조건(113a)을 생성할 수도 있고, 또는 경로 집합 생성부(111)가 생성한 모든 기본 경로에 대해서 검증 조건(113a)을 생성할 수도 있다. 일 실시예에 의하면, 조건 생성부(113)가 생성한 검증 조건(113a)은 타당성 판단부(180)로 전달될 수 있다. 타당성 판단부(180)는 수신한 검증 조건(113a)의 타당성을 판단할 수 있다.
결과 처리부(119)는 컨트랙트의 안전성의 검증 여부를 확인하고, 확인 결과에 따라 소정의 동작을 수행할 수 있다. 이 경우, 결과 처리부(119)는 타당성 판단부(180)로부터 검증 조건(113a)의 타당성에 대한 판단 결과를 수신하고, 수신한 판단 결과를 기반으로 출력부(102) 및/또는 정제부(173)로 필요한 데이터를 전달할 수 있다.
예를 들어, 결과 처리부(119)는 컨트랙트의 안전성 등이 검증이 되지 않은 경우(예를 들어, 불변식 후보가 귀납적이지 않거나 안전성 증명에 실패한 쿼리가 존재하는 경우) 타당하지 않은 검증 조건에 대응하는 검증 대상(즉, 반환 대상)을 불변식 처리부(170)의 정제부(173)로 전달할 수 있다. 반대로 컨트랙트의 안전성이 증명된 경우(예를 들어, 불변식 후보가 귀납적이고 안전성 증명에 실패한 쿼리가 부재한 경우), 결과 처리부(119)는 증명 결과를 출력부(102)로 전달할 수 있다.
실시예에 따라서, 결과 처리부(119)는 현재 이용된 불변식 후보에 의해 각 기준 경로의 안전성(또는 컨트랙트의 안전성)이 검증되지 않은 경우에도, 현재의 불변식 후보들이 귀납적이라고 판단된 경우에는 이와 같은 정보를 불변식 처리부(170)에 전달함으로써 불변식 처리부(170)가 보다 구체적으로 불변식 후보들을 정제할 수 있도록 할 수도 있다.
도 6은 검증부의 동작의 일례를 설명하기 위한 제2 도이다. 도 6에서 p는 기본 경로(111a)를 의미하고, GenVC(p).1은 귀납성에 관한 검증 조건을 의미하며, GenVC(p).2는 안전성에 대한 검증 조건을 의미한다. F∈GenVC(p).2은 GenVC(p).2의 각 절(clause)을 나타난 것으로 하나의 쿼리(F)에 대한 안전성 검증 조건을 의미한다. 도 6에서 ∃F∈GenVC(p).2 is invalid는 안전성 검증 조건이 타당하지 않은 모든 쿼리(F)를 의미한다.
일 실시예에 의하면, 결과 처리부(119)는, 도 6에 도시된 바와 같은 (inductive, U)의 데이터 쌍을 정제부(117)로 반환할 수도 있다. (inductive, U)에서, inductive는 주어진 불변식 후보가 귀납적인지의 여부를 나타내는 부울 변수(propositional variable)이고, U는 반환 대상의 집합으로, 조건 생성부(113)가 생성한 적어도 하나의 검증 조건(113a) 중에서 타당성이 확인되지 않거나 타당성이 부재한 검증 조건들에 대응하는 검증 대상(예를 들어, 타당성이 확인되지 않은 기본 경로(111a))들의 집합이다. 여기서, 타당성의 판단은 타당성 판단부(180)에 의해 수행된 것일 수 있다.
도 6의 두 번째 줄에 나타난 바와 같이, 만약 모든 기본 경로(p, 111a)에 대해서 귀납성 검증에 실패한 경우라면(∃p∈GenVC(p).1 is invalid), 세 번째 줄에 기재된 바와 같이, (inductive, U) 각각에는 false 값 및 기본 경로(p, 111a, 여기서, p∈P|GenVC(p).1 is invalid)가 할당 및 기록될 수 있다. 이에 따라 귀납성 검증에 실패한 기본 경로(111a)가 적어도 하나의 집합(U)으로 수집될 수 있게 된다. 반대로 네 번째 줄에 기재된 바와 같이 만약 모든 기본 경로(p, 111a)에 대해서 귀납성 검증에 성공한 경우에는, 변수 inductive에는 true 값이 할당되고, 집합 U에는 안전성 검증이 실패한 기본 경로(p, 111a, 여기서, p∈P|∃F∈GenVC(p).2 is invalid)가 포섭된다. 이에 따라, 귀납성 검증에는 성공하였으나 안전성 검증에는 실패한 기본 경로(111a)가 적어도 하나의 집합(U)으로 수집될 수 있게 된다.
도 7은 검증부의 다른 실시예에 대한 블록도이다.
도 7에 도시된 바에 의하면, 검증부(110)는 경로 집합 생성부(111), 조건 생성부(113) 및 결과 처리부(119) 이외에도, 조건 간략화부(115) 및 선행 타당성 판단부(116) 중 적어도 하나를 더 포함할 수도 있다. 경로 집합 생성부(111), 조건 생성부(113) 및 결과 처리부(119)에 대해선 기 설명하였으므로, 이하 자세한 내용은 생략한다.
조건 간략화부(115)는 조건 생성부(113)가 생성한 검증 조건(113a)을 상대적으로 간략하게 수정/변형할 수 있다. 이 경우, 조건 간략화부(115)는 미리 정의된 간략화 규칙(simplification rule)을 기반으로 검증 조건(113a)을 간략할 수 있다. 여기서, 미리 정의된 간략화 규칙은 종래 수학적 또는 논리적으로 정의된 각종 공식, 법칙 및/또는 공리 등을 기반으로 정의된 것일 수 있다. 예를 들어, 조건 간략화부(113a)는 하기의 수학식 7을 수학식 8과 같이 간략화시킬 수 있다.
Figure pat00019
Figure pat00020
이와 같이 검증 조건(113a)의 간략화에 따라, 검증 조건(113a)의 분석이 보다 신속하고 원활하게 처리될 수 있게 된다. 또한, 이와 같은 검증 조건(113a)의 간략화는 검증 조건(113a) 내의 사소한 표현이나 간단한 수식(예를 들어, 수학식 13의
Figure pat00021
)을 제거함으로써 선행 타당성 판단부(116)의 판단 결과에 오류가 발생하는 것을 방지할 수도 있게 된다.
실시예에 따라서, 조건 간략화부(115)에 의해 간략화된 검증 조건은 타당성 판단부(180)로 전달되거나 및/또는 선행 타당성 판단부(116)로 전달될 수도 있다. 타당성 판단부(180)는 간략화된 검증 조건을 수신하고 간략화된 검증 조건에 대한 타당성/비타당성 여부를 판단할 수 있다. 스마트 컨트랙트 내에 복잡한 연산이 존재하는 경우, 타당성 판단부(180)의 검증 조건(113a) 타당성/비타당성 판단 시간이 상대적으로 증가하게 될 수 있다. 그러나, 상술한 바와 같이 조건 간략화부(115)에 의해 검증 조건(113a)이 간략화된 경우, 타당성 판단부(180)의 판단 시간은 상대적으로 단축될 수 있으며, 이에 따라 전체적인 스마트 컨트랙트에 대한 검증 시간 역시 단축될 수 있게 된다. 상술한 바와 같이 타당성 판단부(180)의 판단 결과는 검증부(110)의 결과 처리부(119)로 전달될 수 있다.
선행 타당성 판단부(116)는, 타당성 판단부(180)로 검증 조건(113a)이 전달되기 이전에 또는 타당성 판단부(180)가 검증 조건(113a)에 대한 타당성 존재 여부를 판단하기 이전에, 검증 조건(113a)의 타당성 여부를 판단할 수 있다. 실시예에 따라서, 선행 타당성 판단부(116)는 조건 생성부(113)에서 생성된 검증 조건(113a)의 타당성을 선행하여 판단할 수도 있고 및/또는 조건 간략화부(115)에 의해 간략화된 검증 조건의 타당성을 선행하여 판단할 수도 있다.
일 실시예에 의하면, 선행 타당성 판단부(116)는 미리 정의된 템플릿을 기반으로 검증 조건(113a) 및/또는 간략화된 검증 조건의 타당성을 판단할 수도 있다. 미리 정의된 템플릿은 스마트 컨트랙트의 분석 과정에서 흔히 생성/검출되는 검증 조건 또는 이와 같은 검증 조건의 패턴 등을 기반으로 정의된 것일 수 있으며, 예를 들어, 특정한 패턴의 검증 조건이 입력되면 타당한 것으로 판단한다는 내용 및/또는 특정한 패턴의 검증 조건이 입력되면 타당하지 않은 것으로 판단한다는 내용 등을 포함할 수 있다. 보다 구체적으로 예를 들어, 선행 타당성 판단부(116)는, 하기의 수학식 9와 같은 형태의 검증 조건이 확인되면, 타당성 판단부(180)의 판단 없이도 타당하다고 판단할 수 있다.
Figure pat00022
여기서 F는 임의의 식이고, n1 및 n2는 n1len2의 관계를 갖는 정수를 의미한다.
이에 따라 스마트 컨트랙트의 안전성의 판단이 보다 신속해질 수 있게 된다.
또한, 선행 타당성 판단부(116)는 검증 조건의 형태를 기반으로 검증 조건(113a) 및/또는 간략화된 검증 조건의 타당성을 판단할 수도 있다. 구체적으로 조건 생성부(113)에서 생성된 검증 조건(113a)은 다음의 수학식 10과 같은 형태를 가질 수 있다.
Figure pat00023
그러므로, 선행 타당성 판단부(116)는, 검증 조건(113a)이 하기의 수학식 11과 같은 형태인 경우, 타당성 판단부(180)에 검증 조건(113a)을 전달하지 않고도, 신속하게 검증 조건(113a)이 타당하지 않다고 판단할 수 있다.
Figure pat00024
여기서, FV(x)는 x에 대한 자유 변수(free variable)의 집합을 의미한다. 즉, 선행 타당성 판단부(116)는 조건문에서 조건에 대한 자유 변수 집합과 결과에 대한 자유 변수 집합의 포함 관계를 기반으로 검증 조건(113a)을 판단할 수 있다. 이 경우, 수학식 10이 참이기 위해서는 전제 조건이 p가 더 구체적인 개념(하위 개념)이어야 한다. 보다 구체적으로 예를 들어, 하기의 수학식 12와 같은 검증 조건은 타당하지 않다고 신속하게 판단될 수 있다.
Figure pat00025
각각의 연산이 부호 비트 없는 256bit(unsigned-256bit, uint256)에서 수행된다면, 수학식 12는 하기의 수학식 13과 같이 표현 가능하므로, 수학식 12가 타당하지 않음을 알 수 있다. 또한, 실제로 a에 2255를 대입하고, b에 0을 대입해보면, 수학식 12는 타당성이 부재함이 자명하게 드러난다.
Figure pat00026
Figure pat00027
이와 같이 선행 타당성 판단부(116)는 검증 조건(113a)의 형태에 따라서, 타당성 판단부(180)의 도움 없이도 검증부(110)가 보다 신속하게 컨트랙트의 타당성 여부를 판단할 수 있게 한다.
일 실시예에 의하면, 선행 타당성 판단부(116)는 간략화된 검증 조건을 기반으로 타당성을 판단할 수도 있다. 상술한 바와 같이 선행 타당성 판단부(116)가 검증 조건(113a)이 타당하지 않다고 판단하였어도, 실제로는 타당한 경우가 존재할 수 있다. 예를 들어, 하기의 수학식 14로 표현되는 검증 조건(113a)의 경우, 상술한 바와 같이 자유 변수의 집합을 이용하여 타당성을 판단하면, 결과가 하기의 수학식 15와 같이 나타나므로, 선행 타당성 판단부(116)는 수학식 14가 타당하지 않다고 판단하게 된다.
Figure pat00028
Figure pat00029
이와 같은 오류는 사소한 표현이나 간단한 수학식을 포함하는 경우에 발생될 수 있다. 이는 상술한 바와 같이 선행하여 조건 간략화부(115)의 검증 조건(113a) 간략화 과정을 수행함으로써 해결 가능하다. 즉, 간략화 과정에서 상술한 사소한 표현이나 간단한 수식은 제거될 수 있다. 예를 들어, 수학식 14를 하기의 수학식 16과 같이 간략화하면, 수학식 17에 따라 선행 타당성 판단부(116)는 보다 정확하게 판단할 수 있게 된다.
Figure pat00030
Figure pat00031
다만, 실제 스마트 컨트랙트 내에선 이와 같은 사소한 표현이나 간단한 수학식이 등장 가능성이 낮으므로, 반드시 조건 간략화(115) 과정이 선행되어야 하는 것은 아니다. 또한, 조건 간략화(115)가 수행되지 않더라도 취약점을 놓치는 경우는 발생하지 않는다. 상술한 바와 같이 타당한 검증 조건(일례로 수학식 15 등)을 타당하지 않은 것으로 판단하더라도, 비타당한 검증 조건을 타당한 것으로 판단한 것이 아니기 때문이다.
일 실시예에 의하면, 선행 타당성 판단부(116)에 의해 검증 조건(113a) 또는 간략화된 검증 조건의 타당성이 판단되지 않으면, 검증 조건(113a) 또는 간략화된 검증 조건은 타당성 판단부(180)로 전달되고, 반대로 선행 타당성 판단부(116)에 의해 검증 조건(113a) 또는 간략화된 검증 조건의 타당성이 판단되면, 검증 조건(113a) 또는 간략화된 검증 조건은 타당성 판단부(180)로 전달되지 않도록 설계될 수도 있다. 또한, 다른 실시예에 의하면, 검증의 정확성을 위해 선행 타당성 판단부(116)에 의해 검증 조건(113a) 또는 간략화된 검증 조건의 타당성이 판단된 경우에도 검증 조건(113a) 또는 간략화된 검증 조건은 타당성 판단부(180)로 전달되는 것도 가능하다. 뿐만 아니라, 또 다른 실시예에 의하면, 선행 타당성 판단부(116)가 검증 조건(113a) 또는 간략화된 검증 조건을 타당하다고 판단한 경우에 한하여, 또는 선행 타당성 판단부(116)가 검증 조건(113a) 또는 간략화된 검증 조건을 타당하지 않다고 판단한 경우에 한하여, 검증부(110)가 검증 조건(113a) 또는 간략화된 검증 조건을 타당성 판단부(180)로 전달하는 것도 가능하다.
상술한 바와 같이, 결과 처리부(119)는 타당성 판단부(180)의 판단 결과 또는 선행 타당성 판단부(116)의 판단 결과를 기반으로 출력부(102) 및/또는 불변식 처리부(170)의 정제부(173)로 반환 대상을 전송할 수 있다.
불변식 처리부(170)의 정제부(173)는 결과 처리부(119)로부터 전달된 반환 대상 기반으로 이전에 검증부(110)에 제공된 불변식 후보(예를 들어, 초기 불변식 후보)를 정제하여 더 구체적인 정보를 생성함으로써 적어도 하나의 새로운 불변식 후보군을 생성할 수 있다.
일 실시예에 의하면, 정제부(173)는 검증부(110)로부터 전달받은 반환 대상의 집합(U)의 정보를 이용하여(도 6 참조), 기존에 검증부(110)에 제공되었던 불변식(ψ, μ)을 정제함으로써 새로운 불변식 후보들을 생성할 수 있다. 이 경우, 정제부(173)는 반환 대상의 집합(U)을 이용하여 각각의 반환된 기본 경로의 기본 명령문(들)로부터 새로운 불변식을 생성하기 위해 이용될 적어도 하나의 변수와 적어도 하나의 정수 컴포넌트를 추출할 수도 있다.
정제부(173)는 반환 대상의 집합(U)에 존재하는 적어도 하나의 기본 정보들 각각의 시작 지점((l1)과 종료 지점(l2)에 존재하는 불변식(들)만을 정제하도록 마련된 것일 수도 있다. 구체적으로 예를 들어, 컨트랙트 내에 두 개의 루프 레이블(LL1 및 LL2)이 존재하되, 정제부(173)가 하기의 수학식 18과 같은 반환 대상의 집합을 수신하였다고 가정할 수 있다.
Figure pat00032
여기서, entryf는 함수 f의 입구를 의미한다. 이 경우, 정제부(173)는 반환 대상의 집합(U)의 시작 지점(l1)에 존재하는 두 개의 불변식, 즉 트랜잭션 불변식 n ≤ 100와, 어느 하나의 루프 레이블(LL1)에 대응하는 루프 불변식 x=y를 정제하나, 정제부(173)는 시작 지점에서 정의되지 않은 다른 루프 레이블(LL2)에 대응하는 불변식은 정제하지 않도록 설계된다.
정제부(173)는 적절한 정제 규칙(refinement relation)을 기반으로 효과적이면서 효율적으로 불변식 후보군을 생성하도록 구현된 것일 수 있다. 예를 들어, 지나치게 일반적인 불변식을 탐색하여 후보군을 생성하는 경우, 탐색 대상이 지나치게 증가하여 불변식 후보군의 생성에 과도한 시간을 소모하게 될 수도 있고, 반대로 지나치게 제한적인 표현력을 지닌 불변식만을 탐색하여 불변식 후보군을 생성할 경우 증명에 필요한 불변식 후보군을 설정 못하게 될 수도 있다. 따라서, 정제부(173)는 과도하게 일반적이지도 않으면서 과도하게 협소하지 않은 불변식을 탐색하여 컨트랙트의 검증에 적합한 불변식 후보군을 생성할 수 있다.
예를 들어, 정제부(173)는 적어도 하나의 미리 정의된 패턴의 식을 포함하는 불변식을 기반으로 불변식 후보를 정제할 수도 있다. 이 경우, 정제부(173)는 미리 정의된 패턴의 원자적 식(atomic formula) 또는 둘 이상의 원자적 식의 결합식(conjunctive formula)으로 형성된 불변식만을 기반으로 불변식 후보군을 생성할 수도 있다. 여기서, 미리 정의된 패턴의 식은 설계자의 임의적 선택이나 경험칙에 따라 결정된 적어도 하나의 식을 포함할 수 있으며, 예를 들어, 스마트 컨트랙트의 안전성 검증을 위해 흔히 요구되는 패턴의 불변식(들)을 포함할 수 있다.
보다 구체적으로 예를 들어, 미리 정의된 패턴의 식은, x≥y, x=y, x=n, x≥n, x≤n, sum(x)=n 및 sum(x)=y 중 적어도 하나를 포함할 수 있다. 여기서 x 및 y는 프로그램의 변수, n은 프로그램의 상수를 의미한다. sum(x)=n 또는 sum(x)=y에서 x는 솔리디티 언어에서 주소를 부호 비트 없는 정수 256bit(uint256)으로 매핑하는 타입 변수를 의미하며, x의 모든 계좌 잔액의 합이 n 또는 y와 동일함을 나타낸다. sum(x)가 포함된 식은, 타당성 판단부(180)가 이해할 수 있는 1차 논리식으로 변형될 수 있다. 이 경우, sum(x)는 유의미한 원소에 대해 표현되고 무의미한 원소에 대해선 하나의 전체로써 요약되어 표현될 수 있다. 유의미한 원소란 식에 등장하는 원소를 포함할 수 있다. 구체적으로 예를 들어, 하기의 수학식 19와 같은 식이 주어진 경우, x는 i 및 j의 인덱스 변수들에 의해 접근 가능하므로, i 및 j를 제외한 잔여 인덱스 접근에 의한 부분은 요약적으로 통합하여 하기의 수학식 20과 같이 표현할 수 있다.
Figure pat00033
Figure pat00034
여기서, F1은 x의 모든 원소의 합이 n과 같음을 나타내는 것으로 하기의 수학식 21과 같이 정의될 수 있고, F2는 x의 모든 원소의 합을 합산하는 과정에서 정수 오버플로우가 발생하지 않음을 나타내는 것으로 하기의 수학식 22와 같이 정의될 수 있다.
Figure pat00035
Figure pat00036
여기서, Rx는 x[i] 및 x[j]를 제외한 나머지 원소들의 합을 표현한 변수이며, Bx는 Rx의 연산 과정에서 정수 오버플로우가 발생하지 않음을 나타내는 부울 변수이다.
상술한 바와 같은 방법을 통해 정제부(173)는 불변식 후보군을 새로 생성할 수 있다. 보다 구체적으로 예를 들어, 현재의 불변식이 (x=10, μ)이고(μ는 임의의 루프 불변식 매핑), |U|=1이고, 반환 대상에 대한 집합(U)에서 추출된 변수 컴포넌트가 {x, y}이되 정수 컴포넌트는 부재하며, 반환 대상에 대한 집합(U)은 오직 트랜잭션 불변식만 포함한다고 했을 때, 정제부(173)는 하기의 수학식 23과 같은 불변식 후보군을 생성하게 된다.
Figure pat00037
새롭게 생성된 불변식 후보군은, 도 1 및 도 4에 도시된 바와 같이 검증부(110)로 전달되고, 검증부(110)는 새로 수신한 불변식 후보군을 기반으로 상술한 바와 동일하게 또는 일부 변형된 방법으로 검증 조건(113a)을 생성하고, 검증 조건(113a)의 타당성을 판단하여 반환 대상을 검출하거나 및/또는 판단 결과를 출력부(102)로 전달하게 된다.
이하, 상술한 스마트 컨트랙트 검증 장치(100)의 동작을 표현한 프로그램 코드의 일례를 설명하도록 한다.
도 8은 스마트 컨트랙트 검증 장치의 동작을 프로그램 코드로 표현한 일례를 도시한 도면이다.
도 8의 제1 라인의 워크 셋 W는 불변식 후보군들의 집합을 의미한다. 이 경우, 각 불변식 후보는 트랜잭션 불변식(ψ) 및 루프 불변식 매핑(μ)을 포함할 수 있다. 이 경우, 각 불변식 후보는 불변식 쌍 (ψ, μ)으로 표현될 수 있다.
제1 라인에 의하면 먼저 워크 셋 W는 초기화될 수 있다. 이는 상술한 초기화부(171)에 의해 수행될 수 있다. 도 8의 프로그램 코드에서는 워크 셋 W가 가장 부정확한 불변식 정보인 (true, λLL.true)로 초기화된다. 여기서 λLL.true는 모든 루프 레이블 LL이 참(true)으로 매핑되어 있음을 람다 표기법으로 나타낸 것이다.
순차적으로 제3 라인에서는 식의 크기가 가장 작은 불변식 후보가 워크 셋 W에서 선택하여 제거될 수 있다. 크기가 가장 작은 불변식 후보의 제거 역시 초기화부(171)에서 수행될 수 있다.
제4 라인에서는 검증부(110)가 선택된 불변식 후보가 컨트랙트(c)에 대해 귀납적인지 여부를 판단하고 및/또는 컨트랙트(c)에 존재하는 각 명령문(쿼리)가 안전한지 여부를 확인하고, 확인 결과에 따라서 (inductive, U)의 데이터 쌍을 반환하게 된다. 상술한 바와 같이 inductive는 주어진 불변식 후보가 귀납적인지의 여부를 나타내는 부울 변수이고, U는 귀납성 혹은 쿼리 안전성 증명이 실패한 경로들(즉, 반환 대상들)의 집합이다.
제5 라인에 기재된 바와 같이, 반환 대상들의 집합(U)이 공집합이면, 컨트랙트(c)의 안전성 검증이 성공하였다는 것을 의미하며, 이에 따라 컨트랙트(c)의 안전성 검증 알고리즘은 종료된다. 이 경우, 제11 라인에 기재된 바와 같이, 출력부(102)는 컨트랙트(c)의 분석 결과를 출력할 수도 있다.
제6 및 제7 라인에 기재된 바와 같이, 만약 귀납성 혹은 안전성 증명에 실패했을 경우, 불변식 처리부(180)의 정제부(183)는 반환 대상들의 집합(U)을 피드백 받아, 현재의 불변식 후보(ψ, μ), 일례로 초기화된 불변식 후보를 정제하여 새로운 불변식 후보군을 생성하고 새로운 불변식 후보군을 워크 셋 W에 추가한다.
일 실시예에 의하면, 프로그램 코드는 제8 및 제9 라인과 같이 현재 불변식 후보(ψ, μ)에 의해 안전성이 검증되지 않았으나, 귀납적이라고 판단된 경우에는(제8 라인), 귀납적이라고 판단되었다는 정보를 워크 셋 W의 모든 후보군들에 전달하여, 불변식 후보군들의 정보를 더 구체화시킬 수도 있다(제9 라인). 제9 라인에서 μ'∧μ는 각 루프 레이블 LL 각각의 루프 불변식에 대해 AND 논리 연산자를 수행하였음을 나타내는 것이다(즉, λLL.μ'(LL)∧μ(LL)). 이는 상술한 결과 처리부(119)에 의해 수행될 수도 있다.
상술한 라인 제3 내지 제9 라인은 반환 대상들의 집합(U)이 공집합이거나(다시 말해서, 컨트랙트(c)의 안전성이 검증되었거나), 또는 미리 정의된 시간이 종료될 때까지 반복될 수 있다(제2 라인). 이와 같은 과정 중에서 최초에 초기화된 불변식 후보들은 점진적으로 정제되고 구체화되게 된다.
이하 도 9 및 도 10을 참조하여 상술한 스마트 컨트랙트 검증 장치의 효과에 대해 설명하도록 한다.
도 9는 스마트 컨트랙트 검증 장치의 성능을 다른 종래의 장치와 비교한 결과를 나타낸 제1 도표로, 구체적으로는 정수 오버플로우, 언더플로우 및 0 나누기 취약점을 검증 대상으로 하여 버그 검출기와의 성능을 비교한 결과에 대한 것이다. 성능 비교를 위해 오버플로우 취약점이 존재하는 것으로 알려진 487개의 스마트 컨트랙트 중 임의의 60개를 선정한 후 30분 이내의 분석 시간 동안, 상술한 스마트 컨트랙트 검증 장치(100), 제1 내지 제4 버그 검출기를 이용하여 스마트 컨트랙트에 대한 검증을 실시하고, 도 9에 도시된 바와 같이 기록 및 정리하였다. 도 9에서 #CVE 취약점 탐지는 각 컨트랙트에 대해 기 알려진 보고된 취약점을 빠짐없이 검출한 경우의 수를 의미하고, #알람은 정수 오버플로우, 정수 언더플로우 및 0 나누기 취약점에 대해 각 분석기가 보고한 전체 알람 개수를 계수한 것이다. #허위 경보는 분석기가 생성한 전체 알람 중에서 실제로는 취약하지 않은 것을 취약한 것으로 오판단한 경우를 계수한 것이다.
도 9에 도시된 바를 참조하면, 상술한 스마트 컨트랙트 검증 장치(100)는 종래 알려진 60개의 취약점 중에서 58개를 탐지하였다. 60개의 취약점 중 탐지가 안된 2개의 취약점은 실제로 안전한 부분을 취약점으로 잘못 보고한 것에 해당하였다. 반면에 다른 버그 검출기들은 종래 알려진 60개의 취약점 중에서 41개, 20개, 10개 및 2개의 취약점만을 탐지할 수 있었다.
또한, 이외 다른 잠재적인 취약점들에 대한 분석 결과에서도 상술한 스마트 컨트랙트 검증 장치(100)는 60개의 컨트랙트에서 492개의 취약점을 탐지하였고 오직 2개의 허위 경보만을 출력함으로써, 0.4%의 매우 낮은 허위 경보 비율을 나타내었다. 반면에 종래의 다른 버그 검출기들은 상대적으로 더 적은 수의 취약점을 탐지하였으며 허위 경보 비율 역시 5.4% 내지 10.6%를 보였다.
이는 스마트 컨트랙트 검증 장치(100)는 종래 버그 검출기에 비해 안전성을 보다 정확하고 우수한 분석력을 가지고 있음을 나타낸다.
도 10은 스마트 컨트랙트 검증 장치의 성능을 다른 종래의 장치와 비교한 결과를 나타낸 제2 도표로 종래의 검증기와의 성능 비교 결과를 도시한 것이다. 도 10은 종래의 검증기가 정수 오버플로우 취약점에 관해 허위 경보를 생성한 25개의 스마트 컨트랙트를 이용하여 상술한 스마트 컨트랙트 검증 장치(100)와 종래의 제1 검증기 및 제2 검증기의 성능을 상호 비교한 것이다. 도 10에서 검증 성공은 허위 경보 와 탐지하지 못한 취약점이 모두 없는 경우를 의미하고, 검증 실패는 허위 경보 혹은 탐지하지 못한 취약점이 존재한 경우를 의미한다.
도 10에 도시된 바에 의하면, 상술한 스마트 컨트랙트 검증 장치(100)는 허위 경보를 생성했던 25개의 컨트랙트 중에서 오직 하나의 컨트랙트에 대해서만 허위 경보를 출력하였을 뿐, 그 외의 컨트랙트에 대해선 허위 경보를 출력하지 않았다. 반면에 제1 검증기는 25개의 컨트랙트 중에서 13개의 컨트랙트에서만 실행 오류를 발생시키지 않았으며, 13개의 컨트랙트 중에서 1개에서만 검증에 성공하였다. 제2 검증기는 검증에 모두 실패하였다.
상술한 실험 결과는 기존 검증기들보다 상술한 스마트 컨트랙트 검증 장치(100)가 상대적으로 더 정확하게 스마트 컨트랙트 취약점을 검증할 수 있음을 나타낸다.
이와 같이 상술한 스마트 컨트랙트 검증 장치(100)에 의하면, 다른 종래의 버그 검출기나 검증기에 비해서 취약점을 더욱 정확하고 면밀하게 검출하면서도, 건전하고 또한 허위 경보를 거의 출력하지 않는 효과를 얻을 수 있다.
이하, 도 11 내지 도 13을 참조하여 스마트 컨트랙트 검증 방법의 여러 실시예에 대해서 설명하도록 한다.
도 11은 스마트 컨트랙트 검증 방법의 제1 실시예에 대한 흐름도이다.
도 11에 도시된 바를 참조하면, 먼저 불변식 후보군이 초기화될 수 있다(300). 불변식 후보의 초기화는 사용자의 조작 또는 미리 정의된 설정에 따라 수행될 수 있다. 예를 들어, 불변식 후보는 가장 부정확한 불변식 정보인 (true, λLL.true)으로 초기화될 수 있다.
분석 및 검증될 스마트 컨트랙트가 획득되고, 스마트 컨트랙트로부터 적어도 하나의 검증 대상(일례로 기본 경로)가 획득된다(302). 검증 대상의 획득은 도 11에 도시된 바와 같이, 불변식 후보군이 초기화된 이후에 수행될 수도 있고, 실시예에 따라서, 불변식 후보군이 초기화되기 이전이나 또는 불변식 후보군의 초기화와 더불어 수행될 수도 있다.
적어도 하나의 검증 대상이 생성되면, 적어도 하나의 검증 대상에 대응하는 검증 조건이 생성될 수 있다(304). 검증 조건은 모든 검증 대상에 대해 생성될 수도 있고 또는 일부의 검증 대상에 대해 생성될 수도 있다. 검증 조건은 소정의 수식 형태로 표현될 수 있으며, 예를 들어, 1차 논리식의 형태로 표현될 수도 있다. 일 실시예에 의하면, 검증 조건은 적어도 하나의 기본 경로에 대해 불변식 후보의 귀납성 여부 및 쿼리의 안전성 여부에 대한 적어도 하나의 수식들을 획득함으로써 생성될 수도 있으며, 보다 구체적으로 예를 들어, 상술한 수학식 3 내지 수학식 5의 형태로 생성될 수도 있다.
검증 조건이 생성되면, 검증 조건에 대한 타당성이 확인 및 판단될 수 있다(306). 이 경우, 검증 조건을 생성한 검증부로부터 SMT 솔버 등과 같은 타당성 판단부로 전달되고, 타당성 판단부는 검증 조건에 대한 타당성을 판단한 후 판단 결과를 검증부로 전송할 수도 있다.
만약 확인 및 판단 결과, 검증 조건이 타당하다면(308의 예), 검증 과정은 종료되고 스마트 컨트랙트가 안전하다는 판단 결과가 출력될 수 있다(314). 이 경우, 이용된 불변식 후보의 귀납성 여부에 대한 판단 결과(즉, 불변식 후보의 귀납성이 인정되었다는 판단 결과)도 함께 출력될 수도 있다.
반대로 확인 및 판단 결과, 검증 조건이 타당하지 않고(308의 아니오), 또한 검증이 종료되지 않는 경우라면(310의 아니오), 타당하지 않은 검증 대상(즉, 반환 대상)에 대한 정보를 기반으로 기존에 이용된 불변식 후보군(즉, 초기화된 후보군)에 대한 정제가 수행되고, 이에 따라 새로운 불변식 후보군이 생성될 수 있다(312). 새로운 불변식 후보군은 적어도 하나의 미리 정의된 패턴을 기반으로 정제될 수 있다. 예를 들어, 특정한 패턴의 원자적 식 또는 둘 이상의 원자적 식이 결합된 결합식으로 형성된 불변식을 이용하여 불변식 후보군을 생성하는 것도 가능하다. 여기서, 예를 들어, 미리 정의된 패턴의 식은, x≥y, x=y, x=n, x≥n, x≤n, sum(x)=n 및 sum(x)=y 중 적어도 하나를 포함할 수 있으나, 이에 한정되는 것은 아니다.
새로운 불변식 후보군이 생성되면, 새로운 불변식 후보군을 기반으로 검증 대상에 대한 새로운 검증 조건이 생성될 수 있다(304). 이 경우, 검증 대상은 기존에 생성된 검증 대상과 동일할 수도 있고, 또는 상이할 수도 있다. 필요에 따라, 검증 대상은 컨트랙트로부터 다시 생성 및 획득될 수도 있다(302). 새로운 검증 조건이 생성되면, 순차적으로 타당성이 확인되고(306), 타당한 경우에는 검증이 종료되고, 결과값이 출력되거나(308의 예 및 314) 또는 여전히 타당하지 않은 경우에는 다시 새로운 불변식 후보군을 생성하게 된다(312). 이에 따라 검증 조건이 모두 타당하거나(308의 예) 또는 검증이 종료될 때까지(310의 예) 상술한 단계(302 내지 314)가 반복되게 된다.
한편, 확인 및 판단 결과, 검증 조건이 타당하지 않으나(308의 아니오) 기 정의된 검증 종료 조건(예를 들어, 검증 시간의 초과 등)의 만족 여부에 따라 검증이 종료될 수도 있다(310의 예). 이 경우, 실시예에 따라서, 검증이 종료된 이유(검증 시간의 초과 등) 등이 외부로 출력될 수도 있다(314).
도 12는 스마트 컨트랙트 검증 방법의 제2 실시예에 대한 흐름도이다.
다른 실시예에 의하면, 스마트 컨트랙트 검증 방법은 먼저 상술한 바와 동일하게 불변식 후보군이 초기화되고, 분석 및 검증될 스마트 컨트랙트가 획득되고, 스마트 컨트랙트로부터 적어도 하나의 검증 대상(일례로 기본 경로)이 획득될 수 있다(320). 이들 과정은 동시에 또는 이시에 수행될 수 있다.
순차적으로 적어도 하나의 검증 대상의 전부 또는 일부에 대해 검증 조건이 생성될 수 있다(322).
검증 조건이 생성되면, 생성된 검증 조건에 대한 간략화가 더 수행될 수 있다(324). 검증 조건은, 예를 들어, 미리 정의된 간략화 규칙을 기반으로 간략하게 수정 또는 변경될 수 있다. 여기서, 미리 정의된 간략화 규칙은, 기 상술한 바와 같이, 종래 수학적 또는 논리적으로 정의된 각종 공식, 법칙 및/또는 공리 등을 기반으로 정의된 것일 수 있다.
검증 조건이 간략화되면, 간략화된 검증 조건에 대한 타당성이 확인 및 판단될 수 있다(326). 이 경우, 간략화된 검증 조건의 타당성 판단은, 검증 조건의 생성 및 간략화를 수행한 검증부가 아닌, 타당성 판단부에 의해 수행될 수 있다. 타당성 판단부는 판단 결과를 검증부로 전송한다.
만약 확인 및 판단 결과, 검증 조건이 타당하다면(328의 예), 검증 과정은 종료되고 스마트 컨트랙트가 안전하다는 판단 결과가 외부로 시각적 또는 청각적 형태로 출력될 수 있다(334). 상술한 바와 같이, 현재 사용된 불변식 후보의 귀납성이 인정되었다는 판단 결과도 함께 출력 가능하다.
반대로 확인 및 판단 결과, 검증 조건이 타당하지 않고(328의 아니오), 또한 검증 종료 조건이 만족되지 않는 경우라면(330의 아니오), 상술한 바와 같이 타당하지 않은 검증 대상(즉, 반환 대상)에 대한 정보를 이용하여 불변식 후보군(즉, 초기화된 후보군)이 정제되어, 새로운 불변식 후보군이 생성될 수 있다(332).
새로운 불변식 후보군이 생성되면, 새로운 불변식 후보군을 기반으로 검증 대상에 대한 새로운 검증 조건이 생성되고(322), 컨트랙트에 대한 검증이 성공하거나(328의 예) 또는 기 정의된 검증 종료 조건이 만족될 때(330의 예)까지 상술한 과정(322 내지 334)는 반복될 수 있다. 한편, 검증 조건이 타당하지 않으나(328의 아니오) 기 정의된 검증 종료 조건에 따라 검증이 종료될 수도 있다(330의 예).
도 13은 스마트 컨트랙트 검증 방법의 제3 실시예에 대한 흐름도이다.
도 13에 도시된 스마트 컨트랙트 검증 방법의 제3 실시예에 의하면, 도 11 및 도 12에서 설명한 바와 같이 먼저 불변식 후보군이 초기화되고, 분석 및 검증될 스마트 컨트랙트가 획득되며, 스마트 컨트랙트로부터 적어도 하나의 검증 대상(일례로 기본 경로)이 획득된다(320).
이어서 적어도 하나의 검증 대상의 전부 또는 일부에 대해 적어도 하나의 검증 조건이 생성될 수 있다(322).
적어도 하나의 검증 조건이 생성되면, 검증부는 검증 조건을 타당성 판단부로 전송할지 여부를 먼저 결정할 수 있다(344). 즉, 검증부가 타당성을 선행해서 확인할지 여부를 결정할 수 있다. 예를 들어, 검증 조건이 미리 정의된 템플릿에 대응하는 경우, 검증부는 타당성을 선행하여 확인할 것을 결정할 수도 있다. 다른 예를 들어, 검증부는 검증 조건의 형태에 따라서 타당성의 선행 확인 여부를 결정할 수도 있다.
만약 검증부가 타당성 판단부로 전송할 것으로 결정하면(344의 아니오), 상술한 바와 같이 타당성 판단부로 검증 조건이 전달되고(348) 타당성 판단부는 적어도 하나의 검증 조건 각각에 대해 타당성을 판단할 수 있다(350).
반대로 검증부가 타당성 판단부로 검증 조건을 전달하지 않고, 직접 타당성을 선행하기로 결정한 경우(344의 예), 검증부가 타당성을 선행하여 확인할 수 있다(346). 예를 들어, 검증부는 미리 정의된 템플릿을 이용하여 검증 조건의 타당성을 판단할 수 있다. 여기서, 미리 정의된 템플릿은 스마트 컨트랙트의 분석 과정에서 흔히 생성/검출되는 검증 조건 또는 이와 같은 검증 조건의 패턴 등을 기반으로 정의된 것일 수 있다. 보다 구체적으로 예를 들어, 미리 정의된 템플릿은 특정한 패턴의 검증 조건에 따라 타당한 것으로 또는 타당하지 않은 것으로 판단하는 내용을 포함할 수 있다. 다른 예를 들어, 검증부는 검증 조건의 형태를 기반으로 검증 조건의 타당성을 판단할 수도 있다. 구체적으로 검증부는 자유 변수의 집합을 기반으로 전제 조건과 결과의 관계를 검토함으로써 컨트랙트의 타당성 여부를 신속하게 판단할 수도 있다.
실시예에 따라서, 타당성의 선행 확인(344) 이전에 도 12에 도시된 바와 같이 검증 조건에 대한 간략화(324)가 더 수행되는 것도 가능하다. 이 경우, 검증부는 간략화된 검증 조건을 기반으로 타당성을 선행하여 판단하게 된다.
검증부의 타당성 판단 결과 또는 타당성 판단부의 판단 결과에 따라, 만약 검증 조건이 타당하다면(352의 예), 검증 과정은 종료되고 스마트 컨트랙트가 안전하다는 판단 결과가 외부로 출력될 수 있으며, 현재의 불변식 후보의 귀납성 여부에 대한 판단 결과도 출력될 수 있다(358).
검증부의 타당성 판단 결과 또는 타당성 판단부의 판단 결과, 만약 검증 조건이 타당하지 않고(352의 아니오), 또한 검증이 종료되지 않는 경우라면(354의 아니오), 상술한 바와 같이, 반환 대상(즉, 타당하지 않은 검증 대상)에 대한 정보를 기반으로 기존에 이용된 불변식 후보군에 대한 정제가 수행된다(356). 정제 결과에 따라 생성된 새로운 불변식 후보군을 기반으로, 기존의 검증 대상에 대한 또는 새로운 검증 대상에 대한 새로운 검증 조건이 생성될 수 있다(342).
마찬가지로 상술한 과정(342 내지 358)은, 컨트랙트에 대한 검증이 성공하거나(352의 예) 또는 기 정의된 검증 종료 조건이 만족될 때(354의 예)까지 반복될 수 있다. 또한, 제3 실시예에 경우에서도, 검증 조건이 타당하다고 판단되지는 않으나(352의 아니오), 사용자 또는 설계자에 의해 미리 정의된 검증 종료 조건(예를 들어, 검증 시간의 초과 등)에 따라 컨트랙트에 대한 검증이 종료될 수도 있다(354의 예).
상술한 실시예에 따른 스마트 컨트랙트 검증 방법은, 컴퓨터 장치에 의해 구동될 수 있는 프로그램의 형태로 구현될 수 있다. 여기서 프로그램은, 프로그램 명령, 데이터 파일 및 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 프로그램은 기계어 코드나 고급 언어 코드를 이용하여 설계 및 제작된 것일 수 있다. 프로그램은 상술한 방법을 구현하기 위하여 특별히 설계된 것일 수도 있고, 컴퓨터 소프트웨어 분야에서 통상의 기술자에게 기 공지되어 사용 가능한 각종 함수나 정의를 이용하여 구현된 것일 수도 있다. 또한, 여기서, 컴퓨터 장치는, 프로그램의 기능을 실현 가능하게 하는 프로세서나 메모리 등을 포함하여 구현된 것일 수 있으며, 필요에 따라 통신 장치를 더 포함할 수도 있다.
상술한 스마트 컨트랙트 검증 방법을 구현하기 위한 프로그램은, 컴퓨터에 의해 판독 가능한 기록 매체에 기록될 수 있다. 컴퓨터에 의해 판독 가능한 기록 매체는, 예를 들어, 하드 디스크나 플로피 디스크와 같은 자기 디스크 저장 매체, 자기 테이프, 콤팩트 디스크나 디브이디와 같은 광 기록 매체, 플롭티컬 디스크와 같은 자기-광 기록 매체 및 롬, 램 또는 플래시 메모리 등과 같은 반도체 저장 장치 등 컴퓨터 등의 호출에 따라 실행되는 특정 프로그램을 저장 가능한 다양한 종류의 하드웨어 장치를 포함할 수 있다.
이상 스마트 컨트랙트 검증 장치 및 방법의 여러 실시예에 대해 설명하였으나, 장치 및 방법은 오직 상술한 실시예에 한정되는 것은 아니다. 해당 기술 분야에서 통상의 지식을 가진 자가 상술한 실시예를 기초로 수정 및 변형하여 구현 가능한 다양한 장치나 방법 역시 상술한 스마트 컨트랙트 검증 장치 및 방법의 일례가 될 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성 요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나 다른 구성 요소 또는 균등물에 의하여 대치되거나 또는 치환되더라도 상술한 스마트 컨트랙트 검증 장치 및 방법의 일 실시예가 될 수 있다.
100: 스마트 컨트랙트 검증 장치
110: 검증부
111: 경로 집합 생성부
113: 조건 생성부
119: 결과 처리부
190: 불변식 처리부
191: 초기화부
193: 정제부
200: 타당성 판단부

Claims (14)

  1. 적어도 하나의 불변식 후보를 포함하는 불변식 후보군을 생성하는 불변식 처리부; 및
    컨트랙트의 적어도 하나의 검증 대상을 획득하고, 상기 불변식 후보를 이용하여 상기 적어도 하나의 검증 대상 각각에 대한 검증 조건을 생성하는 검증부를 포함하고,
    상기 검증부는 상기 적어도 하나의 검증 대상 중에서 반환 대상을 검출하여 상기 불변식 처리부로 전달하되, 상기 반환 대상은 타당하지 않은 검증 조건에 대응하는 검증 대상을 포함하는,
    스마트 컨트랙트 검증 장치.
  2. 제1항에 있어서,
    상기 불변식 처리부는 상기 적어도 하나의 반환 대상을 기반으로 상기 불변식 후보를 정제하여 새로운 불변식 후보군을 생성하고, 상기 새로운 불변식 후보군을 상기 검증부에 전달하는,
    스마트 컨트랙트 검증 장치.
  3. 제2항에 있어서,
    상기 불변식 처리부는 미리 정의된 패턴의 수식을 포함하는 불변식을 검출하여 상기 불변식 후보로 결정함으로써 상기 불변식 후보를 정제하는,
    스마트 컨트랙트 검증 장치.
  4. 제1항에 있어서,
    상기 검증부는 상기 검증 조건을 타당성 판단부로 전달하고, 상기 타당성 판단부는 상기 검증 조건에 대한 타당성을 판단한 후 판단 결과를 상기 검증부로 전달하고, 상기 검증부는 상기 판단 결과를 기반으로 상기 반환 대상을 검출하는 스마트 컨트랙트 검증 장치.
  5. 제1항에 있어서,
    상기 검증부는 자유 변수 집합의 포함 관계 또는 미리 정의된 템플릿을 기반으로 상기 검증 조건의 타당성을 판단하는,
    스마트 컨트랙트 검증 장치.
  6. 제4항 또는 제5항에 있어서,
    상기 검증부는 상기 검증 조건을 타당성 판단부로 전달하기 전에 또는 상기 검증 조건의 타당성을 판단하기 전에 상기 검증 조건을 간략화하는,
    스마트 컨트랙트 검증 장치.
  7. 제1항에 있어서,
    상기 검증부는 상기 반환 대상이 부재한 경우 검증이 성공한 것으로 판단하는,
    스마트 컨트랙트 검증 장치.
  8. 적어도 하나의 불변식 후보를 포함하는 불변식 후보군을 생성하는 단계;
    컨트랙트의 적어도 하나의 검증 대상을 획득하는 단계;
    상기 불변식 후보를 이용하여 상기 적어도 하나의 검증 대상 각각에 대한 검증 조건을 생성하는 단계;
    상기 적어도 하나의 검증 대상 중에서 반환 대상을 검출하되, 상기 반환 대상은 타당하지 않은 검증 조건에 대응하는 검증 대상을 포함하는 단계를 포함하는 스마트 컨트랙트 검증 방법.
  9. 제8항에 있어서,
    상기 적어도 하나의 반환 대상을 기반으로 상기 불변식 후보를 정제하여 새로운 불변식 후보군을 생성하는 단계를 더 포함하는,
    스마트 컨트랙트 검증 방법.
  10. 제9항에 있어서,
    상기 적어도 하나의 반환 대상을 기반으로 상기 불변식 후보를 정제하여 새로운 불변식 후보군을 생성하는 단계는 미리 정의된 패턴의 수식을 포함하는 불변식을 검출하여 상기 불변식 후보로 결정하는 단계를 포함하는,
    스마트 컨트랙트 검증 방법.
  11. 제8항에 있어서,
    상기 적어도 하나의 검증 대상 중에서 반환 대상을 검출하는 단계는,
    상기 검증 조건에 대한 타당성을 판단하는 단계; 및
    상기 타당성의 판단 결과를 기반으로 상기 반환 대상을 검출하는 단계를 포함하는,
    스마트 컨트랙트 검증 방법.
  12. 제8항에 있어서,
    자유 변수 집합의 포함 관계 또는 미리 정의된 템플릿을 기반으로 상기 검증 조건의 타당성을 판단하는 단계를 더 포함하는,
    스마트 컨트랙트 검증 방법.
  13. 제11항 또는 제12항에 있어서,
    상기 검증 조건을 간략화하는 단계를 더 포함하는,
    스마트 컨트랙트 검증 방법.
  14. 제8항에 있어서,
    상기 반환 대상이 부재한 경우 검증이 성공한 것으로 판단하는 단계를 더 포함하는,
    스마트 컨트랙트 검증 방법.
KR1020190123850A 2019-10-07 2019-10-07 스마트 컨트랙트 검증 장치 및 방법 KR102269174B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190123850A KR102269174B1 (ko) 2019-10-07 2019-10-07 스마트 컨트랙트 검증 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190123850A KR102269174B1 (ko) 2019-10-07 2019-10-07 스마트 컨트랙트 검증 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20210041310A true KR20210041310A (ko) 2021-04-15
KR102269174B1 KR102269174B1 (ko) 2021-06-24

Family

ID=75440779

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190123850A KR102269174B1 (ko) 2019-10-07 2019-10-07 스마트 컨트랙트 검증 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102269174B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114048464A (zh) * 2022-01-12 2022-02-15 北京大学 基于深度学习的以太坊智能合约安全漏洞检测方法及系统
KR102664072B1 (ko) * 2022-11-25 2024-05-09 고려대학교 산학협력단 스마트 컨트랙트 취약점 수정 방법 및 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001142937A (ja) 1999-10-08 2001-05-25 Nec Corp 回路のスケジューリング正当性チェック方法及びスケジュール検証方法
US7146352B2 (en) 2003-06-23 2006-12-05 Microsoft Corporation Query optimizer system and method
US20180183600A1 (en) 2016-12-28 2018-06-28 Mastercard International Incorporated Method and system for providing validated, auditable, and immutable inputs to a smart contract
JP2018128723A (ja) * 2017-02-06 2018-08-16 株式会社日立製作所 信用度管理システムおよび信用度管理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001142937A (ja) 1999-10-08 2001-05-25 Nec Corp 回路のスケジューリング正当性チェック方法及びスケジュール検証方法
US7146352B2 (en) 2003-06-23 2006-12-05 Microsoft Corporation Query optimizer system and method
US20180183600A1 (en) 2016-12-28 2018-06-28 Mastercard International Incorporated Method and system for providing validated, auditable, and immutable inputs to a smart contract
JP2018128723A (ja) * 2017-02-06 2018-08-16 株式会社日立製作所 信用度管理システムおよび信用度管理方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
COMPLUTENSE UNIVERSITY OF MADRID 외 1 *
Elvira Albert외 4, ‘SAFEVM: A Safety Verifier for Ethereum Smart Contracts’, ISSTA19, 2019.07.15.* *
Yuepeng Wang외 6, ‘Formal Specification and Verification of Smart Contracts in Azure Blockchain’, 2019.04.29.* *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114048464A (zh) * 2022-01-12 2022-02-15 北京大学 基于深度学习的以太坊智能合约安全漏洞检测方法及系统
CN114048464B (zh) * 2022-01-12 2022-03-15 北京大学 基于深度学习的以太坊智能合约安全漏洞检测方法及系统
KR102664072B1 (ko) * 2022-11-25 2024-05-09 고려대학교 산학협력단 스마트 컨트랙트 취약점 수정 방법 및 장치

Also Published As

Publication number Publication date
KR102269174B1 (ko) 2021-06-24

Similar Documents

Publication Publication Date Title
Wang et al. Charting the attack surface of trigger-action IoT platforms
US11687645B2 (en) Security control method and computer system
Jürjens Sound methods and effective tools for model-based security engineering with UML
US8635602B2 (en) Verification of information-flow downgraders
CN106326737B (zh) 用于检测可在虚拟堆栈机上执行的有害文件的系统和方法
CN103262088B (zh) 评估应用代码中的降级器代码的方法和装置
Huang et al. Detecting sensitive data disclosure via bi-directional text correlation analysis
CN103577323A (zh) 基于动态关键指令序列胎记的软件抄袭检测方法
KR102269174B1 (ko) 스마트 컨트랙트 검증 장치 및 방법
KR101645019B1 (ko) 소프트웨어 보안취약점 검출을 위한 규칙명세언어
Duan et al. Towards automated safety vetting of smart contracts in decentralized applications
US20140366146A1 (en) Interactive analysis of a security specification
Lawall et al. WYSIWIB: exploiting fine‐grained program structure in a scriptable API‐usage protocol‐finding process
KR102378377B1 (ko) 스마트 컨트랙트 내의 취약 트랜잭션 시퀀스 획득 장치 및 방법
El Farissi et al. Neural network vs. Bayesian network to detect Java card mutants
CN115310087A (zh) 一种基于抽象语法树的网站后门检测方法和系统
Msgna et al. Secure application execution in mobile devices
JP7008879B2 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
Zhioua et al. Framework for the formal specification and verification of security guidelines
CN112632550A (zh) 口令和密钥的应用安全的检测方法及其电子设备
Zhao et al. {UVSCAN}: Detecting {Third-Party} Component Usage Violations in {IoT} Firmware
WO2019142335A1 (ja) セキュリティ設計装置、セキュリティ設計方法およびセキュリティ設計プログラム
Pan et al. Automated generation of security-centric descriptions for smart contract bytecode
Ghorbanzadeh et al. Detecting application logic vulnerabilities via finding incompatibility between application design and implementation
Borek et al. Model checking of security-critical applications in a model-driven approach

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right