一款面向桌面环境的安全离线双因素认证(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 契约与行为 |
| 密码学 | 安全实现细节 |