Lab5_Encriptacion

7
Laboratorio 5 ______________________________________________________________________ ___________ 1. Crear el usuario CREATE USER utp_jra IDENTIFIED BY 12345 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON users; xxx : corresponde a las iníciales de su primer nombre y apellidos password: el que ud. Considere conveniente 2. Otorgar permisos GRANT connect TO utp_jra; GRANT create table, create procedure TO utp_jra; 3. Abrir y modificar los siguientes archivos Pkg_Encriptacion Pkg_Encriptacion_Body en cada uno de los archivos en el nombre del package reemplacela cadena _XXX por las primeras letras de su apellido. 4. Ejecutar con el usuario sys lo siguiente: SELECT ENCRIPCION _jra.FB_ENCRIPTAR ('PRUEBA CODIFICACION') FROM DUAL; SELECT ENCRIPCION _ jra.FB_DESCENCRIPTAR ( '992106CB9CBC71E30B3636A7E20DFC20EA858DB26A706EE3') FROM DUAL; 5. Modifique el package creados en el paso 3, a fin que la clave no esté definida dentro del package y sea enviada como parámetro a la función.

Transcript of Lab5_Encriptacion

Page 1: Lab5_Encriptacion

Laboratorio 5

_________________________________________________________________________________

1. Crear el usuario

CREATE USER utp_jra IDENTIFIED BY 12345

DEFAULT TABLESPACE users

TEMPORARY TABLESPACE temp

QUOTA UNLIMITED ON users;

xxx : corresponde a las iníciales de su primer nombre y apellidos

password: el que ud. Considere conveniente

2. Otorgar permisos

GRANT connect TO utp_jra;

GRANT create table, create procedure TO utp_jra;

3. Abrir y modificar los siguientes archivos

Pkg_Encriptacion

Pkg_Encriptacion_Body

en cada uno de los archivos en el nombre del package reemplacela cadena _XXX por las primeras letras de su apellido.

4. Ejecutar con el usuario sys lo siguiente:

SELECT ENCRIPCION_jra.FB_ENCRIPTAR ('PRUEBA CODIFICACION')

FROM DUAL;

SELECT ENCRIPCION_ jra.FB_DESCENCRIPTAR (

'992106CB9CBC71E30B3636A7E20DFC20EA858DB26A706EE3')

FROM DUAL;

5. Modifique el package creados en el paso 3, a fin que la clave no esté definida dentro del package y sea enviada como parámetro a la función.Nota: la clave debe de ser 8 caracteres

6. Ingresar con el usuario creado en el paso 1, y ejecutar lo siguiente

CREATE TABLE emp (empnoNUMBER(4) NOT NULL, ename VARCHAR2(10),

job VARCHAR2(9), mgr NUMBER(4), hiredate DATE,

Page 2: Lab5_Encriptacion

sal raw(2000), comm NUMBER(7,2), deptno NUMBER(2));

INSERT INTO emp (empno, ename, sal) VALUES (9999, 'Tim', AAAAA);

INSERT INTO emp (empno, ename, sal) VALUES (9999, 'Larry', BBBBB);

AAAA y BBBB son valores encriptados por la funcion creada en el paso Nro2

7. Ejecute un Select que descifre en valor de la columna SAL de la tabla EMPDAR PERMISO DESDE EL SYSGRANT EXECUTE ON SYS.ENCRIPCION_JRA TO utp_jra;select a.empno,a.ename, ENCRIPCION_jra.FB_DESCENCRIPTAR (A.sal,'12345678') FROM utp_jra.emp A ;

DESDE EL USUARIOselect a.empno,a.ename, SYS.ENCRIPCION_jra.FB_DESCENCRIPTAR (A.sal,'12345678') FROM emp A ;

8. Otro paquete de encriptación:

select DBMS_CRYPTO.ENCRYPT(src => UTL_I18N.STRING_TO_RAW ('SECRETITOS!', 'AL32UTF8'),

typ => 4353,

key => UTL_I18N.STRING_TO_RAW ('clavedesencript', 'AL32UTF8')

)

FROM dual;

SELECT UTL_I18N.STRING_TO_RAW ('SECRETITOS!', 'AL32UTF8'),

UTL_RAW.cast_to_varchar2(

DBMS_CRYPTO.DECRYPT( DBMS_CRYPTO.ENCRYPT(src => UTL_I18N.STRING_TO_RAW ('SECRETITOS!', 'AL32UTF8'),

typ => 4353,

key => UTL_I18N.STRING_TO_RAW ('clavedesencript', 'AL32UTF8')

),

typ => 4353,

key => UTL_I18N.STRING_TO_RAW ('clavedesdecript', 'AL32UTF8')

)

)

FROM dual;

SELECT TRANSLATE(

'HOLA MUNDO', -- Mensaje a codificar

'ABCDEFGHIJKLMNOPQRSTUVWXYZ ',

'1234567890!@#$%^&*()-=_+;,.') ENCODED_MESSAGE

FROM DUAL

/

Page 3: Lab5_Encriptacion

SELECT TRANSLATE(

' 8%@1.#-$4%', -- Mensaje a decodificar

'1234567890!@#$%^&*()-=_+;,.',

'ABCDEFGHIJKLMNOPQRSTUVWXYZ ') DECODED_MESSAGE

FROM DUAL

/

9. Usando DBMS_CRYPTO

