Mecanismos de Protección
Para proteger las redes de comunicaciones, la criptograma es la herramienta que nos permite evitar q

Mecanismos de Protección
Para proteger las redes de comunicaciones, la criptograma es la herramienta que nos permite evitar que alguien intercepte, manipule o falsifique los datos transmitidos. Dedicaremos la primera parte de este módulo a introducir los conceptos de criptograma necesarios para entender cómo se aplica a la protección de las comunicaciones.

Topic principal

1. Conceptos básicos de criptograma

A lo largo de la historia se han diseñado distintas técnicas para ocultar el significado de la información que no interesa que sea conocida por extraños. Algunas de ellas ya se usaban en tiempos de la antigua Grecia o del Imperio romano: por ejemplo, se atribuye a Julio César la invención de un cifrado para enviar mensajes cifrados que no pudieran ser interpretados por el enemigo.

La criptografía estudia, desde un punto de vista matemático, los métodos de protección de la información. Por otro lado, el criptoanálisis estudia las posibles técnicas utilizadas para contrarrestar los métodos criptográficos, y es de gran utilidad para ayudar a que estos sean más robustos y difíciles de atacar. El conjunto formado por estas dos disciplinas, criptografía y criptoanálisis, se conoce como criptología.

Cuando la protección que queremos obtener consiste en garantizar el secreto de la información, es decir, la confidencialidad, utilizamos el método criptográfico conocido como cifrado.

Si M es el mensaje que queremos proteger o texto en claro, cifrarlo consiste en aplicarle un algoritmo de cifrado f, que lo transforma en otro mensaje que llamaremos texto cifrado, C. Esto lo podemos expresar como:
C = f (M)
Para que este cifrado sea útil, debe existir otra transformación o algoritmo de descifrado f −1, que permita recuperar el mensaje original a partir del texto
cifrado:
M = f −1(C)
Uso de cifrado El hecho de usar técnicas de cifrado parte de la idea que es muy costoso intentar evitar que un intruso intercepte la información. Enviar mensajes cifrados es más fácil, ya que no podrá interpretar la información que contienen.

El cifrado de César
Por ejemplo, el “cifrado de César” que hemos mencionado anteriormente consistía en sustituir cada letra del mensaje por la que hay tres posiciones más adelante en el alfabeto (volviendo a empezar por la letra A si llegamos a la Z). De este modo, si aplicamos este algoritmo de cifrado al texto en claro “ALEA JACTA EST” (y utilizando el alfabeto latino actual, porque en tiempos del César no existían letras como la “W”), obtenemos el texto cifrado “DOHD MDFWD HVW”. El descifrado en este caso es muy simple: sólo es necesario sustituir cada letra por la que hay tres posiciones antes en el alfabeto.

En este caso podemos hablar de una función de cifrado e con una clave de cifrado k, y una función de descifrado d con una clave de descifrado x:
C = e(k, M)
M = d(x,C) = d(x, e(k, M))

Ataques al cifrado de César
Continuando con el ejemplo del algoritmo del César generalizado (con clave), un ataque criptoanalítico podría consistir en el análisis de las propiedades estadísticas del texto cifrado. Las letras cifradas que más se repiten probablemente corresponderán a vocales o a las consonantes más frecuentes, las combinaciones más repetidas de dos (o tres) letras seguidas probablemente corresponden a los dígrafos (o trígrafos) que normalmente aparecen más veces en un texto.

• Criptograía de clave simétrica
Los sistemas criptográficos de clave simétrica se caracterizan porque la clave de descifrado x es idéntica a la clave de cifradok, o bien se puede deducir directamente a partir de ésta.
Para simplificar, supondremos que en este tipo de criptosistemas la clave de descifrado es igual a la de cifrado: x = k (si no, siempre podemos considerar que en el algoritmo de descifrado el primer paso es calcular la clave x a partir de k). Es por esto que estas técnicas criptográficas se denominan de clave simétrica, o a veces también de clave compartida. Así, tenemos:
C = e(k, M)
M = d(k,C) = d(k, e(k, M))

La seguridad del sistema recae pues en mantener en secreto la clave k. Cuando los participantes en una comunicación quieren intercambiarse mensajes confidenciales, tienen que escoger un clave secreta y usarla para cifrar los mensajes. Entonces, pueden enviar estos mensajes por cualquier canal de comunicación, con la confianza que, aun que el canal sea inseguro y susceptible de ser inspeccionado por terceros, ningún espía será capaz de interpretarlos.

Subtema

Subtema

Algoritmos de cifrado en flujo
El funcionamiento de una cifrado en flujo consiste en la combinación de un texto en claro M con un texto de cifrado S que se obtiene a partir de la clave simétricak. Para descifrar, sólo se requiere realizar la operación inversa con el texto cifrado y el mismo texto de cifrado S.

El problema es en este caso que el receptor tiene que disponer de la misma secuencia aleatoria para poder realizar el descifrado, y si le tiene que llegar a través de un canal seguro, la pregunta es inmediata: ¿por qué no enviar el mensaje confidencial M, que es igual de largo que la clave k, directamente por el mismo canal seguro? Es evidente, pues, que este algoritmo es muy seguro, pero no es demasiado práctico.

