Trabajo Teoría - Apuntes de Clase
[ Francisco Badal Pitarch ]
 

Tema 2
Fundamentos de criptografía.





1. Teoría de la información.

La criptografía es "el arte" de ocultar la información, se basa en una serie de métodos para transformar la información de modo que no pueda ser vista por ojos ajenos.
El criptoanálisis son una serie de técnicas para descifrar esa información, depende de como a sido cifrada y de la información adicional que se disponga.
Se denomina criptosistema a una quíntupla de 5 elementos:
M C K E D

- M: el conjunto de todos los posibles mensajes.
- C: el conjunto  de todos los mensajes cifrados.
- K: el conjunto de todas las posibles claves.
- E: el conjunto de las transformaciones de cifrado.
- D: el conjunto de las transformaciones de descifrado.
La propiedad que debe cumplir un criptosistema para que sea útil es que:

Existen dos tipos de criptosistemas:

- Clave privada: son los más sencillos y antiguos, existe una única clave, son muy rápidos y fáciles de implementar.
- Clave publica: existen dos claves, la publica y la privada, a una clave privada le corresponde una y solo una clave publica. Si nos envían un mensaje cifrado con nuestra clave publica solo nosotros podemos descifrarlo con nuestra clave privada. Al revés sirve para confirmar que quien nos envía el mensaje es quien dice ser. Su implementación es  muy costosa y son más lentos.

1.1. Entropía.

El concepto de entropía es una propiedad de la naturaleza, no se sabe muy bien lo que es pero consiste en que aumenta la entropía que degenera la energía, es la medida del desorden, en un sistema de información diremos que hay mucha entropía cuando hay mucha imprevisibilidad debido al desorden o a la uniformidad.

Cantidad de información:

Entropía:

De manera que cuando un sistema es menos predecible la entropía es mayor, y cuando un sistema es más predecible esta es menor.

Redundancia de un lenguaje determinado de longitud k:

indice real
indice absoluto
redundancia

2. Matemática discreta y problemas computacionales.

RSA. Aritmética modular: trabaja siempre con conjuntos de números restringidos.

- Máximo divisor de a b:
m / a
m / b     -->       m / (a-kb)    -->  m / (a mod b)
   Algoritmo:
   g0 = a
   g1 = b
   mientras (g1 <> 0)
   {
      x = g0%g1
      g0 = g1
      g1 = x
   }
   g0

- Inversas:
mcd (a, n) = 1  --> a tiene inversa modulo n
   ( mod n)

Conjunto cardinal de residuos: CR = {1,2,...,n-1}
Conjunto reducido de residuos: para n = 12    CRR={1,5,7,11}
Cardinal CRR = a la función de Euler 


mcd(a,n)=1     p es primo ----->  ap-1 = 1

formula matemática de las inversas

- Exponenciación rápida:

   Algoritmo:
   z = b
   x = a
   r = 1
   mientras ( z > 0 )
   {
     Si z % 2 = 1
       r = r * x
     x = x * x
     z = z / 2
   }
   r

- Calculo de números primos:
No se conoce ninguna formula que calcule números primos, para saber si un numero es primo se divide por 2 y por números impares, hasta la raíz cuadrada del mismo (fuerza bruta).
   Test de Lehmann:
   para saber si p es primo
   a < p

   Si b <> 1 y b <> p-1 ----> no es primo
   si no es así hay un 50% de probabilidad de que sea primo.

Para sacar un numero primo se crea un numero muy grande y se le saca un 1 al principio, luego se divide por los números primos que hay entre el 1 y el 2000, y para acabar de verificar que es primo se le aplica 10 o 20 veces el test de Lehmann.

- Primos fuertes:
p, q    ( nº = p q )
Tal que:
1) mcd [(p-1), (q-1)] ---> sea pequeño
2) p-1 y q-1 tienen algún factor primo >> (p', q')
3) p'-1 y q'-1 tienen algún factor primo >> (p', q')
3) p'+1 y q'+1 tienen algún factor primo >> (p', q')

