13
Outline Librer´ ıa OpenSSL Autoridad Certificadora Generaci´ on de claves Firma digital Cifrado 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

Cap 11 PKI con OpenSSL

Embed Size (px)

Citation preview

Page 1: Cap 11 PKI con OpenSSL

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

Page 2: Cap 11 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

Page 3: Cap 11 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

Page 4: Cap 11 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

Page 5: Cap 11 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

Page 6: Cap 11 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

Page 7: Cap 11 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

Page 8: Cap 11 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

Page 9: Cap 11 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

Page 10: Cap 11 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

Page 11: Cap 11 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

Page 12: Cap 11 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

Page 13: Cap 11 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