Sunteți pe pagina 1din 3

4/11/2016 Firmando y validando con OpenSSL | Opentesting

Firmando y validando conOpenSSL

A veces es necesario firmar digitalmente cualquier tipo de documento para asegurar que se ha mantenido
la integridad, autora y el no repudio del mismo, con ello nos aseguramos estas trescaractersticas en
cualquier tipo de documento. Esto es especialmente til para comprobar si algn fichero del sistema (o
documentacin importante) ha sido alterado sin nuestro consentimiento, lo que podra suponer una prueba
(o al menos sospecha) de que alguien ha estado tocando donde no debe.

La validacin mediante firma digital es especialmente importante en la informtica forense, ya que tener
archivos de logs firmados correctamente por una entidad certificadora vlida nos permite aportar pruebas
fehacientes de que los archivos, y por ende, las pruebas que estos contienen, no han sido modificados ni
alterados desde que esta se realiz. Aportar un archivo de log que no se encuentre firmado,
difcilmentepueda pasar como prueba inculpatoria, ya que nadie garantiza que se haya accedido y
modificado el archivo posteriormente acorde a sus intereses.

Para realizar esta tarea, vamos a usar la herramienta OpenSSL.

OpenSSL es un proyecto de software desarrollado por los miembros de la comunidad Open Source para
libre descarga y consisteen un robusto paquete de herramientas de administracin y libreras relacionadas
con la criptografa, que suministran funciones criptogrficas a otros paquetes como OpenSSH y
navegadores web (para acceso seguro a sitios HTTPS),asmismo ayudan al sistema a implementar
Secure Socket Layer (SSL) y T ransport Layer Security (TLS).

El primer paso es crear un certificado, llegados aqu, tenemos que plantearnos qu uso queremos darle a
nuestra firma, si queremos un certificado de andar por casa, para comprobar la integridad de los archivos,
hacer pruebas, etc podemos crearnos nuestra propia CA, generar nuestra clave privada, nuestro
certificado y a partir deahponernos a trabajar .

Todo esto tiene un problema: No tendr ninguna validez legal m sallde nuestros sistemas, ya que nadie
confia en nuestra entidad certificadora, es por ello que si tenemos que encargarnos de implementar un
sistema ms o menos serio en los que nuestros archivos necesiten ser confiables (para poder ser
usados en caso de necesidad) , necesitaremos tener un certificado expedido por una entidad certificadora
(Verisign, CyberT rust,) que de muestre que hay una relacin de confianza entre ella y nosotros. Esto
habitualmente cuesta bastante dinero, por lo que podemos intentar que una entidad subsidiaria nos
firmen una peticin de certificado: Es decir , generamos unapetic inde firma certificado, lo enviamos a una
entidad certificadora (o con un certificado vlido y permiso para poder firmar peticiones de certificados),
pagamos (si procede, aunque si se trata de una empresa grande o de algn organismo pblico tendrn un
procedimiento para realizar esto de manera gratuita) y una vez comprobado que somos quien decimos ser
y para qu necesitamos el certificado, se nosdevolverun certificado que podremos usar para firmar con
validez legal.

Una vez explicado el embrollo:

Realizamos la peticin de la firma del certificado:

openssl genrsa -des3 -passout pass: <password> -out rsaprv.pem1024

openssl req -new -key rsaprv.pem-outhostcsr.pem

El primer comando se encarga de generar nuestra clave privada con las opciones que le indiquemos. Es
posible que la entidad que nos firme la peticin o el programa que usemos necesiten unos parmetros
determinados. En este caso usaremos DES3 y una longitud de 1024 bits.

El segundo comando genera la peticin de firma usando para ello nuestra clave privada. Una vez
introducido, nos pedir lo siguiente:

https://opentesting.wordpress.com/2011/04/15/firmando-y-validando-con-openssl/ 1/3
4/11/2016 Firmando y validando con OpenSSL | Opentesting

Enter pass phrase for rsaprv.pem:

You are about to be asked to enter information that will be incorp oratedinto your
certificaterequest.What you are about to enter is what is called a Distinguished Name or a DN.Thereare
quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter .,
the field will be left blank.

Country Name (2 letter code) [AU]:

State or Province Name (full name) [Some-State]:

Locality Name (eg, city) []:

Organization Name (eg, company) [Internet Widgits Pty Ltd]:

Organizational Unit Name (eg, section) []:

Common Name (eg, YOUR name) []:

Email Address []:


Please enter the following extra attributesto be sent with your certificate request

A challenge password []:

An optional company name []:

Es importante introducir los campos tal y como nos indique nuestra entidad certificadora.

Bien, una vez realizado esto, suponemos que ya tenemos el certificado firmado por la entidad
correspondiente y que se encuentra en un archivo rsapub.pem , solo quedara hacer la prueba:

Imaginemos el siguiente archivo:

/tmp/prueba_firmas/201 1-03-28T15-00-00Z.log

y que los certificados se encuentran en:

/tmp/prueba_firmas/ rsaprv.pem

Nuestra clave privada generada anteriormente

/tmp/prueba_firmas/ rsapub.pem

El archivo firmado por la entidad

Que es el que queremos firmar digitalmente con nuestro certificado y validar posteriormente con el
obtenido desde la entidad certificadora:

Firmamos el archivo con nuestra clave:

openssl dgst -sha1 -sign /tmp/prueba_firmas/ rsaprv.pem-out /tmp/prueba_firmas/firmado


/tmp/prueba_firmas/201 1-03-28T15-00-00Z.log

Esto generar un archivo llamado firmado con la marca de la firma.

Por otra parte, vamos a extraer la clave pblica del certificado firmado:

openssl x509 -pubkey -noout -in /tmp/prueba_firmas/ rsapub.pem > /tmp/prueba_firmas/ pubkey.pem

https://opentesting.wordpress.com/2011/04/15/firmando-y-validando-con-openssl/ 2/3
4/11/2016 Firmando y validando con OpenSSL | Opentesting

En el archivo pubkey.pemtenemos el certificado pblico del archivo firmado por la entidad con nuestra
clave privada. Por lo que solo podremos validar con este certificados con nuestro certificado (y con nuestra
contrasea).

Para finalizar, vamos a comprobar contra este certificado si el ar chivo es vlido. Es decir , si cumple con los
principios integridad (no se ha alterado el archivo), identidad (si efectivamente, yo he sido quien ha
realizado la operacin) y no repudio (nadie puede decir que no he sido yo quien lo ha realizado).

openssl dgst -sha1 -verify /tmp/prueba_firmas/ pubkey.pem-signature /tmp/prueba_firmas/firmado


/tmp/prueba_firmas/201 1-03-28T15-00-00Z.log

Como vemos, secompruebael archivo de log contra su archivo firmado contra el certificado pblico de la
entidad.

Si todo va bien, deber aparecer un: V erified OK que indica que todo ha funcionado correctamente.

Mas informacin:

http://es.wikipedia.org/wiki/OpenSSL

https://opentesting.wordpress.com/2011/04/15/firmando-y-validando-con-openssl/ 3/3

S-ar putea să vă placă și