스마트 계약 설계 보안을 위한 실행 가능한 TLA+ 모델 구축
초록
이 논문은 스마트 계약의 설계 단계에서 발생할 수 있는 취약점을 사전에 탐지하기 위해, 참여자 행동을 상태 머신으로 모델링하고 계약의 권리·의무를 명시한 뒤, TLA+를 이용해 실행 가능한 보안 설계 패턴을 정의한다. 부동산 매매 사례를 통해 CTU, Gasless Send, Reentrancy, Lost in Transfer, Unpredictable State 등 대표적인 이더리움 취약점을 설계 수준에서 검증한다.
상세 분석
논문은 스마트 계약 개발 라이프사이클 중 “설계” 단계에 초점을 맞추어, 전통적인 소프트웨어 보안 검증이 코드 수준에서 이루어지는 한계를 극복하고자 한다. 첫 번째 핵심 기법은 계약 당사자(예: 매도인, 매수인, 관리인)의 행동을 독립적인 상태 머신(State Machine)으로 추상화하는 것이다. 각 상태 머신은 “Waiting → Joined → Signed/Aborted”와 같은 전이와, 외부 이벤트(예: 제안, 결제, 소유권 이전)와 내부 제약(예: 은행 잔액)으로 구성된다. 이러한 모델링은 계약의 권리(Rights)와 의무(Obligations)를 명확히 구분하고, 권리 요청 → 의무 수행 → 권리 회수라는 3단계 흐름을 통해 상호작용을 시각화한다.
두 번째 핵심은 이러한 상태 머신을 TLA+ (Temporal Logic of Actions) 사양으로 변환하는 과정이다. TLA+는 시간적 행동을 수학적으로 기술할 수 있는 언어로, 모델 검증 도구인 TLC를 이용해 불변식(Invariant)과 안전성 속성을 자동 검증한다. 논문은 기존 스마트 계약 취약점 다섯 가지를 상태 머신 관점에서 재해석한다. 예를 들어, Reentrancy는 “Obligation 수행 중 외부 호출이 다시 동일한 Obligation을 트리거”하는 상황으로 모델링하고, 이를 방지하기 위해 TLA+에서 “once‑only” 전이 제약을 추가한다. Gasless Send는 가스 소모가 0인 전이로 인해 상태가 멈추는 현상을 시뮬레이션하고, CTU(Call to Unknown)는 외부 주소가 정의되지 않은 경우 전이 조건을 “ValidAddress”로 제한함으로써 탐지한다.
세 번째로, 논문은 부동산 매매 계약을 실제 사례로 채택해 전체 워크플로우를 구현한다. 계약 제안, 검증, 서명, 소유권 이전, 기록 보관까지 모든 단계가 TLA+ 사양에 포함되며, 각 단계마다 위에서 정의한 보안 패턴이 적용된다. 검증 결과, 모델은 의도된 취약점이 발생할 경우 불변식 위반을 보고함으로써 설계 단계에서 문제를 조기에 발견한다.
이 접근법의 장점은 (1) 설계 의도를 형식적으로 표현해 계약 당사자 간의 기대를 명확히 함, (2) 코드 구현 이전에 보안 검증이 가능해 비용·시간 절감, (3) TLA+의 풍부한 표현력으로 복합적인 비즈니스 로직과 블록체인 특성을 동시에 다룰 수 있다는 점이다. 다만, 상태 머신과 TLA+ 사양 작성에 높은 전문성이 요구되며, 실제 스마트 계약 코드와 사양 간의 일치성을 유지하기 위한 추가적인 트레이스링크 작업이 필요함을 언급한다.
댓글 및 학술 토론
Loading comments...
의견 남기기