Cifrado con SQLite

Esta vez les traigo un cuadro resumen de wrappers utilizados para cifrar SQLite en las plataformas de .Net y Java (Android). Para iniciar es importante tener presente en SQLite ¿que se deseamos cifrar/proteger?, contenido, estructura o ambos.

  1. Contenido: el dato almacenado dentro de las filas de la base de datos
  2. Estructura: la estructura de la base de datos (tablas, columna, tipo, etc.).

Para implementar cifrado en SQLite es necesario un componente o envoltura (Wrapper) para utilizarlos en plataformas de desarrollo de software, a continuación se presenta un cuatro resumen de envolturas utilizadas por la comunidad de Internet,

Nota: Todas las opciones del cuadro resumen implementan cifrado de estructura y contenido.

Nombre

Descripción

Java

.Net

Licencia

Referencias

Microsoft.Data.Sqlite

Implementaciones de SQLite de las interfaces System.Data.Common.

X

Licencia Apache

http://www.apache.org/licenses/LICENSE-2.0

Oficial:

https://github.com/aspnet/Microsoft.Data.Sqlite

https://www.nuget.org/packages/Microsoft.Data.Sqlite/

System.Data.SQLite

Utiliza su propia implementación de cifrado basada en un cifrado RSA de 128 bits (utilizando la API Crypto de Windows).

Esto no permitirá que ningún editor de GUI vea sus datos. SQLite versión 3

Ejemplo de Código:

SQLiteConnection cnn = new SQLiteConnection(“Data Source=c:\\test.db3”);

cnn.Open();

cnn.ChangePassword

(“mypassword”);

cnn.Close();

Cifrado que se puede utilizar especificando Password(o HexPassword)

X

Dominio público

Oficial:

https://system.data.sqlite.org


https://system.data.sqlite.org/index.html/doc/trunk/www/features.wiki

 

SEE(SQLite Encryption Extension)

Es un add-on a la versión de dominio público de SQLite que permite a una aplicación leer y escribir archivos de base de datos cifrados. Se admiten cuatro algoritmos de encriptación diferentes:

  • RC4

  • AES-128 en modo OFB

  • AES-128 en modo CCM

  • AES-256 en modo OFB

C.P

C.P

El costo de una licencia perpetua de código fuente para SEE es de US $ 2000. 

Oficial:

http://www.hwaci.com/sw/sqlite/see.html

SQLiteCrypt

La versión actual de SQLiteCrypt se basa en SQLite 3.13.

SQLiteCrypt es un complemento a la versión de dominio público de SQLite que añade soporte de cifrado AES 256 transparente para SQLite.

DotConnect para SQLite soporta totalmente la conexión a bases de datos cifradas SQLiteCrypt, sin embargo, no proporciona la propia extensión SQLiteCrypt. 

Para usar el cifrado de SQLiteCrypt necesitas comprar SQLiteCrypt por separado.

Compra de una licencia u Open Source

Precio actual de uno binario plataforma es US $ 128

Oficial:

http://sqlite-crypt.com/download.htm

http://sqlite-crypt.com/

http://sqlite-crypt.com/documentation.htm

WxSQLite

es un contenedor (wrapper) de C ++ alrededor de la base de datos SQLite 3.x de dominio público y está específicamente diseñado para su uso en programas basados ​​en la biblioteca wxWidgets.

C.P

C.P

Open Source

Oficial:

https://github.com/utelle/wxsqlite3

SQLCipher

es una alternativa de código abierto para SEE, es una extensión SQLite que proporciona cifrado AES de 256 bits transparente de los archivos de base de datos,

Utiliza el libcrypto de openSSL para implementar. agrega cifrado de base de datos completo

Compra de una licencia $499 por desarrollador u Open Source (Solo Android)

Oficial:
https://www.zetetic.net/sqlcipher/
https://github.com/sqlcipher/sqlcipher


Botansqlite3

Códec de cifrado Sqlite3 para permitir el cifrado completo de la base de datos utilizando los algoritmos soportados por Botan.

C.P

C.P

Open Source

Código: https://github.com/OlivierJG/botansqlite3

SQLiteCrypto

es la manera más fácil para cifrar base de datos SQLite

por AES-256 y SHA-256 
es una API completa del código fuente escrito en Java para bases de datos de Android SQLite que proporciona transparente cifrado AES de 256 bits de los campos de base de datos, los campos se cifran antes de escribirse disco y se descifran cuando se leen de atrás.

X

Compra de una licencia.

Oficial:

http://www.andbrain.com/sqlitecrypto-api/

Nota: C.P (Compilación Propia), mas información de cada uno de estos wrapper visitar la columna de referencias.

Alternativas de cifrado únicamente de contenido de la base de datos SQLite:

  • Debe implementarse un algoritmo criptográfico, para cifrar/descifrar los datos que permitan identificar (anonimizar) un elemento en particular.


Conclusiones:

  • Entre los wrappers más recomendados o mencionados en la comunidad de Internet se encuentran: SEE(SQLite Encryption Extension),SQLiteCrypt, y SQLCipher
  • Entre los wrappers SEE (SQLite Encryption Extension), Botansqlite3 y WxSQLite implican más investigación para ser implementados en ambas plataformas (.NET y Java), ya que implica compilar el wrapper o envoltura para cada plataforma, es decir, descargar código fuente y compilarlo.
  • El wrapper SQLiteCrypt es una opción OpenSource, soportada para ambas plataformas (.NET y Java) al cual requiere invertirse más tiempo de investigación o pruebas.

Glosario:

  • Wrappers: “es un programa que controla el acceso a un segundo programa. El Wrapper literalmente cubre la identidad de este segundo programa, obteniendo con esto un más alto nivel de seguridad. Estos programas nacieron por la necesidad de modificar el comportamiento del sistema operativo sin tener que modificar su funcionamiento.” Ref.: http://www.segu-info.com.ar/proteccion/proteccion.htm

Saludos, Comenta y Comparte.

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s