INDICE
Introducción
Concepto de la Entropía Confusión y difusión Congruencias
Las Bases Fundamentales Clave privada
Clave pública Digestión
Tipos de Canales
Autenticidad en Documentos Electrónicos Agentes Certificadores
Autoridad Registradora Central Confidencialidad
Medidas básicas de seguridad
Revisando el recibo y el concepto de digestión Revisando el firmado y la Autenticación
Números Aleatorios y Pseudoaleatorios Criptoanálisis
Técnicas y métodos de encriptación Cesar
Gronsfeld RSA DES
Chaffing & Winnowing Skipjack
Bífido
Cifrado Exponencial Blowfish
Que es Kerberos Cast
SSL
INTRODUCCIÓN.
Desde la antigüedad hasta nuestros días se han mandado mensajes secretos. La necesidad de comunicarse secretamente ha ocurrido en la diplomacia y entre militares. Con la llegada de la comunicación electrónica el interés por mantener mensajes ininteligibles para todos salvo el receptor no ha hecho sino aumentar.
Para introducir unos términos antes de entrar en materia, diremos que criptología es la disciplina dedicada a comunicarse secretamente.
Criptografía es la parte de la criptología que trata del diseño e implementación de sistemas secretos y criptoanálisis la que se dedica a
"romper" dichos sistemas.
La criptografía se refiere a la capacidad de mantener un documento electrónico (o de cualquier otro tipo) inaccesible a todos, excepto a determinadas personas, la autenticidad es la capacidad para determinar si una persona determinada pertenece o no a la lista de personas autorizadas para acezar el documento o no.
Estos problemas de confidencialidad y autenticidad se resuelven mediante la criptografía, la cual en si es una rama de las matemáticas, la cual al aplicarse a un mensaje proporciona herramientas para la solución de los problemas ya mencionados. El problema de confidencialidad se relaciona comúnmente con técnicas denominadas encripción y por su lado la autenticidad mediante una firma digital.
CONCEPTO DE ENTROPIA
La incertidumbre está relacionada con el número de estados posibles de un fenómeno. Por ejemplo el número de estados posibles de disponer 8 bits, es 256=28. El número de palabras - con o sin sentido- que se pueden formar con 4 letras es 274. En el mundo real, las cosas no son tan idealizadas, ya que casi cualquier fuente de información tiene ponderados sus mensajes, es decir, algunos aparecen con más probabilidad que otros, siempre hay mas apariciones de una letra del alfabeto en un texto suficientemente grande.
Cuando las probabilidades entran en juego, se le asocia a cada estado posible su probabilidad, es decir, a una variable aleatoria se le asocia su espacio de probabilidades.
CONFUSIÓN Y DIFUSIÓN
Cuando alguien quiere averiguar algo a partir de un texto cifrado, solo puede averiguar dos cosas: El texto original o la clave (y por tanto el texto cifrado).
Para hacer este tipo de ataques los criptoanalistas se pueden basar en ciertas pautas del lenguaje natural (sí lo que hemos cifrado es un mensaje normal), de un lenguaje de programación (suelen ser muy estrictos en el formato), etc.…
Existen dos formas básicas de hacer más difícil la tarea de criptoanalizar:
Con la Confusión lo que intentamos es que esas pautas del mensaje en claro se "difuminen" en todo el texto, ya sea alterando posiciones o creando dependencias nuevas, de tal forma que cada símbolo del mensaje cifrado se forme a partir de muchos símbolos del mensaje en claro.
La otra forma es mediante la Difusión. Con ella se consigue que no puedan sacar información de la clave a partir del texto cifrado.
CONGRUENCIAS
Cuando observamos un reloj, la hora siempre estará comprendida entre las 0 horas y las 23 horas, y los minutos entre los 0 y los 59 al igual que los segundos. Pues bien, en el primer caso diremos que la hora es una congruencia modulo 24.
De esta forma si son las 14 horas y le sumamos 15 horas más, no tendremos las 29 horas, sino las 5 horas. Nótese que 5 es el resto de dividir 29 entre 24.
En el caso de los minutos o los segundos es similar, solo que escogiendo 60 en vez de 24.
Otro ejemplo: Si tenemos un ordenador que no está preparado para la llegada del año 2000, en el año 2003 marcará 1903. Estos dos números son congruentes módulo 100.
En general dos números p y q son congruentes módulo n, cuando se cumpla que p-q es divisible por n.
LAS BASES FUNDAMENTALES
La ciencia de la criptografía se desarrolló, a raíz de los trabajos realizados por Claude Elwood Shannon y Whitfield Diffie, y se fundamenta principalmente en tres áreas de las matemáticas:
Teoría de la información
Trata temas relacionados con la transmisión de mensajes, en la cual se manejan conceptos como la entropía.
Teoría de números
Esta rama también se denomina matemática discreta, y estudia las propiedades de los números enteros.
Teoría de la complejidad algorítmica
Trata sobre la dificultad de los algoritmos para tratar ciertos problemas. Hay problemas para los cuales un algoritmo es más eficiente que otro, dependiendo de todas las variantes del problema en sí.
La criptografía se puede dividir en tres grandes grupos principales: de clave privada o simétricos, de clave pública o asimétricos y de digestión.
CLAVE PRIVADA
Cualquier criptosistema, en el sentido clásico del termino, se compone de 5 elementos que vamos a ver a continuación:
Espacio de mensajes en claro:
Se trata de un conjunto que contiene todos los mensajes en claro posibles (cuantas posibles combinaciones se pueden escribir con un alfabeto dado).
Lo denotaremos con la letra M.
Espacio de mensajes cifrados:
Conjunto que contiene todos los posibles mensajes cifrados.
Los mensajes cifrados pueden estarlo en el mismo alfabeto que los mensajes en claro o no. Hoy en día se puede considerar que es el mismo alfabeto, si tenemos en cuenta que al fin y al cabo todo se traduce al sistema binario.
Lo denotaremos con la letra C.
Espacio de claves:
Son todas las claves posibles que se pueden usar.
Se usa la letra K para referirse a este conjunto.
Transformación de cifrado:
Son los distintos algoritmos que se pueden usar para cifrar los mensajes en claro.
Se hace referencia al algoritmo de cifrado como E.
Transformación de descifrado:
Algoritmos que se pueden emplear para descifrar los mensajes cifrados, el algoritmo de cifrado debe estar relacionado con el de descifrado.
Se trata de la transformación D en la mayoría de las fórmulas.
Siempre se ha de cumplir que: Ek(Dk(c))=c
Esto se lee de la siguiente manera: Si tenemos un mensaje cifrado c, y lo desciframos usando el algoritmo D con la clave k, y a su vez el resultado lo volvemos a cifrar con E y con la misma clave, pues como es lógico debe dar el mensaje cifrado original c.
Estos sistemas proporcionan seguridad en la integridad de la información, ya que no puede modificarse sin el conocimiento de la clave.
La fuerza del criptosistema de clave privada radica en la clave.
CLAVE PÚBLICA
Su principal característica es que cada usuario posee dos claves distintas:
una pública, conocida por todos, y otra privada, que se mantiene en secreto.
Las posibilidades son mucho mayores en estos sistemas, prestando servicios como la autenticación o la firma digital, lo que a su vez deriva en muchos otros usos.
En la práctica, el uso más seguro que se le da a los criptosistemas es combinando la criptografía de clave pública con la de clave privada. Los algoritmos de clave pública son lentos, y para mensajes largos es mejor cifrar con clave privada. Para intercambiar esta clave única (de longitud corta) se usan los algoritmos de clave pública.
DIGESTION
Un Algoritmo de digestión toma como entrada un documento de cualquier longitud y produce un mensaje digital de longitud fija con características
singulares. Es un sistema muy Utilizado recientemente por ejemplo por el algoritmo md5 que utilizara Windows Nt 5.0
TIPOS DE CANALES
Medio por el cual se transmite la Información (cifrada o no)
Canal seguro
Un canal seguro es aquel en el que no existe error. Evidentemente esto es una situación teórica que nunca sucede, pero a la que siempre es deseable acercarse lo más posible. (Por eso se inventaron los códigos correctores de errores, como el CRC).
Para cada símbolo que se emite le corresponde un y solo un símbolo recibido. En otras palabras, nuestra válvula controlada no puede recibir nunca el comando R4, y siempre que se emita R1 llegará R1, cuando se emita R2 siempre llegará R2 e igualmente con R3.
Siendo R1, R2, R3 ... mensajes transmitidos.
Canal inseguro
Este tipo de canal es más realista, ya que admite una Equivocación, aunque siempre, como hemos dicho, se intentará que sea lo menor posible.
Canal totalmente inseguro
Este canal también es teórico, o por lo menos eso esperamos, ya que la recepción es tan independiente de la emisión que no tiene nada que ver con ella. Son totalmente independientes, y por lo tanto, el conocimiento de la Emisión no da ninguna información de la Recepción y viceversa.
AUTENTICIDAD DE DOCUMENTOS ELECTRONICOS
A mediados de los años 70 matemáticos de la Universidad de Stanford y el Instituto Tecnológico de Massachusetts descubrieron que mediante formulas y conceptos matemáticos era posible solucionar problemas como la autenticidad y la confidencialidad en documentos digitales denominados en su momento como criptografía en llave pública, el modelo de llave publica mas conocido es el modelo RSA cuyos inventores fueron Rivest, Shamir y Adelman.
RSA consiste en que mediante cálculos cualquier persona puede obtener dos números matemáticamente relacionados, a los cuales llamaremos llaves, la cual es un numero de gran tamaño.
Las llaves pública y privada poseen características matemáticas y su generación siempre esta dada en parejas las cuales están relacionadas de forma tal que si dos llaves publicas son diferentes entonces sus correspondientes llaves privadas también lo son y viceversa.
La idea de la generación de dos llaves es la de que el individuo de a conocer su llave publica y mantenga su llave privada en secreto, el proceso de firmado digital de un documento consiste en que una persona alimente un documento a firmar con su llave privada (conocida únicamente por él) produciendo como resultado un mensaje digital denominado firma digital.
La autenticación consiste que mediante un programa de computo se alimenta un documento firmado digitalmente con la llave publica del supuesto firmante y el programa a su vez indica si el documento es autentico o no. Es conveniente señalar que si alguna parte del documento o la firma son modificados el proceso de autenticación será invalido puesto que el documento de firmado con la llave privada es alterado mediante métodos de encripción.
Lo anterior se puede resumir en: si un documento firmado autentifica con una llave pública, entonces, el documento fue firmado con la correspondiente llave privada. Por tanto si la autenticación de un documento resulta valida la persona que lo firmo debe asumir que este le pertenece y hacerse responsable de su contenido, he allí la razón para mantener en secreto absoluto la llave privada.
Para reconocer Técnicamente la validez de una firma digital los individuos quienes estén realizando las respectivas transacciones de información deben intercambiar entre sí llaves publicas para que así todos puedan autentificar los documentos con las mismas. Es por consiguiente claro que cada sujeto en el proceso de autenticación de firmas digitales debe mantener un archivo o base de datos con la llave publicas de los presuntos firmantes, el problema radica cuando el numero de usuarios que realizan intercambio de información crece desmesuradamente, una solución a este problema de manejo de llaves se basa en el concepto de Certificado digital.
Un certificado digital es en si un documento firmado digitalmente por una entidad denominada Autoridad Certificadora (AC), esta entidad es algo así como una especie de notario el cual establece una liga entre una persona y
su llave publica, en otras palabras el certificado digital es un documento firmado por la AC el cual contiene el nombre del sujeto y su respectiva llave pública.
La idea es que quieren conozca la llave pública de la AC puede autentificar en certificado digital de la misma forma como autentifica cualquier documento.
Por razones de seguridad es conveniente que los certificados digitales tengan un periodo de validez, existe otra razón de carácter técnico y se
refiere a que cada vez que el usuarios cambie sus llaves estas aumenten ligeramente de tamaño.
El estándar internacional para certificados digitales es el denominado X.509 de la CCITT, sus campos están ilustrados en la figura.
Él numero de serie en un numero suministrado por la AC con el fin de identificar cada certificado emitido por dicha entidad, debido a que las operaciones electrónicas se pueden realizar entre puntos geográficos muy distantes con husos horarios diferentes se utiliza para la notación conocida como UTC (Tiempo Universal coordinado) o el Tiempo del meridiano de Greenwhich
Puesto que el certificado posee un rango durante el cual es valido es necesario entonces verificar que este no este revocado, para lo cual es necesario contar con un archivo, directorio o base de datos que contengan los certificados revocados. Para este fin existe una "Lista de Certificados Revocados" o CRL. Un CRL es un archivo, firmado por la AC, que contiene la fecha de emisión del CRL y una lista de certificados revocados, cada uno de ellos con la fecha de revocación.
Un CRL puede ser autenticado como cualquier otro documento firmado digitalmente, en este caso con la llave pública de la Autoridad Certificadora. Una vez autenticado, podemos confiar en su contenido y determinar con certeza si un certificado esta revocado o no, esto es hasta la fecha definida por "Ultima Actualización". El CRL es muy útil en algunos casos, por ejemplo:
1. El sujeto A recibió un documento firmado por el sujeto B el día 13 de Marzo de 1997.
2. Autentica el documento de acuerdo al procedimiento ilustrado (Autenticidad de Documentos firmados) y resulta autentico.
3. La AC publica el CRL diariamente de manera que el sujeto A obtiene, al siguiente día, una copia del CRL cuya fecha UTC es la 0 horas del día de 14 de Marzo de 1997, la autentica con la llave pública de la AC.
4. El sujeto A extrae, del certificado del sujeto B, el número de serie de dicho sujeto.
5. Consulta el CRL para determinar si el número de serie de B se encuentra listado en él.
En caso de encontrar que, el número de serie de B, si esta en el CRL, entonces, el sujeto A no puede confiar en el documento firmado, en caso contrario, el sujeto A si puede confiar en él.
Ahora bien, supongamos que el sujeto B, revoca su certificado el día 15 de Marzo de 1997 y refuta la validez del documento el día 17 de Marzo de 1997.
Nótese que el número de serie del certificado del sujeto B aparece en el CRL del día 16. Cuales serían entonces los elementos de prueba que el sujeto A tendría que demostrar:
1. Que el documento recibido, es autentico, de acuerdo al procedimiento de la figura (Autenticidad de Documentos firmados).
2. Que al 14 de Marzo de 1997, el certificado del sujeto B no había sido revocado, mediante el CRL de ese día.
3. Que recibió el documento antes del 14 Marzo de 1997.
Los puntos 1 y 2 son fácilmente demostrables por el sujeto A, pero el punto 3 no, aun cuando la fecha del firmado del documento este explícitamente descrito en el cuerpo del documento. En un documento tradicional firmado autógrafamente, en donde la fecha del documento es normalmente expresada en el cuerpo del escrito, y el firmante expresa con su firma la aceptación de dicha fecha, como aquella en la que el documento es firmado.
Nótese que el que un documento firmado este fechado, esto no significa que el documento fue firmado en esa fecha sino solo la voluntad del firmante para reconocerla como la fecha en la que se firmo el documento. En los documentos electrónicos firmados digitalmente el problema es más complejo puesto que el sujeto B puede argumentar que el documento fue hecho en forma apócrifa después del día 15 y simplemente se especifico Marzo 13 como la fecha de firmado. La solución a este problema se le conoce como
"Recibo Electrónico" o simplemente Recibo.
El recibo es un documento firmado digitalmente que contiene un mensaje y a continuación contiene una fecha. Al firmante del recibo le llamaremos
"Emisor del Recibo". Supongamos que el emisor del recibo es una persona o entidad en la que todos confiamos y de la que conocemos su llave pública. A esta persona o entidad le denominaremos "Autoridad de Oficialícia de Partes" y su función es la de recibir mensajes electrónicos, concatenarles la fecha actual, y el resultado se firma con su llave privada. El resultado es una prueba de que un mensaje electrónico existió a una determinada fecha como se ilustra en la siguiente figura.
Ahora bien, que pasa si el sujeto A es quien refuta haber recibido dicho documento. Entonces el sujeto B tiene que probar:
1. Que el sujeto A recibió el día 13 de Marzo el documento firmado.
2. Que dicho documento firmado es autentico de acuerdo al procedimiento descrito en la figura (Autenticidad de Documentos firmados).
3. Que al menos al día 14 de Marzo, su número de serie no aparecía en el CRL.
Para probar el punto 1, parece irremediable que el sujeto B requiere de un recibo del sujeto A atestiguando el documento recibido con la fecha del 13 de Marzo. El punto 2, se prueba mediante el documento firmado, y el punto 3 mediante el CRL del día 14 o posterior. Hay un aspecto adicional y se refiere a que el recibo del sujeto A es en si un documento firmado, que exige, el mismo tratamiento que se le dio al documento firmado por B y recibido por A.
El circulo se rompe sin embargo, pues el sujeto B puede autenticar el recibo de A y solicitar a la AOP un recibo atestiguando el recibo de A. Un flujo mas sencillo y seguro es el que se ilustra en la siguiente figura.
En la observamos los siguientes procedimientos:
1. El sujeto B firma un documento y se lo envía al sujeto A.
2. El sujeto A firma el documento firmado en 1 y se lo envía a la Autoridad de Oficialía de Partes.
3. La AOP recibe el contenido a atestiguar.
4. La AOP agrega la fecha UTC firma el recibo y se lo envía al sujeto A.
5. El sujeto A recibe de la AOP el recibo, guarda una copia y se lo transmite al sujeto B.
6. El sujeto B guarda una copia del recibo de la AOP.
El recibo de la AOP y un CRL de fecha posterior a la fecha de emisión, se convierten en pruebas necesarias y suficientes para ambos sujetos, como se ilustra en la siguiente figura.
La uso de un CRL en procesos de autenticación, es adecuado solo cuando el CRL tiene una fecha UTC igual o posterior a la fecha UTC que se pretende usar como referencia en la validez del documento. En aquellas ocasiones en que se requiere autenticar operaciones en el instante mismo en que son realizadas el uso del CRL es inadecuado. También puede resultar inadecuado que el CRL sea de un tamaño tal, que la transmisión o manejo resultasen en procesos lentos.
Esto es particularmente importante para aplicaciones del sector financiero, en donde se debe de actuar de inmediato ante el intercambio electrónico de transacciones financieras. La solución a este problema la ofrece la denominada "Autoridad Registradora".
La "Autoridad Registradora" es un ente o persona en la que todos confiamos y que ofrece servicios electrónicos de consulta a un CRL actualizado al instante. La AR recibe solicitudes de consulta sobre el estado de revocación de un Certificado Digital y responde indicando si esta o no revocado, en caso de estar revocado, proporciona la fecha UTC de revocación del certificado. El procedimiento se ilustra en la siguiente figura.
Un documento firmado por la AR que da "fe" de que un certificado no esta revocado en ese instante, es un mecanismo que asegura a quien hace la consulta que puede confiar en ese certificado ante cualquier autenticación de referencia a una fecha UTC igual o anterior a la fecha UTC que indica la AR.
Es conveniente mencionar que el documento de la AR no necesariamente se tiene que guardar como prueba, pues en caso de disputa se puede recurrir a un CRL posterior a la fecha UTC de referencia. Es incongruente que habiendo la AR respondido que un certificado era "NO REVOCADO" en una fecha X, ese certificado apareciese en un CRL posterior como revocado con fecha de revocación igual o anterior a X.
AGENTES CERTIFICADORES
Una de las principales funciones de la Autoridad Certificadora es la de precisamente "dar fe digital" de la liga entre el sujeto y su llave pública. Es lógico pensar que el procedimiento consiste en que el sujeto pruebe su identidad. Además el sujeto debe de manifestar su voluntad de aceptar su llave pública y probar (mediante autofirmado de un mensaje) que es propietario de la correspondiente llave privada. Además de la documentación sustentadora es conveniente que el sujeto entregue a la AC un documento electrónico conteniendo sus datos y su llave pública. A dicho documento le denominaremos "Requerimiento de Certificación".
En principio, se propone que el proceso de certificación, sea un procedimiento que requiera de la presencia física del sujeto, junto con la documentación sustentadora y un requerimiento de certificación. Sin embargo la AC presentada es una sola persona o entidad, esto significaría que los sujetos deberían de presentarse ante esta persona o entidad. Esto no es viable, pues los servicios electrónicos se prestan entre puntos geográficamente separados.
La solución a este problema son los denominados "Agentes Certificadores".
Un Agente Certificador es una persona o entidad autorizada por la AC y la auxilia en el procedimiento de "dar fe" de que los requisitos que un sujeto tiene que satisfacer sean satisfechos de acuerdo a un procedimiento establecido.
AUTORIDAD REGISTRADORA CENTRAL
¿Que pasa si dos sujetos tienen el mismo par de llaves?
Si dos sujetos tienen el mismo par de llaves, el proceso de prueba anteriormente descrito puede ser refutado. Por ejemplo, supongamos que el sujeto B y un sujeto X, tienen el mismo par de llaves. Si B no conoce la existencia de X, pero X conoce la existencia de B, entonces, X podría falsificar documentos firmados por B y peor aún, B tendría que irremediablemente aceptar su responsabilidad.
Si los sujetos B y X están coludidos, entonces, el sujeto B puede refutar el documento firmado argumentando que X pudo haberlo falsificado.
La solución a este problema pudiese ser que la Autoridad Certificadora mantenga una base de datos con las llaves públicas emitidas y que antes de emitir un nuevo certificado verificará que la llave pública no este siendo utilizada por otro sujeto. Sin embargo, si existen varias Autoridades Certificadoras, digamos AC1 y AC2, que emiten certificados, el sujeto B se puede certificar con la AC1, y el sujeto X con la AC2. La solución a este problema es la de que todas las Autoridades Certificadoras consulten a un registro común.
El registro común, que todas las Autoridades Certificadoras deben de consultar le denominaremos Autoridad Registradora Central. Las siguientes figuras ilustran el proceso de certificación.
En un primer paso, el sujeto genera su par de llaves en la intimidad de su computadora, construye además el requerimiento de certificación, que incluye la llave pública recién generada. El requerimiento de certificación es
un documento autofirmado o firmado por el sujeto mismo. Como se verá mas adelante el Agente Certificador tiene la responsabilidad de autenticar el requerimiento y por tanto, obtener prueba de que el sujeto es propietario de la correspondiente llave privada.
En el segundo paso, el sujeto se presenta ante el Agente Certificador y presenta su requerimiento de certificación y documentación sustentatoria. El programa de computo del Agente Certificador, extrae la llave pública que desea ostentar el sujeto, y autentica el requerimiento para demostrar que fue firmado con la correspondiente llave privada. Adicionalmente, verifica que la documentación sustentatoria es suficiente para acreditar la personalidad que el sujeto desea ostentar en el certificado.
En el paso 3, el Agente Certificador firma con su llave privada el Requerimiento de Certificación como indicación a la Autoridad Certificadora de que él ha verificado la correcta sustentación del certificado.
En el paso 4, la Autoridad Certificadora autentica que el precertificado provenga de uno de sus agentes certificadores. Produce un nuevo certificando, estampando su nombre (de la AC), el número de serie y el periodo de validez. Así genera un nuevo certificado.
En el paso 5, la AC solicita a la ARC el registro de una nueva llave, en caso de ser aprobada, retorna al Agente Certificador el certificado del sujeto, el agente a su vez se lo entrega al sujeto. En caso de no ser aprobado el registro en la ARC, entonces la AC regresa una respuesta negativa al Agente Certificador el cual lo hace saber al sujeto, el sujeto tendrá que repetir todo el procedimiento con el objeto de generar un nuevo par de llaves.
CONFIDENCIALIDAD
La criptografía ofrece dos tipos de algoritmos con fin de preservar la confidencialidad en los mensajes. Simétricos y asimétricos (llave pública). La idea de los algoritmos simétricos es la de encriptar, es decir, codificar un mensaje produciendo así un mensaje ilegible utilizando como base una palabra clave o contraseña. Luego de este proceso un sujeto puede recuperar su información alimentando a un algoritmo de encripción con el documento encriptado y la clave seleccionada para así poder obtener la información original.
En este proceso para que dos personas puedan leer un mensaje apartir del mensaje encriptado deben conocer ambos con antelación la clave respectiva para realizar la desencriptación, así mismo si se quiere que un tercero tenga acceso a la información este también debe conocer dicha clave, si por alguna razón existen tres sujetos A,B,C los cuales comparten información con la clave “axy” y A,B quieren compartir algo que solo puedan ver estos dos deben tener una clave adicional. Para este tipo de situaciones la mejor solución la ofrece la criptografía en llave pública
En la practica, no es conveniente encriptar todo el documento mediante algoritmos de llave pública. Una razón es la velocidad de los algoritmos de llave pública que son en el orden de 100 veces más lentos que algoritmos simétricos. La otra razón es que si un sujeto desea encriptar un documento para digamos, cinco sujetos B,C,D,E y F, entonces tendrá que producir 5 archivos diferentes, uno para cada uno de los sujetos. La solución a este problema es el conocido como "Sobre Digital" que consiste en lo siguiente.
El sujeto A proporciona una palabra clave, digamos "asdfghj", esta se encripta con la llave pública del sujeto B. Posteriormente encripta el documento con un algoritmo simétrico de encripción. Juntas : la clave encriptada con la llave pública del sujeto B y el documento encriptado con la palabra clave constituyen un "Sobre Digital". El sujeto B recibe el sobre digital, extrae la clave secreta encriptada y la desencripta con su llave privada y obtiene la palabra clave "asdfghj", posteriormente desencripta con el algoritmo simétrico el documento encriptado. El procedimiento se ilustra en las siguientes dos figuras.
El "sobre digital" es un mecanismo rápido y versátil. Rápido, pues la encripción del documento se realiza mediante algoritmos simétricos y solo la llave de este algoritmo se encripta con llave pública. Versátil, porque si el sobre se desea producir para digamos 5 personas, lo único que se debe de hacer es anexar la llave de encripción simétrica encriptada con la llave
pública de cada uno de los sujetos destinatarios del sobre, como se ilustra en la siguiente figura.
Normalmente, en un sobre digital, la llave de encripción simétrica no es proporcionada por el originador del sobre en forma de contraseña o palabra clave. La computadora sirve como auxiliar del sujeto, puesto que esta puede generar palabras aleatorias que pueden servir de contraseña, con la ventaja de que, al ser aleatorias son considerablemente más difícil de adivinar. Una contraseña es típicamente una palabra que el sujeto crea a partir de asociaciones de ideas y estas son usualmente predecibles. Quiénes de ustedes no usan su nombre, apodo, su fecha de nacimiento, etc.?. Ver sección Números aleatorios y pseudo aleatorios.
MEDIDAS BASICAS DE SEGURIDAD
No existe una forma ciento por ciento segura de garantizar la seguridad.
Dependiendo del grado de importancia se deben de balancear aspectos de diseño de software y hardware para obtener un grado aceptable para enfrentar este riesgo.
En general, se puede afirmar que si la llave privada solo es conocida y accesible por el sujeto A, sería prácticamente imposible, para otro sujeto B, falsificar una firma digital del sujeto A, o abrir un sobre digital dirigido al sujeto A, utilizando métodos matemáticos. El atacante de un sistema va a centrar su esfuerzo en encontrar debilidades en la implementación del software o hardware de seguridad. A continuación se mencionan los 2 puntos de ataque más comunes:
• Generación de Números Aleatorios
La generación de las llaves utiliza métodos pseudoaleatorios por lo que es muy importante que un sujeto B no pueda replicar el procedimiento que siguió un sujeto A cuando este generó sus llaves. Este comentario también es aplicable a la llave simétrica que se utiliza para encriptar el contenido de un documento en un sobre digital. Esta es una responsabilidad fundamentalmente del software de seguridad.
• Ataque a la Llave Privada.
La llave privada, que normalmente reside en un archivo debe de mantenerse encriptada con un algoritmo simétrico, utilizando como clave una contraseña. La contraseña debe de ser elegida por el usuario en
forma tal que resulte impredecible para quien intente adivinarlo por asociación de ideas. La encripción por contraseña es normalmente presa de ataques denominados de diccionario que buscan exhaustivamente entre un conjunto de palabras formadas por letras del abecedario. Otro ataque más sutil se concentra en intentar por "prueba y error" los posibles contraseñas que un sujeto utiliza en base a asociaciones de ideas, por ejemplo, su apodo, el nombre de su esposa, su apodo y fecha de nacimiento, etc.
La llave privada solo se debe de encontrar desencriptada cuando esta en la memoria de la computadora y mientras el programa de seguridad este funcionando. Si el sujeto se encuentra en un entorno de computo en donde sea posible que un atacante realice un "vaciado" a disco del estado de la memoria del programa de seguridad -- este volcado de memoria puede ser producido en sistemas como nt y todas las variantes de UNIX y linux, en estos dos últimos son conocidos como core dump y al ocurrir este descarga al disco un archivo con el nombre core en el cual se puede examinar el contenido de ese momento en memoria --, entonces la llave privada está en peligro. Si se esta en un entorno de computo en donde sea posible que un atacante intercepte el teclado entonces, su llave privada esta en peligro. Si se esta en un entorno de computo en donde sea posible substituir el programa de seguridad por uno falso que capture su contraseña y su llave privada encriptada entonces, su llave privada esta en peligro.
Las formas más seguras de evitar el robo de llaves privadas es el de firmar y abrir sobres en una computadora aislada física y virtualmente aislada del mundo exterior. A dicha computadora deben de entrar mensajes a firmar y deben de salir mensajes firmados, nunca debe de salir ni exponer la llave privada. Este es el caso de por ejemplo, los
Agentes Certificadores, Autoridades Certificadoras, y en general aplicaciones altamente sensitivas.
En general recuerde que el conjunto de llave privada, software, computadora y el entorno de esta, constituyen su instrumento de firma. El sujeto debe de proteger su instrumento de firma y en caso de determinar que su instrumento esta en peligro, el sujeto debe de revocar su certificado, realizar el procedimiento para obtener uno nuevo con un nuevo par de llaves y restaurar su instrumento de firma.
REVISANDO EL RECIBO Y EL CONCEPTO DE DIGESTION
Al aplicar el concepto de recibo en la Autoridad de Oficialía de Partes podemos apreciar dos problemas, el primero se refiere a que un atacante que intercepte la línea de comunicaciones de la Autoridad de Oficialía de Partes puede conocer el contenido del documento pues este viaja sin ninguna confidencialidad. El segundo se derivada del potencial tamaño del documento a ser atestiguado por la Autoridad de Oficialía de Partes. Una solución a este problema es el uso de algoritmos conocidos como
"Algoritmos de Digestión", un algoritmo de digestión toma como entrada un documento de cualquier longitud y produce un mensaje digital de longitud fija con características singulares. Si dos digestiones de dos documentos son iguales entonces significa que ambos documentos son iguales, o son totalmente diferentes. La palabra "totalmente" utilizada como adjetivo en la oración anterior es subjetiva pero en esencia resume el espíritu de la idea : Si un documento produce una digestión X entonces cualquier variación al documento, por pequeña que sea, produce una digestión diferente de X.
La digestión X de un documento es irreversible, es decir, no puede conocerse el contenido del documento a partir de conocer X.
El emitir un recibo de la digestión de un documento es equivalente a atestiguar el documento en si, con la ventaja de que la cantidad de bytes a atestiguar es pequeña, por ejemplo, 16 bytes. Además la digestión no revela el contenido del documento.
REVISANDO EL FIRMADO Y LA AUTENTICACION
En realidad, el proceso de firmado y autenticado utilizan la digestión para obtener una "huella digital" del documento. Esta "huella digital" se alimenta a un algoritmo RSA de encripción con la llave privada y se obtiene la firma digital del documento.
En la sección sobre CONFIDENCIALIDAD mencionamos textualmente "La criptografía de llave pública ofrece algoritmos de encripción y desencripción.
Si un documento se encripta con una llave pública, entonces, solo se desencripta con la correspondiente llave privada, y viceversa". Al hablar de confidencialidad siempre se habla de encripción con llave pública que se desencripta con la correspondiente llave privada. En la autenticidad siempre se habla del proceso inverso, la encripción con la llave privada y la desencripción con la llave pública.
NÚMEROS ALEATORIOS Y PSEUDOALEATORIOS.
En el corazón de todos los sistemas criptográficos, está la generación de números secretos que no puedan ser adivinados por otra persona, es decir aleatorios. Algunos usos comunes de dichos números serían la generación de claves, vectores de inicialización, parámetros únicos para firmas digitales...
Para que un adversario tenga una probabilidad muy pequeña de adivinar nuestros números, no es suficiente usar números pseudoaleatorios que simplemente verifiquen ciertos tests estadísticos o estén basados en recursos limitados como el reloj interno. Frecuentemente estas cantidades pueden ser determinadas buscando en un espacio de probabilidades sorprendentemente pequeño.
En estas páginas pretendemos dar algunas ideas sobre los métodos existentes para conseguir números aleatorios reales y aproximados; Algunos criterios para estimar la “bondad” de secuencias de números aleatorios y cuanta aleatoriedad necesitamos realmente si ciframos nuestro diario íntimo o protegemos una base de misiles.
CRIPTOANALISIS
Otro tipo de análisis posible es el llamado criptoanálisis lineal debido a Mitsuru Matsui. Este ataque utiliza aproximaciones lineales para describir la acción de un cifrado de bloque (DES, FEAL...). Aún era conocido un tipo más
de ataque, llamado criptoanálisis diferencial lineal, que combina los dos anteriormente comentados.
Pues bien, el "último grito" presentado informalmente en Crypto '98 por Biham, Biryukov y Shamir se llama criptoanálisis imposible. La idea básica parece ser buscar diferenciales - diferencias entre pares de textos en claro que se mantienen con cierta probabilidad en las diferencias correspondientes de los textos cifrados - imposibles, que no pueden ocurrir. Resulta ser que estas diferenciales son más poderosas que las ordinarias y pueden usarse para atacar algoritmos.
Los tres presentaron un ataque contra 31 rondas de Skipjack más rápido que la fuerza bruta. Recordemos que Skipjack tiene 32 rondas así que parecen estar a sólo un paso del criptoanálisis satisfactorio de todo el algoritmo. Ya que no es probable que la NSA haga un algoritmo con 32 rondas sabiendo romper 31 parece que esta vez Biham y compañía se les han adelantado.
TECNICAS Y METODOS DE ENCRIPTACION
CESAR
Quizás el primero de los sistemas criptográficos tuvo su origen con Julio Cesar, su cifrado consistía simplemente en sustituir una letra por la situada tres lugares más allá en el alfabeto esto es la A se transformaba en D, la B en E y así sucesivamente hasta que la Z se convertía en C.
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Esto desde luego en un alfabeto ingles, el cual no cuenta con letras como la ñ o ll. Este alfabeto suficiente para la mayoría de los cifrados basados en texto y tiene la ventaja de que ocupan posiciones sucesivas en el código ASCII lo que lo hace muy ventajoso para programar. Pues bien, el cifrado de Julio Cesar podría expresarse así C=P+3 (mod 26) donde hemos asignado a la A el número 0 a la B el 1... a la Z el 25, y (mod 26) indica que debemos tomar el resto de dividir por 26 (en lenguaje C utilizamos el operador %) C es el texto cifrado y P el original. Pongamos un ejemplo:
MENSAJE ENVIADO AYER.
Rompemos la estructura en palabras del mensaje eliminando signos ortográficos si los hubiera, poniendo por ejemplo MENSAJEENVIADOAYER y obtenemos los equivalentes numéricos de estas letras:
12 4 13 18 0 9 4 4 13 21 8 0 3 14 0 24 4 17
que aplicando la transformación P+3 (mod 26) se convierten en
15 7 20 21 3 12 7 7 16 24 11 3 6 17 3 1 7 20
es decir el mensaje cifrado es ahora
PHQVDMHHQYLDGRDBHU.
Un cifrado de este tipo es ridículamente fácil de romper (pero recordemos que también fue muy fácil de hacer), basta con probar los 25 posibles desplazamientos desde P+1 hasta P+25 y con una ojeada sabremos cual es el mensaje. Hemos utilizado en este caso un criptoanálisis llamado de
"fuerza bruta" porque probamos todas las claves (en este caso desplazamientos) posibles.
Hay algunas formas de mejorar este método sin complicarlo demasiado, la primera se basa en elegir una palabra clave con todas sus letras diferentes, supongamos que elegimos VIRTUAL ZONE. Escribimos entonces el alfabeto normal junto con el transformado siguiente:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z V I R T U A L Z O N E B C D F G H J K M P Q S W X Y
y ahora el mensaje junto con el cifrado serían
MENSAJEENVIADOAYER CUDKVNUUDQOVTFVXUJ
Ahora un ataque de fuerza bruta es "algo" más costoso pues se debería intentar con todos los alfabetos de sustitución posibles que son 26!=403.291.461.126.605.635.584.000.000.
Este método tiene la siguiente debilidad: con ciertas claves, las letras finales del alfabeto quedan sin modificar y esto facilita mucho la labor del criptoanalista. La clave en nuestro ejemplo esta escogida de modo que aparezcan en ella letras como V U Z cercanas al final del alfabeto y que producen un mayor "desorden" en el alfabeto transformado.
En todo caso en un cifrado como este se utiliza lo que se llama un análisis de frecuencias. Consiste en: sabiendo la frecuencia de las letras en español (si no sabes en que idioma en que está escrito el original te puede costar más trabajo) intentar adivinar a que letra corresponde cada una de ellas. Por ejemplo en el último mensaje cifrado CUDKVNUUDQOVTFVXUJ se observa que la letra más repetida es la U, como la letra más frecuente en español es en general una vocal por ejemplo A podríamos presumir que U se corresponde con la A como en efecto así es, siguiendo con las demás letras pueden averiguarse las suficientes como para poder leer el mensaje original.
Las letras que más aparecen en castellano son (por orden de mas a menos frecuente) las siguientes:
E A O L S N D R U I T C P M Y Q B H G F V W J Z X K
El primer grupo (E,A,O...) Está formado por letras de muy frecuente aparición, este grupo constituirá habitualmente un 68% de las letras de un mensaje, en concreto la E y la A destacan abrumadoramente en castellano y son las dos primeras que debes intentar identificar. El siguiente grupo lo
constituyen letras de aparición menos frecuente (un 25% aproximadamente en su conjunto). En el último grupo aparecen letras muy poco frecuentes que a menudo puedes descartar sin que importen demasiado para entender el mensaje.
GRONSFELD
Este método utiliza mas de un alfabeto cifrado para poner en clave el mensaje y que se cambia de uno a otro según se pasa de una letra del texto en claro a otra.
Es decir que deben tenerse un conjunto de alfabetos cifrados y una forma de hacer corresponder cada letra del texto original con uno de ellos. Para dejar esto más claro veamos una de las tablas que se usaban antes de la era de los ordenadores para hacer un cifrado de este tipo.
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0: C D E F G H I J K L M N O P Q R S T U V W X Y Z A B 1: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C 2: F G H I J K L M N O P Q R S T U V W X Y Z A B C D E 3: H I J K L M N O P Q R S T U V W X Y Z A B C D E F G 4: L M N O P Q R S T U V W X Y Z A B C D E F G H I J K 5: N O P Q R S T U V W X Y Z A B C D E F G H I J K L M 6: R S T U V W X Y Z A B C D E F G H I J K L M N O P Q 7: T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
8: X Y Z A B C D E F G H I J K L M N O P Q R S T U V W 9: C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
Ahora cogemos una serie de dígitos como clave. Supongamos que usamos 1203456987. Vamos a utilizar la tabla para el cifrado del mensaje:
EMBARCAMOS AL ANOCHECER
Empezamos por escribir la clave debajo del texto original las veces que sea necesario en forma cíclica
E M B A R C A M O S A L A N O C H E C E R
1 2 0 3 4 5 6 9 8 7 1 2 0 3 4 5 6 9 8 7 1
Y sustituimos cada letra por la correspondiente del alfabeto que indica el número debajo suyo.
HRDHCPROLL DQ CUZPYGZXU
El cifrado de Gronsfeld altera la frecuencia de las letras del texto, pues por ejemplo la letra más corriente en castellano, la E, se cifra de forma diferente según su posición en el texto original.
RSA.
En los sistemas tradicionales de cifrado debe comunicarse una clave entre el emisor y el receptor del mensaje, el problema aquí es encontrar un canal seguro para transmitir dicha clave. Este problema viene a resolverse en los sistemas de clave pública haciendo pública la clave de cifrado, pues un tiempo enormemente grande de ordenador es necesario para encontrar una transformación de descifrado a partir de la del descifrado.
El RSA es un sistema de clave pública inventado por Rivest, Shamir y Adleman basado en la exponenciación modular donde las claves son pares de números (e,n) formados por un exponente e y un módulo n que es el producto de dos grandes - grandísimos realmente - números primos p y q tales que mcd(e,fi(n))=1 (donde fi(n) es el número de enteros menores que n y primos con él)
Para cifrar un mensaje convertimos las letras que lo forman en sus equivalentes numéricos y formamos bloques del mayor tamaño posible con un número par de dígitos. Entonces el cifrado del bloque P sería (P) = C = P
^ e (mod n). El procedimiento de descifrado requiere el conocimiento de un inverso d de e módulo fi(n). Entonces D(C) = P = C ^ d (mod n). El par (d,n) es la clave de descifrado.
Desarrollemos un ejemplo donde n = 43.59 (números primos muchísimo más pequeños de los que usaríamos realmente). Tomemos e=13 como exponente, observemos que es válido pues mcd(e,fi(n)) = mcd(13,42.58) = 1.
Para cifrar la frase PUBLIC KEY CRIPTOGRAPHY obtenemos sus equivalentes numéricos 1520 0111 0802 1004 2402 1724 1519 1406 1700 1507 2423 (hemos usado A=00,B=01...) donde hemos añadido una X (23)
para rellenar el último bloque. Ahora transformamos bloque a bloque usando C = P ^ 13 (mod 2537) , con el primero ser C = 1520 ^ 13 = 95 (mod 2537) y el resultado final sería 0095 1648 1410 1299 0811 2333 2132 0370 1185 1457 1084
Para recuperar el texto original necesitamos un inverso de 13 módulo fi(2537) = 42.58 = 2436. Un cálculo bastante breve muestra que el d = 937 es ese inverso así que el descifrado sería P = C ^ 937 (mod 2537). Por ejemplo con el primer bloque 0095 ^ 937 = 1520 (mod 2537) y así procederíamos con todos los bloques que forman el texto cifrado.
Para entender porque RSA constituye un sistema útil de clave pública, notemos en primer lugar que cualquier individuo puede encontrar dos grandes primos p y q con, por ejemplo 100 dígitos, en pocos segundos de ordenador. Se pueden elegir simplemente enteros impares de 100 dígitos aleatoriamente y el teorema de distribución de los números primos nos asegura que la probabilidad de que dicho número sea primo es aproximadamente de 2/(log 10 ^100) lo que quiere decir uno de cada 115 en promedio. Un test de tipo probabilístico nos permitirá descartar los compuestos muy rápidamente.
Una vez elegidos los primos p y q necesitamos un exponente e, que verifique mcd(e,fi(pq))=1. Una forma posible es elegir un primo e mayor que p y q . De cualquier modo debe cumplirse que 2^e > n=pq para que sea imposible obtener el texto en claro P calculando simplemente la raíz de índice e del texto cifrado C=(P^e (mod n). Con la condición antes citada cualquier P (excepto 0 y 1) sufrirá una reducción módulo n.
La exponenciación modular es también incluso cuando el módulo, el exponente y la base tienen 200 dígitos. Con el algoritmo de Euclides
encontramos rápidamente el inverso d del exponente e módulo fi(n) cuando p y q son conocidos pues en este caso fi(n)= fi(pq)=(p-1)(q-1).
Por contra, el conocimiento de la clave de cifrado (e, n) no conduce al de la clave de descifrado. En efecto, para hallar d, un inverso de e módulo fi(n) necesitamos encontrar fi(n) y esto NO es más sencillo que factorizar n, lo que parece ser un problema intrínsecamente costoso computacionalmente hablando. Aunque no se ha probado que sea imposible romper un cifrado RSA sin factorizar n, aún nadie ha descubierto una alternativa pues los métodos existentes son en general equivalentes en complejidad a factorizar un número entero.
Unas precauciones extras para escoger p y q evitando así métodos de factorización especiales:
• p-1 y q-1 deben tener grandes factores primos.
• mcd(p-1, q-1) debe ser "pequeño".
• p y q deberían tener un número similar de dígitos.
Los sistemas de clave pública se utilizan también para firmar mensajes. El uso de firmas digitales hace que el receptor de un mensaje esté seguro de que realmente partió del emisor anunciado. Se utilizan en el correo electrónico y en transacciones bancarias. Veamos el proceso matemático involucrado:
Digamos que i manda un mensaje a j , lo primero que hará será calcular S=Di(P)=P^di(mod ni) donde (di,ni) es la clave privada de i . Entonces si nj>ni se forma C=Ej(S)=S^ej(mod nj) y cuando nj es menor que ni el emisor parte S en bloques de tamaño menor que nj y cifra usando ej.
Para descifrar j utiliza primero Dj(C)=Dj(Ej(S))=S y a continuación obtiene el texto en claro así Ei(S)=Ei(Di(P))=P donde la última identidad se sigue de que (P^di)^ei=P^(di.ei)=P (mod ni) ya que di.ei=1 (mod fi(ni)).
La combinación de texto en claro P y la versión firmada S convence a j de que el mensaje proviene de i , y este no puede negar haberlo enviado.
Resumiendo, todo el sistema RSA se basa en lo fácil que es encontrar primos frente a lo difícil que es factorizar un entero.
Este método no es infalible que ya se ha roto utilizando el trabajo combinado de muchos ordenadores en la red, pero aun así es un sistema bastante seguro por que el poder de computo necesario para romper una clave de este tipo es inmenso.
DES
DES fue desarrollado por IBM a mediados de los setenta. Aunque tiene un buen diseño, su tamaño de clave de 56 bits es demasiado pequeño para los patrones de hoy.
DES (Data Encryption Standard) es un mecanismo de encriptación de datos de uso generalizado. Hay muchas implementaciones de hardware y software de DES. Este transforma la información de texto llano en datos encriptados llamados texto cifrado mediante el uso de un algoritmo especial y valor semilla llamado clave. Si el receptor conoce la clave, podrá utilizarla para convertir el texto cifrado en los datos originales. Es un mecanismo de encriptado simétrico.
DES es un encriptador compuesto que encripta bloques de 64 bits en bloques de 64 bits, mediante una clave de 64 bits de los cuales 8 bits son de paridad.
En el funcionamiento del algoritmo DES se realizan una sustitución fija, llamada permutación inicial, de 64 bits en 64 bits y una serie de transformaciones e intercambios de bits.
DES está basado en la iteración o composición de dos transformaciones:
• Sustituciones no lineales viables para bloques de tamaño pequeño.
• Permutaciones de bits, transformaciones lineales viables para cualquier tamaño de bloque.
Las sustituciones no lineales tienen como función es introducir lo que Shannon llamó confusión, haciendo que ningún bit de salida sea una combinación lineal de los bits de entrada y de la clave.
Las permutaciones de bits en el DES son implementadas por transformaciones y por rotaciones de la clave. Su función es introducir lo que Shannon llamó difusión, la dispersión de la dependencia de cada bit de la salida en un número mayor de bits de la entrada y de la clave.
Con la idea de mejorar los criptogramas. Resultantes de la aplicación del método de encriptar DES surgieron algunas variantes que se pueden agregar al método DES. Una manera de fortalecer DES, consiste en incluir caracteres aleatorios en el texto claro, de acuerdo con una regla bien definida (por ejemplo, todos los n-ésimos caracteres son reales, y el resto son sólo ruido).
Además, mensajes de relleno pueden insertarse entre los que son reales, de acuerdo a otra regla. A este principio se lo conoce como encriptador nulo, el cual es obviamente, un desperdicio de ancho de banda, pero que llega a ser muy difícil de desencriptar, porque la posición de los caracteres reales y de los mensajes se conserva en secreto, y se cambia cuando se modifica la clave.
Existen también variaciones de este algoritmo como DES-CBC el cual utiliza 8 bytes efectivos adicionales para un total de 120 bits de tamaño efectivo.
Triple-DES es otra variación muy fuerte y ha sido bien estudiado por muchos años, así que podría ser una apuesta más segura que los cifrados más nuevos como CAST e IDEA. Triple-DES es el DES aplicado tres veces al mismo bloque de datos, usando tres claves diferentes, excepto que la segunda operación DES se hace marcha atrás, en modo de descifrado. Si bien Triple-DES es mucho más lento que CAST e IDEA, usualmente la velocidad no suele ser algo crítico para aplicaciones de correo electrónico.
Aunque Triple-DES usa un tamaño de clave de 168 bits, parece tener una fortaleza efectiva de al menos 112 bits frente a un atacante con una capacidad de almacenamiento de datos imposiblemente inmensa para usar en el ataque. Triple-DES no está cubierto por ninguna patente.
Chaffing & Winnowing
Esta técnica propuesta por Donald Rivest. Es más un intento de esquivar las restricciones a la criptografía en EE.UU. (y otros países) que una propuesta razonable debido al tamaño de los mensajes resultantes.
El termino inglés 'winnowing' se tomara como 'aventar' es decir separar el grano de la paja y el termino 'chaffing' por el castellano 'empajar' (cubrir o rellenar con paja). La idea básica como veremos consiste en mezclar la información real (grano) con otra de relleno (paja) de modo que sea imposible separarlas excepto para el destinatario.
Conocemos en la actualidad dos formas de preservar la confidencialidad de nuestros mensajes:
• Estenografía: es el arte de esconder un mensaje secreto en uno de mayor tamaño, de tal modo que el adversario no puede discernir la presencia o contenidos del mensaje oculto, en otras palabras agregar “basura” al mensaje.
• Criptografía
Explicaremos como funciona un sistema de confidencialidad basado en aventar. El proceso para el emisor consta de dos partes: autenticación y
empajado (chaffing). El receptor para leer el mensaje original debe ser capaz de separar la paja. Intentaremos dejar claro en cada paso que no se está utilizando criptografía de ninguna manera.
El emisor divide el mensaje en paquetes y autentifica cada uno de ellos utilizando una clave secreta de autenticación. Es decir que añade a cada paquete un MAC (código de autenticación de mensajes) calculado en función de los contenidos de dicho paquete y la clave utilizando un algoritmo estándar como HMAC-SHA1.
En estos momentos el mensaje esta todavía en claro, NO se ha encriptado.
Hay que observar que los programas que simplemente autentifican mensajes añadiendo un MAC pueden exportarse libremente pues no están pensados para la encriptación.
La clave de autenticación compartida por emisor y receptor permite determinar que un paquete es auténtico recalculando su MAC y comparándolo con el recibido. Si la comparación falla, el paquete y su MAC se descartan automáticamente. La clave debería acordarse previamente, bien a través de un medio considerado seguro (en persona?) Bien con una técnica específica de intercambio de claves como la de Diffie-Hellman por ejemplo.
Es típico que cada paquete contenga también un número de serie que ayuda al receptor a eliminar paquetes duplicados y a ordenar correctamente los recibidos para obtener el fichero inicial. El MAC de cada uno es función de la clave y de su contenido como queda dicho. Un ejemplo de una serie de paquetes podría ser:
(1, Hola Pepe, 463210) (2, Nos vemos, 788311)
(3, a las 7 PM, 342116) (4, Firmado: Alfredo, 550925)
Formados por una tripleta de: numero de serie, contenido y MAC.
El siguiente paso sería el de añadir paja, incluyendo falsos paquetes con MACs incorrectos. Los paquetes de paja tienen un formato correcto, números de serie razonables y contenidos admisibles pero sus MACs no son válidos.
Estos paquetes se mezclan aleatoriamente con los buenos (el grano) formando parte del mensaje transmitido. Continuando con el ejemplo anterior:
(1, Hola Pepe, 463210) (1, Hola Luis, 332178) (2, Nos vemos, 788311) (2,Te llamaré, 901932) (3, A las 3 AM, 778241) (3, a las 7 PM, 342116) (4, Firmado: Alfredo, 550925) (4,Firmado: Sonia,778212)
En este caso, por cada número de serie hay un paquete bueno (grano) y otro malo (paja).
Para obtener el mensaje correcto, el receptor simplemente descarta los paquetes de paja reteniendo los de grano. Pero de todas formas esto es lo que siempre hace el receptor en una red, rechazando los paquetes recibidos con MACs incorrectos. Recibir uno de estos paquetes podría posiblemente disparar más de una respuesta del receptor, pero habitualmente la detección de paquetes omitidos se realiza a un nivel diferente de protocolo más que en
el momento de recibir un paquete incorrecto, ya que podría haber sido transmitido más de una vez y haberse recibido bien ya.
Llamemos empajar al proceso de añadir paja a una serie de paquetes. Como antes aventar será el proceso de descartar los MACs incorrectos.
Llamaremos a los paquetes buenos 'trigo' por seguir con la metáfora.
Proporciona empajar una buena confidencialidad? Depende de como el mensaje original se divida en paquetes y como se agregue la paja. Esta claro que el problema para el adversario está en distinguir el trigo de la paja y NO en romper un esquema criptográfico porque no realizamos ningún cifrado y sin embargo obtenemos confidencialidad, igual que con la estenografía.
Si el adversario ve un solo paquete con un número de serie dado, entonces este paquete es probablemente trigo y no paja. De esta forma un buen proceso de empajado añadirá al menos un paquete de paja por cada número de serie que aparezca en el mensaje. También podría distinguirlos si el trigo contiene palabras coherentes y la paja sólo bits aleatorios, así sería muy sencillo aventar el trigo.
Ahora, y en el extremo opuesto, si cada paquete de trigo contiene un solo bit, y hay un paquete de paja con el mismo número de serie y el bit complementario, el adversario tendrá ante sí una tarea prácticamente imposible. Distinguir el trigo de la paja requeriría romper el algoritmo del MAC y/o conocer la clave secreta. Con un buen algoritmo de autenticación la habilidad del adversario para aventar es cero, perfecta confidencialidad.
Asumamos que el mensaje original se divide en paquetes de 1 bit, cada uno de ellos con su número de serie y su MAC. Hay una obvia ineficiencia aquí
porque el tamaño del mensaje podría multiplicarse por 200 si asumimos por ejemplo que los números de serie son de 32 bits y el MAC de 64.
El proceso de empajar también es fácil: se crea un paquete con el número de serie que sea e incluyendo 64 bits aleatorios. Este valor de MAC es casi con total probabilidad incorrecto, solo será bueno en un caso de cada 264, despreciable en la práctica. Es especialmente intrigante observar que para empajar no se necesita conocer la clave de autenticación, basta crear falsos paquetes con MACs aleatorios.
Imaginemos entonces el siguiente escenario: Alicia se comunica con Blas usando un protocolo estándar basado en paquetes. Cada paquete se autentifica con un MAC creado usando una clave que sólo ambos conocen.
Además supongamos que cada paquete contiene solo un bit de mensaje porque el programa de comunicaciones lo escribió la propia Alicia y contiene ese bug.
Hasta ahora Alicia y Blas no están encriptando nada y usan técnicas estándar para intercambiar mensajes que no son consideradas criptografía y no están sujetas a controles de exportación. Alicia y Blas no tienen intención de preservar la confidencialidad de sus mensajes de un mirón.
Vale, ahora los paquetes de Alicia para Blas son enrutados a través del ordenador del administrador, Carlos, que por alguna razón añade paquetes de paja a la serie. El software de Alicia y Blas no ha sido modificado para conseguir esta confidencialidad.
Carlos no sabe la clave de Alicia y Blas, que ni siquiera se preocupaban por unas comunicaciones confidenciales. Carlos no usa criptografía y no sabe ninguna clave y sin embargo está proporcionando una gran confidencialidad
a la comunicación. No hay ninguna información que Carlos pueda dar a las agencias gubernamentales.
En una variación de la escena anterior, Carlos no está añadiendo paja sino simplemente multiplexando el flujo de paquetes de Alicia para Blas con otro flujo de paquetes (digamos de David a Elena). Para Blas, el flujo de paquetes de David a Elena parece paja y se descarta. Para Elena es al contrario y ella ignora los paquetes entre Alicia y Blas. Lo que es trigo para un par de comunicantes es paja para los otros dos y viceversa. Una situación así puede surgir cuando Carlos está administrando un canal de transmisiones vía satélite, aquí ambas partes reciben un flujo de paquetes entremezclados y si la única forma de distinguirlos es por la corrección de los MACs, un adversario lo tendría muy difícil para separarlos.
En situaciones como las descritas, el método obvio para las fuerzas gubernamentales sería exigir tener acceso a la clave secreta de autenticación que comparten Alicia y Blas. Sin embargo ya hace mucho que el gobierno (de EE.UU.) llego al acuerdo de que no deseaban tener dichas claves. Tener acceso a esas claves permitiría al gobierno falsear paquetes para cualquier par de comunicantes. Esto va mucho más allá que acceder a comunicaciones encriptadas, pues la pérdida de dichas claves podría causar desastres masivos en la estructura e integridad de todo Internet, permitiría a hackers maliciosos no solo fisgar mensajes electrónicos sino controlar sistemas eléctricos o aeropuertos. El poder para autentificar es el poder para controlar, dar todo el poder de autentificar a los gobiernos está más allá de lo razonable.
Empujar y aventar guarda algún parecido con la estenografía. Recordemos la técnica esteganográfica de mandar una carta con contenido inocuo cuyas letras están escritas en dos fuentes diferentes aunque muy similares.
Borrando todas letras del mismo tipo, el mensaje oculto escrito con la otra fuente permanece. La seguridad de esta técnica como la mayoría de las esteganográficas se basa en la asunción de que el adversario no observará la diferencia. Con la técnica 'chaffing & winnowing' el adversario puede saber o sospechar que hay dos clases de paquetes, pero es incapaz de distinguirlos sin la clave de autenticación.
Empajar y aventar también guarda parecido con el cifrado. De hecho el proceso de autentificar paquetes y añadir paja consigue confidencialidad y por tanto constituye criptografía para cualquiera que use una definición tan amplia que incluya cualquier forma de asegurar la confidencialidad. Sin embargo esto sería no caer en la cuenta de la especial estructura: una clave no de cifrado sino de autenticación para el primer paso, seguido por una fase de no-encriptado y sin clave. Ya que el segundo paso lo puede realizar cualquiera (Carlos en nuestro ejemplo) y ya que el primero puede ser realizado por muchas otras buenas razones, estamos en el caso de conseguir una fuerte confidencialidad sin el conocimiento ni el permiso del emisor original.
Notemos que el uso de MACs puede ser reemplazado por firmas digitales, pero no firmas normales porque entonces todos podrían verificarla distinguiendo el trigo de la paja. Las firmas de Chaum que sólo pueden ser verificadas por las personas designadas por el firmante servirían bien.
Otra idea muy interesante es que el flujo de paquetes contenga más de una subsucesión de paquetes de trigo además de los paquetes de paja. Cada subsucesión de trigo podría ser reconocida por separado usando una clave diferente. La consecuencia... si el gobierno forzase la entrega de una clave de autenticación para poder identificar el trigo, el emisor podría ceder una de tales claves que identifica una subsucesión que contenga un mensaje
inocuo, dejando el resto como paja. Esto recuerda la técnica de 'deniable encryption' propuesta por Canetti et al (1997).
SKIPJACK
Este algoritmo fue descalificado por el gobierno de estados unidos. Algunos detalles sobre el algoritmo en sí y sus aplicaciones en la práctica a los chips Clipper y Capstone.
Skipjack fue desarrollado por la NSA inicialmente para los chips Clipper y Capstone. Su diseño comenzó en 1985 y se completó su evaluación en 1990. Digamos algo más sobre los chips antes de comenzar con la descripción del algoritmo.
El chip Clipper
Este chip, también conocido como MYK-78T, de diseño anti - manipulaciones del tipo VLSI, fue pensado para encriptar mensajes de voz. Lo manufactura VLSI Technologies y Mykotronx, Inc lo programa.
El aspecto más controvertido del chip es, por supuesto, el protocolo de depósito de claves. Cada chip tiene una clave especial que no se usa para los mensajes, sino para encriptar una copia de la clave que el usuario utiliza para sus mensajes. Como parte del proceso de sincronización, el Clipper emisor genera y envía un “Law Enforcement Access Field (LEAF)” al Clipper receptor. El LEAF contiene una copia de la clave de sesión actual encriptada con una clave especial llamada unit key. Esto permite a un ‘cotilla’ del gobierno de EE.UU. recuperar la clave de la sesión y en consecuencia toda la conversación.
Supuestamente el chip resistiría un intento de ingeniería inversa por un adversario sofisticado y con bastante dinero; pero se rumorea que en los Laboratorios Nacionales Sandia ya se ha hecho. Incluso aunque no fuera así, es de suponer que los mayores fabricantes de chips podrían realizar la ingeniería inversa de Clipper. Es sólo cuestión de tiempo que aparezca alguien con la combinación adecuada de recursos y (falta de) ética.
El chip Capstone
Capstone, también conocido como MYK-80, es también un chip VLSI que implementa el EES (Escrowed Encryption System) e incorpora las siguientes funciones:
o Uso del algoritmo Skipjack
o Un algoritmo de intercambio de claves públicas (KEA) o Un algoritmo de firma digital (DSA)
o El algoritmo de hash seguro (SHA)
o Un algoritmo de uso común de tipo exponencial
o Un algoritmo de generación de números aleatorios que utiliza una fuente pura de ruido.
Capstone proporciona las funcionalidades criptográficas necesarias para el comercio electrónico y otras aplicaciones basadas en el ordenador. La primera aplicación del chip Capstone fue la tarjeta Fortezza.
El algoritmo
Siguiendo con Skipjack, decir que es un cifrado simétrico que usa bloques de 64 bits y una clave de 80 bits. Como queda dicho se usaba en el programa Clipper, pero no tenía el depósito de claves (key escrow) incorporado (el
depósito de claves era parte del mecanismo de intercambio de claves y no del cifrado de datos). Es un algoritmo de alto riesgo, lo que quiere decir que había un elevado riesgo de que fuera comprometido. Por tanto, es improbable que la NSA ponga en él sus diseños más secretos (o inteligentes).
Es más lento que Blowfish y alguna de las propuestas AES, pero aún así es el doble de rápido que DES en micros de 32 bits. Es rápido cuando se usa en tarjetas inteligentes y eficiente en hardware. Tampoco lleva tiempo la preparación de la clave. Si no fuera por que el tamaño de la clave es pequeño (80 bits), podríamos tenerlo en cuenta para nuestras aplicaciones.
Skipjack es interesante sobre todo por su diseño. Es el primer algoritmo desarrollado por la NSA que podemos ver. La criptografía es una ciencia de adversarios. Alguien diseña un algoritmo, yo lo rompo. Yo diseño otro;
alguien más lo rompe. Así es como aprendemos. Skipjack es un buen blanco, es un algoritmo diseñado usando metodologías secretas por una organización respetada.
La criptografía militar comenzó con maquinas de rotor, y luego se generalizó a los registros de desplazamiento (shift registers). El diagrama de bloques y la descripción de Skipjack muestran claramente sus raíces en los registros de desplazamiento. Resulta fascinante que las dos formas de diseño estén convergiendo.
Lo primero que se observa en Skipjack es su simplicidad. Hay pocos elementos de diseño, y pensándolo un poco puedes señalar cada uno de ellos y explicar porqué está allí. No hay constantes misteriosas. Hay 32 rondas y 32 rondas pueden esconder un montón de fallos, pero el diseño parece sólido.