
TOTP 2FA 코드를 생성하고 관리하기 위한 안전한 오프라인 데스크톱 애플리케이션입니다. 암호화된 볼트 저장소, 최신 암호화(Argon2 + AES‑GCM), 모듈식 아키텍처, 클라우드 의존성이 없는 로컬 우선(local-first) 방식을 갖추고 있습니다. 안정성, 확장성, 향후 크로스 플랫폼 UI를 염두에 두고 설계되었습니다.
데스크톱 환경을 위한 안전한 오프라인 2단계 인증(2FA) 관리자입니다. Python으로 제작되었으며, 강력한 암호화를 제공하고 클라우드 의존성이 없습니다.
🌐 랜딩 페이지: desktop-2fa.org
| 기능 | 설명 |
|---|---|
| 🔐 볼트 보안 | Argon2id 키 파생과 함께 AES-256-GCM 암호화 |
| ⏱️ TOTP 생성 | RFC 6238 호환 코드 생성 |
| 💻 전체 CLI | 토큰 관리를 위한 완전한 명령줄 인터페이스 |
| 📋 클립보드 지원 | TOTP 코드를 클립보드에 자동 복사 |
| 🔓 무상태 설계 | 모든 명령은 명시적 비밀번호 인증을 요구 |
| 🛡️ 비밀번호 정책 | zxcvbn을 통한 구성 가능한 비밀번호 강도 강제 |
| 🧪 철저한 테스트 | 포괄적인 커버리지로 289개 테스트 통과 |
| 📖 보안 모델 | 상세 위협 분석 및 암호화 설계 문서 |
대화형으로 새 TOTP 항목 추가
항목에 대한 TOTP 코드 생성
중복 감지와 함께 항목 이름 변경
버전 정보 확인 및 모든 항목 나열
pip install desktop-2fa
설치 확인:
python -c "import desktop_2fa; print(desktop_2fa.__version__)"
# Output: 0.8.1dev
# Initialize a new vault
d2fa vault init
# Add a new TOTP token
d2fa vault add GitHub GitHub JBSWY3DPEHPK3PXP
# List all entries
d2fa vault list
# Generate a code
d2fa code GitHub
# Provide password via command line
d2fa vault add GitHub GitHub JBSWY3DPEHPK3PXP --password mypassphrase
# Provide password via file
d2fa vault add GitHub GitHub JBSWY3DPEHPK3PXP --password-file /path/to/passphrase.txt
볼트는 ~/.desktop-2fa/vault에 위치한 암호화된 저장 파일입니다.
명령이 볼트를 필요로 하는데 볼트가 없으면:
--password/--password-file을 요구합니다(비대화형 모드)Vault created at <path>명령이 볼트를 필요로 하는데 볼트가 있으면:
typer.Exit(1)로 종료됩니다rename 명령은 여러 항목이 대상 이름과 일치할 때 결정적 동작을 강제합니다:
Error: Multiple entries named '<name>' exist. Operation aborted. Resolve duplicates first.볼트는 다음을 사용합니다:
모든 명령은 명시적 비밀번호 인증을 요구합니다. 세션 기반 접근은 없습니다.
Desktop-2FA는 볼트 비밀번호를 생성하거나 변경할 때 zxcvbn을 사용하여 비밀번호 강도를 평가합니다:
예시:
password, 123456, qwerty, admin2024Battery-Horse-Staple-Correct, Mountain@River*2024, MySecureVault#42구성 (~/.config/d2fa/config.toml):
[security]
# Require strong passwords (score >= 3)
reject_weak_passwords = false # warn but allow | true: reject weak passwords
reject_weak_passwords = false인 경우:
reject_weak_passwords = true인 경우:
하위 호환성:
구성에 min_password_entropy가 설정되어 있다면(레거시 옵션) 이를 인식하고 zxcvbn 점수 >= 3을 요구하는 것과 동일하게 처리합니다.
버전 0.8.0은 v0.7.3의 모든 이전 보안 강화 조치를 유지하며, 더 나은 코드 격리를 위한 모듈식 아키텍처를 도입합니다:
| 문서 | 설명 |
|---|
pytest tests/ # Run all tests
pytest --cov=src/desktop_2fa # Run with coverage
src/desktop_2fa/
├── app/ # Application components
├── cli/ # Command-line interface
├── crypto/ # Encryption utilities
├── totp/ # TOTP generation
├── ui/ # User interface components
├── vault/ # Vault management
└── utils/ # Utilities
Apache License 2.0. LICENSE 파일을 참조하세요.
Łukasz Perek
desktop‑2fa는 Kilo OSS 후원 프로그램을 통해 지원됩니다.
질문이나 지원이 필요하면 [email protected]로 문의하세요.
Desktop‑2FA는 자율성, 투명성, 오프라인 보안에 중점을 두고 만들어진 독립적인 오픈소스 도구입니다. 유용하게 사용하셨고 지속적인 개발을 지원하고 싶다면 아래 플랫폼을 통해 지원할 수 있습니다:
| 명령 | 설명 |
|---|
d2fa vault add <name> <issuer> <secret> | 새 TOTP 항목 추가 |
d2fa vault list | 저장된 모든 TOTP 항목 나열 |
d2fa vault rename <old> <new> | 항목 이름 변경 |
d2fa vault remove <name> | 항목 제거 |
d2fa code <name> [--copy|--copy-only] | 클립보드 복사 옵션과 함께 TOTP 코드 생성 |
| 명령 | 설명 |
|---|
d2fa vault init [--force] | 새 볼트 초기화 |
d2fa vault unlock | 약한 비밀번호 경고와 함께 볼트 열기(구성된 경우) |
d2fa vault change-password | 볼트 비밀번호 변경 |
d2fa vault backup | 볼트의 암호화된 백업 생성 |
d2fa vault export <path> | 볼트를 파일로 내보내기 |
d2fa vault import <path> [--force] | 파일에서 볼트 가져오기 |
| 옵션 | 설명 |
|---|
--password <pwd> | 볼트 비밀번호 직접 제공 |
--password-file <path> | 파일에서 볼트 비밀번호 읽기 |
--json | JSON 형식으로 출력 |
--raw | 원시 출력(형식 지정 없음) |
--quiet | 필수적이지 않은 출력 억제 |
--copy | TOTP 코드를 클립보드에 복사하고 표시 |
--copy-only | TOTP 코드를 클립보드에만 복사 |
--force | 작업 강제 수행(확인 건너뛰기) |
| 사용자 매뉴얼 | 전체 사용 가이드 |
| 보안 모델 | 상세 위협 분석 및 암호화 설계 |
| CLI UX 사양 | UX 계약 및 동작 |
| 암호화 | 보안 구현 세부 사항 |