Upload
juan-manuel-garcia
View
75
Download
0
Embed Size (px)
Citation preview
OutlineLibrerıa OpenSSL
Autoridad CertificadoraGeneracion de claves
Firma digitalCifrado hıbrido
PKI con OpenSSL
Juan Manuel Garcıa Garcıa
18 de noviembre de 2010
Juan Manuel Garcıa Garcıa PKI con OpenSSL
OutlineLibrerıa OpenSSL
Autoridad CertificadoraGeneracion de claves
Firma digitalCifrado hıbrido
Librerıa OpenSSL
Autoridad CertificadoraCreacion de una ACGeneracion de certificadosExtraccion de la clave publica
Generacion de clavesGeneracion de clavesGeneracion de peticion
Firma digitalGeneracionVerificacion
Cifrado hıbridoGeneracion de una clave de sesionCifrado de clave y datosDescifrado
Juan Manuel Garcıa Garcıa PKI con OpenSSL
OutlineLibrerıa OpenSSL
Autoridad CertificadoraGeneracion de claves
Firma digitalCifrado hıbrido
Librerıa OpenSSL
I Es una implementacion de codigo abierto de los protocolosSSL y TLS.
I Implementa una librerıa de funciones criptograficas basicas.
I Proporciona varias herramientas de criptografıa.
I Existen wrappers para varios lenguajes de programacion.
Juan Manuel Garcıa Garcıa PKI con OpenSSL
OutlineLibrerıa OpenSSL
Autoridad CertificadoraGeneracion de claves
Firma digitalCifrado hıbrido
Creacion de una ACGeneracion de certificadosExtraccion de la clave publica
Creacion de una AC
1. Se copian los scripts:
$ cp /usr/lib/ssl/misc/CA.pl .$ cp /usr/lib/ssl/openssl.cnf .
2. Se crea la nueva AC:
$ ./CA.pl -newca
3. Podemos verificar que existe la clave privada:
$ cat demoCA/private/cakey.pem
Juan Manuel Garcıa Garcıa PKI con OpenSSL
OutlineLibrerıa OpenSSL
Autoridad CertificadoraGeneracion de claves
Firma digitalCifrado hıbrido
Creacion de una ACGeneracion de certificadosExtraccion de la clave publica
Generacion de certificados
1. Se genera una peticion:
$ openssl req -new -keyout newreq.pem \\-out newreq.pem -days 365
2. La AC firma la peticion:
$ openssl ca -out newcert.pem -infiles newreq.pem
3. Podemos verificar el certificado recien creado:
$ openssl verify -CAfile demoCA/cacert.pem \\newcert.pem
Juan Manuel Garcıa Garcıa PKI con OpenSSL
OutlineLibrerıa OpenSSL
Autoridad CertificadoraGeneracion de claves
Firma digitalCifrado hıbrido
Creacion de una ACGeneracion de certificadosExtraccion de la clave publica
Extraccion de la clave publica
1. Se extrae la clave publica de un certificado digital mediante:
$ openssl x509 -in newcert.pem -pubkey -noout
Juan Manuel Garcıa Garcıa PKI con OpenSSL
OutlineLibrerıa OpenSSL
Autoridad CertificadoraGeneracion de claves
Firma digitalCifrado hıbrido
Generacion de clavesGeneracion de peticion
Generacion de claves
1. Se genera una clave privada:
$ openssl genrsa -out clave.pem 2048
2. Se puede ver el contenido de la clave:
$ openssl rsa -in clave.pem -text -noout
3. Y se puede extraer la clave publica:
$ openssl rsa -in clave.pem -pubout \\-out clavepub.pem
Juan Manuel Garcıa Garcıa PKI con OpenSSL
OutlineLibrerıa OpenSSL
Autoridad CertificadoraGeneracion de claves
Firma digitalCifrado hıbrido
Generacion de clavesGeneracion de peticion
Generacion de peticion
1. Se genera una peticion con la llave creada:
$ openssl req -new -key clave.pem \\-out newreq.pem -days 365
2. Podemos verificar la peticion:
$ openssl req -in newreq.pem -verify
3. La autoridad debe firmar la peticion como vimos previamente.
Juan Manuel Garcıa Garcıa PKI con OpenSSL
OutlineLibrerıa OpenSSL
Autoridad CertificadoraGeneracion de claves
Firma digitalCifrado hıbrido
GeneracionVerificacion
Generacion de firma digital
1. Se genera el hash de los datos:
$ openssl dgst -md5 -binary -out data.md5 data
2. Se firma el hash con la clave privada:
$ openssl rsautl -sign -in data.md5 \\-inkey clave.pem -out data.sig
3. En el archivo data.sig esta la firma digital.
Juan Manuel Garcıa Garcıa PKI con OpenSSL
OutlineLibrerıa OpenSSL
Autoridad CertificadoraGeneracion de claves
Firma digitalCifrado hıbrido
GeneracionVerificacion
Verificacion de la firma
1. Se calcula el hash de los datos:
$ openssl dgst -md5 -hex data
2. Lo anterior debe ser igual a la salida de lo siguiente:
$ openssl rsautl -in data.sig -verify -hexdump \\-inkey clavepub.pem -pubin
Juan Manuel Garcıa Garcıa PKI con OpenSSL
OutlineLibrerıa OpenSSL
Autoridad CertificadoraGeneracion de claves
Firma digitalCifrado hıbrido
Generacion de una clave de sesionCifrado de clave y datosDescifrado
Generacion de una clave de sesion
1. Se genera una clave aleatoria:
$ openssl rand -out clave_AB 32
2. Se revisa la clave generada:
$ hexdump clave_AB
Juan Manuel Garcıa Garcıa PKI con OpenSSL
OutlineLibrerıa OpenSSL
Autoridad CertificadoraGeneracion de claves
Firma digitalCifrado hıbrido
Generacion de una clave de sesionCifrado de clave y datosDescifrado
Cifrado de clave y datos
1. Se cifran los datos con la clave simetrica:
$ openssl enc -aes-256-cbc -in data -out data.enc \\-K .... -iv 00
2. Se cifra la clave de sesion con la clave publica:
$ openssl rsautl -encrypt -inkey clavepub.pem \\-in clave_AB -out clave_AB.enc -pubin
3. Se envian entonces clave AB.enc y data.enc al destinatario.
Juan Manuel Garcıa Garcıa PKI con OpenSSL
OutlineLibrerıa OpenSSL
Autoridad CertificadoraGeneracion de claves
Firma digitalCifrado hıbrido
Generacion de una clave de sesionCifrado de clave y datosDescifrado
Descifrado
1. Se extrae la clave de sesion:
$ openssl rsautl -decrypt -inkey clave.pem \\-in clave_AB.enc -hexdump
2. Se utiliza la clave de sesion para descifrar los datos:
$ openssl enc -aes-256-cbc -in data.enc -out data \\-d -K .... -iv 00
Juan Manuel Garcıa Garcıa PKI con OpenSSL