Cuando utilizamos un cifrado simétrico en bloque, en aplicaciones en línea, por ejemplo con IPsec, debemos prever su interceptación y manipulación. En el supuesto de que se intercepten estos mensajes, el atacante puede utilizar el ataque de texto elegido (CCA), el ataque adaptativo de texto cifrado elegido (CCA1-2) o el del ataque de relleno, para evitarlo autentificamos el mensaje con un MAC. La concatenación del cifrado y el Mac pueden suponer una caída en el rendimiento del sistema, la solución está en los esquemas AE, AEAD ó en el DAEAD que se utilizan de distinta forma en los Modos de Operación.
Modos de operación clásicos.
Los modos de operación describen cómo aplicar los algoritmos, por el resto, todos ellos toman una clave y de alguna forma hacen uso del Vector de Inicialización (IV) ó del “nonce”.
Se diseñó como una alternativa no patentada a OCB. Es la combinación (dos pasos) del modo de cifrado CTR y la autenticación de mensajes CBC-MAC, fue propuesto por Doug Whiting, Russ Housley y Niels Ferguson en 2.002. La idea principal es que la misma clave de cifrado se pueda utilizar para ambos, siempre que los valores de contador utilizados en el cifrado no coincidan con los “nonce” utilizados en la autentificación.
Antes de que se comience a utilizar este modo, las partes que intercambiarán información deben acordar una clave K, seleccionada al azar del conjunto {0, 1} k0 de todas las claves posibles. La operación de cifrado toma como entrada un numero arbitrario “nonce” N de longitud fija kn < kb, un encabezado (Datos asociados) A y un mensaje (Texto en Claro) Tc.
El encabezado A solo se autentifica y no se cifra, mientras que el mensaje Tc se autentifica y se cifra. Una etiqueta de autentificación se deriva de (N, A, Tc) a través de CBC-MAC y se cifra junto con Tc en modo CTR. La etiqueta T es de longitud fija kt ≤ kb. La operación de cifrado genera un texto C de longitud | Tc | + kt. El “nonce” N no debe haber sido utilizado en una aplicación anterior de la operación de encriptación CCM durante la vida útil de una clave.
Normalmente hay ciertas restricciones en las entradas para la operación de encriptación, por ejemplo: las longitudes del encabezado y del mensaje pueden estar delimitadas por alguna constante. Además, algunas aplicaciones pueden requerir que la longitud del encabezado y el mensaje sean múltiplos de 8 bits o la longitud del bloque (128 bits).
Es un modo seguro pero lento, su esquema de dos pases es igual que el de EAX. Tiene el inconveniente de no trabajar en línea lo que le obliga a conocer el tamaño del mensaje antes de comenzar a cifrarlo. Existe una implementación en la librería Crypto ++.
CWC.
El modo de contador de Carter-Wegman + CTR es un modelo AEAD diseñado por Tadayoshi Kohno, John Viega y Doug Whiting en 2.004. Combina el modo CTR con FR, la función resumen MAC de Carter-Wegman, que se evalúa como un módulo polinómico, un número primo (2127 – 1), que se puede dividir en otros polinomios y estos polinomios compuestos se pueden procesar en paralelo. Después el valor resumen es cifrado.
CWC puede funcionar a 10 Gbps cuando se usa la tecnología hardware ASIC convencional y AES como cifrado de bloque subyacente (mientras que CCM y EAX están limitados a aproximadamente 2 Gbps debido a sus restricciones seriales). Aunque CWC se basa en el paradigma “Encrypt-then-MAC”, no es una construcción de composición genérica: el cifrado CWC y los componentes FR comparten la misma clave. El número total de llamadas de cifrado de bloque es igual a ⌈ |Tc| / 128⌉ + 3.
Es similar a los modos CCM y OCB, tiene una longitud de bloque de 128 bits con un tamaño pequeño de la clave, pero es más lento que el modo GCM. Una ventaja extra es que no está patentado.
Solo usa una clave K, pero deriva otra Kh de K, aplicando una invocación de cifrado de bloque con la clave K. El resultado binario se convierte a número entero. Al principio, el único “nonce” N se combina junto con un contador incremental y se usa con la clave K en modo CTR para cifrar los bloques de texto en claro Tc1,. . . Tcm, resultando en el texto cifrado σ.
Después de lo anterior, los datos asociados A se agrupan junto con el texto cifrado, σ, la longitud de los datos asociados LA y la longitud del texto cifrado Lσ. Finalmente se rellenan a la longitud necesaria, con ello se obtiene el resultado Y que se divide en partes de 96 bits Y1,. . . , Yr, Yr+1 . Cada parte se usa como coeficiente para el polinomio de Carter-Weigman aplicando al valor de Kh.
Es un esquema AEAD propuesto por M. Bellare, P. Rogaway y D. Wagner en 2.003 para resolver las deficiencias del modo CCM. Se aplica en dos pasos como CCM, el cifrado CTR y la autenticación (OMAC) se realizan en operaciones separadas pero tiene la ventaja sobre CCM de que se realiza en línea, encontra, es más lento que GCM. Para todo lo demás, decir que es bastante fácil de implementar y que fue desarrollado con el paradigma de seguridad demostrable.
Operativamente trabaja con “nonce” N, un mensaje Tc y un encabezado A, el modo protege la privacidad de Tc y la autenticidad de Tc y A. Las cadenas N, Tc y A son cadenas de bits arbitrarias y el modo utiliza 2 ⌈ | Tc | / n ⌉ + ⌈| A | / n ⌉ + ⌈| N | / n⌉ llamadas de cifrado cuando estas cadenas no están vacías, siendo n la longitud de bloque de cifrado subyacente.
Al realizar el proceso en línea no necesita conocer la longitud de un mensaje para comenzar a procesarlo, también puede pre-procesar un encabezado fijo, lo que elimina el costo por mensaje de vincularlo al texto cifrado.
Posteriormente ANSI desarrolló y normalizó (ANSI C12.22, IEEE 1703) una versión ligeramente modificada y denominada EAX ‘ con la aprobación del NIST. Es más rápida que su antecesora ya que utiliza de 3 a 5 llamadas menos de cifrado para cada mensaje, pero genera un problema: no está cubierta por la prueba de seguridad y Kazuhiko Minematsu, Stefan Lucks, Hiraku Morita y Tetsu Iwata encontraron en 2.012 varios agujeros de seguridad, mejor no utilizarla.
GCM.
El Galois/Counter Mode fue diseñado por John Viega y David A. McGrew en 2.005. Es un modo de cifra CTR con el añadido de un MAC Carter-Wegman configurado en un campo de Galois. Refina el modo CWC utilizando el campo Galois binario GF (2128) definido por el polinomio [x128+x7+x2+1] en lugar del campo entero de 127 bits para la FR Carter-Wegman y así evitar operaciones de multiplicación. Es un modo muy utilizado al ser rápido y paralelizable pero su implementación directa es incómoda y se suele utilizar a través de otras herramientas que lo proveen (OpenSSL, Crypto ++ y admitirse como un conjunto de cifrado TLS). Con respecto al rendimiento en hardware, supera los 10 Gbps de CWC. Una ventaja importante, no está patentado.
La operación tiene cuatro entradas y dos salidas:
- Una clave K, cuya longitud en bits debe ser adecuada para el cifrado subyacente.
- Un Vector de Inicialización (IV) / “nonce”, con longitud de entre 1 y 264 bits. Para una clave fija el valor IV debe ser distinto, pero no es necesario que tenga la misma longitud.
- Un texto claro Tc que puede tener cualquier número de bits, entre 0 y 239 – 256.
- Datos asociados A. Estos datos se autentifican, pero no se cifran y pueden tener cualquier número de bits, entre 0 y 264 .
- Un texto cifrado C cuya longitud es exactamente la del texto Tc.
- Una etiqueta de autenticación T, cuya longitud t puede ser cualquier valor de entre 0 y 128 bits.
Los datos autenticados asociados A se suelen dejar sin cifrar debido a su uso como direcciones IP, puertos u otros campos que indican cómo se debe gestionar la salida. La seguridad de autenticación está determinada por la longitud de la etiqueta T (Tc, IV y A). GCM lo podemos utilizar como herramienta de autentificación de mensajes si el texto en claro es de longitud 0, en este caso se le denomina GMAC.
GCM cifra el primer Tc con CTR para obtener el texto cifrado intermedio C. En segundo lugar, los datos asociados A se procesan junto con C mediante la función resumen GHASH. Al valor resultante se le realiza un XOR con el valor N de “nonce” pre-procesado y cifrado para obtener la etiqueta T. La longitud final de la etiqueta se fija mediante los t bits más significativos de la entrada del usuario. Al final, la etiqueta cortada se agrega a C para generar el texto cifrado final. La construcción de GCM permite que el receptor de un mensaje falso lo descarte antes del descifrado, ya que el texto cifrado está autentificado.
Descarga de los desarrollados por Brian Gladman Modos (CCM, GCM, EAX, CWC) en C
Otros modos.
Nomenclatura | |
A | Datos asociados, Cabecera |
C | Cifrado ó Cifrado intermedio |
CBk | Cifrado de bloque con clave K |
MAC-FR | MAC, Función resumen, hash |
IV | Vector de Inicio |
len() | Longitud L |
mult Kh | Tratamiento coeficientes polinomio |
N | “nonce” |
T | Etiqueta |
Tc | Texto en claro, M mensaje |
toint | Transformar a entero |
OCB.
Fue propuesto por P. Rogaway, M. Bellare, J. Black, y T. Krovetz en 2.001 y patentado por Philip Rogaway. No es de libre disposición, pero existe la posibilidad de utilizarlo fuera del entorno comercial. Es simple, eficiente y adecuado para hardware y software, además fue diseñado utilizando el paradigma de seguridad demostrable.
IAPM.
Integrity Aware Parallelizable Mode fue propuesto por Charanjit S. Jutla en 2.000, está patentado.
IAP-CFB. Integrity Aware Parallelizable Cipher Feedback fue propuesto por Prosanta Gope en 2.015. Es una variante del CFB que garantiza los requisitos de cualquier esquema AE y añade baja latencia y fluctuación de fase para mejorar los sistemas en tiempo real. El cifrado y la autenticación pueden realizarse en paralelo, introduce el concepto de retraso intencionado t, de Mi bloques, donde t denota el tiempo requerido para cada bloque de cifrado. A causa de este retraso las entradas de texto aparecen en Mt+1 , Mt+2, …, Mn y no es necesario esperar a que se genere el flujo de claves.
XCBC Extended Cipher Block Chaining Encryption fue propuesto por V. Gligor y P. Donescu en 2.001, está patentado.
Nuevos modos de operación.
Las deficiencias encontradas en los modos clásicos iniciaron la búsqueda de otros que solucionasen las mismas. El NIST (United States National Institute of Standards and Technology) creó en 2.013 el CAESAR (Security, Applicability, and Robustness), para obtener nuevos modos que ofreciesen ventajas sobre AES-GCM, está programado que el próximo año (2.017) se tenga la lista de los finalistas. *****En el mes de marzo de este año (2.019) se ha emitido la lista con los ganadores: “The winners are” ACORN y AEGIS
Dada la cantidad de los nuevos modos los abordaremos en artículos posteriores.
Acrónimo | Autor |
++AE | Francisco Recacha |
ACORN | Hongjun Wu |
AEGIS | Hongjun Wu y Bart Preneel |
AES-CMCC | Jonathan Trostle |
AES-COPA | Elena Andreeva, Andrey Bogdanov, Atul Luykx, Bart Mennink, Elmar Tischhauser y Kan Yasuda |
AES-CPFB | Miguel Montes, Daniel Penazzi |
AES-OTR | Kazuhiko Minematsu |
AEZ | Viet Tung Hoang, Ted Krovetz, Phillip Rogaway |
Artemia | Javad Alizadeh, Mohammad Reza Aref, Nasour Bagheri |
Ascon | Christoph Dobraunig, Maria Eichlseder, Florian Mendel, Martin Schläffer |
AVALANCHE | Basel Alomair |
CBA | Hossein Hosseini, Shahram Khazaei |
CLOC-SILC | Tetsu Iwata, Kazuhiko Minematsu, Jian Guo, Sumio Morioka, Eita Kobayashi |
COLM | Elena Andreeva, Andrey Bogdanov, Nilanjan Datta, Atul Luykx, Bart Mennink, Mridul Nandi, Elmar Tischhauser y Kan Yasuda |
Deoxys | Jérémy Jean, Ivica Nikolić, Thomas Peyrin, Yannick Seurin |
Enchilada | Sandy Harris |
HS1-SIV | Ted Krovetz |
ICEPOLE | Paweł Morawiecki, Kris Gaj, Ekawat Homsirikamol, Krystian Matusiewicz, Josef Pieprzyk, Marcin Rogawski, Marian Srebrny, Marcin Wójcik |
iFeed[AES] | Liting Zhang, Wenling Wu, Han Sui, Peng Wang |
JAMBU | Hongjun Wu, Tao Huang |
Joltik | Jérémy Jean, Ivica Nikolić, Thomas Peyrin |
Julius | Lear Bahack |
Keyak | Guido Bertoni, Joan Daemen, Michaël Peeters, Gilles Van Assche, Ronny Van Keer |
KIASU | Jérémy Jean, Ivica Nikolić, Thomas Peyrin |
LAC | Lei Zhang, Wenling Wu, Yanfeng Wang, Shengbao Wu, Jian Zhang |
Minalpher | Yu Sasaki, Yosuke Todo, Kazumaro Aoki, Yusuke Naito, Takeshi Sugawara, Yumiko Murakami, Mitsuru Matsui, Shoichi Hirose |
MORUS | Hongjun Wu, Tao Huang |
NORX | Jean-Philippe Aumasson, Philipp Jovanovic, Samuel Neves |
OMD | Simon Cogliani, Diana-Ştefania Maimuţ, David Naccache, Rodrigo Portella do Canto, Reza Reyhanitabar, Serge Vaudenay, Damian Vizár |
PAEQ | Alex Biryukov, Dmitry Khovratovich |
POET | Farzaneh Abed, Scott Fluhrer, John Foley, Christian Forler, Eik List, Stefan Lucks, David McGrew, Jakob Wenzel |
POLAWIS | Arkadiusz Wysokinski, Ireneusz Sikora |
PRIMATEs | Elena Andreeva, Begül Bilgin, Andrey Bogdanov, Atul Luykx, Florian Mendel, Bart Mennink, Nicky Mouha, Qingju Wang y Kan Yasuda |
Prøst | Elif Bilge Kavun, Martin M. Lauridsen, Gregor Leander, Christian Rechberger, Peter Schwabe, Tolga Yalçın |
Raviyoyla | Rade Vuckovac |
Sablier | Bin Zhang, Zhenqing Shi, Chao Xu, Yuan Yao, Zhenqi Li |
SCREAM | Vincent Grosso, Gaëtan Leurent, François-Xavier Standaert, Kerem Varici, Anthony Journault, François Durvaux, Lubos Gaspar, Stéphanie Kerckhof |
SHELL | Lei Wang |
Silver | Daniel Penazzi, Miguel Montes |
STRIBOB | Markku-Juhani O. Saarinen, Billy B. Brumley |
Tiaoxin | Ivica Nikolić |
TriviA-ck | Avik Chakraborti, Mridul Nandi |
Wheesht | Peter Maxwell |
YAES | Antoon Bosselaers, Fre Vercauteren |
π-Cipher | Danilo Gligoroski, Hristina Mihajloska, Simona Samardjiska, Håkon Jacobsen, Mohamed El-Hadedy, Rune Erlend Jensen, Daniel Otte |