sábado, 14 de marzo de 2015

criptografía - criptosistemas simétricos

 Cifrado de Feistel es un método de cifrado en bloque con una estructura particular. Debe su nombre al criptógrafo de IBM Horst Feistel. También es conocida comúnmente como Red de Feistel. Un gran número de algoritmos de cifrado por bloques lo utilizan, siendo el más conocido el algoritmo Data Encryption Standard(DES). Las redes de Feistel presentan la ventaja de ser reversibles por lo que las operaciones de cifrado y descifrado son idénticas, requiriendo únicamente invertir el orden de las subclaves utilizadas.Este algoritmo se denomina simétrico por rondas, es decir, realiza siempre las mismas operaciones un número determinado de veces (denominadas rondas). Los pasos de la red de Feistel son entre algunos mas:
  1. Se selecciona una cadena, N, normalmente de 64 o 128 bits, y se la divide en dos subcadenas, L y R, de igual longitud (N/2)
  2. Se toma una funciónF, y una clave Ki
  3. Se realizan una serie de operaciones complejas con F y Ki y con L o R (solo uno de ellas)
  4. La cadena obtenida se cambia por la cadena con la que no se han realizado operaciones, y se siguen haciendo las rondas.
Las operaciones básicas de una red de Feistel son las siguientes: se descompone el texto plano en dos piezas iguales, (L_0R_0). Para realizar el cifrado en cada ronda i=1,2,\dots,n, se calcula
L_i = R_{i-1}
R_i = L_{i-1} \oplus f(R_{i-1}, K_{i})
donde f es una función y K_i son cada una de las subclaves aplicadas a cada iteración. El texto cifrado viene dado por la concatenación de L_n y R_n.
Para el descifrado las operaciones que hay que realizar son:
R_{i-1} = L_i
L_{i-1} = R_i \oplus f(L_i, K_i)
Una ventaja de este modelo es que la función f usada no tiene por qué ser reversible, pudiendo ser todo lo complicada que se desee, esta cualidad permite a los criptógrafos concentrarse en la seguridad de dicha función sabiendo que el proceso de descifrado está garantizado ya que la propia estructura de la red de Feistel es reversible. Para ello únicamente requiere que se invierta el orden de las subclaves utilizadas.
Una variación del esquema de Feistel son las redes de Feistel no balanceadas en las que las mitades del texto en plano L0 y R0 son de diferente longitud. Un algoritmo de cifrado que utiliza esta variación es el algoritmo Skipjack.

Criptosistema - Un sistema criptografico esta formado por cinco conjuntos (M,C,K,E,D):
M - Texto plano (legible).
C - Criptografico (mensaje cifrado).
K - Conjunto de llaves.
E -  Conjunto de transformaciones de cifrado sobre M y dan como resultado C.
Existen dos grupos de criptosistemas:
De clave privada (o simetricos) - Solo existe una llave para cifrar y otro para descifrar, la llave es secreta.
De clave publica (o asimetrico) - Son dos llaves una privada y otra publica. La publica sirve para cifrar el mensaje y la privada  para descifrar. Las llaves van por parejas, solo se puede descifrar con la privada lo que ha cifrado su llave publica. Dada una llave publica no se puede obtener la privada.
Entropia
    Es la medida de desorden de la información, alcanza el valor maximo cuando  hay la misma     probabilidad de un suceso.
La entropia es la suma de los productos de la probabilidad de cada suceso por su cantidad de información.

Entropia condicionada.
 
 



Indice de lenguaje
k-> longitud del mensaje en nº de caracteres
Redundancia
    Indica la cantidad de información que esta repetida.



Desinformacion de un criptosistema
C no aporta información sobre M
Distancia de unicidad
    La longitud minima de mensaje cifrado que aproxima H(K/C) a 0. Es decir, la cantidad de mensaje cifrado para descubrir la clave.
Tecnicas para ocultar la redundancia
    CONFUSION - trata de confundir y ocultar la relacion entre el texto cifrado y el original.
        Cambia  unos caractere por otros.
    DIFUSION - diluye la redundancia del lenguaje repartiendola a lo largo del texto cifrado.
        La trasposición cambia de posicion a  los caracteres.
 
 

Aritmetica Modular
    Es la aritmetica que trabaja con un numero limitado de numeros. n es el numero mas alto.
    a,b,n pertenecen a N y k pertenece a Z
    a es congruente con b modulo n si a=b+k·n
Algoritmo de Euclides (basico)
    Algoritmo para calcular el maximo comun divisor de dos numeros:

g0=a;
g1=b
while(g1!=0){
    x=g0 % g1;
    g0=g1;
    g1=x;}mcd -> g0
 
Inversas
Si m.c.d(a,n)=1 existe a-1 en modulo n.

Metodos de cifrado clasicos
Existen dos grupos:
    Monoalfabeticos: No desordenan los caracteres sino que un alfabeto se convierte en otro. Metodo por sustitución. Establecen un alfabeto y este se mantiene en todo el mensaje. El alfabeto alternativo es la clave.
Un ejemplo es el metodo Cesar: Desplazamiento del alfabeto en una cantidad de caracteres.
    C=m+k
