bases de datos: plataforma openssllmengual/bases_datos/bd_openssl_pn.pdf · para la realización de...

15
Bases de Datos: Plataforma OpenSSL Para la realización de la Practica “Gestión de accesos seguros SSL a una Base de Datosvamos a utilizar la plataforma OpenSSL instalada en la Máquina Virtual de la asignatura. Esta plataforma nos va a permitir crear la infraestructura de seguridad (certificados y claves) que vamos a utilizar en la configuración del SGBD para implementar servicios de seguridad en el acceso a la Base de Datos. Pág. 1 12/04/2016 Luis Mengual (C)

Upload: trinhdiep

Post on 14-Oct-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Bases de Datos: Plataforma OpenSSL

Para la realización de la Practica “Gestión de accesos seguros SSL a una Basede Datos” vamos a utilizar la plataforma OpenSSL instalada en la MáquinaVirtual de la asignatura. Esta plataforma nos va a permitir crear la infraestructurade seguridad (certificados y claves) que vamos a utilizar en la configuración delSGBD para implementar servicios de seguridad en el acceso a la Base de Datos.

Pág. 1 12/04/2016 Luis Mengual (C)

Bases de Datos: Plataforma OpenSSL

OpenSSL es un entorno integrado que permite la creación y gestión de certificados digitales.OpenSSL dispone de la infraestructura necesaria para crear una Autoridad de Certificación, firmarcertificados de usuario, revocar certificados etc .

OpenSSL es además un paquete de herramientas de administración y librerías de seguridad parala gestión de certificados y la implementación de mecanismos de seguridad. OpenSSLproporciona un entorno mediante el cual es posible mediante línea de comandos crearcertificados, firmas digitales, cifrado/descrifrado información, mensajes S/mime etc….Ademásproporciona librerías para implemementar aplicaciones de seguridad en entorno C/C++ ensistemas operativos windows/linuxsistemas operativos windows/linux.

Esta librería criptográfica surge a partir del proyecto SSLeay, que fue iniciado por Eric A. Young yTim J.Houston, y como propuesta inicial pretendía ofrecer el protocolo SSL para cualquieraplicación de seguridad. El proyecto OpenSSL fue iniciado en 1995, y actualmente es la libreríacriptográfica más usada. Algunas de las razones que la hacen tan popular son:

Es distribuida, usando una licencia de código libre. Esto permite a los usuarios realizar cambios yoptimizaciones constantes en los elementos criptográficos que la componen. Es posible integrarlaen cualquier aplicación comercial sin necesidad de abonar tasas permitiendo ofrecer soporteen cualquier aplicación comercial sin necesidad de abonar tasas, permitiendo ofrecer soporteSSL criptográfico, comparable con casi cualquier librería comercial. Puede ser ejecutada ennumerosas plataformas, permitiendo la exportación de las aplicaciones que la utilizan a cualquiersistema operativo.

Las últimas versiones disponibles se pueden obtener de :

https://slproweb.com/products/Win32OpenSSL.html

La máquina virtual de la asignatura ya tiene instalado OpenSSL versión 1.0.0d .

Pág. 2 12/04/2016 Luis Mengual (C)

Bases de Datos: Plataforma OpenSSL

La herramienta openssl, que se invoca mediante la línea de mandatos,proporciona acceso a un gran conjunto de funciones criptográficascorrespondientes a la librería criptográfica crypto. Algunas de las operacionesque se pueden realizar mediante dicha librería son:

Creación y gestión de certificados digitales X.509, solicitudes de certificadosdigitales (CSR) y listas de revocación de certificados (CRL).Creación y gestión de claves privadas y claves públicas.Operaciones relacionadas con la criptografía de clave pública.Cálculo de “resúmenes” de mensajes mediante funciones hash. Firma digital.Cifrado y descifrado con un amplio conjunto de algoritmos.Api para el desarrollo de aplicaciones SSL/TLS cliente-servidor.Manejo de e-mails S/MIME cifrados y firmados.Generación y verificación de sellos de tiempo .

Pág. 3 12/04/2016 Luis Mengual (C)

Bases de Datos: Plataforma OpenSSL

Una vez instalado el entorno OpenSSL hay que poner en la variable “path” delsistema “C:\OpenSSL-Win32” que es la instalación por defecto de la plataforma*.

De esta forma podemos ejecutar la herramienta desde cualquier directorio delsistema.

La forma de invocar la herramienta es tecleando “openssl”. Momento en el cualentramos en el entornoOpenSSL>

En la figura se observan el conjunto de comandos disponibles de la herramienta

*La máquina virtual del curso ya tiene configurado la variable de entorno del pathde la instalación de OpenSSL con lo cual se puede invocar a la plataforma desdecualquier ventana MSDOS con el comando “openssl”.

Pág. 4 12/04/2016 Luis Mengual (C)

Bases de Datos: Plataforma OpenSSL

