Pregunta

Estoy desarrollando una aplicación que necesita secretos que almacenan en una base de datos.

Necesito una base de datos portátil (como Firebird, SQLite, etc.) donde se almacenarán los datos encriptados o protegidos contraseña o ambos ...

Tomemos como ejemplo que quiero crear un gestor de contraseñas. necesitaré tienda que las contraseñas en una base de datos. Estoy acostumbrado a utilizar Insertar pájaro de fuego, pero no para los datos secretos.

Otra solución es utilizar la base de datos de forma natural y cifrar el archivo de base de datos cuando no estoy conectado a presentar, pero no estoy seguro de las implicaciones de seguridad o rendimiento.

¿Cuál es el mejor método que recomiendan?

¿Fue útil?

Solución

Hay un proyecto llamado sqlite-cripta . ¿Cuál debería ser su mejor apuesta. db sqlite con todos los datos en el disco cifrados.

Otros consejos

También puede echar un vistazo a la edición de SQL Server Compact, que sólo requiere un archivo DLL y almacenará los datos en un solo archivo, al igual que SQLite o Access, Firebird, etc.

También cuenta con funciones de cifrado incorporado.

Algunas referencias:

contraseña de cifrado

Véase mi respuesta a su otro SO SO pregunta .

En serio? Utilice TrueCrypt o KeePass .

Estoy de acuerdo con CJM, pero si está muerto establecido en la escritura de su cuenta, usted debería cifrar la corriente al tiempo de escritura y descifrar al tiempo de lectura. Cualquier algoritmo publicado que es un tanto fuerte debe mantener las cosas seguras.

de REALbasic soporte incorporado para trabajar con bases de datos SQLite cifrados ha funcionado bien para mí en un par de proyectos.

Le recomiendo que echa un vistazo a SQLCipher (full-disclosure, yo soy uno de los desarrolladores!) Es una aplicación gratuita y de código abierto de transparencia, cifrado a nivel de página para SQLite. La aplicación es bastante robusto, está bajo desarrollo activo, y es muy fácil de usar (en términos relativos).

Secundo la sugerencia de utilizar KeePass. Es una gran tienda para los datos sensibles y expone una API bastante bueno. He aquí un ejemplo de cómo leer una base de datos estándar 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();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top