sábado, 3 de noviembre de 2007

Criptografía asimétrica o de clave pública

La criptografía asimétrica o de clave pública pretende evitar el problema de la distribución de claves necesaria en un criptosistema simétrico o de clave secreta.

Ejemplos de criptosistemas asimétricos son:

  • RSA:
    El número mínimo posible de claves de descifrado asociadas a cierta clave de cifrado es dos.
    Puede utilizarse el algoritmo de Garner para descifrar ahorrando tiempo de cálculo puesto que dicho algoritmo resuelve los sistemas de ecuaciones de congruencias que surgen en el algoritmo, sustituyendo de ese modo al algoritmo de Gauss en la resolución del teorema chino de los restos congruentes.
    La firma obtenida con RSA autentica tanto al remitente del mensaje como la integridad del contenido.
  • ElGamal:
    La firma digital es diferente para firmas sucesivas del mismo mensaje, lo cual hace que un mismo mensaje pueda aparecer como distintos textos cifrados; esto supone una ventaja.
    El remitente del mensaje necesita conocer la clave pública del destinatario.
    Es un método de cifrado expansivo, ya que la longitud del texto cifrado es el doble que el texto llano.
  • Curvas Elípticas
Es en estos esquemas en los que se basa el sistema de Firma Digital y consecuentemente los Certificados Digitales.

Esquema de Firma DigitalFirma Digital:
  • Un texto cifrado con clave pública proporciona confidencialidad pero no evita el repudio.
  • Se firma con la clave privada del remitente el mensaje o su resumen.
  • Utilizaremos la clave pública del destinatario para cifrar y la clave privada del destinatario para descifrar.


Certificado Digital
:
  • Permiten asociar de forma inequívoca una clave pública a un usuario, independientemente del conocimiento que se tenga sobre la autoridad de certificación.
  • Podemos comprobar que un certificado digital es auténtico comprobando que el resumen del certificado coincide con el que debería tener (el cual hemos obtenido por algún medio seguro).
  • Para confiar en una clave pública contenida en un certificado digital autofirmado hemos de comprobar su huella digital (fingerprint) y la validez temporal del mismo.
  • Un tipo muy extendido de certificado digital es el X.509, que es una estructura de datos compuesta por la información a firmar, el algoritmo de firma y la firma propiamente.
  • DSA -> DSS (Digital Signature Standard) es un método de firma digital bastante empleado que no es más que una modificación de ElGamal.
    Siempre firma un resumen SHA-1 del mensaje (Secure Hash Algorithm).
  • Existe un formato especial de petición de firma de certificado (CSR - Certification Signing Request), denominado PKCS#10. Habrá que hacerlo llegar a una autoridad certificadora y seguir ciertos trámites para conseguir que nos lo firme.

viernes, 2 de noviembre de 2007

Criptografía simétrica o de clave secreta

En la criptografía simétrica o de clave secreta se emplea la misma clave para cifrar y descifrar, con lo que sólo la pueden conocer los interlocutores. Por tanto, hemos de transmitir la clave o ponernos de acuerdo en ella.
Existen dos grandes bloques de cifradores simétricos, los cifradores flujo y los cifradores bloque.

Cifradores Flujo:
La transformación cambia. Partimos de una clave maestra (simétrica) y a partir de ella, generamos para cada instante de tiempo las claves adecuadas.
Con este tipo de sistemas disminuye la redundancia (regularidad del texto).
El cifrador Vernam puede considerarse un cifrador de flujo.
Existen dos tipos de cifradores flujo:

          • Cifrador Síncrono
          • Cifrador Autosincronizante
Los autosincronizantes resultan más interesantes porque no es necesario enviar la señal de sincronización en la transmisión. Su funcionamiento está basado en la generación cuidadosa de secuencias pseudoaleatorias mediante registros de desplazamiento LFSR, aprovechando la propiedad de que todos los LFSR cumplen las condiciones de Golomb siempre que utilicemos un polinomio primitivo (los cuales están tabulados).
Sin embargo todavía debemos ir más lejos y buscar la máxima complejidad lineal (cantidad de registros que necesita un LFSR para generar una secuencia), debido a que un cirador de flujo realizado con un LFSR con L registros, puede criptoanalizarse (romperse) conociendo sólo 2L bits de la secuencia pseudoaleatoria. Para ello es útil el algoritmo de Berlekamp-Massey.

