Criptografía
Criptoanálisis son las técnicas para descifrar la información
encriptada.
Criptografía es el arte de ocultar información y se basa
en algoritmos matematicos para hacer que la información quede oculta
Criptosistema: 5 elementos fundamentales:
M | Conjunto de todos los posibles mensajes sin cifrar (texto en claro) |
C | Conjunto de todos los criptogramas (mensajes cifrados) |
K | Llaves que se pueden emplear en un criptosistema |
E | Transformaciones de cifrado que se aplican sobre M y dan C |
D | Transformaciones de descifrado que se aplican sobre C y dan M |
Formula que debe cumplir todo criptosistema: Dk(Ek(m))=m
Hay dos tipos de criptosistemas, los de clave privada o simétricos y los de clave pública o asimétricos.
De clave privada: El texto se cifra y se descifra con la misma clave, con lo cual el destinatario debe conocerla.
De clave pública: Intervienen dos claves, una pública y otra privada. Si se cifra una información con la clave pública solo puede ser descifrada con la clave privada y viceversa.
Entropía
Entropía es la medida del desorden. Cuanta mas probabilidad haya de que ocurra un suceso, menos información me da.
Probabilidad = logP( Xi )
La entropía se calcula de la siguiente manera:
El valor máximo es cuando todas las palabras son la misma.
log en base 2 -> ventaja por el codigo binario. Entonces la Entropía es el número de bits para codificar la información.
Aunque no todos los caracteres tienen la mismas probabilidad de entrar.
Los compresores optimizan la iformación.
Se calculan las probabilidades de aparición y cuanta menos probabilidad
tenga un caracter, se codifica con más bits.
Entropía condicionada:
Probabilidad condicionada:
Saber algo sobre Y nos ayuda a saber algo sobre X.
Cantidad de información:
El criptosistema seguro de Shanon se considera el ideal puesto que la información
entre el mensaje en claro y el cifrado es 0.
I(C,M) = 0
El conocimiento del conjunto C (cifrado) no nos aporta información sobre
el conjunto M (descifrados).
No se suele llegar a conseguir porque se necesitarían tantas claves como
mensajes puede haber.
Haremos que el espacio de claves esa tan grande que se aproxime al ideal.
Indice de un lenguaje:
-Cantidad donde (k=longitud
de caracter)
indice absoluto R=Lg2(N)
Redundancia: D =R-r
Indice de redundancia:
Redundancia | ![]() |
Indice de redundancia |
Desinformacion de un criptsositema: Entropía condicionada del conjunto
de los mensajes a la condicionada por los mensajes encriptados.
H(M/C)
H(M)=H(M/C)
Distancia de unicidad: Longitud minima de mensaje cifrado que aproxima el valor a 0 (cantidad de mensaje cifrado necesiario para descubrir la llave). En el criptosistema de Shanon, esta distancia es infinita.
3 técnicas para crear sistemas criptográficos:
-Confusión: Sustituir para ocultar la relación entre el teto claro
y el otro.
-Difusión: Diluir la redundancia del lenguaje repartiéndola a
lo largo del texto cifrado (transposición)
Estos son los 2 princpios básicos de toda criptografía.
Congruencia módulo n.
a,b son conguentes [a=b(mod n)] cuando a=b+k·n para cualquier k perteneciente a Z
Algoritmo de Euclides (básico):
mcd de dos números:
si m|a y m|b entonces m|(a % b)
Inverso:
a·b=1( mod n) Es posible al hacer el módulo al resultado de a·b
y de 1
Si mcd(a,n)=1 entonces 'a' tiene inversa.
CRR: Conjunto de números que son primeros relativos con mcd(a,n)=1 ya que son primos entre si.
Zn numero de elementos de CRR
Ø(n) = |Zn|
Son todos los números primos con n.
Más sencillos, cifrados monoalfabéticos que no desordenan los símbolos sino que tiene una correspondencia con otro alfabeto que es la clave del cifrado (alfabeto alternativo).
-César: Dado el orden del alfabeto, se fabrica otro que esl desplazamiento
del original un número de caracteres (originalmente 3)
c=m+k
-*Problema: si hacemos analisis probabilistico, el resultado de la salida = entrada.
- Cifrador polialfabético vigenere: Carácter i-ésimo se
obtiene desplazando la clave i-ésima
-Dispersión: No cambian el valor del carácter sino que lo colocan
en otro lado (permutaciones)
-DES: Algoritmo por bloques de 8 bytes=64 bits. Cada 8 bits, 1 de paridad =>56
bits llave. Se puede implementar con puertas lógicas y su evolución
es el AES.
Se le da un patrón estático, y tras apsar el algorítmo,
se ve el mismo patrón, cambiado pero apreciable.
-ECB: Se cifran en grupos de 8 bytes.
-CBC: El mensaje se divide en bloquecitos del tamaño que necesita el
decodificador. Se suma a un vector de inicializacion, se le aplica el DES y
sale el texto encriptado que se lo sumamos al siguiente bloque.
Modo de cifrado encadenado.
Si el vector es secreto, actúa como otra clave pero no sirve porque podemos
descifrar el resto del mensaje menos el primer bloque si no lo tenemos.
Descifrado:
Cada mensaje solo depende del bloque actual y del anterior.
El CBC es el modo por defecto de encriptado.
Registro de desplazamiento de 8 puestos.
Se mete un carácter, se empujan los otros, se mete al DES, y el resultado,
el último carácter lo sumamos a un carácter del mensaje
y el resultado pasa al siguiente.
2 llaves, una pública y una privada que están relacionadas por una función.
1) Lo que se cifra con una lalve se descifra con la ora y solo con la otra.
2) Es un algoritmo reversible, puedes usar tanto la pública como la privada
para cifrar pero para descifrar ha de ser la contraria a la del cifrado.
Si enviamos con la clave privada de A, se descira con la pública de modo que puede leerlo cualquiera pero se asegura que lo ha enviado A.
Dkb(Dpa(m)):
Con esto sabemos que es de A y además sólo B puede leerlo pero
es mas correcto hacerlo al revés:
c=Epb(Eka(m)
m=Dkb(Dpa(c))
Así sólo lo abre B y además sabe que lo ha enviado A
Cogemos p y q numeros primos secretos y n=p·q público.
e | 3 |
65353 |
(p-1)(q-1)
e es primero relativo con el producto (no comparte ningun factor)
Si no comparte ningún factor, existe la inversa.
Existe d / e·d = 1en mod(p-1)(q-1)
e·d = (p-1)(q-1)+1
c=m^e en mod n
c^d en mod n = (m^e) ^d) m^ed = m^((p-1)(q-1)+1)=m·m^(p-1)(q-1)=m·m^Ø(n)
Si m<p y m<q entonces m y n son primos entre sí.
Secreto: c=Epb(m)
Autentico: c=Eka(m)
Secreto y Autentico: c=Epb(Eka(m))
Inconvenientes técnicos:
- Los algoritmos de clave publica como el RSA son mas lentos que los de clave
privada (DES).
Solución: Se genera una llave S aleatoria (de sesión) gorda, se
cifra el mensaje con el DES con llave S (rapido) y se envia el mensaje y la
llave cifrada (con RSA) al destinatario.
Es DES S(m) |
Epb(s) |
c1 |
c2 |
El receptor descifra la clave S y luego se descifra el mensaje con esa clave.
Autenticidad:
Inconveniente anterior.
Si alguien no puede descifrarlo no lo lee.
Función resumen o hash: Función no inyectiva (no tiene inversa) que dado un mensaje cualquiera, el resultado es una cadena de tramaño fijo.
Propiedades:
1ª)El minimo cambio en la entrada produce una salida distinta.
2ª)Dado un resultado de función (hash) es imposible construir un
texto de entrada que de ese hash.
Si alguien me altera el texto, la función es diferente por tanto sé que ha sido modificado
Funciones hash: md5, sha1, MAC
Para enviar mail firmado
H(m)
m | Eka(H(m)) |
T1 | T2 |
Se envía el mensaje y el resultado del hash encriptado con la llave privada de A. Cualquiera puede ver el mensaje pero si lo cambia, el hash no coincidirá
¿Cómo sabemos que la llave pública de A es de A?
Soluciones verticales y horizontales.
-Horizontales: PGP:
> Alguien te garantiza que una clave pública es de una persona (Los
amigos de mis amigos son mis amigos)
> Una persona firma con su llave privada, la pública del otro.
-Vertical:
>Inclusión de un tercero de confianza. Está en un planosuperior.
Entonces aceptamos todo lo que venga garantizado por el notario y lo que no,
ya decidiremos. Autoridad Certificadora.
Certificado: No es una herramienta, es una idea. Queremos asociar llaves públicas
con personas.
Es un objeto que nos relaciona una llave pública con una descripción.
El certificado debe ir firmado.
Estándar X509
Lenguaje de estructuras de datos para describir los documentos del ISO
X509
|
||||||
Firma |
Un certificado es autofirmado si el subject=issuer y firma=llave pública.
El que firma al notario será el mismo, por lo que su certificado será
autofirmado (o el mas alto). Cadena de certificación.
PKCS12: describe como meter llaves certificadas privadas en un paquete firmado.
Toda autoridad debe permitir que la llave privada la genere el subscriptor
(usuario)
Peticion de certificado: Peticion autofirmada, es como un certificado.
Formato de los certificados:
Binario: BER. Indica como se colocan los datos en binario
-------- DER . Subconjunto del BER (Binary encoding rules) con las reglas mas
importantes.
--------PEM. El que vemos en pantalla. Señales que dan pistas del contenido:
----BEGIN CERTIFICATE REQUEST------- ajsdh23uj3b45hj35g23j4h5gbh435g34hj5g34j5g345jhkg45j j 35gj3k65g34hjk6gp34hjk6g3jk4h6g3jk46g3jk46g3jk46g etc -------END CERTIFICATE REQUEST-----
Base64: Formato de codificacion de datos.
Representar la informacion binaria con un subconjunto del codigo ascii legible.
Cada 2 bytes->3 letras. Mas carateres que bytes. Ocupa un 33%+ que el binario.
Que pasa si un certificado en vigor deja de ser valido porque por ejemplo la
persona pierde la llave privada o queda comprometida. Si estas offline no puedes
saber la validez de un certificado.
Soluciones:
CRL: Lista de certificados revocados.
O CSP.
CRL: Periodicamente las CA emiten un CRL (total o incremental). Contiene los
nº de serie de los certificados que durante su periodo de validez han sido
revocados. Recogido en el X509. Lista firmada por la CA.
> total: todos los certificados desde el principio.
> parcial: desde hace un tiempo.
Es necesario que el certificado tenga una extensión que es la web donde
actualizar los CRL
OCSP: Protocolo online. Hay un servidor que escucha a quién quiere consultarle.
Primero se comprueba en el ordenador y después se comprueba online.
Comprobar en tiempo real la validez de un certificado.
SSL: Protocolo (v2,v3,TLS) "Secure Sockt Layer" TLS=SSL standard.
Originario de Netscape.
Objetivo: Dar una capa de seguridad a las comunicaciones a través de
internet (online).
Se utiliza para dar seguridad en el web (http).
Autenticacion del servidor y el cifrado de datos y secundariamente, la autenticacion
del cliente.
Asegurar el servidor al que accedes (es el que tu crees que es) y que la persona
es la que es.
Garantia de URL y de organizacion.
HTTPS: Se basa en un certificado emitido para esto.
El common-name contiene el nombre del servidor donde queremos acceder https://.....
El cliente tiene que compropbar la validez del certificado y la URL.
Cliente y servidor intercambian protocolos criptograficos.
Se comprueba que el servidor tiene la llave publica del cliente(desafio) si
el servidor puede descifrarlo con la llave privada, se verifica que es del servidor.
Cliente y servidor tb comparte la llave de sesión.
Se genera llave de sesión, se cifra con RSA y se envía con la
llave publica.