Este documento resume dos algoritmos de cifrado simétrico: AES y Twofish. Explica que AES fue seleccionado como estándar por el NIST en 2001, mientras que Twofish quedó tercero. Describe los componentes clave de cada algoritmo como las cajas S, las matrices MDS, la transformación PHT y las redes de Feistel. Finalmente, compara ambos algoritmos y proporciona referencias adicionales.
4. Introducción
• ¿Qué significa cifrar?
• Aplicar un algoritmo de cifrado junto con una clave, a una
determinada información que se quiere transmitir
confidencialmente.
• Dos o más usuarios, tienen una única clave secreta, esta clave
será la que cifrará y descifrará la información transmitida a través
del canal inseguro. La clave secreta de los dos usuarios es la
MISMA
5. AES-(Estandar de Encriptacion Avanzada)
• En 1997, el Instituto Nacional de Normas y Tecnología (NIST)
decidió realizar un concurso para escoger un nuevo algoritmo de
cifrado capaz de proteger información sensible durante el siglo
XXI. Este algoritmo se denominó Advanced Encryption Standard
(AES).
• Convocatoria:
• Ser de dominio público, disponible para todo el mundo.
• Ser un algoritmo de cifrado simétrico y soportar bloques de, como mínimo,
128 bits.
• Las claves de cifrado podrían ser de 128, 192 y 256 bits.
6. AES(Rijndael)-Reseña
• En agosto de 1998, el NIST seleccionó cinco finalistas con base en su
seguridad, eficiencia, simplicidad, flexibilidad y requerimientos de
memoria.
• Los finalistas y sus puntajes fueron los siguientes:
• 1. Rijndael (de Joan Daemen y Vincent Rijmen, 86 votos).
• 2. Serpent (de Ross Anderson, Eli Biham y Lars Knudsen, 59 votos).
• 3. Twofish (de un equipo encabezado por Bruce Schneier, 31 votos).
• 4. RC6 (de los Laboratorios RSA, 23 votos).
• 5. MARS (de IBM, 13 votos)
• En 2001 Rijndael se volvió un estándar del gobierno de Estados
Unidos publicado.
7. AES(Rijndael)-Especificacion
• Publico
• Un algoritmo de clave simétrico
• Puede aumentar la longitud de la clave según las necesidades,
siempre y cuando el tamaño sea múltiplo de 4 bytes (128-192-
256…)
• Disponible gratuitamente, bajo términos de ANSI(Instituto
Nacional Americano de Estandares)
8. AES(Rijndael)-Vetajas Desventajas:
• Ventajas:
• Gran velocidad de cifrado y desifrado
• No aumenta el tamaño del mensaje
• Desventajas:
• La seguridad depende de un secreto compartido entre el emisor y
el receptor
• La distribución de claves debe hacerse a travez de algún medio
seguro
9. AES(Rijndael) - Aplicaciones
• La protección de las comunicaciones digitales: Internet, TV digital,
comunicaciones móviles, redes de datos.
• Transferencia de documentos, comercio electrónico.
• Garantiza la seguridad y protección de software.
• .
• Mensajería militar.
• La firma digital de documentos.
10. AES(Rijndael)-Pseudocodigo-Inicio
• 1 ) AddRoundKey — cada byte del «state» es combinado con la
clave «round»; cada clave «round» se deriva de la clave de cifrado
usando una iteración de la clave.
16. AES(Rijndael)-Codificación
Paquete javax.crypto :
Proporciona las clases e
interfaces para operaciones
criptográficas
• .Cipher -> Esta clase proporciona la funcionalidad de
un sistema de cifrado criptográfico para el cifrado y el
descifrado.
• .KeyGenerator ->Esta clase proporciona la
funcionalidad de un generador de clave secreta
(simétrica).
• .SecretKey -> Una clave secreta (simétrica). El
propósito de esta interfaz es agrupar (y proporcionar
seguridad de tipo) todas las interfaces de clave secreta.
• .spec -> Proporciona clases e interfaces para las
especificaciones clave y especificaciones de los
parámetros del algoritmo.
• .SecretKeySpec -> Esta clase especifica una clave
secreta de una manera independiente del proveedor.
17. AES(Rijndael)-Codificación
• Generamos una clave de 128 bits adecuada para AES (clave mul 4 bits)
• Obtiene el cifrado tipo AES, Electronic Codebook (ECB) Modos de operación para
encriptación de bloques.
18. • Si desea cifrar un mensaje de
texto que no sea múltiplo de
bloques de 8 bytes, el mensaje
de texto se debe rellenar con
bytes adicionales para que el
mensaje de texto sea
múltiplos de bloques de 8
bytes.
19. AES(Rijndael)-Codificación
• Se escribe byte a byte en hexadecimal el texto
• Se inicializa el cifrado para des encriptar, con la misma clave y se des encripta
20. Twofish
• En criptografía, Twofish es un método de criptografía simétrica
con cifrado por bloques.
• El tamaño de bloque en Twofish es de 128 bits y el tamaño de
clave puede llegar hasta 256 bits.
• Twofish llegó a la ronda final del concurso del NIST, pero no fue
elegido para la estandarización. TwoFish quedó tercero, tras
Rijndael y Serpent.
21. Twofish –Componentes del Algoritmo
• A lo largo de 16 rondas, se aplica una red Feistel que consiste en
sustitución mediante cajas.
• Dos subfunciones especiales consistentes en una matriz Distancia
de Separación Máxima (MDS) y una Transformación Pseudo
Hadamart (PHT) y la mezcla con dos subclaves de ronda.
• La planificación de claves se lleva a cabo mediante el uso de una
matriz derivada de un código Reed-Solomon (RS).
22. Twofish-Redes de Feistel
• Se trata de un método general para transformar cualquier función F en
una permutación.
• El fundamento de las redes de Feistel se basa en un mapeo, dependiente
de la clave, de un string de entrada en otro de salida.
• Cada vuelta ( o round ) de estas redes es llamada ciclo. En cada ciclo
todos los bits del bloque han sido modificados una vez.
• Twofish son 16 vueltas de una red de Feistel con una función F
23. Twofish-Cajas S(S-Boxes)
• Twofish usa 4 S-Boxes de 8 por 8 bits, diferentes, de clave
independiente.
• Éstas son construidas usando 2 matrices fijas de 8 por 8 bits
mediante permutaciones y parte de la clave lo que genera S-Boxes
variables.
24. Twofish-Matrices MDS
• Esta matriz es el principal mecanismo de difusión de Twofish.
• La MDS garantiza que el número de bytes de entrada cambiados
mas los de salida es al menos 5. En otras palabras, un cambio de
solo un byte en la entrada lleva a cambiar 4 bytes de la salida, y
por lo tanto un cambio de 2 bytes de entrada garantiza un cambio
de 3 en la salida, etc.
• Las matrices MDS son también conocidas como códigos RS (Reed-
Solomon).
• La estructura RS ayuda a defender contra ataques de clave
relacionada difundiendo el material de clave en dirección
ortogonal al flujo usado en computar los S-Boxes de 8 por 8 bits
usados en Twofish
25. Twofish-Transformación
Pseudo-Hadamard ( PHT)
• Una transformación PHT es una operación de mezcla que corre
rápido en software.
• Dadas dos entradas a y b de 32 bits, la PHT es:
• a’ = a + b mod 2^32
• b’ = a + 2b mod 2^32
• Twofish usa una PHT de 32 bits para mezclar las salidas
27. AES(Rijndael) VS Twofish
1. AES es en realidad Rijndael mientras Twofish es uno de los finalista AES.
2. AES utiliza la red de sustitución-permutación mientras Twofish utiliza la
red de Feistel.
3. AES se puede romper en algunas formas(Version 8 rondas), mientras que
Twofish es irrompible.
4. AES implementa un menor número de rondas que Twofish
28. Referencias:
• Descripcion a fondo de Twofish , RC6 y MARS
http://materias.fi.uba.ar/6669/alumnos/1999/aes.pdf
Descripcion de clases e interfaces de JCE(Java Cryptographic
Extension)
http://personales.upv.es/~fjmartin/cdii_web/traspas/jce.pdf
“Sencilla explicación sobre AES”
https://es.slideshare.net/elvisvinda/sencilla-explicacin-sobre-aes
Redes de Computadoras Tanenbaum-4ta-edición
https://juliorestrepo.files.wordpress.com/2010/08/redes-de-
computadoras-tanenbaum-4ta-edicion-espanol.pdf