Ejemplos de cifrado de flujo:
  • GSM ( A5/1 - A5/2 ):
    Se generan 2 flujos de información que transmportan voz y datos (información de control necesaria debida a que la potencia y el retardo son variables). Además se realiza un acceso múltiple, primero por división en frecuencia y después por división en el tiempo. La trama (114 bits) dura aproximadamente 4 ms.
    El algoritmo A8 es el encargado de generar los bits de la clave, partiendo de un valor que reside en el SIM del teléfono. Kc es en principio de 64bits, aunque se ha demostrado que no se usan 8; con lo cual nos queda una Kc de 56bits.Se emplean 3 LFSR que hay que inicializar con 100 golpes de reloj.
    El algoritmo A3 se encarga de la autenticación del móvil.
    El sistema funciona igual en ambos sentidos. En la estación base se genera un número aleatorio que se transmite en claro al teléfono móvil.
    El sistema de cifrado se basa en el criptosistema alemán comp128, puesto que A3 y A8 son implementaciones de éste..
    Como se puede comprobar por toda la información disponible, GSM se considera roto.
  • RC4:
    Se trata de un algoritmo de cifrado simétrico. Tiene una clave de longitud variable entre 1 y 256 octetos. Se trata de un generador pseudoaleatorio de bytes muy sencillo de implementar. Se realiza un intercambio de bytes que depende de la clave.
Cifradores Bloque:
La transformación que se hace al cifrar es siempre la misma, obtenemos el mismo texto cifrado frente al mismo texto en claro, puesto que la clave no cambia.
La robustez de estos sistemas radica en que es público el método empleado para la generación de el texto cifrado, pero no el por qué de su implementación concreta.

Ejemplos de cifrado bloque:
  • DES:
    Se rompió hace dos años por fuerza bruta con equipos creados expresamente para ello. En su lugar se emplea la variante 3DES que todavía se considera segura.
    El tamaño de bloque es de 64bits tanto para el texto en claro como para el cifrado, igual para el tamaño de clave.
    El algoritmo consta de 17 iteraciones.
    Modos de funcionamiento:
    • ECB - Electronic Code Book
    • CBC - Cipher Block Chaining
    • CFB - Cipher FeedBack
    • OFB - Output FeedBack: Requiere un vector de inicialización (IV)
    • PBC - Plaintext Block Chaining
    • PFB - Plaintext FeedBack
  • AES:
    Es el más empleado actualmente, siendo el sustituto habitual del DES. Está basado en el algoritmo Rijndael (son sus creadores).
    Las longitudes de la clave posibles para el sistema AES son 128, 192 y 512.

Existe un blog llamado "Apuntes de seguridad de la información" que trata sobre estos temas, centrando especialmente su atención en temas legislativos.

jueves, 1 de noviembre de 2007

Criptografía Básica

La Criptografía es el arte o técnica de escribir con clave o de un modo enigmático.
Su existencia se remonta a los principios de la humanidad. Como ciencia, supone un conglomerado de disciplinas tales como la Teoría de la Información, la Teoría de números, la Complejidad algorítmica, la Informática, las Telecomunicaciones, la Electrónica, etc.

Criptoanálisis: arte de romper los sistemas de cifrado
Criptología: Criptografía + Criptoanálisis

Acontecimientos históricos clave:

  • Máquina Enigma (Chiffriermaschinen Aktiengesellshaft). Patente alemana de los años 20 que Hitler relega a usos militares.
    Aquí se puede encontrar un simulador de Enigma (para Mac OS X).
Segunda Guerra Mundial:
  • Proyecto Ultra en Bletchley Park (UK)
  • Criptoanálisis de Enigma
  • Bomba de Turing
  • Empleo del primer ordenador electrónico, secreto hasta 1976: Colossus (no ENIAC)
Contemporános:
  • Denuncias de puertas traseras en los sistemas operativos Windows a finales de los 90
  • Continuos problemas se seguridad en los navegadores Netscape e Internet Explorer.
Organizaciones:
  • Echelon - Organización internacional de varios países para monitorización de comunicaciones electrónicas
  • Enfopol - Algo parecido a nivel europeo
Surge un problema ético ante la existencia de estas organizaciones: la intimidad personal se ve comprometida y aparece el miedo a un control gubernamental absoluto.
Una posible solución intermedia es TTP: Una entidad TTP (Trusted Third Party) posee todas las claves de las comunicaciones electrónicas secretas, accesibles sólo por vía judicial pero... ¿Quién vigila al vigilante?

