You are on page 1of 52

2014

OPEN SSL EN LINUX Y EL USO DE OTRAS


APLICACIONES EN WINDOWS
-Confidencialidad
-Integridad
-Autenticacin
-No repudio

JAIME Torres Flrez y Darwin Granados


Universidad de Pamplona Norte de
Santander (Colombia)
19-5-2014

INTRODUCCION
OpenSSL, es una implementacin de cdigo libre del protocolo SSL (y del
protocolo TSL).
Su principal utilizacin es para realizar comunicaciones seguras en la Internet.

OBJETIVOS: configurar OpenSSL en Ubuntu con el fin de realizar varios procedimientos


como lo es:
Encriptar y desencriptar un mensaje, de forma simtrica y asimtrica
Generar el has o el resumen de un archivo especifico
Generar certificados digitales

MARCO TEORICO
OpenssL
Consiste en un robusto paquete de herramientas de administracin y bibliotecas
relacionadas con la criptografa, que suministran funciones criptogrficas a otros paquetes
como OpenSSH y navegadores web (para acceso seguro a sitios HTTPS).
Estas herramientas ayudan al sistema a implementar el Secure Sockets Layer (SSL), as
como otros protocolos relacionados con la seguridad, como el Transport Layer Security
(TLS). OpenSSL tambin permite crear certificados digitales que pueden aplicarse a un
servidor, por ejemplo Apache. [1].
Llaves pblica/privada:
-

Informacin encriptada con una llave solo puede ser desencriptada por su par.
La base es mantener una llave guardada y distribuir la otra.
El par de llaves est basado en un nmero primo.

Llave Simtrica:
-

Usa la misma llave para encriptar y desencriptar (ms prctico)


Mucho ms veloz que algoritmo asimtrico.
Potencialmente inseguro.
Transmitir llave simtrica con ayuda de algoritmos asimtricos.

Hash:
-

Nmero dado al aplicar una funcin hash a un mensaje.


Funcin hash es en un solo sentido.
Se utiliza para certificar que un mensaje no ha cambiado.
Usado en Sistemas de Password.

Proceso de Firmado:

Asumir la autenticidad de un mensaje.


Crear hash del mensaje, encriptar hash con llave privada y agregar hash al
certificado firmado.
Se transmite la llave pblica a todos los receptores.

Certificado Digital:
-

Certifica que una persona o entidad es quien dice ser.


Direccin de Correo, nombre, uso del certificado, ID de entidad que lo firma.
CA almacenados en Navegador.
Todo certificado es no confiable si no se ha firmado.[2]

DigiSigner
Es un programa que puede ser til como todo-en-uno. Adems de permitir firmar
documentos PDF con tu certificado digital, tambin puedes utilizarlo como visor bsico de
documentos PDF. [3]
HashCheck
Es una utilidad para Windows XP o superior, para comprobar si nuestros archivos
descargados, a distribuir o de una instalacin en particular, no se daaron durante el
proceso de compresin, descarga, etc. [4]

OPENSSL EN LINUX
Antes que nada debemos tener instalado OpenSSL, en caso contrario, instalarlo con el
siguiente comando:

CONFIDENCIALIDAD
Cifrado simtrico
El cifrado simtrico consiste en el uso de una clave que es conocida tanto por el emisor
como por el receptor, y se supone que por nadie ms. El emisor genera el mensaje
cifrado utilizando un algoritmo de cifrado simtrico y la clave, y transmite el
mensaje cifrado al receptor. ste, aplicando la misma clave y el algoritmo
inverso obtiene nuevamente el mensaje original. Este mtodo garantiza
confidencialidad y autentificacin, pero el hecho de que ambas partes deban conocer la
clave genera dos problemas: Los algoritmos de cifrado simtrico ms utilizados son 3DES
(libre) e IDEA (patentado).
Cifrado:
openssl enc -aes-256-cbc -a -in presentacin.txt -out presentacion.enc
Descifrado:
openssl enc -d -aes-256-cbc -a -in presentacion.enc -out presentacion2.txt

Cifrado asimtrico
Las tcnicas de cifrado asimtrico se basan en el uso de dos claves, una pblica y otra
privada, de modo que lo que una de ellas cifra, slo puede descifrarlo la otra, y viceversa.
Se inventaron para evitar el problema del intercambio de claves de los sistemas de cifrado
simtricos. Tanto el emisor como el receptor poseen dos claves: una privada (conocida
slo por l) y una pblica (conocida por cualquiera), de manera que no es necesario que
el emisor y el receptor intercambien claves secretas.
Primeramente debemos generar un par de llaves (pblica y privada) as:
openssl genrsa -out privada.key 1024
openssl rsa -in privada.key -pubout -out publica.key
Cifrado:
openssl rsautl -encrypt -pubin -inkey publica.key -in mensaje.txt -out mensaje.enc
Descifrado:

openssl rsautl -decrypt -inkey privada.key -in mensaje.enc -out mensaje2.txt


Un aspecto importante a considerar en el cifrado asimtrico, va referido al tamao del
archivo origen (mensaje.txt) no debe ser mayor a 128 bytes o 1024 bits. A diferencia del
cifrado simtrico, el comando rsautl no admite textos largos, tan slo de unos. Esto es
debido a que normalmente no se cifran grandes documentos mediante algoritmos
asimtricos. Como ya se ha comentado los documentos se cifran con algoritmos
simtricos slo las claves secretas se cifran con algoritmos asimtricos. En caso de
desear encriptar asimtricamente archivos de mayor tamao, se puede hacer uso de la
opcin smime, tal como se muestra a continuacin:
Cifrado:
openssl smime -encrypt -in texto.txt -out texto.enc jaime.crt
Descifrado:
openssl smime -decrypt -in texto.enc -out texto.txt -inkey jaime.key -recip jaime.crt

INTEGRIDAD
OpenSSL soporta varios tipos de huellas digitales o digest algorithms, por
ejemplo: MD2, MD4, MD5, SHA, SHA1, MDC2 y RIPEMD-160. Cada algoritmo
puede ser invocado directamente o como opcin del commando openssl dgst. En
la siguiente imagen nos muestra un listado de ellos.

GENERANDO EL VALOR RESUMEN DEUN ARCHIVO


Escogeremos un archivo que puede ser de cualquier tipo, al que hallaremos su valor
resumen o hash. Aqu hemos optado por un archivo llamado documento.txt ubicado en
/home/Documentos y en l hemos guardado un mensaje de saludo, pero que puede ser
cualquiera otro archivo de nuestro gusto.

Los resmenes obtenidos por OpenSSL son los mismos que se obtienen por utilidades
como md5sum y sha1sum, as como se muestra en las figuras siguientes:

Para guardad el valor resumen o hash del archivo documento.txt en otro archivo diferente,
usamos el siguiente comando:

valor-resumen.hsh es el archivo que va a contener el valor resumen y que ser creado en


la misma ubicacin del archivo documento.txt
Verificamos que valor-resumen.hsh fue creado:

Editamos valor-resumen.hsh para ver que realmente contiene el valor resumen o hash.

Aqu observamos que definitivamente es el has o valor resumen que habamos calculado
anteriormente.

FIRMA DE MENSAJE O RESUMEN Y VERIFICACIN CON RSA


Primero generamos una clave RSA (una clave pblica y una privada).A partir de la clave
privada obtendremos la pblica, adems con la clave privada ciframos el mensaje y por
ultimo con la clave pblica verificamos si el mensaje ha sido alterado.
Esto genera la clave privada y la guardar encriptada (usando la contrasea):

Nos pedir que ingresemos frase de acceso de privadakey.pem.

Nuevamente pedir que verifiquemos la frase de acceso de privadakey.pem, volvemos a ingresar


la frase que antes habamos ingresado.

Ahora miramos que el archivo privadakey.pem ya fue creado.

Esto genera la clave pblica correspondiente

Nos pedir que ingresemos frase de acceso de privadakey.pem, ingresamos la frase creada
anteriormente en el inciso (a).

A continuacin se mostrara el mensaje writing RSA key notificando que se est escribiendo la
clave RSA. Nos debe aparecer algo as.

Ahora miramos que el archivo publicakey.pem ya fue creado.

Firma del mensaje o firma del resumen

Nos pedir que ingresemos frase de acceso de privadakey.pem, ingresamos la frase creada
anteriormente en el inciso (a).

Ahora miramos que el archivo documento.cipher ya fue creado.

Verificacin de resumen del mensaje con RSA

A continuacin se mostrara el mensaje Verified OK notificando que el archivo no ha sido


modificado y que su valor resume sigue igual. Nos debe aparecer algo as.

A continuacin cambiamos un carcter en el archivo documento.txt con el objetivo de


comprobar que nuestro archivo ha sido modificado y por tanto tambin su valor resumen.
Aqu en este caso solo hemos eliminado la letra s de la palabra es, para ver qu tan
efectiva es la deteccin con un cambio tan pequeo como este que parece tan
insignificante, ahora imagnese un cambio mayor.

Verificamos nuevamente el resumen del mensaje con RSA

A continuacin se mostrara el mensaje Verication Failure notificando que la verificacin ha


fallado y con ello concluimos que el archivo ha sido modificado. Nos debe aparecer algo as.

AUTENTICIDAD Y NO REPUDIO
CONFIGURACIN CERTIFICADOS DIGITALES EN APACHE
Instalamos NMAP

Instalamos Apache

Luego de instalarlo verificamos que el servidor apache este ejecutndose.

Si no est ejecutndose hacemos lo siguiente para iniciar apache.

Despus de haber realizado estas verificaciones estamos listos para generar la clave en
SSL esto es para generar la clave pblica que utilizaremos en SSL.
Primero nos ubicamos en la carpeta etc y luego en ssl de la siguiente manera:

En este directorio se guardar la informacin de la llave, ahora generemos la llave, para


esto digitamos lo siguiente dentro de la carpeta ssl:

Ahora nos pide la frase de paso para el ssl, aqu debemos digitar esa frase que servir
como password, despus de ingresarla nos pide verificarla.

Podemos verificar el contenido de esa clave.

Luego podemos usar el editor para ver su contenido.

Como vemos esta clave est cifrada por seguridad.


Ahora creamos la peticin de firma del certificado CSR, hacemos lo siguiente:

Donde req: Request para la peticin, new: nueva peticin, key: archivo desde el que se
leer la clave, y out: archivo de peticin generado. Luego nos pide la frase de paso que
digitamos en el paso anterior.

La digitamos y nos pide los siguientes datos:

Las iniciales del nombre del pas: en este caso sera CO (Colombia), luego nos pide el
estado en nuestro caso Norte de Santander.

Luego nos pide la ciudad, en nuestro caso Pamplona.

Adems de eso nos pide datos acerca de la organizacin y un nombre que identifica a
nuestra mquina.

Ahora se deben firmar las peticiones creadas y verificar que estn bien de la siguiente
forma:

Donde x509 es aplicar formato estndar de llave pblica.


req: request para el certificado.
days: Validez del certificado (1 ao).
in: Input de la peticin de firma elaborada previamente.
signkey: La llave que firmara el certificado.
out: Certificado resultante.
Ahora veremos los detalles del certificado.

Detalles del dueo del certificado y de la CA que firma el certificado:

Detalles de vigencia del certificado, huella digital, hash y el serial correspondiente

Detalles generales del certificado de forma conjunta

Crear una versin de llave que no requiera password. Esto es para que apache no nos
pida password cuando inicie.

Renombramos los archivos para que no nos pida autenticacin.

Verificacin y Aseguramiento.
Aseguramos los siguientes archivos para que solo root los pueda modificar. Estos son los
archivos creados:

server.crt: Certificado autofirmado.


server.csr: Certificado signing request.
server.key: Llave del servidor.
server.key.secure: llave del servidor con seguridad.

Para asegurarnos de esto hacemos el siguiente comando.

Copiamos los archivos de la carpeta ssl a un directorio ssl de la carpeta apache. Primero
nos ubicamos en la carpeta apache2

Luego creamos la carpeta ssl en apache2.

Ahora copiamos los archivos de /etc/ssl a /etc/apache2/ssl

Activar mdulos SSL.


Primero activamos el mdulo a2enmod as:

Luego activamos el siguiente mdulo a2ensite default-ssl.

Crear carpeta de sitio seguro, vamos a /etc/apache2/available y creamos la carpeta ssl.

Copiamos el archivo default a la carpeta ssl.

Directorios http y http


Creamos una carpeta en /var/www que se llame html. Primero accederemos a /var/www
de la siguiente forma:

Ahora creamos la carpeta html dentro de var/www y en var creamos la carpeta www-ssl,
adems dentro de esta carpeta creamos una carpeta html.

Editamos el archivo default-ssl.conf de la carpeta /etc/apache2/sites-available/ssl

Agregamos despus de ServerAdmin la lnea ServerName localhost, modificar la ruta de


DocumentRoot a var/www-ssl/html.

Agregar al final del cdigo la siguiente lnea:


SSLEngine On
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key

Se debe modificar el archivo default-ssl.conf en /etc/apache2/sites-available/.


Primero nos ubicamos en /etc/apache2/sites-available/

Luego editamos el archivo default-ssl.conf:

En la lnea siguiente a ServerAdmin colocamos ServerName localhost.

Luego se reinicia apache y se debe verificar que se sube el servicio.

Luego se modifica el archivo default-ssl.conf en /etc/apache2/sites-available/.


Comentamos con un # los que est en el recuadro verde y escribimos las lneas que
aparecen en el recuadro rojo.

Ejecutamos NMAP para verificar que est corriendo el puerto 443 en el localhost
Primero vamos a la carpeta /etc/init.d/

Ahora ejecutamos el servicio NMAP

Verificar los resultados


Primero abrimos el navegador Firefox web Browser y digitamos en el espacio de
direcciones localhost.

El mensaje It Works! Significa que est funcionando.


Ahora verificamos con https://localhost

Esta imagen significa que es un sitio no seguro, por lo tanto debemos aceptar el nuevo
certificado.

Por ultimo verificamos que el servicio est corriendo en forma segura.

Ahora solo nos queda mirar los datos de nuestro certificado, para ello nos dirigimos al
candadito que aparece sealado en el recuadro rojo y luego a la opcin More
information

Aqu nos dirigimos a la opcin View Certificate resaltado en el recuadro rojo:

En esta ltima ventana veremos lo datos que hemos dado a nuestro certificado cuando
estuvimos generando dicho certificado

USO DE OTRAS APLICACIONES EN WINDOWS


Pasos para utilizar el HashCheck
1. teniendo instalado el HashCheck, lo que tenemos q hacer es click derecho sobre cualquier
documento, le damos click en propiedades y aparecer el CHECK SUM.

2. vamos hacer el procedimiento con un documento llamado prueba, lo que haremos es hacer
click sobre l y le damos en propiedades

3. se nos desplega una ventana donde podremos observar las propiedades del documento
(prueba), lo que haremos es dar click sobre la pestaa que dice checksum, donde nos sale una
descripcin del archivo y en la parte inferior nos dice que el archivo se ha procesado
correctamente

4. lo siguiente que tenemos que hacer es guardar este nuevo archivo, lo llamaremos pruebafinal. Y
en el tipo de archivo se despliega una lista en el cual podemos escoger el tipo que queramos para
este caso escogimos .sha1, a continuacin guardamos en este caso lo hemos guardado en
escritorio

5. procedemos a buscar el archivo guardado (pruebafinal) y lo ejecutamos. Nos saldr una


ventana con la descripcin como es el nombre del archivo, tamao y estado. Le damos salir

6. ahora lo que tenemos que hacer es abrir nuevamente el documento original llamado prueba y
lo modificaremos, podemos cambiarle el nombre o agregar algo ms en el texto, en la siguiente
imagen esta sin modificar

Ahora modificndolo

7. procedemos a abrir el archivo generado que habamos guardado con el nombre pruebafinal que
es el has. Nos damos cuenta en la descripcin del archivo que el estado es incorrecto ya que
hemos modificado el archivo

Pasos para utilizar el TRUECRYPT


1.arrancamos truecript y vemos la pantalla principal. Lo que haremos es crear un volumen cifrado
donde metermos nuesros datos.

2. en la siguiente pantalla le daremos a crear un contenedor de archivo cifrado

3. elegiremos un volumen TrueCrypt comn y le damos siguiente.

4.en la suigueinte pantalla nos saldr donde ubicar el volumen, es tan fcil como darle a
Seleccionar Archivo y nos saldr otra pantalla para seleccionar donde guardarlo y poner el
nombre

5. en esta pantalla buscaremos dinde guardar y que nombre le poncremos a nuestro contenedor
una vez hecho le daremos guardar.

6. en la siguiente pantalla nos saldr como cifrar el archivo, lo mejor es poner las tres opciones
AES-Twofish-serpent,para tener mas proteccin en el archivo, se puede elegir una nada mas pero
asi ser mas vulnerable nuestro archivo

7. elegiremos en que formato de tamao lo queremos en nuestro caso GB y le daremos 1 GB a


nuestro contenedor.

8. en la siguiente pantalla tendremos que elegir nuestra contrasea.

9. a continuacin en la sugueinte pantalla escojemos que formato queremos el cual tomaremos