DECLAREinput_string VARCHAR2 (200) := 'Mensaje sin Encriptar';output_string VARCHAR2 (200);encrypted_raw RAW (2000); -- stores encrypted binary textdecrypted_raw RAW (2000); -- stores decrypted binary textnum_key_bytes NUMBER := 256/8; -- key length 256 bits (32 bytes)key_bytes_raw RAW (32); -- stores 256-bit encryption keyencryption_type PLS_INTEGER := -- total encryption typeDBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC+ DBMS_CRYPTO.PAD_PKCS5;BEGINDBMS_OUTPUT.PUT_LINE ( 'Cadena Original: ' || input_string);key_bytes_raw := DBMS_CRYPTO.RANDOMBYTES (num_key_bytes);encrypted_raw := DBMS_CRYPTO.ENCRYPT (src => UTL_I18N.STRING_TO_RAW (input_string, 'AL32UTF8'),typ =>encryption_type,key =>key_bytes_raw);

DBMS_OUTPUT.PUT_LINE ( 'CadenaEncriptada: ' || encrypted_raw); -- The encrypted value "encrypted_raw" can be used heredecrypted_raw := DBMS_CRYPTO.DECRYPT (src =>encrypted_raw,typ =>encryption_type,key =>key_bytes_raw );

output_string := UTL_I18N.RAW_TO_CHAR (decrypted_raw, 'AL32UTF8');

DBMS_OUTPUT.PUT_LINE ('CadenaDesencriptada: ' || output_string);END;

NOTA:Para ver los campos de salida activar la vista de DBMS, de la siguiente manera.

Page 4: Lab5_Encriptacion

10. Crear un package llamado UTP_DBMS_CRYPTO _jra, que contenga las funciones de Encriptar y Desencriptar haciendo uso del paquete DBMS_CRYPTO.

DBMS_CRYPTO y comparación de características DBMS_OBFUSCATION_TOOLKIT

DBMS_CRYPTO se pretende sustituir a la DBMS_OBFUSCATION_TOOLKIT , proporcionando una mayor facilidad de uso y el apoyo a una serie de algoritmos para dar cabida a sistemas nuevos y existentes. Specifically, 3DES_2KEY and MD4 are provided for backward compatibility. En concreto, 3DES_2KEY y MD4 se proporciona por compatibilidad con versiones anteriores. It is not recommended that you use these algorithms because they do not provide the same level of security as provided by 3DES, AES, MD5, or SHA-1. No se recomienda el uso de estos algoritmos, ya que no proporcionan el mismo nivel de seguridad conforme a lo dispuesto por el 3DES, AES, MD5 o SHA-1.

select DBMS_CRYPTO.RANDOMBYTES (256/8)

from dual

select UTP_DBMS_CRYPTO_jra.FB_ENCRIPTAR('Mensaje sin Encriptar','2775F38A293BD6C6356CCD7470D4402EF9E3A8720A55F174597403D1492E3AF7')

from dual;

select utp_dbms_crypto_jra.fb_descencriptar('8217CC68B652A30B99846A5A62A09202C54FDABEFA158FF4B522E3E7042548BB','2775F38A293BD6C6356CCD7470D4402EF9E3A8720A55F174597403D1492E3AF7')

Page 5: Lab5_Encriptacion

from dual;

select UTL_I18N.STRING_TO_RAW ('Paolafabiana', 'AL32UTF8')

from dual

11. El package creado en el paso 10, gradarlo en dos archivos(header y body), y luego ejecutar el comando wrap de la siguiente manera:(SOLO SI SE TIENE EL CLIENTE ORACLE)

D:\oracle\oraxx\bin>wrap iname=s:\encripta\[nombre_del_archivo.sql]oname=s:\encripta\[nombre_del_archivo_wrap.sql]

PL/SQL Wrapper: Release x.x.x.0.0 - Production on Jue Jun 02 11:49:58 2011

Copyright (c) Oracle Corporation 1993, 2000.  All Rights Reserved.

Processing s:\encripta\funcion.sql to s:\encripta\funcion.cript

D:\oracle\oraxx\bin>

NOTA:El archivo wrap se ubica en la ruta del bin de la BD.

Page 6: Lab5_Encriptacion

Ejercicios:

a. Crear un nuevo usuario que incluya la siguiente tabla:

IdNombreApellidoDNIFechaNacimientoSueldoDNI_OBFUSCATIONDNI_CRYPTOSueldo_OBFUSCATIONSueldo_CRYPTO

Los Campos DNI_OBFUSCATION, DNI_CRYPTO, Sueldo_OBFUSCATION y Sueldo_CRYPTO deben de tener los valores encriptados de acuerdo a las funciones OBFUSCATION y CRYPTO

b. Cargar los siguientes datos en la nueva tabla creada

Id Nombre Apellido DNI

FechaNacimiento Sueldo

1 Esteban Guzman 12345678 17/11/1976 14,000.002 Lisseth Angulo 87654321 01/01/1980 9,000.003 Jorge Aguilar 00987658 21/07/1970 11,000.004 Alicia Rodas 12312093 30/02/1981 9,500.005 Marely Barboza 98634234 09/08/1980 13,000.00

c. Completar las columnas restantes con las siguientes semillas

Tipo SemillaCRYPTO CaMiLiTaOBFUSCATION

PaolaFabiana

NOTA:Todas las ejecuciones de los paquetes de encriptación se debe de hacer desde el nuevo usuarioAdjunte todas las evidencias de la realización del ejercicio.Una vez terminado enviar lo(s) archivos a [email protected]