Una clasificación de Criptografía:
  • Criptografía clásica: El secreto radica en la no publicación del método ni la clave. Todos los sistemas basados en esta filosofía han sido rotos: GSM, DVD, ...
  • Criptografía moderna: El método es público y sólo se mantiene en secreto la clave.
Un Criptosistema es una quíntupla (M,C,K,E,D) donde:
  • M - conjunto de mensajes sin cifrar o "texto en claro"
  • C - conjunto de todos los posibles mensajes cifrados o "criptogramas"
  • K - conjunto de las claves que se pueden emplear ( en ciertos criptosistemas se emplean claves diferentes para cifrar y descifrar)
  • E - conjunto de transformaciones de cifrado o familia de funciones que se aplican a cada elemento de M para obtener el elemento correspondiente de C. Existe una transformación diferente Ek para cada k [perteneciente a] K
  • D - conjunto de transformaciones de descifrado, en características análogas a E
Todo criptosistema debe cumplir: Dk(Ek(m)) = m, [para todo] m [perteneciente a] M
de forma que se pueda recuperar el texto en claro original.

Tipos de Criptosistemas:
  • Simétricos o de clave secreta:
    Misma clave para cifrar y descifrar. Su debilidad radica en la necesidad de transmitir la clave secreta.
  • Asimétricos o de clave pública:
    Son más "lentos" que los asimétricos debido en parte a que se emplean dos claves
    • kc - clave para cifrar. Es pública y la puede (debe) conocer cualquiera interesado en enviar un mensaje cifrado a un destinatario concreto
    • kd - clave para descifrar. Es privada y sólo la debe conocer el destinatario del mensaje cifrado
    • El conocimiento de la kc no debe desvelar nada de las características de la kd
La Seguridad Criptográfica de un sistema se realiza en criptografía moderna siguiendo ciertos criterios:
  • Seguridad incondicional:
    Cifradores perfectos. Es imposible obtener la clave a partir del texto cifrado.
    El problema radica en que según la Teoría de la información, para conseguir este nivel de seguridad, la longitud de la clave ha de ser al menos igual que la longitud del mensaje. Esto hace que no sea práctico implementarlos. Sin embargo, existe un cifrador que responde a este esquema: el cifrador Vernam.

    H(K) >= H(M) >= H(M); siendo H la entropía del sistema.
  • Seguridad teórica:
    El texto cifrado fuede dar algo de información sobre la clave. La seguridad disminuye al aumentar la longitud del mismo. Existe un límite teórico de seguridad que consiste en fijar la longitud máxima (longitud de unicidad) del texto en claro, de manera que si no se supera dicha longitud siempre asegurará que ante un ataque por fuerza bruta, se dudará al menos entre dos posibles mensajes con sentido. Si se supera dicha longitud, una de las claves será la más probable, con lo cual el sistema quedaría roto.

    Longitud de unicidad: n1 = H(K) / R
    Redundancia (de los símbolos): R = log(m) - H(S)
    m: sistema m-ario empleado (ej: ASCII es 8-ario -emplea 8 bits-)
    H(S): entropía del conjunto de mensajes con sentido (S) = información media del sistema

    Por tanto, un sistema de cifrado ideal debería tener una longitud de unicidad infinita. En la práctica, se puede incrementar n1 disminuyendo la redundancia (R) de los mensajes (comprimiendo la información).
  • Seguridad computacional:
    Es imposible romper el sistema de cifrado en un tiempo razonable con la capacidad computacional que se posee. Dos tipos:
    • Demostrable: estimación estadística
    • Probable: no se ha conseguido romper hasta el momento

Siguiendo la Teoría de Shannon, se pueden emplear varias técnicas sencillas para obtener buenos sistemas criptológicos:
  • Confusión:
    Hacer compleja la relación entre el texto cifrado y la clave. Es habitual sustituir unos símbolos por otros utilizando tablas de sustitución.
  • Difusión:
    Diluir la redundancia del texto en claro en el texto cifrado. Puede llevarse a cabo mediante trasposiciones de orden de los símbolos dentro del mensaje previamente al cifrado.
  • Efecto avalancha:
    Con el fin de conseguir cifradores más robustos, el cambio de un bit en la clave o en el texto en claro debería hacer que cambiasen, por término medio, la mitad de los bits en el texto cifrado.
  • Cifrador Producto:
    Para conseguir un efecto más potente mediante la concatenación de cifradores, es necesario que las técnicas de Confusión (sustitución) + Difusión (trasposición) se realicen en cascada y siempre alternadamente.