Sei sulla pagina 1di 6

Universidad Politcnica Salesiana

Base de Datos 2: Ing. lvaro Meja P.


Captulo 10: TEMAS COMPLEMENTARIOS
10.1. Encriptacin de datos y desencriptacin de datos
10.2. Funciones hash
10.3. Algoritmos simtricos y asimtricos

Fuente: http://www.cryptoforge.com.ar/encriptacion.htm
Qu es la criptografa?
La criptografa es la ciencia de usar las matemticas para encriptar y desencriptar datos. Una
vez que la informacin ha sido encriptada, puede ser almacenada en un medio inseguro o
enviada a travs de una red insegura (como Internet) y an as permanecer secreta. Luego, los
datos pueden desencriptarse a su formato original.
Qu es el proceso de encriptacin (cifrado) y desencriptacin (descifrado)?
La encriptacin o cifrado es el proceso en el cual los datos a proteger son traducidos a algo que
parece aleatorio y que no tiene ningn significado (los datos encriptados o cifrados). La
desencriptacin es el proceso en el cual los datos encriptados son convertidos nuevamente a su
forma original.
Qu es un algoritmo criptogrfico?
Un algoritmo criptogrfico, o cifrador, es una funcin matemtica usada en los procesos de
encriptacin y desencriptacin. Un algoritmo criptogrfico trabaja en combinacin con una llave
(un nmero, palabra, frase, o contrasea) para encriptar y desencriptar datos. Para encriptar, el
algoritmo combina matemticamente la informacin a proteger con una llave provista. El
resultado de este clculo son los datos encriptados. Para desencriptar, el algoritmo hace un
clculo combinando los datos encriptados con una llave provista, siendo el resultado de esta
combinacin los datos desencriptados (exactamente igual a como estaban antes de ser
encriptados si se us la misma llave). Si la llave o los datos son modificados el algoritmo produce
un resultado diferente. El objetivo de un algoritmo criptogrfico es hacer tan difcil como sea
posible desencriptar los datos sin utilizar la llave. Si se usa un algoritmo de encriptacin
realmente bueno, entonces no hay ninguna tcnica significativamente mejor que intentar
metdicamente con cada llave posible. Incluso para una llave de slo 40 bits, esto significa 240
(poco ms de 1 trilln) de llaves posibles.
Qu son las funciones hash?

Los hash o funciones de resumen son algoritmos que consiguen crear a partir de una entrada
(ya sea un texto, una contrasea o un archivo, por ejemplo) una salida alfanumrica de longitud
normalmente fija que representa un resumen de toda la informacin que se le ha dado (es decir,
a partir de los datos de la entrada crea una cadena que solo puede volverse a crear con esos
mismos datos).
Ejemplos y formas de uso
Las funciones hash son muy usadas, una de las utilidades que tiene es proteger la
confidencialidad de una contrasea, ya que podra estar en texto plano y ser accesible por
cualquiera y an as no poder ser capaces de deducirla. En este caso, para saber si una
contrasea que est guardada, por ejemplo, en una base de datos es igual a la que hemos
introducido no se descifra el hash (ya que debera de ser imposible hacerlo) sino que se aplicar
la misma funcin de resumen a la contrasea que especificamos y se comparar el resultado con
el que tenemos guardado (como se hace con las contraseas de los sistemas Linux).
Qu diferencias hay entre los algoritmos simtricos y los asimtricos?
Los algoritmos simtricos encriptan y desencriptan con la misma llave. Las principales ventajas
de los algoritmos simtricos son su seguridad y su velocidad. Los algoritmos asimtricos
encriptan y desencriptan con diferentes llaves. Los datos se encriptan con una llave pblica y se
desencriptan con una privada, siendo sta su principal ventaja. Los algoritmos asimtricos,
tambin conocidos como algoritmos de llave pblica, necesitan al menos una llave de 3.000 bits
para alcanzar un nivel de seguridad similar al de uno simtrico de 128 bits. Y son increblemente
lentos, tanto que no pueden ser utilizados para encriptar grandes cantidades de informacin. Los
algoritmos simtricos son aproximadamente 1.000 veces ms rpidos que los asimtricos.
Qu tan seguro es CryptoForge? Descargable de: http://www.cryptoforge.com.ar/descargar
CryptoForge le proporciona cuatro robustos algoritmos de encriptacin para proteger sus datos:
* Blowfish (llave de 448 bits) es un algoritmo de encriptacin rpido y fuerte. Su creador es
Bruce Schneier, uno de los ms prestigiosos criptgrafos en el mundo.
* Rijndael (llave de 256 bits) es un algoritmo seguro y eficiente. Sus creadores son Joan
Daemen y Vincent Rijmen (Blgica). Ha sido elegido como el nuevo Estndar Avanzado de
Encriptacin (AES) por el Instituto Nacional de Estndares y Tecnologa (NIST) de los EEUU.
Triple DES (llave de 168 bits) es un algoritmo desarrollado por el gobierno de EEUU y ha sido
2

evaluado durante aos sin descubrrsele debilidades. Es una configuracin de encriptacin en la


