Microsoft Research, PDD Kit 검증 시연
- •Microsoft Research, Pet Store의 Rust 로그인 로직을 개발자 요구사항에 맞춰 형식 검증하는 PDD Kit 시연
- •PDD Kit, 의도를 Verus 증명으로 바꾸고 증명으로 다룰 수 없는 요구사항은 테스트로 확인
- •Pet Store 로그인 증명에 계정 조회·비밀번호 확인·토큰 서명·만료 등 개발자가 승인한 가정 6개 적용
Microsoft Research가 개발자의 의도를 형식 명세로 바꾸고, 모든 입력에 대해 코드가 명세를 따르는지 증명하며, 증명으로 확인할 수 없는 요구사항은 테스트하는 도구 모음 PDD Kit을 선보였습니다. 형식 검증 배경이 없는 엔지니어도 형식 기법을 사용할 수 있도록 설계됐습니다. Microsoft는 Rust 풀스택 웹 앱 Pet Store의 로그인 로직에 이를 적용해, Verus가 명시된 로그인 속성을 증명하고 기존 버그를 찾아낸 사례를 시연했습니다. 개발자는 생성된 코드를 한 줄씩 읽지 않고 의도를 검토했습니다.
Microsoft는 코딩 에이전트가 수만 줄에서 수십만 줄에 이르는 기능을 만들 수 있어, 코드를 줄마다 검토하기 어려워졌다고 설명했습니다. 계획은 개발자가 원하는 바를 기록하지만 에이전트가 계획에서 벗어나거나 자신의 구현에 맞춰 통과하는 테스트를 작성할 수 있습니다. 테스트는 가능한 입력의 일부만 다루므로 원래 요청과 어긋나는 경우를 놓칠 수 있습니다. PDD Kit은 명시된 속성을 모든 입력에 대해 증명으로 확인하고, 증명 범위 밖의 동작은 테스트로 확인합니다.
PDD Kit은 GitHub Next의 공동 계획 환경인 Chopin에서 작동합니다. 개발자에게 의도를 묻고 관련 코드를 설명한 뒤, 합의한 요구사항을 의도 문서에 기록해 형식 명세와 테스트에 연결합니다. 형식화할 수 있는 요구사항에는 Verus 증명을 생성하고, 나머지에는 테스트를 생성합니다. Pet Store 시연에서 개발자는 로그인 토큰 발급에 올바른 비밀번호가 필요하고 관리자 토큰은 관리자 계정에만 발급돼야 한다고 요청했습니다. PDD Kit은 올바른 비밀번호라면 항상 토큰이 발급돼야 하는지도 물었고, 개발자는 요구사항이 양방향으로 성립한다고 확인했습니다. 개발자는 로그인 처리기까지 증명에 포함하기로 해 요청에서 토큰 또는 HTTP 오류로 이어지는 코드도 검증 대상에 넣었습니다.
Pet Store는 Rust 코드 약 5,000줄로 구성됐습니다. 백엔드는 Axum과 SQLite를 사용해 재고, 프로모션, 주문, 결제를 처리하며, Leptos 상점 화면은 WebAssembly로 컴파일됩니다. Microsoft는 앱에서 민감한 부분인 로그인을 중심으로 시연했고, 같은 절차를 앱의 기능적 정확성 전반을 검증하는 데도 적용할 수 있다고 밝혔습니다. 로그인 증명은 bcrypt 해싱, 데이터베이스 질의, 토큰 서명, 현재 데이터베이스 내용, 시계, 요청 완료 여부, 사용자에게 표시되는 메시지, 명시되지 않은 요구사항을 다루지 않습니다. 이 요소들은 증명 범위 밖에 있으며 명시적 가정이나 테스트에 의존합니다.
PDD Kit은 증명이 의존하는 코드와 가정의 경계인 신뢰 컴퓨팅 기반을 드러냅니다. 개발자는 고객·관리자 계정 조회, 비밀번호 확인, 토큰 생성, 시각을 읽은 뒤 정확히 24시간 또는 86,400초 후 만료되도록 하는 함수, 데이터베이스 오류 처리, 로그인 처리기 뼈대 등 신뢰 항목 6개를 승인했습니다. PDD Kit은 신뢰하는 동작을 계약을 가정하는 작은 함수로 감싸고, 가정된 각 조건을 테스트하도록 계획합니다. 계획에서는 각 검사가 실행 전까지 예정 상태로 표시되며, 실행 후에는 명령 결과를 기록합니다.