Para k=3,
A B C D E F G ...
D E F G H I  J ...
Existe un problema ya que si se realiza una estadista a un texto sin cifrar y otra del cifrado se puede conseguir descifrarlo.
Una solución a este problema es el metodo polialfabetico
Polialfabetico de Vigenere: Se utilizan varias tablas de desplazamiento, es decir utilizar varias claves ciclicamente.
Clave 594
Caracter 1:  -> desplazamiento 5
Caracter 2:  -> desplazamiento 9
Caracter 3:  -> desplazamiento 4
Caracter 4:  -> desplazamiento 5
etc,etc
 

Criptografia Actual
Cifrado Simetrico:
Criptografía de Clave Privada
DES (Data Encryption Standard)
Codifica en bloques de 64 bits utilizando claves de 56 bist (8 bits se reservan para control de         paridad). Se basa en la red de Feistel, que funciona de esta manera:
Para descifrar un texto encriptado con DES es necesario probar todas las claves, pero en la actualidad una clave de 56 bits no es fiable, por lo que se utiliza el Triple-DES con claves de 168 bits.
 

Si el texto a cifrar contiene patrones repetitivos el texto cifrado tambien los tendra,  para evitar esto se utiliza el cifrado por bloques:

    CBC( Cifer Block Chaining )
    El mensaje se divid en bloques de 64 bits, el primer bloque se mezcla con un vector de inicializacion y se cifra. Este bloque cifrado se mezcla con xor con el siguiente bloque y se cifra el resultado, se continua hasta finalizar con todos los bloques. El cifrado de un bloque esta condicionado por los bloques anteriores.

Modo de operacion CBC. A: codifcacion, B: decodificacion.






Este metodo no puede empezar a cifrar hasta no tener un bloque de información, por lo que no es util por ejemplo en una conexion telnet donde un comando no tiene por que tener ese tamaño.
CFB (Cipher-Feedback Mode)
    Se carga un registro de desplazamiento con un vector de inicialización. Codificamos el registro
con un algoritmo simétrico y cogemos sus n bits de mayor peso (donde n es el tamaño del bloque
resultante al cifrar), se envia este bloque. Luego desplazamos el registro n bits a la izquierda y ponemos como bits de menor peso el mensaje obtenido.




Cifrado asimetrico
Este tipo de algoritmo tiene dos llaves: publica y privada. Lo que cifra una lo descifra la otra y viceversa.
Las dos utilidades del difrado de llave publica son:
PRIVACIDAD: El emisor encripta el mensaje con la clave publica del receptor (cifrado). Este mensaje solo puede ser leido por el receptor ya que se necesita la clave privada de este para hacer el texto legible. Con este metodo se asegura la privacidad ya que nadie puede ver el contenido del mensaje excepto el interesado.
AUTENTICIDAD: El emisor encripta el mensaje con su clave privada (firmado). El receptor lo desencripta con la clave publica del emisor. Con enste metodo se asegura que el mensaje viene del emisor (autenticidad) ya que este es el unico que posee su clave privada.
SECRETO Y AUTENTICIDAD: Primero el emisor firma y luego cifra el mensaje.

RSA

    La llave publica esta formada por dos numeros e y n.
    La llave privada esta formada por dos numeros d y n.
n es la multiplicacion de dos primos fuertes.
e y d son numeros inversos en aritmetica modulara en modulo n.
El cifrado se lleva a cabo utilizando la expresión:
El descifrado se lleva a cabo utilizando la expresión:
La longitud minima recomendable para una llave de RSA es 1024 bits.
El RSA es 1000 veces mas lento que el DES. Para hacer el metodo mas rapido se utiliza unallave de sesion. El mensaje se encripta con DES y esta llave de sesion. El emisor envia el mensaje encriptado con DES y la llave de sesion cifrada con la llave publica del receptor. Para descifrarlo primero el receptor debe obtener la llave de sesion con su clave privada, y luego se descifra el mensaje con esta.

Una manera de asegurarse de que un mensaje no es modificado en un punto intermedio entre el emiser y el receptor es con la funcion resumen. Dado un mensaje cualquiera esta funcion da como resultado una cadena de tamaño fijo. Tiene dos propiedades:
    - Si se cambia el mas minimo detalle en la entrada produce un cambio muy grande en la salida.
    - Dado el resultado de una funcion es imposible obtener el texto original.

Autentificación de llaves publicas:
    Existen dos metodos:
    - Contacto directo con la persona. La entrega se debe hacer de forma fisica.
    - Existe un tercero de confianza que garantiza que una clave publica pertenece a esa persona.
Certificados X509
    Es una estructura de datos que relaciona una llave publica con una descripcion. Son objetos autofirmados.
    Estructura:
  •    Versión
  •    Número de serie
  •    Identificador del algoritmo empleado para la firma digital
  •    Nombre del certificador
  •    Periodo de validez
  •    Nombre del sujeto
  •    Clave pública del sujeto
  •    Identificador único de certificador
  •    Identificador único de sujeto
  •    Extensiones
  •    Firma digital de todo lo anterior generada por el certificador.

No hay comentarios:

Publicar un comentario