- Go 100%
| internal/ui | ||
| pkg/kdbx | ||
| .gitignore | ||
| go.mod | ||
| go.sum | ||
| README.md | ||
KeePassGo
Password manager moderno scritto in Go con supporto formato .kdbx (compatibile KeePassXC)
📋 Indice
- Caratteristiche
- Requisiti
- Installazione
- Struttura Progetto
- Compilazione
- Utilizzo
- Sicurezza
- Sviluppo
- FAQ
- Licenza
✨ Caratteristiche
Sicurezza
- ✅ Compatibilità KeePassXC: Legge e scrive database .kdbx 4.x
- ✅ Cifrari moderni: Solo algoritmi sicuri (ChaCha20, AES-256, Argon2id)
- ✅ Nessun cifrario obsoleto: AES-128, SHA-1, MD5 non supportati
- ✅ Crittografia forte: Password generate con
crypto/rand - ✅ Offline: Nessuna connessione internet, nessun telemetry
- ✅ Open Source: Codice completamente ispezionabile
Funzionalità
- ✅ GUI moderna: Interfaccia grafica intuitiva con Fyne
- ✅ Import/Export .kdbx: Compatibile con KeePassXC
- ✅ Gestione password: Crea, modifica, visualizza, copia
- ✅ Generatore password: Password sicure personalizzabili
- ✅ Categorie/Gruppi: Organizzazione gerarchica
- ✅ Appunti: Copia username/password negli appunti
Cifrari Supportati
| Algoritmo | Tipo | Sicurezza |
|---|---|---|
| ChaCha20-Poly1305 | Cifratura simmetrica | ✅ Moderno (2008) |
| AES-256-GCM | Cifratura simmetrica | ✅ Standard NIST |
| Argon2id | Key Derivation | ✅ Vincitore PHC 2015 |
| SHA-256 | Hash | ✅ Sicuro |
| Cifratura simmetrica | ❌ NON supportato | |
| Hash | ❌ NON supportato (vulnerabile) | |
| Hash | ❌ NON supportato (rotto) |
📦 Requisiti
Sistema Operativo
- Linux (testato su Arch Linux)
- macOS (10.13+)
- Windows (10+)
Software Richiesto
- Go: 1.21 o superiore
- GCC/Clang: Compilatore C (per Fyne)
- Librerie grafiche:
- Linux:
libgl1-mesa-dev,xorg-dev - macOS: Xcode Command Line Tools
- Windows: MinGW-w64
- Linux:
Installazione Dipendenze
Arch Linux
sudo pacman -S go gcc mesa libx11 libxcursor libxrandr libxinerama libxi
Ubuntu/Debian
sudo apt install golang gcc libgl1-mesa-dev xorg-dev
macOS
brew install go
xcode-select --install
Windows
# Installa Go da https://go.dev/dl/
# Installa MinGW-w64 da https://www.mingw-w64.org/
🚀 Installazione
Metodo 1: Clona il Repository (Esistente)
Se hai già il progetto:
cd /home/gabriel1/ClaudeWorkspace/keepassgo
go mod tidy
go build -o keepassgo ./cmd/keepassgo
./keepassgo
Metodo 2: Creazione da Zero
Se vuoi ricreare il progetto completo:
1. Crea la struttura delle directory
# Crea directory principale
mkdir -p keepassgo
# Naviga nella directory
cd keepassgo
# Crea struttura completa
mkdir -p cmd/keepassgo
mkdir -p internal/ui
mkdir -p internal/crypto
mkdir -p internal/database
mkdir -p pkg/kdbx
# Verifica struttura
tree -L 2
La struttura dovrebbe essere:
keepassgo/
├── cmd/
│ └── keepassgo/
├── internal/
│ ├── crypto/
│ ├── database/
│ └── ui/
└── pkg/
└── kdbx/
2. Inizializza il modulo Go
go mod init github.com/tuousername/keepassgo
3. Installa le dipendenze
# Fyne (GUI framework)
go get fyne.io/fyne/v2@latest
# gokeepasslib (Parser .kdbx)
go get github.com/tobischo/gokeepasslib/v3@latest
# Crypto (cifratura)
go get golang.org/x/crypto@latest
# Pulisci dipendenze
go mod tidy
4. Copia i file sorgente
Copia i seguenti file nelle rispettive directory:
cmd/keepassgo/main.gopkg/kdbx/reader.gopkg/kdbx/writer.gopkg/kdbx/password_generator.gointernal/ui/main_window.go
(I file sorgente completi sono disponibili nel progetto)
5. Crea file aggiuntivi
# .gitignore
cat > .gitignore << 'EOF'
# Binaries
keepassgo
*.exe
*.dll
*.so
*.dylib
# Test
*.test
*.out
# Go workspace
go.work
# IDEs
.idea/
.vscode/
*.swp
# OS
.DS_Store
Thumbs.db
# Build
bin/
dist/
EOF
🏗️ Struttura Progetto
keepassgo/
├── cmd/
│ └── keepassgo/
│ └── main.go # Entry point applicazione
├── internal/ # Codice privato
│ ├── crypto/ # (Futuro) Utility cifratura
│ ├── database/ # (Futuro) Logica DB
│ └── ui/
│ └── main_window.go # Interfaccia grafica Fyne
├── pkg/ # Codice pubblico riutilizzabile
│ └── kdbx/
│ ├── reader.go # Parser database .kdbx
│ ├── writer.go # Writer database .kdbx
│ └── password_generator.go # Generatore password sicure
├── .gitignore
├── go.mod # Dipendenze Go
├── go.sum # Checksum dipendenze
├── LICENSE # Licenza MIT
├── README.md # Questo file
└── keepassgo # Binario compilato (31MB)
Descrizione Moduli
| Directory | Descrizione | Righe Codice |
|---|---|---|
cmd/keepassgo/ |
Entry point, inizializza GUI | ~30 |
pkg/kdbx/ |
Parsing/writing .kdbx, generatore password | ~550 |
internal/ui/ |
Interfaccia grafica completa | ~415 |
| TOTALE | ~995 righe |
🔨 Compilazione
Build Standard
cd /home/gabriel1/ClaudeWorkspace/keepassgo
go build -o keepassgo ./cmd/keepassgo
Build Ottimizzata (Dimensione Ridotta)
go build -ldflags="-s -w" -o keepassgo ./cmd/keepassgo
Build con Compressione UPX
go build -ldflags="-s -w" -o keepassgo ./cmd/keepassgo
upx --best --lzma keepassgo
Cross-Compilation
# Linux
GOOS=linux GOARCH=amd64 go build -o keepassgo-linux ./cmd/keepassgo
# macOS
GOOS=darwin GOARCH=amd64 go build -o keepassgo-macos ./cmd/keepassgo
# Windows
GOOS=windows GOARCH=amd64 go build -o keepassgo.exe ./cmd/keepassgo
💻 Utilizzo
Avvio
./keepassgo
Funzionalità Principali
1. Creare un Nuovo Database
- File → Nuovo Database
- Scegli posizione e nome file (es.
passwords.kdbx) - Inserisci password master forte
- Il database viene creato con cifratura ChaCha20 + Argon2id
2. Aprire Database Esistente
- File → Apri Database
- Seleziona file
.kdbx(anche da KeePassXC!) - Inserisci password master
- Visualizza tutte le password
3. Aggiungere Password
- Click su Aggiungi Password
- Compila campi:
- Titolo: Nome servizio (es. "Gmail")
- Username: nome utente o email
- Password: usa "Genera Password" per sicurezza
- URL: sito web
- Note: informazioni extra
- Click Salva
- File → Salva per salvare su disco
4. Generare Password Sicure
- Click su Genera Password
- Visualizza password generata (20 caratteri, ~131 bit entropia)
- Click Copia per copiare negli appunti
- Usa in altri servizi
5. Visualizzare/Copiare Password
- Click su una password nella lista
- Visualizza dettagli nel pannello destro
- Click Copia Password o Copia Username
- Password copiata negli appunti (auto-clear dopo 30s)
🔐 Sicurezza
⚠️ AVVISO IMPORTANTE
Questo è un progetto in sviluppo (v0.1.0) NON usare per dati reali fino al completamento del security audit. Per uso in produzione, usa KeePassXC ufficiale.
Algoritmi Utilizzati
-
ChaCha20-Poly1305
- Cifratura simmetrica moderna (Google, Cloudflare)
- Più veloce di AES su CPU senza AES-NI
- Resistenza quantistica: ~128 bit (algoritmo di Grover)
-
AES-256-GCM
- Standard NIST, ampiamente testato
- 256 bit → 128 bit post-quantistico (ancora sicuro)
-
Argon2id
- Vincitore Password Hashing Competition (2015)
- Resistente a GPU/ASIC/quantum attacks
- Parametri: 10 iterazioni, 1GB RAM, 4 thread
Minacce Non Coperte
❌ Keylogger: protezione zero ❌ Malware: se il sistema è compromesso, nessun password manager è sicuro ❌ Shoulder surfing: usa in ambiente privato ❌ Brute force password debole: usa password master forte (16+ caratteri)
Best Practices
✅ Password Master: Minimo 16 caratteri, misto, unica
✅ Backup: Copia regolare di .kdbx su dispositivo offline
✅ 2FA: Dove possibile, attiva autenticazione a due fattori
✅ Aggiornamenti: Usa sempre l'ultima versione
🛠️ Sviluppo
Requisiti Sviluppo
# Linter
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
# Testing
go test ./...
# Coverage
go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.out
Roadmap
- v0.2.0: Ricerca password, filtri
- v0.3.0: Auto-lock, timeout inattività
- v0.4.0: Import/Export CSV
- v0.5.0: Supporto allegati
- v1.0.0: Security audit, release stabile
Contribuire
- Fork del repository
- Crea branch feature (
git checkout -b feature/AmazingFeature) - Commit modifiche (
git commit -m 'Add AmazingFeature') - Push branch (
git push origin feature/AmazingFeature) - Apri Pull Request
❓ FAQ
Q: È compatibile con KeePassXC?
A: Sì, legge e scrive file .kdbx v4 compatibili.
Q: Posso usarlo su Android/iOS? A: No, solo desktop (Linux, macOS, Windows).
Q: Supporta YubiKey/FIDO2? A: Non ancora, previsto per v0.6.0.
Q: È sicuro quanto KeePassXC? A: No, KeePassXC ha oltre 10 anni di audit. Usa quello per dati reali.
Q: Perché 31MB di binario?
A: Fyne include le dipendenze grafiche. Usa upx per comprimere.
Q: Supporta cloud sync?
A: No, ma puoi mettere .kdbx su Dropbox/Google Drive manualmente.
📄 Licenza
MIT License
Copyright (c) 2025 KeePassGo Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
🙏 Credits
- Fyne: fyne.io - GUI framework
- gokeepasslib: tobischo/gokeepasslib - Parser .kdbx
- KeePassXC: keepassxc.org - Ispirazione e formato .kdbx
⚠️ Disclaimer: Questo software è fornito "così com'è" senza garanzie. Usalo a tuo rischio. Per uso in produzione, preferisci password manager con security audit completi come KeePassXC, Bitwarden o 1Password.