Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
legion — Legion은 프라이버시를 위해 설계된 영지식(Zero-Knowledge) 인증 패브릭입니다. | Kitploit
도구/GitHubGitHub/deadends/legion
Web SecurityCryptographyPrivacyHardware SecurityIdentity & Access Management (IAM)Authentication
GitHubdeadends/legion

legion

Legion은 프라이버시를 위해 설계된 영지식(Zero-Knowledge) 인증 패브릭입니다.

저장소 보기
108개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Legion ZK Auth 🛡️

하드웨어 바인딩 기기 링 서명을 사용하는 진정한 영지식 인증

License: MIT Rust Security Version

🎯 Legion이란 무엇인가?

Legion은 당신이 누구인지 공개하지 않으면서 권한이 있음을 증명하는 비밀번호 없는 영지식 인증 시스템입니다.

지문 + 24단어 복구 구문(MetaMask와 유사)만으로 인증하세요. 사용자 이름도, 비밀번호도, 서버 측 비밀도 없습니다.

주요 기능

  • ✅ 비밀번호 없는 인증: BIP-39 복구 구문 + 지문 (사용자 이름/비밀번호 없음)
  • ✅ 진정한 영지식: 서버는 사용자 신원을 알 수 없음 (100만 명 중 1명)
  • ✅ 기기 익명성: 링 서명으로 하드웨어에 바인딩 (1,000개 기기 중 1개)
  • ✅ 신뢰 설정 불필요: Halo2 PLONK (투명한 설정)
  • ✅ 하드웨어 보안: WebAuthn TPM/Secure Enclave 바인딩
  • ✅ 재생 방지: Nullifier + 타임스탬프
  • ✅ 세션 보안: 연결성 태그로 도난 방지
  • ✅ 다중 기기 지원: 노트북 + 휴대폰 등 2개 기기에서 동일 계정 사용
  • ✅ 속도 제한: 시간당 5회 시도 (일반 오류로 계정 열거 방지)
  • ✅ 기기 폐기: 도난당한 기기 즉시 차단

🔒 보안 보장 (v1.3.0)

🚀 빠른 시작 (단일 명령!)

사전 요구 사항

  • Docker (Docker Compose 포함)

설치 및 실행```bash

Clone and run

git clone https://github.com/deadends/legion.git cd legion

Linux/macOS

chmod +x scripts/install.sh && ./scripts/install.sh

Windows

scripts\install.bat

root@kitploit:~
**끝입니다!** 브라우저에서 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를 참조하세요.

📊 성능

검증 벤치마크

테스트 하드웨어: Lenovo IdeaPad 3 - Intel Core i3 11세대
참고: 성능은 하드웨어 사양에 따라 다를 수 있습니다.

k=12 (개발/테스트)

세부 분석:

  • 🔥 콜드 스타트 (첫 번째 검증): ~8.4s (파라미터 + 키 생성 + 검증 포함)
  • ⚡ 이후 검증 (캐싱 사용): ~108ms (파라미터/키 생성 캐시됨)
  • 💾 증명 오버헤드: 공개 입력당 ~326바이트
  • 🔐 회로 복잡도: 사용자 트리 (20레벨) + 기기 트리 (10레벨) + 바인딩

k=14 (프로덕션 - 권장)

세부 분석:

  • 🔥 콜드 스타트 (첫 번째 검증): ~115s (파라미터 + 키 생성 + 검증 포함)
  • ⚡ 이후 검증 (캐싱 사용): ~967ms (파라미터/키 생성 캐시됨)
  • 💾 증명 오버헤드: 공개 입력당 ~339바이트
  • 🔐 회로 복잡도: 사용자 트리 (20레벨) + 기기 트리 (10레벨) + 바인딩

중요: 파라미터 생성과 키 생성은 캐시할 수 있는 일회성 비용입니다. 일단 캐시되면 k 값에 따라 검증은 약 108~967ms만 소요됩니다. 현재 구현은 아직 파라미터를 캐시하지 않습니다.

이전 벤치마크보다 왜 느린가요? 비밀번호 없는 회로는 이제 하나가 아닌 두 개의 Merkle 트리 (사용자 + 기기)를 검증하여 진정한 기기 수준 익명성 (사용자당 1024개 중 1개 기기)을 제공합니다.

🏗️ 아키텍처

📖 암호화 세부 정보가 포함된 단계별 인증 흐름은 ARCHITECTURE_FLOW.md를 참조하세요

시스템 구성 요소```

┌─────────────────────────────────────────────────────────────────────────┐ │ CLIENT (Browser + WASM) │ ├─────────────────────────────────────────────────────────────────────────┤ │ ┌────────────────┐ ┌─────────────────┐ ┌──────────────────────────┐ │ │ │ UI Layer │ │ WASM Prover │ │ Local Storage │ │ │ │ (Vanilla JS) │ │ (Rust→WASM) │ │ (IndexedDB) │ │ │ ├────────────────┤ ├─────────────────┤ ├──────────────────────────┤ │ │ │ • Registration │ │ • Blake3 Hash │ │ • Full Merkle Tree │ │ │ │ • Login Form │ │ • BIP-39 Derive │ │ • Device Trees │ │ │ │ • Session UI │ │ • Halo2 Prover │ │ • WebAuthn Credentials │ │ │ │ • Tree Sync │ │ • Merkle Proof │ │ • Tree Version Cache │ │ │ └────────────────┘ │ • Ring Sigs │ └──────────────────────────┘ │ │ └─────────────────┘ │ │ ┌──────────────────────────────────────────────────────────────────┐ │ │ │ Hardware Security (WebAuthn Level 2) │ │ │ ├──────────────────────────────────────────────────────────────────┤ │ │ │ • TPM 2.0 / Secure Enclave • FIDO2 Authenticator │ │ │ │ • Device Private Key (ECDSA) • Biometric/Touch Required │ │ │ └──────────────────────────────────────────────────────────────────┘ │ └────────────────────────────────┬────────────────────────────────────────┘ │ HTTPS/TLS 1.3 │ (Encrypted Channel) ▼ ┌──────────────────────────────────────────────────────────────────────────┐ │ LEGION SERVER (Rust/Axum) │ ├──────────────────────────────────────────────────────────────────────────┤ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ API Layer (Axum) │ │ │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ POST /api/register-blind │ Blind registration │ │ │ │ GET /api/download-tree │ Download full Merkle tree │ │ │ │ POST /api/verify-anonymous-proof │ Verify ZK proof │ │ │ │ POST /api/verify-session │ Session validation │ │ │ │ POST /api/webauthn/* │ WebAuthn endpoints │ │ │ │ GET /health │ Health check │ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ Business Logic Layer │ │ │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ • Blind Registration │ • Tree Synchronization │ │ │ │ • ZK Proof Verifier │ • Nullifier Tracker (replay) │ │ │ │ • Session Manager │ • Linkability Tag Validator │ │ │ │ • WebAuthn Service │ • Timestamp Validator (±10min) │ │ │ │ • Device Revocation │ • Rate Limiter (5/hour) │ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ Cryptographic Layer │ │ │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ • Halo2 Verifier (PLONK) │ • Poseidon Hash (ZK-friendly) │ │ │ │ • Blake3 (credential) │ • BIP-39 (recovery phrase) │ │ │ │ • Merkle Tree (2^20) │ • Device Trees (2^10 per user) │ │ │ │ • Ring Signature Verify │ • WebAuthn Signature Verify │ │ │ └─────────────────────────────────────────────────────────────────┘ │ └────────────────────────┬──────────────────────┬──────────────────────────┘ │ │ ▼ ▼ ┌────────────────────────┐ ┌───────────────────────────┐ │ Redis (In-Memory) │ │ RocksDB (Persistent) │ ├────────────────────────┤ ├───────────────────────────┤ │ • Session Tokens │ │ • Merkle Tree Leaves │ │ • Linkability Tags │ │ • Device Trees │ │ • Spent Nullifiers │ │ • Nullifier History │ │ • Rate Limit Counters │ │ • WebAuthn Credentials │ │ TTL: 1 hour │ │ • Revoked Devices │ └────────────────────────┘ └───────────────────────────┘

root@kitploit:~
### 인증 흐름 (간소화)```
┌─────────────┐                                                ┌──────────────┐
│   Client    │                                                │    Server    │
│  (Browser)  │                                                │  (Verifier)  │
└──────┬──────┘                                                └──────┬───────┘
       │                                                              │
       │ 1. Generate 24-word recovery phrase (BIP-39)                 │
       │    → 256-bit entropy (like MetaMask)                         │
       │    → User writes down on paper                               │
       │                                                              │
       │ 2. Derive account_id from phrase (Blake3)                    │
       │    account_id = Blake3("LEGION_ACCOUNT_V2" || bip39_seed)    │
       │    → Deterministic, no server interaction                    │
       │                                                              │
       │ 3. Hash account_id for tree leaf (Poseidon)                  │
       │    credential_hash = Poseidon(account_id)                    │
       │                                                              │
       │ 4. Blind registration (TRUE zero-knowledge)             ────►│
       │    → Sends ONLY credential_hash (no phrase/identity)         │
       │    → Server adds to tree, returns tree_index                 │
       │                                                         ◄────│ {tree_index: 114}
       │                                                              │
       │ 5. Download full Merkle tree (one-time sync)            ────►│
       │    → Client stores entire tree in IndexedDB                  │
       │    → Enables TRUE zero-knowledge (no server queries)         │
       │                                                         ◄────│ {tree_data: [all leaves],
       │                                                              │  merkle_root, version}
       │                                                              │
       │ 6. Generate WebAuthn key (TPM/Secure Enclave)                │
       │    → Fingerprint prompt creates hardware-bound key           │
       │    → device_pubkey (ECDSA P-256, non-exportable)             │
       │    → Stored in TPM 2.0 / Secure Enclave                      │
       │                                                              │
       │ 7. Register device in device tree                       ────►│
       │    → device_commitment = Blake3(credential_id)               │
       │    → Server converts to valid field element if needed        │
       │    → Server adds to user's device tree (1 of 1024 slots)     │
       │                                                         ◄────│ {device_position: 0,
       │                                                              │  device_tree_root}
       │                                                              │
       │ 8. LOGIN: Touch fingerprint to authenticate                  │
       │    → WebAuthn verifies hardware-bound key                    │
       │    → Decrypts recovery phrase from local storage             │
       │    → Re-derives account_id from phrase                       │
       │                                                              │
       │ 9. Fetch device Merkle proof                            ────►│
       │    → Sends account_id (derived from phrase)                  │
       │    → Server returns device tree path                         │
       │                                                         ◄────│ {device_path: [siblings],
       │                                                              │  device_root}
       │                                                              │
       │ 10. Compute user Merkle proof CLIENT-SIDE                    │
       │    → Uses local tree from IndexedDB                          │
       │    → Computes path for tree_index                            │
       │    → Server NEVER learns which user!                         │
       │                                                              │
       │ 11. Compute nullifier (replay protection)                    │
       │    nullifier = Poseidon(account_id || challenge)             │
       │    → ONE-TIME USE: Different every login                     │
       │    → Prevents proof replay attacks                           │
       │                                                              │
       │ 12. Compute linkability tag (session binding)                │
       │    linkability_tag = Blake3(device_pubkey || nullifier)      │
       │    ⚠️  Binds session to specific device+user                 │        
       │                                                              │
       │ 13. Generate ZK proof (Halo2 PLONK, ~2min for k=14)          │
       │    Proves in zero-knowledge:                                 │
       │    ✓ User exists in Merkle tree (1 of 2^20)                  │
       │    ✓ Device exists in device tree (1 of 2^10)                │
       │    ✓ account_id hashes to credential_hash                    │
       │    ✓ Nullifier computed correctly                            │
       │    ✓ Timestamp is fresh                                      │
       │    WITHOUT revealing which user or device                    │
       │                                                              │
       │ 14. Submit proof                                        ────►│
       │    {proof, public_inputs, linkability_tag, k=14}             │
       │                                                              │ • Check device not revoked
       │                                                              │ • Verify timestamp (±10min)
       │                                                              │ • Rate limit check (5/hour)
       │                                                              │ • Check nullifier (replay?)
       │                                                              │ • Verify ZK proof (~115s)
       │                                                              │ • Mark nullifier as used
       │                                                              │
       │                                                         ◄────│ {session_token, expires_at}
       │                                                              │
       │ 15. Verify session (every request)                      ────►│
       │    {session_token, linkability_tag}                          │
       │                                                              │ • Lookup in Redis
       │                                                              │ • Verify linkability_tag
       │                                                              │   (prevents session theft)
       │                                                              │ • Check not spent
       │                                                         ◄────│ {valid: true}
       │                                                              │

🔍 더 자세한 내용을 원하시나요? ARCHITECTURE_FLOW.md에서 확인하세요:

  • 단계별 암호화 작업
  • 회로 제약 조건 세부 정보
  • 보안 속성 설명
  • 공격 저항 메커니즘

세션 보안 심층 분석```

┌─────────────────────────────────────────────────────────────────────────┐ │ SESSION SECURITY MECHANISMS │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ │ 1. LINKABILITY TAG (Zero-Knowledge Device Binding) │ │ ═══════════════════════════════════════════════════════ │ │ │ │ linkability_tag = Blake3(device_pubkey || nullifier) │ │ │ │ • Computed client-side using hardware-bound device key │ │ • Sent with every session validation request │ │ • Server verifies: stored_tag == provided_tag │ │ │ │ ✅ PREVENTS: Session token theft/replay on different device │ │ ✅ ENSURES: Same user + same device for entire session │ │ ✅ MAINTAINS: Zero-knowledge (server doesn't learn identity) │ │ │ │ ───────────────────────────────────────────────────────────────── │ │ │ │ 2. SESSION TOKEN (Cryptographic Binding) │ │ ═══════════════════════════════════════════════════════ │ │ │ │ session_token = Poseidon(nullifier || timestamp || linkability_tag) │ │ │ │ • Generated server-side after proof verification │ │ • Stored in Redis with linkability_tag as value │ │ • Cannot be forged without knowing nullifier │ │ │ │ ✅ PREVENTS: Token forgery │ │ ✅ ENSURES: Cryptographic binding to proof │ │ │ │ ───────────────────────────────────────────────────────────────── │ │ │ │ 3. NULLIFIER (Replay Protection) │ │ ═══════════════════════════════════════════════════════ │ │ │ │ nullifier = Poseidon(credential_hash || challenge) │ │ │ │ • Unique per authentication attempt │ │ • Tracked in RocksDB (permanent) and Redis (cache) │ │ • Server rejects if nullifier seen before │ │ │ │ ✅ PREVENTS: Proof replay attacks │ │ ✅ ENSURES: One-time use per challenge │ │ │ │ ───────────────────────────────────────────────────────────────── │ │ │ │ 4. TIMESTAMP VALIDATION (Time-Bound Security) │ │ ═══════════════════════════════════════════════════════ │ │ │ │ • Proof includes timestamp (Unix epoch) │ │ • Server validates: |proof_time - server_time| < 5 minutes │ │ • Session TTL: 1 hour (sliding window) │ │ │ │ ✅ PREVENTS: Old proof replay │ │ ✅ ENSURES: Fresh authentication │ │ │ │ ───────────────────────────────────────────────────────────────── │ │ │ │ 5. CHALLENGE-RESPONSE (Freshness Guarantee) │ │ ═══════════════════════════════════════════════════════ │ │ │ │ • Server generates random 32-byte challenge │ │ • Stored in Redis with 5-minute TTL │ │ • Client must include in proof │ │ • Server verifies challenge matches and deletes │ │ │ │ ✅ PREVENTS: Pre-computed proof attacks │ │ ✅ ENSURES: Proof generated for this specific session │ │ │ └─────────────────────────────────────────────────────────────────────────┘

root@kitploit:~
## 🔐 영지식 속성

### 서버가 아는 것
- ✅ 익명 집합 내 누군가가 인증했음
- ✅ 증명이 암호학적으로 유효함
- ✅ 연결 가능성 태그를 통한 동일 사용자+기기
- ✅ 속도 제한 상태(남은 시도 횟수)
- ✅ 기기 해지 상태
- ✅ 등록된 사용자 총 수
- ✅ Merkle 트리 루트(공개)

### 서버가 알 수 없는 것
- ❌ 특정 사용자(100만 명 중 1명)
- ❌ 특정 기기(사용자당 1,000개 중 1개)
- ❌ 복구 구문(BIP-39 시드)
- ❌ account_id(구문에서 파생됨)
- ❌ 기기 개인 키(TPM/Secure Enclave 내)
- ❌ 어떤 트리 리프가 어떤 사용자에게 속하는지
- ❌ 사용자 Merkle 경로(클라이언트 측에서 계산됨)
- ❌ 사용자의 tree_index 위치

## 📦 배포

자세한 프로덕션 배포 가이드는 [DEPLOYMENT.md](https://github.com/deadends/legion/blob/HEAD/docs/DEPLOYMENT.md)를 참조하세요.

### Docker를 이용한 빠른 배포```bash
# Production build
docker-compose -f deployment/docker-compose.yml up -d

# Check logs
docker-compose -f deployment/docker-compose.yml logs -f legion-server

# Check health
curl http://localhost/health

환경 변수```env

RUST_LOG=info LEGION_DATA_PATH=/var/lib/legion/data REDIS_URL=redis://127.0.0.1:6379

root@kitploit:~
## 🧪 테스트```bash
# Run all tests
cargo test --workspace

# Run with Redis features
cargo test --workspace --features redis

# Benchmark
cargo bench

📚 문서

  • 아키텍처 흐름 - 상세 인증 흐름
  • 보안 수정 사항 - v1.1.0 보안 개선 사항
  • 배포 가이드 - 프로덕션 배포
  • 보안 정책 - 보안 보장 및 신고
  • 기여 - 기여 지침

🛠️ 기술 스택

  • ZK 증명: Halo2 (PLONK) - 투명한 설정, 트러스트드 세리머니 불필요
  • 곡선: Pasta (Pallas/Vesta) - 재귀를 위한 곡선 순환
  • 해시: Blake3 (자격 증명 파생), Poseidon (ZK 친화적)
  • 키 유도: BIP-39 (24단어 니모닉)
  • 하드웨어: WebAuthn Level 2 (TPM 2.0, Secure Enclave)
  • 백엔드: Rust, Axum, Redis (세션), RocksDB (영속성)
  • 프런트엔드: Rust→WASM (증명기), Vanilla JS (UI), IndexedDB (저장소)
  • 배포: Docker, Nginx, systemd

🤝 기여

기여를 환영합니다! 먼저 CONTRIBUTING.md를 읽어 주세요.

  1. 저장소를 포크합니다
  2. 기능 브랜치를 생성합니다 (git checkout -b feature/amazing)
  3. 변경 사항을 커밋합니다 (git commit -m 'Add amazing feature')
  4. 브랜치에 푸시합니다 (git push origin feature/amazing)
  5. 풀 리퀘스트를 생성합니다

🔒 보안

보안 문제를 발견하셨나요? 책임 있는 공개를 위해 SECURITY.md를 참조하세요.

취약점에 대해 공개 이슈를 열지 마세요.

📄 라이선스

MIT 라이선스 - 자세한 내용은 LICENSE 파일을 참조하세요.

🔄 변경 로그

v1.3.0 - 비밀번호 없는 인증 (2024)

주요 변경 사항:

  • ✅ 비밀번호 없는 인증 - BIP-39 복구 구문 + 지문
  • ✅ 단일 필드 회로 - BIP-39 시드에서 파생된 account_id
  • ✅ 디바이스 링 서명 - 사용자당 1024개 중 1개의 디바이스 익명성
  • ✅ 다중 디바이스 지원 - 2개 디바이스에서 동일한 계정 사용
  • ✅ 하드웨어 바인딩 키 - WebAuthn TPM/Secure Enclave 통합
  • ✅ Blake3 필드 요소 처리 - 디바이스 커밋먼트 자동 변환

아키텍처:

  • 🏗️ 사용자 이름/비밀번호 없음 - 복구 구문 + 지문만으로
  • 🏗️ 클라이언트 측 account_id 파생 (Blake3 + BIP-39)
  • 🏗️ 서버 측 디바이스 트리 저장 (사용자별 격리)
  • 🏗️ 이중 Merkle 트리 검증 (사용자 트리 + 디바이스 트리)
  • 🏗️ 견고한 필드 요소 변환 (Blake3 출력이 필드 모듈러스 이상(>=)인 경우 처리)

v1.2.0 - 클라이언트 측 증명 아키텍처 (2024)

주요 변경 사항:

  • ✅ 클라이언트 측 Merkle 트리 저장 (IndexedDB) - 진정한 영지식
  • ✅ 블라인드 등록 - 서버가 자격 증명을 볼 수 없음
  • ✅ 로컬 증명 생성 - 모든 암호화가 WASM에서 수행
  • ✅ 트리 동기화 - 전체 트리를 한 번 다운로드한 뒤 경로를 로컬에서 계산
  • ✅ 사용된 nullifier - 일회용 세션이 동시 접근을 방지

v1.1.0 - 보안 강화 (2024)

추가됨:

  • ✅ 속도 제한 (자격 증명당 시간당 5회 시도)
  • ✅ 디바이스 폐기 API 및 시행
  • ✅ 세션 탈취 방지를 위한 연결 가능성 태그

보안 수정 사항:

  • 🔒 챌린지 요청에서의 신원 유출 수정
  • 🔒 속도 제한으로 무차별 대입 공격 방지
  • 🔒 폐기를 통한 도난 디바이스 피해 완화 활성화

🙏 감사의 말

  • Halo2 - ZK 증명 시스템
  • WebAuthn - 하드웨어 인증
  • Blake3 - 빠른 해싱
  • BIP-39 - 니모닉 복구 구문

📞 연락처

  • GitHub: @deadends
  • Email: [email protected]
  • Website: https://nantha.dev

개인정보 보호와 보안을 위해 ❤️로 제작되었습니다

도구 다운로드
속성보장
인증비밀번호 없음 (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회 시도
기기 폐기즉시 블랙리스트
보안 수준k증명 시간증명 크기사용 사례
개발12~30s3.2 KB테스트
프로덕션14~2min3.4 KB권장
지표값비고
증명 크기3,264바이트압축 시 3.19 KB
공개 입력10사용자 트리 루트, 기기 트리 루트, nullifier 등
파라미터 생성7.03sk 값당 일회성 설정
회로 생성2.3µs무시할 수 있는 오버헤드
검증 키 생성1.29s일회성 키 생성
증명 검증107.7ms실제 ZK 증명 확인
전체 검증8.43s엔드투엔드 (캐싱 없음)
지표값비고
증명 크기3,392바이트압축 시 3.31 KB
공개 입력10사용자 트리 루트, 기기 트리 루트, nullifier 등
파라미터 생성100.78sk 값당 일회성 설정
회로 생성5µs무시할 수 있는 오버헤드
검증 키 생성12.89s일회성 키 생성
증명 검증967.2ms실제 ZK 증명 확인
전체 검증114.65s엔드투엔드 (캐싱 없음)