banca dati portatile per la memorizzazione di segreti
-
23-08-2019 - |
Domanda
che sto sviluppando un'applicazione che ha bisogno di segreti memorizzazione in un database.
Ho bisogno di una base di dati portatile (come Firebird, SQLite, ecc) in cui i dati saranno memorizzati criptati o protetti da password o entrambe ...
Diamo come ad esempio che voglio creare un gestore di password. ho bisogno di negozio che le password in un database. Sono abituato a usare Embed Firebird, ma non per i dati segreti.
Un'altra soluzione è quella di utilizzare il database in modo naturale e crittografare il file di database quando non sono connesso a file, ma non sono sicuro delle implicazioni per la sicurezza o le prestazioni.
Quello che il metodo migliore che si consiglia?
Soluzione
C'è un progetto chiamato sqlite-crypt . Quale dovrebbe essere la soluzione migliore. sqlite db con tutti i dati sul disco criptato.
Altri suggerimenti
Si potrebbe anche avere uno sguardo a edizione di SQL Server Compact, che richiede solo una DLL e memorizzerà i dati in un unico file, proprio come SQLite o Access, Firebird, ecc.
Essa ha anche funzionalità di crittografia built-in.
Alcune referenze:
- Sicurezza e crittografia per SQL Server Compact
- tutorial sull'uso di SQL Server Compact Edition (seconda e terza sezione in basso nella pagina) .
crittografia password
Vedere la mia risposta alla tua altra domanda sistema operativo in modo .
Sono d'accordo con CJM, ma se sei morto-set sulla scrittura proprio, si dovrebbe crittografare il flusso al write-tempo e la decodifica in lettura tempo. Qualsiasi algoritmo pubblicato che è un po 'forte dovrebbe mantenere le cose sicure.
di REALbasic supporto integrato per lavorare con i database SQLite crittografati ha funzionato bene per me su un paio di progetti.
mi raccomando di controllare SQLCipher (full-disclosure, io sono uno di gli sviluppatori!) è un'implementazione libera e open-source di, crittografia trasparente a livello di pagina per SQLite. L'implementazione è abbastanza robusto, è in fase di sviluppo attivo, ed è molto facile da usare (relativamente parlando).
I secondi il suggerimento di utilizzare KeePass. E 'un grande archivio per i dati sensibili ed espone una buona API. Ecco un esempio di come leggere un database standard keypass 2:
var dbpath = @"C:\path\to\passwords.kdbx";
var masterpw = "Your$uper$tr0ngMst3rP@ssw0rd";
var ioConnInfo = new IOConnectionInfo { Path = dbpath };
var compKey = new CompositeKey();
compKey.AddUserKey(new KcpPassword(masterpw));
var db = new KeePassLib.PwDatabase();
db.Open(ioConnInfo, compKey, null);
var kpdata = from entry in db.RootGroup.GetEntries(true)
select new
{
Group = entry.ParentGroup.Name,
Title = entry.Strings.ReadSafe("Title"),
Username = entry.Strings.ReadSafe("UserName"),
Password = entry.Strings.ReadSafe("Password"),
URL = entry.Strings.ReadSafe("URL"),
Notes = entry.Strings.ReadSafe("Notes")
};
db.Close();