Los certificados X.509 tiene un estándar PKCS#7 pueden almacenarse enpformato binario DER con extensiones “.crt”, “.cer”, “.der”. También puedenalmacenarse en formato PEM con extensión “.pem”.

La claves privada al igual que los certificados pueden estar en formato DER oPEM. Y las extensiones de los ficheros serían “.der” o “.pem”. El formato de lasclaves sigue el estándar PKCS#8.

El formato PEM es la conversión base64 del formato DER a la que se añadend li it d d l ti “ BEGIN CERTIFICATE ” “ END CERTIFICATE”unos delimitadores del tipo “-BEGIN CERTIFICATE-” y “-END CERTIFICATE”

Los archivos con extensión “.p12” se utilizan para almacenar en un único ficherocifrado el certificado de clave pública de un usuario y su clave privada. Laextensión .pfx (Personal inFormation eXchange) es similar que la *.p12” en elentorno windows. El formato de estos ficheros sigue el estándar PKCS#12.

El entorno Openssl nos permite convertir formatos de certificados según seanrequeridos por nuestras aplicaciones

Pág. 5 12/04/2016 Luis Mengual (C)

Bases de Datos: Plataforma OpenSSL

Vamos a empezar a utilizar la herramienta creando un par clave privada-pública.

La clave privada la vamos a tener en un fichero que podemos opcionalmenteproteger con una clave y un algoritmo simétrico como DES, AES 256 …

La clave pública también la podemos crear en un fichero. Se extrae a partir de laclave privada.p

Pág. 6 12/04/2016 Luis Mengual (C)

Bases de Datos: Plataforma OpenSSL

Vamos ahora a crear un certificado digital X.509. vamos a llamar a este certificado,certificado de la Autoridad de Certificación (CA Certification Authority) Este certificadocertificado de la Autoridad de Certificación (CA, Certification Authority). Este certificadonos permitirá autenticarnos frente a un servidor e implementar mecanismos deseguridad adicionales.

Vamos a poner los siguientes campos en el certificado de la CA

-----Country Name (2 letter code) [AU]:ESState or Province Name (full name) [Some-State]:MALocality Name (eg, city) []:BOAO i ti N ( ) [I t t Wid it Pt Ltd] FIMOrganization Name (eg, company) [Internet Widgits Pty Ltd]:FIMOrganizational Unit Name (eg, section) []:UPMCommon Name (eg, YOUR name) []:ALU1_CAEmail Address []:[email protected]>

Nótese que el comando para crear el certificado toma como parámetro de entrada elfichero de clave privada creada anteriormente. Podemos igualmente usar una claveprivada cifrada; en este caso se nos pedirá la clave que cifra el fichero.

Vamos a convertir el certificado a formato binario DER creando un fichero con extension*.crt. Ahora pinchando en el fichero desde el entorno Windows podemos ver que ha sidocreado correctamente.

También podemos crear un fichero con extension *.p12 que contenga el certificado declave pública y la clave privada. Pinchando en el fichero obtenido desde el entornowindows se inicia un proceso de instalación del certificado. Éste se instalará en unalmacén de certificado de usuario.

Por último podemos ver en formato texto el certificado construido.

Pág. 7 12/04/2016 Luis Mengual (C)

o ú t o pode os e e o ato te to e ce t cado co st u do

El certificado obtenido es un certificado autofirmado en el que el “emisor(Emitido por)”es igual que el “propietario (Enviado a)”.

Bases de Datos: Plataforma OpenSSL

Pág. 8 12/04/2016 Luis Mengual (C)

Bases de Datos: Plataforma OpenSSL

Ahora nos vamos a crear un certificado de usuario pero firmado por una Autoridad deCertificación El certificado que nos hemos creado con anterioridad coincidían losCertificación. El certificado que nos hemos creado con anterioridad coincidían loscampos emisor y propietario, es decir era un certificado autofirmado. Ahora nos vamos acrea un certificado emitido por la Autoridad de Certificación.

El proceso es el siguiente: En primer lugar generamos el par clave privada-pública. Acontinuación generamos una solicitud de firma, que en definitiva es un fichero conextensión *.csr. Este fichero lleva incorporado el certificado de usuario autofirmado consolicitud de ser firmado por una Autoridad de Certificación. Finalmente la Autoridad deCertificación tomando como parámetro su clave privada firmará el certificado.

Los campos que pondremos en el certificado de usuario son los siguientes:

Country Name (2 letter code) [AU]:ESState or Province Name (full name) [Some-State]:MALocality Name (eg, city) []:BOAOrganization Name (eg, company) [Internet Widgits Pty Ltd]:FIMOrganizational Unit Name (eg, section) []:UPMCommon Name (eg, YOUR name) []:alumno1seg( g, ) [] gEmail Address []:[email protected]

Please enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:ooooooAn optional company name []:oooooo

Si queremos utilizar este certificado para firmar y cifrar mensajes con una aplicación de correoelectrónico (como p.e outlook) necesitamos que el campo “Email Address” este correctamente