• Lo que en la práctica se utiliza son funciones que generan secuencias pseudoaleatorias a partir de una semilla (un número que actúa como parámetro del generador), y lo que se intercambia como clave secreta k es solamente esta semilla.
Las secuencias pseudoaleatorias reciben este nombre porque intentan parecer aleatorias, pero, obviamente, son generadas algorítmicamente.

Uso del cifrado de Vernam En ocasiones las comunicaciones entre portaaviones y los aviones utilizan el cifrado de Vernam. En este caso, se aprovecha que en un momento dado (antes del despegue) tanto el avión como el portaaviones están en el mismo sitio, con lo cual, intercambiarse, por ejemplo, un disco duro de 20 GB con una secuencia aleatoria no es ningún problema.

Funciones pseudoaleatorias Son ejemplos de funciones pseudoaleatorias las basadas en registros de desplazamiento realimentados (feedback shift registers o FSR). El valor inicial del registro es la semilla.

Cifrado síncrono y asíncrono
Si el texto de cifrado S depende exclusivamente de la clave k, se dice que el cifrado es síncrono. Este cifrado tiene el problema de que, si por algún error de transmisión, se pierden bits (o llegan repetidos), el receptor se dé sincronizará y sumará bits del texto S con bits del texto cifrado C que no corresponden, con lo cual el texto descifrado a partir de entonces será incorrecto.

Ejemplos de algoritmos de cifrado en flujo
Los algoritmos de cifrado en flujo actualmente en uso tienen la propiedad que son poco costosos de implementar. Las implementaciones en hardware son relativamente simples y, por lo tanto, eficientes en su rendimiento (en términos de bits cifrados por segundo). Pero también las implementaciones en software pueden ser muy eficientes.

Algoritmos de cifrado en bloque
En una cifra de bloque, el algoritmo de cifrado o descifrado se aplica separadamente a bloques de entrada de longitud fija b, y para cada uno de ellos el resultado es un bloque de la misma longitud.

• La sustitución consiste en traducir cada grupo de bits de la entrada a otro, de acuerdo con una permutación determinada.
El cifrado del César sería un ejemplo simple de sustitución, en el que cada grupo de bits correspondería a una letra. De hecho, se trata de un caso particular de sustitución alfabética. En el caso más general, las letras del texto cifrado no tienen por qué estar a una distancia constante de las letras del texto en claro (la k del algoritmo, tal como la hemos definido). La clave se puede expresar como la secuencia correlativa de letras que corresponden a la A, la B, la C, etc. Por ejemplo:
A B C D E F G H Y J K L M N O P Q R S T U VWX Y Z
Clave: QW E R T Y U Y O P A S D F G H J K L Z X C V B N M
Texto en claro: A L E A J A C T A E S T
Texto cifrado: Q S T Q P Q E Z Q T L Z

Funciones hash seguras
Aparte de cifrar datos, existen algoritmos basados en técnicas criptográficas que se usan para garantizar la autenticidad de los mensajes. Un tipo de algoritmos de estas características son las llamadas funciones hash seguras, también conocidas como funciones de resumen de mensaje (message digest, en inglés).

Ejemplos de algoritmos de clave pública
Intercambio de claves Diffie-Hellman. Es un mecanismo que permite que dos partes se pongan de acuerdo de forma segura sobre una clave secreta. El algoritmo se basa en la dificultad de calcular logaritmos discretos.

Uso de la criptografía de clave pública
Hemos visto antes que las principales aplicaciones de la criptografía de clave pública son el intercambio de claves para proporcionar confidencialidad y la firma digital para proporcionar autenticidad y no repudio.

• El problema de la confidencialidad entre dos partes que sólo disponen de pública. Cuando A quiere mandar un mensaje secreto M a B, no hace falta cifrar todo el mensaje con un algoritmo de clave pública (esto podría resultar muy lento), sino que se escoge una clave simétrica ks, en ocasiones llamada clave de sesión o clave de transporte, y se cifra el mensaje con un algoritmo simétrico usando esta clave. Lo único que hace falta cifrar con la clave pública deB (kpubB ) es la clave de sesión. En recepción, B utiliza su clave privada (kprB ) para recuperar la clave de sesión ks, y entonces ya puede descifrar el mensaje cifrado

• Una firma digital es básicamente un mensaje cifrado con la clave privada del firmante. Pero, por cuestiones de eficiencia, lo que se cifra no es directamente el mensaje a firmar, sino solamente su resumen calculado con una función hash segura
Cuando A quiera mandar un mensaje firmado, tendrá que obtener su re-sumen y cifrarlo con la clave privada kprA . Para verificar la firma, el receptor tiene que descifrarla con la clave pública kpub A y comparar el resultado con el resumen del mensaje: si son iguales, quiere decir que el mensaje lo ha generado A y nadie lo ha modificado. Dado que se supone que la función de resumen es resistente a colisiones, un atacante no podrá modificar el mensaje sin que la firma deje de ser válida.

