A B C D E F G H I J K ....... Z D E F G H I J K L M N ....... C c = m + kEs un desplazamiento rotatorio.
ci = mi + kk mod nel caracter de frecuencias no va a dar lo mismo.
Cada bloque se divide en dos, luego se hacen operaciones y se cambian de lado, la izquierda a la derecha y viceversa. Uno de los métodos es hacer esto 16 veces, con 16 llaves distintas para cada 8 bits. Conseguimos un sistema complejo porque le da muchas vueltas
Red de Feistel:
Para descifrarlo, se realiza la misma operación que al cifrarlo, pero se invierten los papeles de la R y la L.
Por último se aplica la función f:
f se compone de dos partes, trata de dar confusión a traves de sustituciones y la dispersión a traves de sustituciones.
(tabla de sustitución) SEl des ultiliza 8 cajas de 6x4.S-Box (m menor que n) n bits
S-Box
m bits
Proceso de expansión
Los algoritmos de cifrado simétrico presentan algunas ventajas e inconvenientes. Como ventajas tenemos que es un algoritmo rápido y fácil de implementar, por contra es dificil trabajar en un sistema abierto. Aunque para solucionar este problema existe lo que conocemos como algoritmo de cifrado de llave pública..
Nota importante: En el algoritmo de cifrado de llave pública tenemos dos llaves, una publica y otra privada, lo que se cifra con una llave se descifra con la otra y SOLO con la otra, de una no se puede obtener la otra.![]()
Sistema reversible(RSA) El objetivo fundamental de este sistema es conseguir el secreto y la autenticidad, para ello se aplican las formulas que se muestran arriva, de la siguiente manera:
![]()
Vemos como funciona, siendo A y B dos individuos y KA la llave privada de A y PA la llave publica y lo mismo para B.(no lo podrá leer nadie)
(solo A ha podido enviar ese mensaje)
Lo mejor es primero firmar y después cifrar, c=EpA(EkA(m)) >>>>> m= DpA(DkB(c)), así de fuera hacía dentro, se que el mensaje es para mi y se que es auténtico.
Inconveniente: Los algoritmos de cifrado de llave pública son mucho más lentos que los de llave privada, por lo tanto es inviable.
Solución: Se genera un número aleatorio S (que hará de llave) será muy grande (muchos bits) y se mantiene en secreto, entonces se cifran con DES con la llave S el mensaje, y se envía el mensaje junto con la llave S cifrada con el algoritmo simétrico.
![]()
Problema: ¿Que ocurre si la persona que recibe el mensaje no tiene ningún método de criptografía?, en principio no lo podra descifrar.
Solución:
Función resumen:
Es una función no inyectiva, es decir que no tiene inversa, que dado un mensaje cualquiera el resultado de aplicarle la función de resumes es una cadena de longitud fija (función hash).
Propiedes de la función hash:
- Una función ligeramente distinta produce una salida totalmente diferente.
- Dado un resultado de la función es imposible construir una cadena de entrada que represente ese hash.
En la práctica hay dos modelos de función hash:
- md5: message digest 5
- sha1: signature hash algoritm 1
Además de lo dicho tenemos una variación, la cual utiliza además de la función resumen, una password, se llama MAC.
Ventajas:
1. Es más rápido
2. La persona que la recibe lee el mensaje sin ningún problema, viene el mensaje y al final la firma.
Pero seguimos teniendo un problema, como sabemos que la llave pública es de quien dice ser.
Tenemos dos soluciones:
Implementación de X509: (muy relacionado con RSA)
- Soluciones horizontales: Consiste en que se de la llave en mano, comunicación directa o comunicación entre personas conocidas(amigos). Para asegurarnos que la llave es de otro es válida, firmamos con su llave privada la llave pública del tercero, entonces nos la envía. Se establecen los niveles de confianza.
- Soluciones verticales: Consiste en el proceso de un tercero de confianza, en este caso este tercero esta en un nivel superior (notario). Aceptamos a todos aquellos que nos garantiza el notario.
 Certificado: objeto que relaciona una llave publica con una descripción. El cerificado va siempre firmado y es lo mismo que una llave pública más datos, todo esto firmado por un notario.
En la práctica se ha acogido al estándar X509, estándar de certificación de la llave pública.
 PKC7
¿Que y como es un certificado X509?Se describen mediante un lenguaje de una estructura de datos, el lenguaje utilizado es ASN.1 (es un mensaje muy genérico).¿Como se obtiene un certificado?
Subject
Issuer
FI-FF
nºserie
llave pública
tensiones
firma
¿Qué formato tiene el certificado?
- PKCS12: Se nos envía por un paquete que es delicado porque contiene la llave pública y la privada. Este paquete se protege con una password.
Problema: la autoridad certificadora conocería la llave privada.
Solución: nosotros mismos podemos generar un certificado. Contiene:Una vez obtenido el par de llaves el certificado va a la basura.
- datos personales
- llave pública
- firma (por la llave privada)
- PKCS10: contenedor de petición unicamente.
Tiene un formato binario que está descrito por el ISO, y se llama VER, que tiene un subconjunto denominado DER. El formato PEM es una forma de representar los formatos DER para poder visualizarlo.
MIME - Version 1.0 Content - type text/plain Content - transfer-encoding base64Esta información varía dependiendo del tipo de mensaje. Si lo que queremos es enviar un adjunto se mostrará:
MIME - Version 1.0 Content - type image/jpg Content - transfer-encoding base64
MIME - Version 1.0 Content - multipart/mixedDespués el correo tendra tantos apartados como partes tenga el correo y cada parte tendra su cabecera MIME.
Content - type: aplication/x_pkcs7 (formato de cifrado) Content - transfer-encoding base64