
Un'applicazione desktop offline sicura per generare e gestire codici TOTP 2FA. Include un archivio vault crittografato, crittografia moderna (Argon2 + AES‑GCM), architettura modulare e un approccio local‑first senza dipendenze cloud. Progettata per affidabilità, estensibilità e una futura UI multipiattaforma.
Un gestore sicuro e offline per l'autenticazione a due fattori (2FA) per ambienti desktop. Costruito con Python, con crittografia avanzata e nessuna dipendenza dal cloud.
🌐 Pagina Web: desktop-2fa.org
| Funzionalità | Descrizione |
|---|
| 🔐 Sicurezza del Vault | Crittografia AES-256-GCM con derivazione della chiave Argon2id |
| ⏱️ Generazione TOTP | Generazione di codici conforme a RFC 6238 |
| 💻 CLI Completa | Interfaccia a riga di comando completa per la gestione dei token |
| 📋 Supporto Appunti | Copia automatica dei codici TOTP negli appunti |
| 🔓 Design Senza Stato | Ogni comando richiede un'autenticazione esplicita con password |
| 🛡️ Criteri Password | Applicazione configurabile della robustezza della password con zxcvbn |
| 🧪 Ben Testato | 289 test superati con copertura completa |
| 📖 Modello di Sicurezza | Analisi dettagliata delle minacce e documentazione del design crittografico |
Aggiunta interattiva di una nuova voce TOTP
Generazione di un codice TOTP per una voce
Rinomina di una voce con rilevamento dei duplicati
Visualizzazione delle informazioni sulla versione ed elenco di tutte le voci
pip install desktop-2fa
Verifica dell'installazione:
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
Il vault è un file di archiviazione crittografato situato in ~/.desktop-2fa/vault.
Quando un comando richiede un vault e questo non esiste:
--password/--password-file (modalità non interattiva)Vault created at <path>Quando un comando richiede un vault e questo esiste:
typer.Exit(1)Il comando rename impone un comportamento deterministico quando più voci corrispondono al nome target:
Error: Multiple entries named '<name>' exist. Operation aborted. Resolve duplicates first.| Comando | Descrizione |
|---|---|
d2fa vault add <name> <issuer> <secret> | Aggiunge una nuova voce TOTP |
d2fa vault list | Elenca tutte le voci TOTP salvate |
d2fa vault rename <old> <new> | Rinomina una voce |
d2fa vault remove <name> | Rimuove una voce |
d2fa code <name> [--copy|--copy-only] | Genera il codice TOTP con opzioni di copia negli appunti |
| Comando | Descrizione |
|---|---|
d2fa vault init [--force] | Inizializza un nuovo vault |
d2fa vault unlock | Apre il vault con avviso di password debole (se configurato) |
d2fa vault change-password | Cambia la password del vault |
d2fa vault backup | Crea un backup crittografato del vault |
d2fa vault export <path> | Esporta il vault in un file |
d2fa vault import <path> [--force] | Importa il vault da un file |
| Opzione | Descrizione |
|---|---|
--password <pwd> | Fornisce direttamente la password del vault |
--password-file <path> | Legge la password del vault da un file |
--json | Output in formato JSON |
--raw | Output grezzo (senza formattazione) |
--quiet | Sopprime l'output non essenziale |
--copy | Copia il codice TOTP negli appunti e lo visualizza |
--copy-only | Copia il codice TOTP solo negli appunti |
--force | Forza l'operazione (ignora le conferme) |
Il vault utilizza:
Ogni comando richiede un'autenticazione esplicita con password. Nessun accesso basato su sessione.
Desktop-2FA utilizza zxcvbn per valutare la robustezza delle password quando si creano o si cambiano le password del vault:
Esempi:
password, 123456, qwerty, admin2024Battery-Horse-Staple-Correct, Mountain@River*2024, MySecureVault#42Configurazione (~/.config/d2fa/config.toml):
[security]
# Require strong passwords (score >= 3)
reject_weak_passwords = false # warn but allow | true: reject weak passwords
Quando reject_weak_passwords = false:
Quando reject_weak_passwords = true:
Compatibilità con le Versioni Precedenti:
Se nel tuo config è impostato min_password_entropy (opzione legacy), viene riconosciuto e trattato come equivalente alla richiesta di un punteggio zxcvbn >= 3.
La versione 0.8.0 mantiene tutto il rafforzamento della sicurezza precedente della v0.7.3 e introduce un'architettura modulare per un migliore isolamento del codice:
| Documento | Descrizione |
|---|---|
| Manuale Utente | Guida completa all'utilizzo |
| Modello di Sicurezza | Analisi dettagliata delle minacce e design crittografico |
| Specifica UX della CLI | Contratto e comportamento UX |
| Crittografia | Dettagli dell'implementazione della sicurezza |
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. Vedi il file LICENSE.
Łukasz Perek
desktop‑2fa è supportato dal Kilo OSS Sponsorship Program.
Per domande o supporto, contattaci all'indirizzo [email protected]
Desktop‑2FA è uno strumento open‑source indipendente costruito con un focus su autonomia, trasparenza e sicurezza offline. Se lo trovi utile e vuoi supportare lo sviluppo continuo, puoi farlo tramite le piattaforme qui sotto: