2011-05-16 26 views
12

Estaba usando System.Data.SQLite para SQLite en Windows Mobile. Tiene soporte de cifrado incorporado. He encontrado muchas implementaciones de SQLite para Windows Phone 7. Pero ninguna de ellas tiene soporte incorporado para el cifrado. ¿Alguien sabe alguna implementación SQLite para Windows Phone 7 que admita Encryption?Windows Phone 7 - SQLite con cifrado

+0

He comenzado una nueva discusión en el sitio codeplex (http://sqlitewindowsphone.codeplex.com/). Esperando la respuesta del autor. –

+0

¿Qué es lo que quieres encriptar? Toda la base de datos? –

+1

Puede obtener SqlCipher: una variante de SQLite de fuente abierta con crypto suppoort. El paquete estándar está dirigido a un entorno Unix, pero he leído rumores de una versión de Windoze (de escritorio). Hice un puerto para el escritorio de Windows y no fue terriblemente difícil, pero requería cierto conocimiento de encriptación y la versión que hice fue como un hack. (Las interfaces de cifrado de escritorio de Windows accesibles son bastante feas y bastante inadecuadas para el uso generalizado, no realmente listas para el "horario de máxima audiencia". Puede haber algunas interfaces mejores en la implementación de Mobile.) –

Respuesta

0

No parece haber ninguna API en Windows Phone 7 que le permita cifrar/descifrar datos en función de las credenciales de usuario similares a DPAPI, por lo que debe hacerlo usted mismo. El documentation sugiere que los siguientes algoritmos están disponibles en Windows Phone 7:

  • AES
  • HMACSHA1
  • HMACSHA256
  • Rfc2898DeriveBytes
  • RSA
  • SHA1
  • SHA256

Estos algoritmos deberían dar todo lo que necesita para crear un esquema de cifrado decente y debería ser lo suficientemente bueno como para cifrar las columnas sensibles en su esquema de base de datos y no en toda la base de datos.

El único problema entonces sería ver qué tecla usar. Si es posible pedirle una contraseña al usuario (esto depende mucho del tipo de aplicación que esté creando), entonces puede usar Rfc2898DerivedBytes para derivar una contraseña de la entrada del usuario. De lo contrario, puede crear una clave a partir de algunos datos del dispositivo. (Consulte: How do I get a symmetric key in Windows Phone 7?) Después de derivar una clave, puede usar AES para hacer su encriptación.

Sé que esto es exactamente lo que quería, pero al menos debería apuntarle en la dirección correcta.