피드로 돌아가기
Offline License Validation in Rust
Dev.toDev.to
Security

Ed25519 서명 기반 로컬 검증으로 오프라인 라이선스 무결성 확보

Offline License Validation in Rust

Nico2026년 6월 27일6intermediate

Context

기존 서버 의존형 라이선스 검증 방식은 네트워크 단절 시 앱 실행이 불가한 가용성 문제가 발생함. 특히 CLI 및 데스크톱 앱 환경에서 실시간 서버 통신은 사용자 경험을 저해하는 결정적 병목 지점으로 작용함.

Technical Solution

  • Verification과 Revalidation의 책임을 분리하여 네트워크 의존성을 최소화한 구조 설계
  • Ed25519 비대칭 키 암호화 체계를 도입하여 서버의 Private Key로 서명된 JSON Lease 문서를 로컬 Public Key로 즉시 검증
  • ureq 기반의 Synchronous 라이브러리 설계로 Tokio Runtime 없이 CLI 환경에서도 가볍게 동작하는 아키텍처 구현
  • ChaCha20-Poly1305 암호화 파일 스토어를 활용해 디바이스 바인딩 기반의 Lease 캐싱 처리
  • max_offline_days 설정을 통한 Grace Window 도입으로 무한 오프라인 사용을 방지하는 제어 메커니즘 구축
  • SKEW_SECONDS(300s) 허용 오차를 적용하여 클라이언트와 서버 간의 시간 불일치로 인한 검증 실패 방지

1. 인증 로직 설계 시 '단순 진위 확인(Verification)'과 '상태 변경 확인(Revalidation)'을 분리했는가?

2. 클라이언트 시간 오차(Clock Drift)를 고려한 허용 범위(Skew)를 설정했는가?

3. 오프라인 허용 기간(Grace Period)을 설정하여 서버 통제력을 유지하고 있는가?

4. 공개키 기반 검증 시 런타임 오버헤드를 최소화하기 위해 적절한 암호화 알고리즘(예: Ed25519)을 선택했는가?

원문 읽기