Etiquetas

,

 

Un aspecto importante de los sistemas es mantener la información sensible de forma segura. Para lo cual uno de los principales puntos es poder encriptar la información en nuestras bases de datos.

Una de las restricciones que encontramos en SQL Database (SQL Azure) es la posibilidad de utilizar encriptación en la base de datos. Este es un mecanismo que debemos implementar desde la lógica de la aplicación. En la mayoría de los casos es un proceso bastante simple o bien podemos encontrar muchas formas y mecanismos para implementarlo desde un sitio web con distintos lenguajes. En este caso Windows Azure Mobile Services utiliza node.js para la programación de los scripts de acciones del servicio.

Veremos que alternativas tenemos para encriptar la información utilizando esta tecnología.

Como punto inicial para conocer un poco más sobre Node.js podemos dirigirnos a: http://nodejs.org/

Para probar este mecanismo podemos instalar Node.Js localmente y realizar las siguientes pruebas. En el link anterior van a poder descargar el instalador.

image

En esta ocasiones vamos a utilizar la librería Crypto de Node.Js.

Como primer paso vamos a identificar cuales son los algoritmos que soporta esta librería tanto para cifrar como para realizar un hash.

Para esto podemos ejecutar la siguiente prueba:

image

Como resultado obtendremos lo siguiente:

Algoritmos de Cifrado

Algoritmos de Hash

CAST-cbc
aes-128-cbc
aes-128-cfb
aes-128-cfb1
aes-128-cfb8
aes-128-ctr
aes-128-ecb
aes-128-gcm
aes-128-ofb
aes-128-xts
aes-192-cbc
aes-192-cfb
aes-192-cfb1
aes-192-cfb8
aes-192-ctr
aes-192-ecb
aes-192-gcm
aes-192-ofb
aes-256-cbc
aes-256-cfb
aes-256-cfb1
aes-256-cfb8
aes-256-ctr
aes-256-ecb
aes-256-gcm
aes-256-ofb
aes-256-xts
aes128
aes192
aes256
bf
bf-cbc
bf-cfb
bf-ecb
bf-ofb
blowfish
camellia-128-cbc
camellia-128-cfb
camellia-128-cfb1
camellia-128-cfb8
camellia-128-ecb
camellia-128-ofb
camellia-192-cbc
camellia-192-cfb
camellia-192-cfb1
camellia-192-cfb8
camellia-192-ecb
camellia-192-ofb
camellia-256-cbc
camellia-256-cfb
camellia-256-cfb1
camellia-256-cfb8
camellia-256-ecb
camellia-256-ofb

camellia128
camellia192
camellia256
cast
cast-cbc
cast5-cbc
cast5-cfb
cast5-ecb
cast5-ofb
des
des-cbc
des-cfb
des-cfb1
des-cfb8
des-ecb
des-ede
des-ede-cbc
des-ede-cfb
des-ede-ofb
des-ede3
des-ede3-cbc
des-ede3-cfb
des-ede3-cfb1
des-ede3-cfb8
des-ede3-ofb
des-ofb
des3
desx
desx-cbc
id-aes128-GCM
id-aes192-GCM
id-aes256-GCM
idea
idea-cbc
idea-cfb
idea-ecb
idea-ofb
rc2
rc2-40-cbc
rc2-64-cbc
rc2-cbc
rc2-cfb
rc2-ecb
rc2-ofb
rc4
rc4-40
rc4-hmac-md5
seed
seed-cbc
seed-cfb
seed-ecb
seed-ofb

DSA-SHA1-old
dsa
dsa-sha
dsa-sha1
dsaEncryption
dsaWithSHA
dsaWithSHA1
dss1
ecdsa-with-SHA1
md4
md4WithRSAEncryption
md5
md5WithRSAEncryption
mdc2
mdc2WithRSA
ripemd
ripemd160
ripemd160WithRSA
rmd160
rsa-md4
rsa-md5
rsa-mdc2
rsa-ripemd160
rsa-sha
rsa-sha1
rsa-sha1-2
rsa-sha224
rsa-sha256
rsa-sha384
rsa-sha512
sha
sha1
sha1WithRSAEncryption
sha224
sha224WithRSAEncryption
sha256
sha256WithRSAEncryption
sha384
sha384WithRSAEncryption
sha512
sha512WithRSAEncryption
shaWithRSAEncryption
ssl2-md5
ssl3-md5
ssl3-sha1
whirlpool

Podemos implementar un algoritmo de encriptación de forma muy sencilla implementando las siguientes líneas de código:

image

Para desencriptar podemos utilizar las siguientes líneas de código:

image

Con este simple mecanismo y unas pocas líneas de código ya podemos encriptar la información dentro de nuestros Mobile Services. Por supuesto que este algoritmo es muy simple y hay otros mecanismos más seguros.

En caso de que se desee realizar un hash podríamos realizar los siguientes cambios al código.

image

Espero que les pueda servir para utilizarlo en sus servicios de Windows Azure Mobile Services.