Firma electronica


La firma electrónica


La firma electrónica surge de la necesidad de las empresas y administraciones de reducir los costes y aumentar la seguridad de sus procesos internos.

 

Uno de los métodos de firma electrónica es la firma electrónica escrita que consiste en la captación de la firma física mediante un dispositivo de firmas, llamado pad de firmas.

 

Para realizar la firma electrónica escrita son necesarios el hardware y software apropiados.

 

La teoría

La firma electrónica de un documento es el resultado de aplicar cierto algoritmo matemático, denominado función hash, al contenido. Esta función hash asocia un valor dentro de un conjunto finito (generalmente los números naturales) a su entrada. Cuando la entrada es un documento, el resultado de la función es un número que identifica casi unívocamente al texto en concreto. Si se adjunta este número al texto, el destinatario puede aplicar de nuevo la función y comprobar el resultado con el que ha recibido. No obstante esto presenta algunas dificultades.

 

Las posibilidades de red en la firma electrónica

Para que sea de utilidad, la función hash debe satisfacer dos importantes requisitos. Primero, debe ser difícil encontrar dos documentos cuyo valor para la función "hash" sea igual. Segundo, dado uno de estos valores, debería ser difícil recuperar el documento que lo ha producido.

Algunos sistemas de codificación de clave pública se pueden usar para firmar documentos. El firmante cifra o codifica el documento con su clave privada y cualquiera que quiera comprobar la firma y ver el documento, no tiene más que usar la clave pública del firmante para descifrarla.

Existen funciones "hash" especialmente designadas para satisfacer estas dos importantes propiedades. SHA y MD5 son ejemplos de este tipo de algoritmos. Para usarlos un documento se firma con una función "hash", cuyo resultado es la firma. Otra persona puede comprobar la firma mediante la misma función a su copia del documento y comparando el resultado con el del documento original. Si concuerdan, es prácticamente seguro que los documentos sean idénticos.

El problema radica en usar una función "hash" para firmas digitales que no permita que un "atacante" interfiera en la comprobación de la firma. Si el documento y la firma se enviaran sin cifrar este individuo podría modificar el documento y generar una firma correspondiente sin que lo supiera el destinatario. En caso de que sólo se cifrara el documento, un atacante podría manipular la firma y hacer que la comprobación de ésta fallara. Una tercera opción es usar un sistema de codificación híbrido para cifrar tanto la firma como el documento. El firmante usará su clave privada, y cualquiera puede usar su clave pública para comprobar la firma y el documento. Esto quizás suene bien, pero en realidad no tiene sentido. Si este algoritmo hiciera el documento seguro también lo aseguraría de manipulaciones, y no habría necesidad de firmarlo. El problema más grave es que esto no protege de manipulaciones ni a la firma, ni al documento. Con este método, tan sólo la clave de sesión del sistema de cifrado simétrico se cifra usando la clave privada del firmante. Cualquiera puede usar la clave pública y recuperar la clave de la sesión. Por tanto, resulta obvio usarla para cifrar documentos substitutos y firmas para enviarlas a terceros en nombre del remitente.

 

La solución

Un algoritmo efectivo tendrá que hacer uso de un sistema de clave pública para cifrar solo la firma. En particular, el valor "hash" se cifrará mediante el uso de la clave privada del firmante, de modo que cualquiera pueda comprobar la firma usando la clave pública correspondiente. El documento firmado se podrá enviar usando cualquier otro algoritmo de cifrado, o incluso ninguno si es un documento público. En caso de que el documento se modifique, la comprobación de la firma fallará, pero esto es precisamente lo que la verificación se supone que debe descubrir.

El Digital Signature Algorithm es un algoritmo de firma de clave pública que funciona como hemos descrito. DSA es el algoritmo principal para la firma que se usa en GnuPG.