Fundamentos de criptografía







1. Introducción.

        Criptografía es el "arte" de ocultar información, son unos métodos para transformar una información en otra para que no sea entendida pot ojos ajenos.

        Criptoanálisis. Técnicas para deshacer, averiguar la información original. Depende de como ha sido cifrado y de la información adicional de la que se disponga en el momento del criptoanálisis. Descifrar sin la clave.

        Criptosistema:

        M  mensaje sin cifrar. Conjunto de todos los posibles mensajes.
        C   mensaje cifrado. Conjunto de todos los posibles mensajes cifrados.
        K   todas las posibles claves.
        E   transformaciones de cifrado.
        D   transformaciones de descifrado.

        Propiedad de un criptosistema para ser utilizado:

        - Un mensaje cifrado ( E ) con una clave K debe poder ser descifrado ( D ) con la clave K.

        Criptosistemas:

        - De clave pública. 2 claves. Una pública y otra privada. Una cifra y otra descifra. Ciframos con la clave pública y desciframos con la privada. Muy costosos de implementar. Coste algoritmico muy grande. Se utilizan con los de clave privada.( asimétricos )

        - De clave privada. Son los más sencillos y antiguos. Una única clave para un proceso concreto. Muy rápidos y fáciles de utilizar. ( simétricos )
 

2. Teoría de la información.

        Entropía:

        Propiedad de la naturaleza (defecto), aumenta en los procesos de conversión de energía. Deterioro de los sistemas energéticos. Implica desorden. Medida del desorden.
        Aumento de la entropía = aumento del desorden.

        Mucha entropía cuando hay mucha imprebisibilidad.

        Probabilidad:  H(x) =  - P(xi)  ( P(xi) )
        En general, para N :   0 < H < ( N )

        Cantidad de información:

        Cantidad de información que x tiene sobre y como:

        I ( x, y ) = H ( y ) - H ( y | x )

        Un criptosistema seguro de Sanon : I ( c , m ) = 0 . El hecho de conocer c no es ninguna ventaja si no sabemos nada de m, esto nos da un sistema muy seguro. Para que pase, el cardinal de c tiene que ser igual al cardinal de m.

        Técnicas básicas para ocultar la redundancia:

        - Confusión. Intenta ocultar la relación directa entre c y m, entre el texto plano y el cifrado.

        - Sustitución. Sustituir en el texto plano un símbolo por otro.(sustitución)

        - Difusión. Diluir la redundancia del texto por todo el texto cifrado. (trasposición)
 

3. Criptografía clásica.

        - Método César:  Alfabeto desplazado n cifras.

        - Algoritmo monoalfabético:
            - malo porque siempre se cambia una letra por otra, no varian los cambios, se basa en niveles.
            - se ataca por fuerza bruta.
            - se pueden medir las probabilidades en que salen las letras.

        - Algoritmo polialfabético: Vigenere.
            - desplazamos el alfabeto actual tantas veces como nos indican los números, así, quitamos las probabilidades de  repetición de las letras, pues cada vez la misma letra tiene distintos sustitutos.

        c = ( m + k ) mod 256     donde k es el desplazamiento, c el texto cifrado, y m el mensaje original.

        - Cifrado de transposición:
            - se coge un vector de posiciones de tamaño n y se separa el texto en palabras de ese tamaño, se rotan segun hayamos puesto las posiciones en el vector.

        - Cifrado de cambio filas por columnas:
            - dificil de implementar.

        - Cifrado por bloques:
            - cada cifrado de cada bloque, es independiente de los otros cifrados, solo se usa la misma clave.

4. Criptografía actual.

        Los criptosistemas modernos pueden dividirse en dos grandes categorías en función del tipo y número de claves que utilizan:

• criptosistemas simétricos, también llamados de clave única o de clave privada.

