
Legion은 프라이버시를 위해 설계된 영지식(Zero-Knowledge) 인증 패브릭입니다.
하드웨어 바인딩 디바이스 링 서명을 사용한 진정한 영지식 인증
Legion은 당신이 누구인지 밝히지 않고 권한이 있음을 증명하는 영지식 인증 시스템입니다. 당신은 공개 데이터를 기반으로 무언가를 증명하면서, 현재 행동을 자신의 공개 주소와 연결하지 않습니다.
| 속성 | 보장 |
|---|---|
| 사용자 익명성 | 2^20 (1,048,576) 중 1명 |
| 디바이스 익명성 | 2^10 (1,024) 중 1대 |
| 건전성 오류 | 2^-128 |
| 증명 시스템 | Halo2 PLONK |
| 비밀번호 해싱 | Argon2id |
| 하드웨어 바인딩 | WebAuthn Level 2 |
| 속도 제한 | 시간당 5회 시도 |
| 디바이스 폐기 | 즉시 블랙리스트 |
# Clone and run
git clone https://github.com/deadends/legion.git
cd legion
# Linux/macOS
chmod +x install.sh && ./install.sh
# Windows
install.bat
끝입니다! 브라우저에서 http://localhost를 여세요.
성능: 등록 ~10초, 인증 ~4분 (k=16 증명 생성)
# 1. Install Redis
# macOS: brew install redis && redis-server
# Ubuntu: sudo apt install redis && redis-server
# Windows: https://redis.io/docs/install/install-redis/install-redis-on-windows/
# 2. Run server (terminal 1)
cd legion-server
cargo run --release --features redis
# 3. Build frontend (terminal 2)
cd wasm-client
wasm-pack build --target web --release
python3 -m http.server 8000
# 4. Open http://localhost:8000
프로덕션 배포에 대해서는 DEPLOYMENT.md를 참조하세요.
| 보안 수준 | k | 증명 시간 | 증명 크기 | 사용 사례 |
|---|---|---|---|---|
| 테스트 | 12 | ~10초 | 2.5 KB | 개발 |
| 표준 | 14 | ~60초 | 3.0 KB | 스테이징 |
| 프로덕션 | 16 | ~4분 | 3.5 KB | 권장 |
| 높은 보안 | 18 | ~15분 | 4.0 KB | 엔터프라이즈 |
📖 암호학적 세부 사항을 포함한 상세한 단계별 인증 흐름은 ARCHITECTURE_FLOW.md를 참조하세요
┌──────────────────────────────────────────────────────────────────────────┐
│ CLIENT (Browser) │
├──────────────────────────────────────────────────────────────────────────┤
│ ┌────────────────┐ ┌─────────────────┐ ┌──────────────────────────┐ │
│ │ UI Layer │ │ WASM Module │ │ Hardware Security │ │
│ │ (Vanilla JS) │ │ (Rust→WASM) │ │ (WebAuthn Level 2) │ │
│ ├────────────────┤ ├─────────────────┤ ├──────────────────────────┤ │
│ │ • Registration │ │ • Blake3 Hash │ │ • TPM 2.0 │ │
│ │ • Login Form │ │ • Argon2id KDF │ │ • Secure Enclave │ │
│ │ • Session UI │ │ • Halo2 Prover │ │ • FIDO2 Authenticator │ │
│ │ • Error Handle │ │ • Merkle Proof │ │ • Device Private Key │ │
│ └────────────────┘ └─────────────────┘ └──────────────────────────┘ │
└────────────────────────────────┬─────────────────────────────────────────┘
│ HTTPS/TLS 1.3
│ (Encrypted Channel)
▼
┌──────────────────────────────────────────────────────────────────────────┐
│ REVERSE PROXY (Nginx) │
├──────────────────────────────────────────────────────────────────────────┤
│ • TLS Termination • Rate Limiting (100 req/min) │
│ • Load Balancing • Request Logging │
│ • Static File Serving • Security Headers (CSP, HSTS) │
└────────────────────────────────┬─────────────────────────────────────────┘
│ HTTP (Internal Network)
▼
┌──────────────────────────────────────────────────────────────────────────┐
│ LEGION SERVER (Rust/Axum) │
├──────────────────────────────────────────────────────────────────────────┤
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ API Layer (Axum) │ │
│ ├─────────────────────────────────────────────────────────────────┤ │
│ │ POST /register │ POST /auth/challenge │ POST /auth/verify│ │
│ │ POST /auth/session │ GET /health │ POST /logout │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Business Logic Layer │ │
│ ├─────────────────────────────────────────────────────────────────┤ │
│ │ • Credential Manager │ • Challenge Generator (32-byte random)│ │
│ │ • Merkle Tree Builder │ • Nullifier Tracker (replay protection)│ │
│ │ • ZK Proof Verifier │ • Session Manager (linkability tags) │ │
│ │ • Device Tree Manager │ • Timestamp Validator (±5min window) │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Cryptographic Layer │ │
│ ├─────────────────────────────────────────────────────────────────┤ │
│ │ • Halo2 Verifier (PLONK) │ • Poseidon Hash (ZK-friendly) │ │
│ │ • Blake3 (credential hash)│ • Argon2id (password KDF) │ │
│ │ • Merkle Tree (2^20 users)│ • Device Tree (2^10 devices/user) │ │
│ └─────────────────────────────────────────────────────────────────┘ │
└────────────────────────┬──────────────────────┬──────────────────────────┘
│ │
▼ ▼
┌────────────────────────┐ ┌───────────────────────────┐
│ Redis (In-Memory) │ │ RocksDB (Persistent) │
├────────────────────────┤ ├───────────────────────────┤
│ • Session Tokens │ │ • User Credentials │
│ • Linkability Tags │ │ • Merkle Tree Nodes │
│ • Active Challenges │ │ • Device Trees │
│ • Nullifier Cache │ │ • Nullifier History │
│ TTL: 1 hour │ │ Persistent Storage │
└────────────────────────┘ └───────────────────────────┘