Primero, debemos definir
los conceptos de Criptografía y de Criptoanálisis:
Redundancia de un lenguaje:
la entropía de un mensaje, partido el tamaño del mensaje(K).
Indice Real: rk=Hk(M)
/ k M:conjunto de todos los mensajes
Indice absoluto R=log2(m)
m:número de letras
Redundancia: D=R-rk
Máxima compresión=
D/R.
Cantidad de información
que 'x' contiene sobre 'y'.
I(X,Y)
= H(Y) - H(Y/X)
Criptosistema seguro de
Shanon o ideal.
I(C,M)
= 0
Para que esto se cumpla
el cardinal de las claves debe de ser como mínimo igual al cardinal
del numero de mensajes. En la práctica es 'casi' imposible de realizar.
Desinformación de
un sistema :
H(M/C)
si H(M) = H(M/C) criptosistema ideal
Longitud mínima de
mensaje cifrado que lleva H(K/C) a cero, la cantidad mínima de mensaje
para conocer la clave.
Técnicas básicas para ocultar redundancia :
a,b,n pertenecen a los naturales.
'a' equivalente a 'b' (mod n) si a = b + kn
'm' divide a 'a' ( m|a )
Máximo divisor de
a,b
si m|a y m|b entonces m|(a-kb)
equivalente a m|(a mod b)=c entonces
m|( b mod c )
Esto nos sirve para conocer los números primos entre si. Dos números 'a' y 'n' son primos entre si, si el máximo común divisor de 'a' y 'n', mcd(a,n), es el 1, esto quiere decir que 'a' tiene inversa en modulo 'n' (a-1) : a·a-1=1 ( mod n )
Conjunto de residuos( en mod n ): todos lo números del conjunto.
CR={ 1,2,3,4,..., n-2,n-1}
Conjunto de residuos reducido( en mod n ): todos los números primos entre si.
CRR( de n=12 )={ 1,5,7,11 }
Cardinal
del CRR= función de Euler
Teorema
mcd(a,n)=1
a =1 ( mod n )
El teorema anterior se utiliza
para realizar el algoritmo de exponenciación rápida y este
a su vez se utiliza para el cifrado, como los conceptos que ahora describiremos.
No
se conoce ninguna formula que calcule números primos, pero si que
se pueden intentar conocer por la fuerza bruta, según este método
para conocer si un número es primo se divide por 2 y luego por los
números impares hasta la raíz cuadrada del mismo. Otro método
es el test de Lehmann ( ejemplo ) :
Se quiere saber si 'p' es primo
a<p
b=a ( mod p )
Si b distinto de 1 y de p-1 entonces no es primo, sino 50% + efectivo.
Para conseguir un número primo se crea un número muy gordo y se le saca un '1' al principio y luego se 'divide' por los números primos que hay entre el 1..2000 y para terminar se le aplica el test de Lehmann de 10 a 20 veces.
Otra definición importante es la de primos fuertes:
Dos números p,q son primos fuertes si:
Los
sistemas de cifrado clásicos son poco viables para la seguridad
computacional pero nos dan una idea bastante clara de como funciona el
concepto de cifrado.
|
B | C | D | E | ... | V | W | X | Y | Z |
D | E | F | G | H | ... | Y | Z | A | B |
|
HOLA se transforma en KROD.
A | B | C | D | E | F | ... | W | X | Y | Z |
D | E | F | G | H | I | ... | Z | A | B | C |
G | H | I | J | K | L | ... | C | D | E | F |
C | D | E | F | G | H | ... | Y | Z | A | B |
AVE se transforma en DBG.
5 | 6 | 1 | 2 | 4 | 3 |
Ahora pasaremos a hablar sobre el cifrado moderno( computacional ) el primer algoritmo que observaremos es el DES, que funciona de la siguiente manera :
ECB( Electronic Code Block )
En modo ECB el texto en claro
es dividido en bloques de 8 bytes 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 puede aparecer una información, que se pretendía tener
oculta, dado que el los bloques iguales se cifran de igual forma generando
información redundante.
CBC( Cifer Block Chaining )
En este modo, antes de cifrar
cada bloque de 8 bytes, se le aplica una XOR sobre el bloque cifrado anterior.
El primer bloque se combina con un valor conocido, vector de inicialización.
De este modo, se produce un encadenamiento entre los distintos bloques,
y el resultado de cifrar cada uno de ellos depende de todos los anteriores.
En este modo de funcionamiento
un error en el texto cifrado tan solo afecta al descifrado de dos bloques.
A continuación veremos como funciona el CBC, IV es el vector de
inicialización.
CFB( Cifer FeedBack )
En este modo se mantiene una cola de caracteres. Se cifran bloques sucesivos de 8 bytes 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, este modo realiza el cifrado a nivel de carácter, de modo que el texto cifrado va surgiendo de modo flujo (stream mode) y no por bloques.
Ahora hablaremos de RSA,
un algoritmo de clave pública, este algoritmo es unas 1000 veces
mas lento que el DES y además facilita la Criptología,
puesto que se pueden crear textos cifrado. Pero tiene la ventaja de que
la clave es pública y por lo tanto cualquier puede enviarte información
cifrada, de una forma bastante segura.
Ahora hablaremos de su funcionamiento,
se basa en una serie de propiedades teóricas de la aritmética
modular y de los números enteros, lo que lo convierte en un algoritmo
bastante robusto y consistente. El primer principio en el que se
basa es el siguiente,
siendo 'e', un número pequeño, el inverso de 'd', un bastante
grande y
=(p-1)·(q-1)
donde 'p' y 'q' son primos fuertes. Teniendo este par de números
el cifrado se consigue de la siguiente forma
donde 's' es el cifrado y 'M' es el mensaje y el descifrado
de esta otra
.
En estas lineas hablaremos sobre la firma electrónica o digital, la firma electrónica tiene la misma función que la firma analógica, esta es la de verificar la identidad del emisor del mensaje, y además también la de proteger los datos, para esto en informática se utilizan los algoritmos de clave pública con el par de claves, de la siguiente forma :
Para solucionar el problema de la falta de certeza, por parte del emisor se pueden utilizar dos soluciones, que son la siguientes :
Por último hablaremos
de los estándares RSA, o los PCKS, primero para conseguir un certificado
se deben de dar los datos personales, seguidamente se debe elegir su formato
y por último se deben de generar un par de llaves( recomendado,
generadas por el usuario ). Después la CA valida los datos del usuario,
DN, y genera el certificado, incluyendo un distintivo suyo, para que se
pueda validar que el certificado ha sido realmente creado por esa CA.
Si una persona quiere anular
un certificado, o pierde la clave del mismo puede revocar el certificado,
cuando se realiza esta acción se guarda tu DN con un número
de serie, en el CRL(Certificate Revocate List), donde se encuentran todos
los certificados revocados.