cual el algoritmo DES es usado tres veces con tres llaves diferentes.
Gost (llave de 256 bits) es un algoritmo de Rusia y podra ser considerado el anlogo ruso al
DES. Tiene un diseo conservador y no ha podido ser vulnerado, a pesar de haber sido uno de
los ms estudiados, durante aos, por los mejores expertos en criptoanlisis.
El nico mtodo para vulnerar cualquiera de estos algoritmos, conocido hasta el momento, es
intentando con todas las combinaciones de llaves posibles. Con mil millones de ordenadores
capaces de probar mil millones de llaves por segundo cada uno, y empleando un algoritmo con
llave de 168 bits, se necesitan 10*1024 aos de trabajo para probar todas las llaves (para
comparar, la edad del universo se estima en 10*109 aos).

Realizar el siguiente tutorial en Oracle XE 11G:

Fuente: http://betaroot.blogspot.com/2014/06/oracle-db-11g-dbmscryptoencriptamiento.html

Oracle DB 11G - DBMS_CRYPTO: Encriptamiento y desencriptamiento de datos.


Antes de iniciar este tutorial, lo recomiendo para personas que tengan un conocimiento intermedio sobre PLSQL y a
aquellos que les gusta investigar el porqu de las cosas.

Introduccin.
En esta ocasin aprenderemos a encriptar y desencriptar datos usando Oracle 11 G (en mi caso la versin XE).
Anteriormente se utilizaba el paquete DBMS_OBFUSCATION_TOOLKIT a partir de Oracle8i, que soporta encriptacin
DES y triple DES (Data Encription Standard), y con ciertas limitaciones (por ejemplo, los datos a encriptar han de ser un
mltiplo de 8 bytes).
En la actualidad se utiliza DBMS_CRYPTO. Soporta ms formas de encriptacin, como la AES (Advanced Encription
Standard), que sustituye el anterior DES y no hay limitacin con el nmero de carcteres.
Entre las caractersticas de DBMS_CRYPTO es que puede ser utilizado en un bloque PLSQL tal como un store
procedure.
En la sintaxis, de la encriptacin como de la desencripcin se utilizan 4 parmetros:
src --> Indica datos de tipo RAW para desencriptar.
typ --> Tipo de cifrado.
key --> Llave de encriptacin y desncriptacin utilizada.
iv --> Es un vector opcional para bloque de cifrado. Por defecto se usa NULL.
Prctica.

Y esta es la parte divertida.


1. Crear una tabla de parmetros, en donde almacenar las llaves que usar para la encriptacin y
desencriptacin.

CREATE USER ADM IDENTIFIED BY ADM;


GRANT CONNECT, RESOURCE TO ADM;
CONNECT ADM/ADM
CREATE TABLE ADM.ADM_PARAMETER
(
ID_PARAMETER
NUMBER(4)
PARAMETER_NAME VARCHAR2(10 BYTE)
PARAMETER
VARCHAR2(500 BYTE)
)

NOT NULL,
NOT NULL,
NOT NULL

2. La poblar con una llave de encriptacin (inventada):


Insert into ADM.ADM_PARAMETER
(ID_PARAMETER, PARAMETER_NAME, PARAMETER)
Values
(1, 'KEY_CRYPT',
'a5b7c9d0a5b7c9d0a5b7c9d0a5b7c9d0a5b7c9d0a5b7c9d0a5b7c9d0a5b7c9d0');
COMMIT;

3. Paso muy importante, para Oracle 11 XE hay que habilitar permisos de EXECUTE sobre el paquete
DBMS_CRYPTO, de lo contrario no correr:
Entramos a la base como SYS as SYSDBA.
Ejecutamos el comando:

grant execute on dbms_crypto to PUBLIC;


Esto para poder ejecutarlo en cualquier USER, sino solamente agregamos el USER que queremos que tenga
permiso.
4. Una vez tenemos permisos de ejecucin, crearemos la lgica de encripcin y desencripcin. En mi caso
particular cree un paquete al que le llame ADM_UTIL. Adjunto el cdigo del paquete (ESPECIFICACION Y
CUERPO):
La parte log no la usaremos para este ejemplo (la funcin RECORD_LOG especificamente).
5. Ahora, bastar ejecutar el siguiente Bloque annimo para probar su funcionalidad:
DECLARE
in_string VARCHAR2(200) := 'Texto Encriptado';
out_string VARCHAR2(200);
BEGIN
out_string := ADM.ADM_UTIL.encryptor(in_string);
DBMS_OUTPUT.PUT_LINE('Encrypted Text: ' || out_string);
out_string := ADM.ADM_UTIL.decryptor(out_string);
DBMS_OUTPUT.PUT_LINE('Decrypted Text: ' || out_string);
END;
Habiliten el DBMS_OUTPUT de su administrador de base de datos para ver los resultados.
Hasta aqu con este tutorial, si hay preguntas en los comentarios.
Publicado 7th June 2014 por Ronald Alarcn
Etiquetas: Databases Oracle PLSQL

Potrebbero piacerti anche