ll d l di ió d d l i P i l i ti l t l il

Pág. 9 12/04/2016 Luis Mengual (C)

rellenado a la dirección de correo del usuario. P.e si el usuario tiene la cuenta en el correo gmailel campo de “Email Address” deberá ser rellenado a “[email protected]”.

Bases de Datos: Plataforma OpenSSL

De forma similar a como hicimos con el certificado de la Autoridad deCertificación convertimos el certificado a formato binario DER (extensión *.cer) ytambién construimos el fichero *.p12 con el certificado de usuario y la claveprivada protegidas por contraseña.

Pinchando en el fichero “usrCertificado.crt” se observa que efectivamente setrata de un certificado firmado ya que los campos “emisor (emitido por)” y“propietario (Enviado a)” son diferentes. El emisor del certificado es la Autoridadque firma, que en nuestro caso se la Autoridad de Certificación que nos hemoscreado.

Pág. 10 12/04/2016 Luis Mengual (C)

Bases de Datos: Plataforma OpenSSL

Pág. 11 12/04/2016 Luis Mengual (C)

Bases de Datos: Plataforma OpenSSL

El mecanismo de firma digital es esencial para implementar servicios como el “norepudio”. Un usuario que firma un documento con una clave privada asociada aun certificado de clave publica (avalado por una Autoridad de Certificaciónreconocida) no puede negar haber firmado un documento.

El mecanismo de firma consiste en hacer un resumen de documento (aplicar una función hash) y cifrar el resultado con la clave privada del usuario:

ClavePrivada[Hash(documento)]= BloqueCifrado

El proceso de verificación de firma consiste en el proceso inverso: Se aplica la clave pública al BloqueCifrado anterior y se compara con el resumen del documento

ClavePública[BloqueCifrado] se compara con Hash(documento)

Si el resultado de esta comparación es afirmativa se considera verificada lafirma.

En la figura se muestra cómo generar resúmenes y el bloque cifrado con la líneade comandos OpenSSl. La firma de documentos se hace a partir de un ficheroque contiene la clave privada. La verificación se hace extrayendo la clave públicadel usuario de un fichero.

Pág. 12 12/04/2016 Luis Mengual (C)

Bases de Datos: Plataforma OpenSSL

Un documento también podría cifrase con la clave pública obteniendo un bloquecifrado. En este caso sólo el propietario de la clave privada par de la anteriorpodría descifrar ese bloque cifrado.

A diferencia del mecanismo de firma (cifrado con clave privada), el cifrado conclave pública lleva implícito el servicio de confidencialidad: Nadie puede accedera los contenidos del bloque cifrado salvo el propietario de la clave privada.

Los algoritmos de la criptografía asimétrica son lentos. Están pensados paracifrar poca cantidad de información. El ejemplo más común es usarlos para cifrarlas claves de sesión intercambias entre dos usuarios. El protocolo SSL lo haceasí: en el mensaje “Intercambio_clave_cliente” se envía las claves de sesióncifradas con la clave pública del servidor extraída de su certificado.

En la figura se muestran los comando OpenSSL necesarios para cifrar con laclave pública un documento.

La clave pública también se puede extraer así:rsa -in cert_userp12.pem -out publica.pem -pubout

Pág. 13 12/04/2016 Luis Mengual (C)

Bases de Datos: Plataforma OpenSSL

El entorno OpenSSL proporciona de manera estándar muchos algoritmos decifrado simétrico, incluidas diferentes variantes de cada uno.

En la figura se muestra como cifra un documento de texto incluyendo la clave decifrado en el comando.

La clave también se puede introducir por teclado:

des -in documento.txt -out documento_cifrado_desdes –d -in documento_cifrado_des -out documento_original_des.txt

Pág. 14 12/04/2016 Luis Mengual (C)

Bases de Datos: Plataforma OpenSSL

Se pueden utilizar otros algoritmos de cifrado :

OpenSSL> des3 -in documento.txt -out documento_cifrado_des3 -pass pass:claveOpenSSL> des3 -d -in documento_cifrado_des3 -out documento_original_des3.txt -pass pass:clave

OpenSSL> aes-256 -ecb-in documento.txt -out documento_cifrado_aes -pass pass:claveOpenSSL> aes-256-ecb -d -in documento_cifrado_aes -out documento_original_aes.txt -pass pass:clave

OpenSSL> rc4 -in documento.txt -out documento_cifrado_rc4 -pass pass:claveOpenSSL> rc4 -d -in documento_cifrado_rc4 -out documento_original_rc4.txt -pass pass:clave

OpenSSL> idea-ecb -in documento.txt -out documento_cifrado_idea -pass pass:claveOpenSSL> idea-ecb -d -in documento_cifrado_idea -out documento_original_idea.txt -pass pass:clave

Pág. 15 12/04/2016 Luis Mengual (C)