• criptosistemas asimétricos, también llamados de clave pública o de dos claves.

        Criptografía de clave privada ( DES ):

        En estos sistemas se utiliza la misma clave para el cifrado y para el descifrado.
        La seguridad de este tipo de sistemas depende totalmente del nivel de protección de la clave.

        El DES se basa en la combinación de permutaciones y sustituciones realizadas sobre bloques de 64 bits de datos usando una clave de 56 bits. En concreto se realizan 16 etapas de un mismo tipo que se resumen en la siguiente figura.

        La información a cifrar se divide en bloques de 64 bits, y sobre cada uno de ellos se repite el mismo proceso. Inicialmente se divide cada bloque en dos de 32 bits, L0 y R0, y se permutan estos.

        Posteriormente se aplican 16 etapas el las que se combina (XOR) cada bloque Li, producido en la etapa anterior, con el resultado de aplicar una función al bloque Ri en base a 48 bits de la clave inicial, Ki+1, dando lugar al bloque Ri+1.

        En una última etapa, se deshace la permutación inicial reuniendo los dos bloques resultantes para dar lugar a la salida cifrada.

        La función f se basa, entre otros mecanismos, en una serie de tablas de permutación (P-boxes) y sustitución (S-boxes) cuidadosamente elegida para garantizar el máximo de seguridad y el hecho de que pueda utilizarse tanto para el cifrado como para el descifrado.

        Así pues, el algoritmo DES es reversible, es decir, puede aplicarse el mismo proceso tanto para el cifrado como para el descifrado. Además puede utilizarse la misma clave para realizar ambos procesos, lo que lo convierte en un proceso simétrico. Si introducimos un texto en claro m en el sistema, y utilizamos una clave k, obtendremos un texto cifrado c. Si introducimos el texto c en el sistema, y utilizamos la misma clave k, volveremos a obtener el texto en claro m. Para ser exactos, la clave k da lugar a 16 claves de 48 bits que se utilizan en cada una de las 16 etapas del método. Si para el proceso de cifrado estas claves se utilizan en un orden, para el descifrado deben utilizarse en el orden contrario.


 
 

        El criptosistema DES puede utilizarse en 4 modos distintos en función de que se quieran obtener ciertas características, tales como poder transmitir a través de canales con ruido, autentificar el mensaje resultante, poder descifrar sólo una parte del mismo, etc.

        Los cuatro modos de operación del DES son:

• ECB (Electronic Code Book)

• CBC (Cipher Block Chaining)

• CFB (Cipher Feedbak)

• OFB (Output Feedbak)


Modo ECB

        En modo ECB el texto en claro es dividido en bloques de 64 bits que se cifran uno a uno y por separado usando el DES. La concatenación de los bloques cifrados da lugar al texto cifrado.

        Este modo tiene el problema de que pueden eliminarse porciones del texto cifrado sin que se note, esto es, puede ocurrir que si se conocen las características y posición de cierta información en el texto en claro, ésta puede eliminarse del texto cifrado sin impedir un correcto descifrado del mismo.

        Por otro lado, este modo de funcionamiento tiene la ventaja de que funciona bien en canales con ruido. Un fallo en la transmisión tan solo afecta a un bloque de 64 bits, no al mensaje completo.

        Este modo suele utilizarse para cifrado de claves.

Modo CBC

        En este modo, antes de cifrar cada bloque de 64 bits, se le aplica una XOR sobre el bloque cifrado anterior. El primer bloque se combina con un valor conocido. De este modo, se produce un encadenamiento (chaining) entre los distintos bloques, y el resultado de cifrar cada uno de ellos depende de todos los anteriores.

        Debido a esta última característica, el último bloque del texto cifrado puede actuar como firma digital o checksum del resto, permitiendo certificar que no ha sido alterado.

        En este modo de funcionamiento un error en el texto cifrado tan solo afecta al descifrado de dos bloques.

        Este modo suele utilizarse para cifrar y autentificar documentos.

Modo CFB

        En este modo se mantiene una cola de caracteres. Se cifran bloques sucesivos de 64 bits de la cola. El byte más significativo del resultado se combina (XOR) con el siguiente byte en claro para dar lugar al byte cifrado a transmitir. Además este último byte se reintroduce en la cola provocando un desplazamiento de su contenido.

        Este método permite descifrar cualquier parte del texto cifrado sin conocer el resto. Además, tanto este modo como el siguiente realizan el cifrado a nivel de carácter, de modo que el texto cifrado va surgiendo de modo continuo (stream mode) y no por bloques.

        Este modo suele utilizarse para cifrar caracteres individuales.

Modo OFB

        Funciona de modo análogo al CFB, pero el byte realimentado en la cola es directamente el más significativo del cifrado de la misma.

        Dado que un error en un bit del texto cifrado, este tan solo afecta a un bit en el texto descifrado, por lo que este modo suele utilizarse para comunicaciones vía satélite.







        Criptografía de clave pública ( RSA ):

        En este tipo de sistemas se utilizan dos claves: una clave pública y una clave privada. En un grupo de usuarios, cada uno de ellos posee dos claves distintas:

• La clave pública, P, como su propio nombre indica, puede ser conocida por todos los usuarios del sistema.

• La clave privada, K, tan solo es conocida por su propietario.

        Sea M una parte de un mensaje a cifrar. Podemos cifrarlo utilizando la siguiente función:

        mientras que el proceso de descifrado se realizará con la función

        Los números e y d, en combinación con n se están utilizando como claves de cifrado y descifrado. El texto cifrado con una de ellas puede descifrarse con la otra y viceversa, lo que da lugar a un criptosistema asimétrico.

        Tanto la criptografía de clave pública como la de clave privada tienen sus ventajas y sus inconvenientes. Debido a ello se suelen utilizar para distintos fines, y por tanto los criptosistemas de clave pública no son un sustituto de los de clave privada.

