
Legion은 프라이버시를 위해 설계된 영지식(Zero-Knowledge) 인증 패브릭입니다.
하드웨어 바인딩 기기 링 서명을 사용하는 진정한 영지식 인증
Legion은 당신이 누구인지 공개하지 않으면서 권한이 있음을 증명하는 비밀번호 없는 영지식 인증 시스템입니다.
지문 + 24단어 복구 구문(MetaMask와 유사)만으로 인증하세요. 사용자 이름도, 비밀번호도, 서버 측 비밀도 없습니다.
| 속성 | 보장 |
|---|---|
| 인증 | 비밀번호 없음 (BIP-39 + 지문) |
| 사용자 익명성 | 2^20 (1,048,576) 중 1 |
| 기기 익명성 | 사용자당 2^10 (1,024) 중 1 |
| 건전성 오류 | 2^-128 |
| 증명 시스템 | Halo2 PLONK (투명한 설정) |
| 자격 증명 파생 | Blake3 (BIP-39 시드) |
| 하드웨어 바인딩 | WebAuthn Level 2 (TPM/Secure Enclave) |
| 다중 기기 | 계정당 최대 2개 기기 |
| 속도 제한 | 시간당 5회 시도 |
| 기기 폐기 | 즉시 블랙리스트 |
git clone https://github.com/deadends/legion.git cd legion
chmod +x scripts/install.sh && ./scripts/install.sh
scripts\install.bat
**끝입니다!** 브라우저에서 http://localhost를 여세요.
### 설치되는 항목
- ✅ Redis (세션 저장소)
- ✅ Legion Server (ZK 증명 검증기)
- ✅ Frontend (WASM 클라이언트)
- ✅ Nginx (리버스 프록시)
**성능**: 등록 약 5초, 인증 약 2분 (k=14 증명 생성)
---
### 수동 설치 (Docker 없이)
<details>
<summary>수동 설치 방법을 펼치려면 클릭</summary>```bash
# 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 | ~30s | 3.2 KB | 테스트 |
| 프로덕션 | 14 | ~2min | 3.4 KB | 권장 |
테스트 하드웨어: Lenovo IdeaPad 3 - Intel Core i3 11세대
참고: 성능은 하드웨어 사양에 따라 다를 수 있습니다.
| 지표 | 값 | 비고 |
|---|---|---|
| 증명 크기 | 3,264바이트 | 압축 시 3.19 KB |
| 공개 입력 | 10 | 사용자 트리 루트, 기기 트리 루트, nullifier 등 |
| 파라미터 생성 | 7.03s | k 값당 일회성 설정 |
| 회로 생성 | 2.3µs | 무시할 수 있는 오버헤드 |
| 검증 키 생성 | 1.29s | 일회성 키 생성 |
| 증명 검증 | 107.7ms | 실제 ZK 증명 확인 |
| 전체 검증 | 8.43s | 엔드투엔드 (캐싱 없음) |
세부 분석:
| 지표 | 값 | 비고 |
|---|---|---|
| 증명 크기 | 3,392바이트 | 압축 시 3.31 KB |
| 공개 입력 | 10 | 사용자 트리 루트, 기기 트리 루트, nullifier 등 |
| 파라미터 생성 | 100.78s | k 값당 일회성 설정 |
| 회로 생성 | 5µs | 무시할 수 있는 오버헤드 |
| 검증 키 생성 | 12.89s | 일회성 키 생성 |
| 증명 검증 | 967.2ms | 실제 ZK 증명 확인 |
| 전체 검증 | 114.65s | 엔드투엔드 (캐싱 없음) |
세부 분석:
중요: 파라미터 생성과 키 생성은 캐시할 수 있는 일회성 비용입니다. 일단 캐시되면 k 값에 따라 검증은 약 108~967ms만 소요됩니다. 현재 구현은 아직 파라미터를 캐시하지 않습니다.
이전 벤치마크보다 왜 느린가요? 비밀번호 없는 회로는 이제 하나가 아닌 두 개의 Merkle 트리 (사용자 + 기기)를 검증하여 진정한 기기 수준 익명성 (사용자당 1024개 중 1개 기기)을 제공합니다.
📖 암호화 세부 정보가 포함된 단계별 인증 흐름은 ARCHITECTURE_FLOW.md를 참조하세요