-
Introducción
Durante los últimos años, Internet se ha convertido en
el canal de comunicación por excelencia. Los usuarios utilizan este
medio cada vez con más asiduidad, soltura y descuido. Cierto es
que más de la mitad de la información que circula por internet
puede considerarse como "no profesional", pero de la misma manera que se
puede manipular un correo electrónico entre dos amigos sobre el
partido de fútbol del domingo, se pueden manipular unos datos bancarios
introducidos en la web de cualquier banco. Además, la privacidad
de los mensajes debe mantenerse tanto en las transacciones comerciales,
las operaciones profesionales como en los correos personales.
El anonimato que provoca la red puede dar lugar a que, cualquier usuario,
conociendo algún dato nuestro personal, pueda suplir nuestra identidad
y actuar en internet como si realmente fueramos nosotros mismos los que
estamos accediendo a la red.
Además de esto, cada vez más los usuarios de Internet
piden que se puedan realizar cuantos más servicios desde nuestra
propia casa a través del ordenador: pedir un certificado de residencia,
un duplicado de carnet de conducir, el crédito bancario del que
disponemos...
Todos estos servicios han propiciado la necesidad de dotar de seguridad
un medio inseguro como es Internet. En este artículo nos centraremos
en la seguridad del correo electrónico, pudiéndose aplicar
muchos de los conceptos utilizados aquí al tráfico de información
en general en la red.
-
La firma manuscrita.
La firma es definida como el signo personal distintivo que permite informar
acerca de la identidad del autor de un documento y manifestar su acuerdo
sobre el contenido del acto.
La firma manuscrita tiene las siguientes características:
· identificativa: Sirve para identificar quién
es el autor del documento.
· declarativa: Significa la aceptación del contenido
del documento por el autor de la firma.
· probatoria: Permite identificar si el autor de la firma
es efectivamente aquél que ha sido identificado como tal en el acto
de la propia firma.
La firma es identificadora, en tanto que asegura la relación
jurídica entre el acto firmado y la persona que lo ha firmado, y
autenticadora, puesto que el autor del acto expresa su consentimiento y
hace propio el mensaje.
-
La firma electrónica.
La firma electrónica tiene los mismos cometidos que la firma
manuscrita, pero además debe expresar la identidad y la autoría,
la autentificación, la integridad, la fecha, la hora y la recepción...
Características de la firma electrónica:
Debe permitir la identificación del signatario. Es lo que se
conoce con el concepto de "autoría electrónica" como la forma
de determinar que una persona es quien dice ser.
No puede ser generada más que por el emisor del documento, es
infalsificable e inimitable.
Las informaciones que se generen a partir de la signatura electrónica
deben ser suficientes para poder validarla, pero insuficientes para falsificarla.
La posible intervención del Notario Electrónico mejora
la seguridad del sistema.
La aposición de una signatura debe ser significativa y va unida
indisociablemente al documento a que se refiere.
No debe existir dilación de tiempo ni de lugar entre aceptación
por el signatario y la aposición de la signatura.
Con la firma electrónica logramos obtener la seguridad de la que
carece Internet en sí. Los documentos firmados electrónicamente
ya tienen un autor fácilmente identificable, con lo que podemos
asegurar la autoría de los mensajes.
Recordar que aún así, al igual que con la firma tradicional,
puede ocurrir que la firma electrónica haya sido robada por un tercero
y las consecuencias que esto conlleva...
-
Conceptos de criptografía
La criptografía se ha utilizado desde siempre para impedir a
terceros interceptar o manipular mensajes enviados de un individuo a otro.
Julio César, por ejemplo, utilizaba un método sencillo para
cifrar sus mensajes estratégicos: desplazaba cada caracter de su
mensaje un número predefinido de posiciones según el orden
natural de las letras en el abecedario.
Existen dos tipos de criptografía según la llave utilizada:
La llave es la herramienta que permite cifrar y descifrar un mensaje. Esta
llave puede ser la misma para ambas operaciones (llave simétrica)
o puede ser diferente (llave asimétrica).
En la criptografía de llave simétrica el proceso de cifrado
y descifrado se realiza con una misma llave. Esta clave debe ser secreta
para evitar el acceso no autorizado a datos confidenciales. Este método
es adecuado para dar confidencialidad a la información, y para proporcionar
autenticación, pero no es firma pues no soluciona la cuestión
del no rechazo de origen. También tiene el problema de la distribución
de la clave entre emisor y receptor.
La criptografía de llave asimétrica está basada
en el uso de un par de claves asociadas, donde una de ellas es pública
(y por tanto, conocida por todo el mundo) y la otra es privada (por lo
tanto, sólo conocida por el propietario). En este tipo de sistema
se cumplen las siguientes condiciones:
El mensaje cifrado por una de las llaves solamente se puede
descifrar con la otra, y al revés, pero nunca con ninguna otra llave,
ni siquiera con la misma llave con la que se codificó el mensaje.
El conocimiento de una de las llaves no implica de ningún modo
la posibilidad de poder averiguar la otra llave.
Las dos claves están matemáticamente relacionadas entre sí,
pero el diseño y la ejecución en forma segura de un criptosistema
asimétrico hace prácticamente imposible que las personas
que conocen la clave pública puedan derivar de ella la clave privada.
Se define un Criptosistema como la quíntupla:(M,C,K,E,D) donde:
-
M es el conjunto de todos los posibles mensajes sin cifrar, también
llamado texto plano
-
C es el conjunto de todos los mensajes ya cifrados o criptogramas
-
K es el conjunto de todas las claves que se pueden utilizar
-
E es el conjunto de todas las transformaciones de cifrado que se aplican
sobre M y dan C. Tiene que haber una transformación diferente para
cada una de las claves.
-
D es el conjunto de todas las transformaciones de descifrado.
Con todos estos elementos, un criptosistema de clave privada se identifica
porque se utiliza la misma clave para encriptar y desencriptar.
Los criptosistemas de llave pública o criptosistemas asimétricos
tienen dos llaves: k y p. Una es la llave privada y la otra la llave pública:
En los sitemas asimétricos tenemos las siguientes posibilidades
de encriptación:
En la firma digital sólo se cumple la primera de las ecuaciones.
Lo que nosotros firmamos con nuestra clave privada, cualquiera puede corroborar
nuestra firma con nuestra clave privada.
Por otra parte, existe por ejemplo el método RSA, donde cualquier
documento encriptado con nuestra llave pública puede, además,
desencriptarse con nuestra clave privada.
En los sistemas de clave pública, como hemos dicho ya, se cumple
la propiedad de que, a partir de la llave pública, P, no sea posible
obtener la llave privada K:
El método de encriptación es público, lo que es
privado es la clave (y sólo la privada)
-
Autenticación vs Encriptación
Mediante la criptografía de clave privada se consiguen los dos
principios básicos de seguridad en la comunicación a través
de Internet: la confidencialidad (mediante la encriptación) y la
autenticación (autoría del mensaje)
Por una parte, podemos garantizar la confidencialidad si encriptamos
el mensaje que vamos a enviar mediante la clave pública (que es
conocida por todos) del destinatario. Como lo codificado por esta llave
sólo se puede descifrar con la llave privada, y como es privada,
nos aseguramos que sólo el receptor al que va dirigido el mensaje
podrá interpretarlo.
Por otra parte, se consigue la autenticación del mensaje al firmar
el mensaje que se quiere enviar mediante nuestra clave privada. El receptor,
que conoce nuestra clave pública, podrá comprobar que, efectivamente,
la clave pública que él conoce como nuestra verifica nuestra
firma y, como no se puede verificar con ninguna otra clave, podrá
asegurar que nosotros hemos firmado el mensaje.
-
Proceso de la Firma digital
El proceso de firmado es una tarea muy compleja computacionalmente como
para aplicarlo a todo el mensaje, así que el emisor escoje un "resumen"
del mensaje (que será lo que realmente firmará). Este resumen
se obtiene mediante una función HASH, que lo que hace es convertir
ese texto en otro mucho menor, de forma que sea prácticamente único
el resumen correspondiente al mensaje en concreto (cada mensaje un resumen
que sólo corresponde a éste).
Una función Hash es una función inyectiva que, dado un
mensaje cualquiera, el resultado es una cadena de longitud fija.
El objetivo básico es evitar la falsificación. La función
Hash debe tener las siguientas propiedades:
1ª propiedad: el más mínimo cambio en la
entrada produce un resultado de la función hash completamente distinto.
2ª propiedad: dado un resultado de la función, es imposible
construir un mensaje de entrada de esta función hash.
En la práctica, las funciones hash son de 128 bits o más.
Dos ejemplos de funciones hash son:
m.d.5: de 128 bits, un algoritmo muy rápido
sha.1: de 256 bits, no tan rápido como el anterior.
Sabemos que un mensaje m puede ser autentificado codificando con la llave
privada Kb el resultado de aplicarle una función resumen,
EKb(r(m)). Esa información adicional (denominada firma
o signatura del mensaje m) sólo puede ser generada por el poseedor
de la clave privada Kp.
Cualquiera que tenga la llave pública correspondiente estará
en condiciones de decodificar y verificar la firma. Para que sea segura,
la función resumen r(x) debe cumplir además ciertas características:
-
r(m) es de longitud fija, independientemente de la longitud de m.
-
Dado m, es fácil calcular r(m).
-
Dado r(m), es computacionalmente intratable recuperar m.
-
Dado m, es computacionalmente intratable obtener un m' tal que r(m) = r(m').
El proceso de firmado de un mensaje es el siguiente:
El emisor resume el mensaje a enviar mediante la función Hash.
Una vez obtenido el resumen del mensaje completo, lo firma con su llave
privada.
Después, añade la firma al mensaje en sí
De forma gráfica lo podemos representar del siguiente modo:
Este método tiene dos ventajas:
1ª propiedad: es más rápido firmar la función
hash que el mensaje entero.
2ª propiedad: Quien lo recibe ve el mensaje sin ningún problema,
pero si además tiene criptografía, puede comprobar que el
mensaje es realmente mío.
Al llegar al destinatario, éste comprueba que no ha sufrido modificación
por el camino de la siguiente forma:
A partir de la llave pública del firmante puede extraer, de la
firma, la función hash original que el emisor obtuvo a partir del
mensaje original. Después, el receptor puede comprobar, a partir
del mensaje obtenido, que la función hash de éste sea igual
que la obtenida a partir de la llave pública.
El problema reside ahora en comprobar que lo firmado por la llave pública
de A es realmente de A. Esto se soluciona de dos formas diferentes:
Soluciones horizontales: donde los intermediarios aseguran que la llave
es válida firmándola ellos. La persona que reconoce la firma,
decide si fiarse de la llave firmada por el intermediario.
Soluciones verticales: donde se incluye un tercero de confianza (que
está en un plano superior, algo similar a un notario). Se acepta
todo lo que venga firmado por este notario (Autoridad de Certificación
- CA).
-
Certificados y Autoridades Certificadoras
Un certificado es esencialmente una clave pública y un identificador,
firmados digitalmente por una autoridad de certificación, y su utilidad
es demostrar que una clave pública pertenece a un usuario concreto.
El formato de certificados X.509 (Recomendación X.509 de CCITT:"The
Directory - Autentication Framework". 1988) es el más común
y extendido en la actualidad. El estándar X.509 sólo define
la sintaxis de los certificados, por lo que no está atado a ningún
un algoritmo en particular, y contempla los siguientes campos:.
-
Versión.
-
Número de serie.
-
Identificador del algoritmo empleado para la firma digital.
-
Nombre del certificador.
-
Periodo de validez.
-
Nombre del sujeto.
|
-
Clave pública del sujeto.
-
Identificador único de certificador.
-
Identificador único de sujeto.
-
Extensiones.
-
Firma digital de todo lo anterior generada por el certificador.
|
El mecanismo que debe emplearse para conseguir un certificado X.509
es enviar nuestra clave pública (nunca la privada) a la autoridad
de certificación(CA), después de habernos identificado positivamente
frente a ella. Existen autoridades de certificación que, frente
a una solicitud, generan un par llave pública-privada y lo envían
al usuario. Hemos de hacer notar que en este caso, si bien tendremos un
certificado válido, nuestro certificador podrá descifrar
todos nuestros mensajes.
El receptor, una vez que establezca la CA como fiable, reconocerá
la firma de cualquier documento nuestro, puesto que tenemos un certificado
firmado digitalmente por esta CA (recordemos que cualquier documento firmado,
en este caso nuestra firma, indica de una manera fiable su procedencia
o autor, por tanto, nuestra firma está reconocida por la CA).
¿Cómo se adquiere un certificado?
Para adquirir un certificado estándard P10 es bastante fácil,
pues las llaves las genera el propio usuario:
-
El usuario genera un par de llaves: la privada la guarda y manda la pública
a la CA en una petición de certificado.
-
La autoridad, a partir del nombre del usuario y la llave pública,
emite el certificado.
-
Una vez hecho el certificado, se envia de cualquier manera puesto que es
público.
Para adquirir un certificado P12 es un poco más delicado, pues las
llaves las genera la Autoridad de Certificación:
-
Se nos envia el certificado mediante un paquete (el P12), pero este paquete
es delicado, pues contiene tanto la llave pública como la privada.
Este paquete se protege mediante una passwd.
El paquete P12 está cifrado, a diferencia de los otros, que están
en binario en formato BER. Para poder visualizarse los certificados en
formato BER se utiliza otro formato denominado PEM (apto para ser visualizado
por pantalla). Consiste en codificar en Base64 el DER(subconjunto del BER)
-
Bibliografía