Existen dos razones que hacen que la criptografía de clave pública sea poco adecuada para la transferencia de información cifrada:

1. Los algoritmos de clave pública son lentos. Normalmente son unas 1000 veces más lentos que los de clave privada.

2. Los algoritmos de clave pública son vulnerables a ataques mediante elección de mensaje. Dado que la clave pública es de dominio público, cualquiera puede tratar de cifrar todos los mensajes posibles y comparar los resultados con los textos cifrados. Esto es especialmente posible cuando la cantidad de mensajes posibles es limitada o se tiene alguna información adicional sobre su estructura o contenido.

Debido a las dos razones anteriores, la transferencia de información cifrada se suele realizar mediante criptosistemas de clave privada, mientras los de clave pública se reservan para funciones tales como la transferencia de claves.
 

5. Estándares y aplicaciones criptográficos.

        1. Autenticidad.

           Con la firma digital, se busca la autenticidad del mensaje. Una forma de afirmar que la clave pública de A es de A.
            El remitente, genera el mensaje cifrado con su llave privada. El destinatario lo descifra con la clave pública del remitente. Problemas: lento de generar; si el destinatario, no tiene el programa con el cual se ha cifrado el mensaje, no sabrá lo que le envian.

            Para solucionar el problema de la lentitud, se utilizan las funciones Hash.

            Función Hash:
            - como entrada: mensaje de cualquier tamaño.
            - como salida: mensaje tamaño fijo. ( resumen )
            - dado un mensaje y su resumen, cualquier cambio en el mensaje produce enormes cambios en el resumen.
            - dado un resumen, debe ser extremadamente difícil encontrar un texto que fabrique ese resumen.

        2. Secreto.

            Busca la confidencialidad de la información. El remitente cifra el mensaje con la clave pública del destinatario. Con esto, solo el destinatario propietario de esa clave pública, podra descifrar el mensaje con su clave privada.

        3. Firma electrónica.

           Un mensaje firmado, contiene el mensaje en texto plano mas la funcion hash del mensaje cifrada con la clave privada del remitente. Teniendo así el mensaje, y además, la posibilidad de autentificarlo, puesto que si se puede descifrar la función hash con la clave pública del remitente, y además esa función pertenece a ese mensaje, el remitente es autentificado.

        4. Mensaje autentico y secreto.

            Un mensaje autentico y secreto , es un mensaje firmado y cifrado. Lo mejor en estos casos, es firmarlo primero y luego cifrarlo todo. Y ya lo mejor sería además, enviarlo con otro remitente.
 

        5. Infraestructuras de clave pública (PKI).

        Certificación x509.

            Certificado. Objeto que se utiliza para transportar una clave pública. Contiene diversos campos, como pueden ser:

            - Nombre, Estado, Departamento, Pais, Email, .....

            - Tiene principalmente, 3 partes:
                    Datos del individuo.
                    Datos del emisor del certificado
                    Version, en la cual se incluyen el nº de serie, fecha inicio y fecha fin, referencia a los algoritmos utilizados en él, firma del emisor. Y por supuesto, lleva la clave pública del individuo.
 

            Certificado autofirmado.

            Certificado firmado con la clave privada que corresponde a la clave pública que va en el certificado.

            En teoría, los certificados tendrían que ir en el hardware.
            En la práctica, ir directamente a la autoridad certificadora, por internet, pero no es seguro.
            Punto crítico, saber si son ciertos los certificados de las autoridades que nos da el Internet Explorer, o el Netscape.
 

        Autoridades certificadoras.

            Entidad que se dedica a emitir certificados. Tiene unos certificados raiz, dependiendo del nivel de seguridad, firma con uno o con otro.

            CPS : Documento legal en el que se indica lo que una autoridad certificadora certifica.

            RSA labs saca el PKCS #12 objeto para el transporte de claves y certificados.

        Perdida de la clave privada.

            La autoridad certificadora no emite dos certificados iguales. Por lo tanto, cuando se pierda la clave privada, el cliente solicita la invalidación del certificado.
            En la base de datos de la autoridad certificadora está anulado (revocado), pero el problema es como se entera el mundo?

            Para solucionar esto, hay dos "intentos":

                - CRL : lista de números de serie de certificados revocados, con el nombre del propietario y firmado por la autoridad certificadora.
                        El problema es que es muy costoso tener que bajar toda la lista para comprabar cada vez que nos hace falta.

                - Sellado de tiempos : Un organismo que certifica a que hora le llegó, luego lo devuelve.