3. Criptografía clásica.
- Por transposición, consiste en desplazar los caracteres del mensaje, dependiendo el desplazamiento de la clave. Como ejemplo el método de la vara de mando, se escribe el mensaje en una tira te papel enrollada en una vara, de tal manera que sin enrollarlo en la vara este no se puede leer.

- El método Julio "Cesar", cifra por sustitución, dependiendo de la clave sustituye las letras del alfabeto, por ejemplo, con clave d, sustituye la a por la d, la b por la e, ... Formula: C = (m+3) mod 256.

- El método Vigenère, también cifra por sustitución, pero es polialfabético, la clave consta de diferentes valores, y se cifra tomando sucesivamente cada uno de ellos. Formula: C = (m+k) mod 256.

4. Criptografía actual.
4.1. Criptografía de clave privada (DES, IDEA, RC4).

Son sistemas de criptografía simétrica, su característica principal es que se utiliza la misma clave tanto para encriptar como para desencriptar, por eso se denominan simétricos.
Toda la seguridad de estos sistemas está basada en la llave simétrica, por lo que es misión fundamental tanto del emisor como del receptor conocer esta llave y mantenerla en secreto. Si la llave cae en manos de terceros, el sistema deja de ser seguro, por lo que habría que cambiar de llave. Por lo tanto la principal desventaja de los métodos simétricos son la distribución de las claves, el peligro de que muchas personas deban conocer una misma clave y la dificultad de almacenar y proteger muchas claves diferentes.

Los algoritmos simétricos encriptan bloques de texto del documento original, y son más sencillos que los sistemas de clave pública, por lo que sus procesos de encriptación y desencriptación son mucho más rápidos.

4.2. Criptografía de clave pública (RSA).

También  llamada asimétrica, se basa en el uso de dos claves diferentes, claves que poseen una propiedad fundamental: una clave puede desencriptar lo que la otra ha encriptado.
Una de las claves, denominada clave privada, es usada por el propietario para encriptar los mensajes, mientras que la otra, llamada clave pública, es usada para desencriptar el mensaje cifrado.
Las claves pública y privada se generan siempre a la vez, por parejas, estando cada una de ellas ligada intrínsecamente a la otra, de tal forma que si dos llaves públicas son diferentes, entonces sus llaves privadas asociadas también lo son, y viceversa.

Los algoritmos asimétricos están basados en funciones matemáticas fáciles de resolver en un sentido, pero complicadas de realizar en sentido inverso, salvo que se conozca la clave privada. Ambas claves están relacionadas matemáticamente, pero esta relación debe ser lo suficientemente compleja como para que resulte muy difícil obtener una a partir de la otra. Este es el motivo por el que normalmente estas claves no las elige el usuario, si no que lo hace un algoritmo específico para ello, y suelen ser de gran longitud.
La clave privada debe ser mantenida en secreto por su propietario, ya que es la base de la seguridad del sistema, la clave pública es difundida para que esté al alcance del mayor número posible de personas.

Con este sistema, para enviar un documento con seguridad, el emisor lo encripta con la clave pública del receptor y lo envía por el medio inseguro, este documento está totalmente protegido en su viaje, ya que sólo se puede desencriptar con la clave privada correspondiente, conocida solamente por B. Al llegar el mensaje cifrado a su destino, el receptor usa su clave privada para obtener el mensaje en claro.

La principal ventaja de los sistemas de clave pública frente a los simétricos es que la clave pública y el algoritmo de cifrado pueden ser de dominio público y que no es necesario poner en peligro la clave privada por los medios inseguros, ya que ésta está siempre oculta y en poder únicamente de su propietario. Como desventaja, los sistemas de clave pública dificultan la implementación del sistema y son mucho más lentos que los simétricos. También existe el problema de tener la seguridad de que la clave pública que nos pasan es realmente de quien dice ser.