Infraestructura de clave pública (PKI)
Como hemos visto hasta ahora, la criptografía de clave pública permite resolver el problema del intercambio de claves, utilizando las claves públicas de los participantes. Pero se platea otro problema: si alguien afirma ser A y su clave pública es kpub, ¿cómo podemos saber que realmente kpub es la clave pública de A? Porque es perfectamente posible que un atacante Z genere su par de claves (kpr0, kpub0) y afirme “yo soy A, y mi clave pública es kpub0”.

Certificados de clave pública
Un certificado de clave pública o certificado digital consta de tres partes básicas:
• Una identificación de usuario como, por ejemplo, su nombre.
• El valor de la clave pública de este usuario.

Números de serie Los números de serie de los certificados generados por una CA no tienen por qué ser consecutivos: es suficiente que cada uno sea distinto a todos los anteriores.
Tipo de extensiones Hay un cierto número de extensiones estándares, pero se pueden definir más de nuevas, según las necesidades de las aplicaciones, mientras cada una se identifique con un valor inambiguo del subcampo extnId

Cadenas de certificados y jerarquías de certificación
¿Un certificado nos soluciona el problema de la autenticidad de la clave pública si está firmado por una CA en la cual confiamos, Pero que pasa si nos comunicamos con un usuario que tiene un certificado emitido por una CA que no conocemos?

Listas de revocación de certificados (CRL)
La Recomendación X.509, además de definir el formato de los certificados, también define otra estructura llamada lista de revocación de certificados o CRL. Una lista de este tipo sirve para publicar los certificados que han dejado de ser válidos antes de su fecha de caducidad. Los motivos pueden ser diversos: se ha emitido otro certificado que sustituye al revocado, ha cambiado el DN del titular (por ejemplo, ha dejado de trabajar en la empresa en la que estaba), le han robado su clave privada, etc.

Sistemas de autenticación
Uno de los servicios de seguridad que se requiere en muchas aplicaciones es el de la autenticación. Este servicio permite garantizar que nadie ha falsificado la comunicación.
Podemos distinguir dos tipos de autenticación:
• La autenticación de mensaje o autenticación de origen de datos permite confirmar que el originador A de un mensaje es auténtico, es decir, que el mensaje no ha sido generado por un tercero Z que quiere hacer creer que lo ha generado A.
Como efecto adicional, la autenticación de mensaje proporciona implícitamente el servicio de integridad de datos, que permite confirmar que nadie ha modificado un mensaje enviado por A.
• La autenticación de entidad permite confirmar la identidad de un participante A en una comunicación, es decir, que no se trata de un tercero Z que dice ser A.
A continuación, veremos cómo se puede conseguir cada uno de estos dos tipos de autenticación.

2.1. Autenticación de mensaje

Existen dos grupos de técnicas para proporcionar autenticación de mensaje:
• Los códigos de autenticación de mensaje o MAC, basados en claves simétricas.
MAC Las firmas digitales, que se basan en la criptografía de clave pública. MAC es la sigla de Message Authentication Code.
• Las firmas digitales, que se basan en la criptografía de clave pública.

Códigos de autenticación de mensaje (MAC)
Un código de autenticación de mensaje o MAC se obtiene con un algoritmo a que tiene dos entradas: un mensaje M de longitud arbitraria, y una clave secreta k compartida por el originador y el destinatario del mensaje. Como resultado da un código CMAC = a (k, M) de longitud fija. El algoritmo MAC debe garantizar que sea computacionalmente inviable encontrar un mensaje M0 6=M que dé el mismo código que M, y también obtener el código de un mensaje cualquiera sin conocer la clave.

Firmas digitales
Los códigos MAC, dado que se basan en una clave secreta, sólo tienen significado para quienes conozcan dicha clave. Si A envía mensajes a B autenticados con una clave compartida, sólo B podrá verificar la autenticidad de estos mensajes.
Por otro lado, en caso de un conflicto en que A denegase la autoría de un
mensaje autenticado, B no podría demostrar delante de un tercero imparcial (por ejemplo, un árbitro o un juez) que el mensaje lo generó A. Revelar la clave secreta no sería prueba suficiente ya que, por el hecho de ser conocida por las dos partes, siempre habría la posibilidad que el mensaje en disputa y el su código de autenticación los hubiera generado B.

Autenticación de entidad
La autenticación de entidad se utiliza cuando en una comunicación una de las partes quiere asegurarse de la identidad de la otra. Normalmente, esta autenticación es un requisito para permitir el acceso a un recurso restringido, como, por ejemplo, una cuenta de usuario en un ordenador, dinero en efectivo en un cajero automático, acceso físico a una habitación, etc.
En general, las técnicas utilizadas para la identificación de un usuario A pueden estar basadas en:
• Algo que A sabe cómo, por ejemplo, una contraseña o una clave privada.
• Algo que A tiene como, por ejemplo, una tarjeta con banda magnética o con chip.
• Algo que A es o, dicho de otro modo, alguna propiedad inherente a A como, por ejemplo, sus características biométricas.