seguridad bd

15
Seguridad Base de Datos ORACLE Elkin Dario Sanchez Pulido Nelson Yesid Penagos Jaramillo

Upload: elksanpu

Post on 30-Nov-2015

40 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Seguridad BD

Seguridad Base de Datos ORACLE

Elkin Dario Sanchez PulidoNelson Yesid Penagos Jaramillo

Page 2: Seguridad BD

Plataforma de Seguridad

Page 3: Seguridad BD

Plataforma de Seguridad

Page 4: Seguridad BD

Protección de datos

Oracle Advanced Security

alter table empleados modify (sueldo encrypt);

Page 5: Seguridad BD

Encriptación El propósito de una criptografía segura es convertir texto plano en un texto ininteligible basado en una clave.

Los algoritmos de encriptación de datos que Oracle soporta son los siguientes:

● Algoritmos DES

● Triple DES

● RSA (el más rápido actualmente)

Tenemos que tener en cuenta la negociación de seguridad entre el cliente y el servidor, las políticas existentes son las siguientes:

● Rejected (rechazado): Este valor se selecciona cuando se elije no tener seguridad aunque el servidor la considere deseable

(required).

● Accepted (Aceptado): Este valor se selecciona cuando acepto siempre la conexión sea lo que sea la parte contraria. (Es la

política por defecto).

● Requested (Requerido): Esta opción se selecciona cuando la encriptación es deseable.

● Required (Requerido): Esta opción se selecciona siempre que quieras que toda conexión sea siempre de forma segura.

Page 6: Seguridad BD

Paquetes de encriptación● DBMS_OBFUSCATION_TOOLKIT. A partir de

Oracle8i, que soporta encriptación DES y triple DES (Data Encription Standard), y con ciertas limitaciones (por ejemplo, los datos a encriptar han de ser un múltiplo de 8 bytes).

● DBMS_CRYPTO. A partir de Oracle10g. Soporta más formas de encriptación, como la AES (Advanced Encription Standard), que sustituye el anterior DES y no hay limitación con el número de carácteres.

Page 7: Seguridad BD

Ejemplo DBMS_OBFUSCATION_TOOLKIT

CREATE OR REPLACEPACKAGE QB_ENCRIPCION AS

-------------------------------------------------------------------------- -------------------- FUNCION QUE CODIFICA UN TEXTO------------------------ -------------------------------------------------------------------------- FUNCTION FB_ENCRIPTAR( TXT_ENCRIP VARCHAR2 ) RETURN RAW; -------------------------------------------------------------------------- ------------------- FUNCION QUE DECODIFICA UN TEXTO----------------------- -------------------------------------------------------------------------- FUNCTION FB_DESCENCRIPTAR( TXT_DESENCRIP VARCHAR2 ) RETURN VARCHAR2; END QB_ENCRIPCION;

Page 8: Seguridad BD

EjemploDBMS_OBFUSCATION_TOOLKITCREATE OR REPLACEPACKAGE BODY QB_ENCRIPCION AS CRYPT_RAW RAW(2000); CRYPT_STR VARCHAR(2000); -- LLAVE DE ENCRIPCION KEY_ENCRIP VARCHAR(255):='ASXRFGTR'; -------------------------------------------------------------------------- -------------------- FUNCION QUE CODIFICA UN TEXTO------------------------ -------------------------------------------------------------------------- FUNCTION FB_ENCRIPTAR( TXT_ENCRIP VARCHAR2 ) RETURN RAW AS L INTEGER := LENGTH(TXT_ENCRIP); I INTEGER; PADBLOCK RAW(2000); CLE RAW(8) := UTL_RAW.CAST_TO_RAW(KEY_ENCRIP); BEGIN I := 8-MOD(L,8); PADBLOCK := UTL_RAW.CAST_TO_RAW(TXT_ENCRIP||RPAD(CHR(I),I,CHR(I))); DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT( INPUT => PADBLOCK, KEY => CLE, ENCRYPTED_DATA => CRYPT_RAW ); RETURN CRYPT_RAW ; END;

Page 9: Seguridad BD