5. Firma digital.

El proceso de la firma digital consta de dos partes:

1. El proceso de firma: el emisor encripta el documento con su llave privada, enviando al destinatario tanto el documento en claro como el encriptado.

2. El proceso de verificación de la firma: el receptor desencripta el documento cifrado con la clave pública del emisor  y comprueba que coincide con el documento original, lo que atestigua que el emisor es quien dice ser.

El método de la firma digital no sólo proporciona autenticidad al mensaje enviado por el emisor, si no que también asegura el no repudio, ya que sólo el dueño de una llave privada puede encriptar un documento de tal forma que se pueda desencriptar con su llave pública, lo que garantiza que ha sido el emisor y no otro el que ha enviado dicho documento.
Así mismo proporciona integridad de datos, ya que si el documento fuera accedido y modificado en el camino el resumen del documento cambiaría también.

5.1. Funciones hash.

Si queremos firmar un documento extenso tenemos un problema, que tardaríamos mucho tiempo, para solventar este problema aparecen las funciones hash, que son unas funciones matemáticas que realizan un resumen del documento a firmar. Su forma de operar es comprimir el documento en un único bloque de longitud fija, bloque cuyo contenido es ilegible y no tiene ningún sentido real. Tanto es así que por definición las funciones hash son irreversibles, es decir, que a partir de un bloque comprimido no se puede obtener el bloque sin comprimir. Estas funciones son de dominio público.

Por lo tanto la firma digital será un mensaje resumido mediante una función hash y encriptado con una llave privada.

Su mecanismo es el siguiente:

1- El emisor aplica una función hash conocida al documento, con lo que obtiene un resumen hash del mismo.
2- Encripta dicho resumen con su clave privada.
3- Envía al receptor el documento original plano y el resumen hash encriptado.
4- El receptor B aplica la función hash al resumen sin encriptar y desencripta el resumen encriptado con la llave pública de A.
5- Si ambos coinciden está seguro de que ha sido A el que le ha enviado el documento. Si no coinciden, está seguro de que no ha sido A o de que el envío ha sido interceptado durante el medio de envío y modificado.
En el caso de que ambos resúmenes no coincidan puede que el mensaje haya sido alterado en su viaje de A a B.

La función hash que más se utiliza es sha1 de 160 bits, el resumen debe ser de al menos 100 bits, ya que si no es así con fuerza bruta sería fácilmente calculable.

6. Certificados.

Un certificado es una especie de registro que contiene determinados datos, entre ellos:

DN (Distinguiser Name):
  CN=Nombre
  OU=Departamento
     O=Organización
     C=Estado
     L=Localidad
   ST=Provincia
    ...
Email=Dirección correo electrónico

Su estructura es:
___________________
|              DN                  |
|           subject                |
|-------------------------|
|              DN                  |
|             issuer                |
|-------------------------|
|clave pública subject      |
|versión                          |
|nº serie                          |
|fecha                             |
|algoritmos                     |
|firmas issuer                  |
|...                                 |
|__________________|

Un certificado autofirmado es un certificado que se ha firmado con la clave privada que corresponde a la clave pública que incluye el certificado. Para conseguir los certificados se suele recurrir a los paquetes de software, como el Netscape, pero tiene el problema de no saber si realmente esos certificados son correctos.

Para pedir un certificado a la Autoridad Certificadora (CA) se dan los datos personales, se elige la tecnología, el usuario o la CA generan las llaves.
El PKCS12 es un objeto criptográfico para transportar otros objetos criptográficos personales, en el se incluyen la clave privada, publica, ..., y luego te envían una password de forma segura.

CRL (Certificate Revocate List), es una lista de certificados revocados, con los números de serie, el DN de la CA y todo ello firmado por la CA, para no tener que almacenar la lista en nuestro PC y actualizarla semanal o mensualmente se están desarrollando protocolos para la consulta on-line del estado de certificados.
 
 

[volver al indice]