ntfs por lo que es mas estable, le daremos formatear y empezara a crear el contenedor.

10. una vez finalizado, nos saldr una ventana emergente.

11. le damos aceptar y nos saldr que nuestro volumen ha sido creado y ahora le daremos a
salir.

10. Vamos a la ubicacin del contenedor y vemos que es un simple archivo sin formato y si lo
intentamos abrir nos saldr una pantalla para elegir el programa para abrirlo.

11. volvemos al programa y le damos seleccionar archivo y buscaremos nuestro archivo.

12.Seleccionamos nuestro archivo y le damos abrir

13.Una vez seleccionado nuestro archivo, seleccionamos la letra de la unidad donde queremos
asignar nuestro contenedor le daremos a montar y nos pedir nuestra contrasea.

13. a continuacin vemos como nuestro contenedor se ha montado en la letra elegida.

14. ahora nos vamos a mi pc y nos sale como si fuera un disco duro mas ese es nuestro
contenedor, aqu podremos meter todo lo que queremos codificar.

15. una vez metida la informacin volveremos al programa, seleccionamos la unidad del
contenedor y le daremos desmontar.

16. ya est desmontado y otra vez cifrado.

17. comprobamos, nos vamos nuevamente a mi pc y veremos cmo nuestro disco duro
contenedor ya no aparece.

Pasos para utilizar DidiSinger


1. abrimos el programa, nos saldra una ventana y nos vamos al icono de una carpeta amarilla le
damos click y se nos desplega otra ventana donde escojeremos el docuemto con el cual vamos
hacer el procedimiento y le damos abrir.

2. A continuacin vemos que se abre el documento q elegimos

3. lo siguente que tenemos que hacer es hacer click en la barra de herramientas del programa en
la pestaa Sign Document

4. ahora con el cursor seleccionamos un espacio en blanco del documento con el fin de que es ese
espacio se genere la firma q vamos a generar.

5. soltamos el cursor y a continaucion nos sale una ventana con varias firmas que ya estn creadas
y que podemos escoger, pero en este caso vamos a crear una nueva. A continuacion sealaremos
en la captura las firmas ya creadas que solo seria seleccionarlas y automticamente se genera en
el documento.

6. vamos a crear la nueva firma, para esto damos click en generate my own certificate y nos
aparecer una ventana donde ingresaremos los datos que nos pide para la nueva firma.
Nota: los campos con asteriscos son obligatorios
luego de ingresar los datos le damos generate

7. despus de haber llenado los datos para la firma tenemos que guardarla en save in file le
damos click a file y le damos el nombre para guardarla

8. observamos que evidentemente quedo guardada la firma. Y luego ingresamos una contrasea
que es no las pide, es obligatoria y le damos en generate.

9. ahora miramos que ya la firma fue creada.

10. el siguiente paso es seleccionar la firma que creamos, que es la que se va a generar en el
documento, damos click en sign and save.

11. ahora nos vamos al documento y verificamos que la firma se halla generado.

CONCLUSIN
OPENSSL es una herramienta para encriptacin de datos que normalmente se utiliza para crear
certificados digitales que sirve para que el navegador identifique si la pgina donde se est
accesando es autntica, estos certificados se utilizan principalmente en pginas que necesitan
seguridad extra como lo son Gmail, Outlook, twitter y de banca electrnica entre otras.
Cabe destacar que esta herramienta proporciona tambin claves privadas y pblicas para cifrar
archivos comunes, con diferentes niveles de encriptacin.
OPENSSL al ser una herramienta de encriptacin podra utilizarse en la ltima capa de nuestro
sistema de seguridad web, pero no por eso debemos subestimarlo sobre lo til que puede ser al
proteger informacin muy valiosa.
REFERENCIAS:
http://es.wikipedia.org/wiki/OpenSSL [1].
http://www.google.com.co/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved
=0CC0QFjAA&url=http%3A%2F%2Fprofesores.elo.utfsm.cl%2F~agv%2Felo330%2F2s03%2Fproject
s%2FOpenSSL%2Farchivos%2FOpenSSL2.ppt&ei=7mp2U76ELYSiqAbmyoDIBA&usg=AFQjCNGoGej8
k7--WLcq2NICbGDQJahbVg&bvm=bv.66917471,d.b2k [2].
http://www.emezeta.com/articulos/como-firmar-pdf-con-certificado-digital [3].
http://code.kliu.org/hashcheck/ [4]

You might also like