EjemploDBMS_OBFUSCATION_TOOLKIT-------------------------------------------------------------------------- ------------------- FUNCION QUE DECODIFICA UN TEXTO----------------------- -------------------------------------------------------------------------- FUNCTION FB_DESCENCRIPTAR( TXT_DESENCRIP VARCHAR2 ) RETURN VARCHAR2 AS L NUMBER; CLE RAW(8) := UTL_RAW.CAST_TO_RAW(KEY_ENCRIP); CRYPT_RAW RAW(2000) := UTL_RAW.CAST_TO_RAW(UTL_RAW.CAST_TO_VARCHAR2( TXT_DESENCRIP)) ; BEGIN DBMS_OBFUSCATION_TOOLKIT.DESDECRYPT( INPUT => TXT_DESENCRIP, KEY => CLE, DECRYPTED_DATA => CRYPT_RAW ); CRYPT_STR := UTL_RAW.CAST_TO_VARCHAR2(CRYPT_RAW); L := LENGTH(CRYPT_STR); CRYPT_STR := RPAD(CRYPT_STR,L-ASCII(SUBSTR(CRYPT_STR,L))); RETURN CRYPT_STR; END;END QB_ENCRIPCION;

Page 10: Seguridad BD

Ejemplo DBMS_CRYPTODECLARE

l_credit_card_no VARCHAR2(19) := '1234 5678 1234 5678';l_ccn_raw RAW(128) := UTL_RAW.cast_to_raw(l_credit_card_no);l_key RAW(128) := UTL_RAW.cast_to_raw('abcdefgh');l_encrypted_raw RAW(2048);l_decrypted_raw RAW(2048);

BEGINDBMS_OUTPUT.put_line('Original : ' || l_credit_card_no);l_encrypted_raw := DBMS_CRYPTO.encrypt(src => l_ccn_raw,

typ => DBMS_CRYPTO.des_cbc_pkcs5, key => l_key);

DBMS_OUTPUT.put_line('Encrypted : ' ||RAWTOHEX(UTL_RAW.cast_to_raw(l_encrypted_raw)));

l_decrypted_raw := DBMS_CRYPTO.decrypt(src => l_encrypted_raw, typ => DBMS_CRYPTO.des_cbc_pkcs5, key => l_key);

DBMS_OUTPUT.put_line('Decrypted : ' || UTL_RAW.cast_to_varchar2(l_decrypted_raw));END;

Page 11: Seguridad BD

BackupLos backups se pueden clasificar en físicos y lógicos.

Los físicos se realizan cuando se copian los ficheros que soportan la BD. Entre estos se encuentran.

backups del SObackups en fríobackups en caliente.

Los backups lógicos sólo extraen los datos de las tablas utilizando comandos SQL y se realizan con la utilidad export/import.

Page 12: Seguridad BD

Backup Lógicos

Este tipo de backups copian el contenido de la BD pero sin almacenar la posición física de los datos. Se realizan con la herramienta export que copia los datos y la definición de la BD en un fichero en un formato interno de Oracle.

\oraclexe\app\oracle\product\10.2.0\server\BIN

Page 13: Seguridad BD

Export/Import

EXP.EXE

IMP.EXE

Page 14: Seguridad BD

EnmascaramientoEl enmascaramiento se refiere a la transformación de los datos, de manera que solamente la información necesaria quede expuesta al usuario final. El enmascaramiento no está orientado a reemplazar las tecnologías actuales de seguridad y privacidad, su objetivo es reforzarlas. Cada una de estas tecnologías cumple con un propósito específico: la autenticación garantiza que solamente el personal autorizado tenga acceso a las bases de datos, los antivirus aseguran que no se transmitan datos utilizando programas maliciosos, y el monitoreo de la actividad de la base de datos se ocupa de verificar que no se pueda tener acceso a los datos sensibles de manera innecesaria. El enmascaramiento hace que el usuario final solamente pueda ver los datos que requiere. Aunque se tiende a pensar que el enmascaramiento es equivalente al cifrado, hay una diferencia fundamental entre los dos, la información cifrada necesariamente debe descifrarse, quedando expuestos los datos originales. En contraste, el enmascaramiento garantiza que la información original nunca estará disponible para el usuario

final ya que él solamente tendrá acceso a la información enmascarada.

Page 15: Seguridad BD

Ejercicio propuestoCrear un usuario PRUEBA, crear una tabla empleados, Encriptar los datos de la tabla empleados, haciendo un update sobre esta. Exportar dicha tabla e importarla. Y hacer una consulta sobre esta desencriptando los datos