Simulación del Estándar de Cifrado Avanzado para VoIP

Publicado en

Desde hace algunos años, la confidencialidad de las comunicaciones telefónicas entre las entidades participantes ha sido un tema en constante investigación. Cuando la red es homogénea, la elección del tipo de cifrado a utilizar para una aplicación de telefonía es simple. Sin embargo, dicha elección no es tan clara cuando la red es heterogénea como en el caso de voz sobre IP (VoIP). Esto se complica aún más cuando la red heterogénea se compone de enlaces inalámbricos. Debido a ello, este artículo presenta la simulación del AES Modo Contador con el fin de garantizar la confidencialidad de las comunicaciones VoIP de una manera eficiente y con mejor calidad que otros métodos de cifrado utilizados actualmente.

Voz IP ó VoIP, es un grupo de recursos que hacen posible que una señal de voz viaje a través de Internet empleando el protocolo IP. Esto significa que se envía la señal de voz en forma digital, en paquetes, en lugar de enviarla en forma analógica a través de la red telefónica tradicional.

Los protocolos de Voz sobre IP se usan para enviar las señales de voz sobre la red IP y definen la manera en que los codecs se conectan entre sí y hacia otras redes. Los codecs se encargan de convertir una señal de audio analógica a un formato digital para transmitirla y luego convertirla nuevamente a un formato descomprimido de señal de audio para poder reproducirla. Los codecs realizan esta tarea de conversión tomando muestras de la señal de audio miles de veces por segundo y dependiendo del códec que se esté utilizando, se tienen diferentes frecuencias de muestreo de la señal en VoIP.

Criptografía

El objetivo de la criptografía es permitir a dos entidades comunicarse a través de un canal inseguro, sin que una tercera entidad sea capaz de entender lo que se está transmitiendo [1]. De manera general existen dos tipos de criptografía: la simétrica y la asimétrica.

La criptografía simétrica se basa en una llave secreta que es compartida entre emisor y receptor, y que se usa tanto para cifrar como descifrar. La figura 1 muestra la etapa de cifrado (EK) y descifrado (DK) de un mensaje en un medio de transmisión utilizando la llave simétrica K.


Figura 1. Criptografía Simétrica.

La criptografía asimétrica, en cambio, requiere de dos llaves: una denominada llave pública y otra llamada llave privada [2]. Ambas están relacionadas matemáticamente, y es computacionalmente difícil conocer la llave privada a partir de la pública. Si el usuario A quiere enviar un mensaje al usuario B entonces utiliza la clave pública del usuario B para encriptar el mensaje y enviarlo, dicho mensaje solo puede ser desencriptado utilizando la llave privada del usuario B. La figura 2 ilustra este proceso.


Figura 2. Criptografía Asimétrica.

Para el escenario de cifrado de VoIP, donde requerimos un mecanismo simple y que pueda ejecutar en tiempo real, consideramos que es mejor utilizar criptografía simétrica. Los algoritmos pertenecientes a la criptografía simétrica se dividen en dos grupos, de bloque y de flujo. A continuación los explicamos:

  1. Cifrado de bloque. Cifran y descifran bloques de bits a la vez, realizan operaciones entre bloques de bits como sustituciones, permutaciones, rotaciones y operaciones lógicas. Se caracterizan por estar compuestos de un número determinado de rondas. Algunos ejemplos son: AES [3], DES y TDES. Este tipo de algoritmos cuentan con las siguientes propiedades:
    a. Propagación de error. Los cifrados de bloque multiplican los bits de error. Esto es, un bit de error en el criptograma recibido a la entrada del descifrador, resultará en múltiples errores en el texto recuperado a la salida del descifrador [4].
    b. Efecto Avalancha. Indica que en promedio la mitad de los bits de salida debe cambiar cada vez que cambia una entrada de un solo bit. Esta es una característica deseable, ya que indica que cada bit de salida debe depender de todos los bits de entrada. Los algoritmos con esta propiedad no representan correlación estadística entre la entrada y la salida, lo cual los hace más seguros.
  2. Cifrado de flujo. Cifra y descifra bit a bit a la vez. Ejemplos de este tipo de algoritmos son: RC4 y A5/1. Estos algoritmos cuentan con la propiedad de propagación de error de sincronización, la cual  indica que el cifrado de flujo propaga los errores de sincronización causados por la inserción o eliminación de bits. Esto es, si el cifrador pierde la sincronía con el descifrador, el descifrador falseará todos los bits del texto plano recuperado hasta que el sistema restaure la sincronización. Por esta razón es que en la actualidad aunque el cifrado de flujo tiende a ser más rápido y más eficiente que el de bloque, las aplicaciones de telefonía por Internet no lo utilizan para evitar los problemas de sincronización asociados al cifrado de flujo [5].

El cifrador AES

AES (Advanced Encryption Standard) es un algoritmo de cifrado simétrico de bloque. Trabaja con bloques de 128 bits y con claves de 128, 192 y 256 bits. Dependiendo del tamaño de la clave, el número de rondas va desde 10 hasta 14. Este algoritmo considera ciclos con cuatro transformaciones matemáticas: ByteSub (sustitución de bytes), ShiftRow (desplazamiento de filas), MixColumns (multiplicación de columnas), y AddRoundKey (se aplica una or-exclusiva entre los bits del texto y la llave). En el último ciclo sólo se ejecutan las siguientes transformaciones: ByteSub, ShiftRow y AddRoundKey. El diagrama de flujo de la Figura 3, representa la secuencia de transformaciones mencionadas.

 


Figura 3. Esquema General Cifrado AES.

AES para VoIP

Para la investigación descrita en este artículo hemos utilizado AES para garantizar la confidencialidad de la información que viaja sobre VoIP.

Cabe destacar los resultados obtenidos en pruebas experimentales realizadas en [4], las cuales mencionan que:
El cifrado de flujo presenta un mejor rendimiento a comparación del cifrado de bloque antes de perder la sincronía.

El retardo extremo a extremo y la calidad subjetiva de la voz se percibe mejor en el caso de cifrado de flujo, ya que tiene la gran ventaja de que la secuencia cifrante puede ser precalculada antes de que la carga útil esté disponible, de este modo se minimiza el retraso introducido por el cifrado[4]. Con base en lo anterior, los autores proponen utilizar el Modo de Operación Contador para el AES. El Modo Contador convierte una unidad de cifrado por bloques en una unidad de cifrado de flujo. Genera el siguiente bloque en el flujo de claves cifrando valores sucesivos de un contador. El contador puede ser cualquier función sencilla que produzca una secuencia de números donde los resultados se repiten con muy baja frecuencia [5]. La Figura 4 muestra dicho modo de operación.


Figura 4. Modo Contador.

Las ventajas de esta estrategia son las siguientes:

  • Combina tanto el cifrado de flujo como el de bloque, aprovechando las ventajas de cada uno.
  • El cifrado de bloque ofrece confidencialidad, velocidad y actúa como un generador de claves, originando una secuencia totalmente aleatoria e impredecible.
  • El cifrado de flujo aditivo ofrece una mejor calidad de voz percibida y un menor retardo extremo a extremo.

El modo contador de AES, permite trabajar con bloques de bits totalmente independientes, utilizando menores recursos y menor tiempo de procesamiento, el cual es vital para una aplicación que se ejecuta en tiempo real como lo es VoIP.

Desarrollo del sistema

En esta sección se muestra el desarrollo del AES Modo Contador por etapas, el cual fue simulado en el lenguaje de programación MATLAB. La primera etapa se enfocó al desarrollo del AES en su forma general. Esta se realizó por componentes de acuerdo a la Figura 5.

 


Figura 5. Esquema General AES 128 bits.

Una vez concluido el AES de 128 bits en su forma general, se llevó a cabo el análisis y comparación de resultados obtenidos de la simulación en Matlab con los vectores oficiales de prueba proporcionados por el Instituto Nacional de Estándares y Tecnología (NIST) en su FIPS 197 [6], logrando llegar a los mismos resultados.
La siguiente etapa consistió en extender el desarrollo al Modo de Operación Contador.

A continuación se programó la etapa de la generación de los contadores donde a partir del contador inicial, se generaron los subsecuentes bloques de contador de 128 bits, uno por cada 128 bits de texto plano. También fue necesario programar la función relleno que calcula la secuencia de ceros que se le agregaran al texto plano en caso de no ser un múltiplo exacto de 128 bits.

La etapa de descifrado es exactamente igual, como se vio en el esquema del Modo Contador, se utiliza la misma función CIPHK tanto para cifrar y descifrar, solo que ahora en vez de realizar la XOR con el texto plano, se realiza con los bloques de texto cifrado, para así recuperar  los bloques del mensaje original.

Posteriormente se realizó la comparación de los resultados obtenidos en la simulación en Matlab con los 4 vectores oficiales de prueba para el AES Modo Contador de 128 bits, todos ellos proporcionados por el Instituto Nacional de Estándares y Tecnología (NIST) en su Publicación especial 800-38a [5], logrando llegar a los mismos resultados.

Después se realizaron las adecuaciones necesarias para leer un archivo de audio en formato WAV con el fin de simular un cifrador de voz. Para ello, primeramente el archivo de audio se abre para extraer la secuencia de audio digitalizada en formato decimal.

De esta manera contando ya con la información digitalizada, fue necesario cambiar el formato de los datos, al mismo formato de entrada que requieren las funciones de cifrado/descifrado.

Interfaz gráfica

Por último se realizó la interfaz gráfica que permite utilizar el AES Modo Contador como un cifrador de voz. La ventana principal de la aplicación consta de 4 opciones: cifrar voz, descifrar voz, ayuda y salir.

Cifrar voz. Permite seleccionar un archivo de audio para cifrar, y regresa la siguiente información: llave asignada, contador inicial y el último bloque de 128 bits de la secuencia de audio cifrado, como se muestra en la Figura 6.

Descifrar voz. Esta ventana se encarga de realizar el descifrado de la secuencia de audio, la cual permite escuchar el audio descifrado, además de proveer la siguiente información: clave asignada, contador inicial y el último bloque de 128 bits de la secuencia de audio descifrada, como se muestra en la Figura 7.

 


Figura 6.
Resultados Cifrado de Voz

 


Figura 7. Resultados Descifrado de Voz

Resultados obtenidos

Después de seguir las etapas de desarrollo antes planteadas y realizar la comparación con  los vectores de prueba, se logró llegar a los mismos resultados oficiales publicados en el estándar para cada etapa de este trabajo.

Los resultados obtenidos muestran que AES Modo Contador no altera la voz mediante la etapa de cifrado/descifrado, ya que al comparar ambos vectores de información, en términos de longitud y contenido se pudo comprobar que son exactamente los mismos.

El modo contador de AES, a diferencia de los modos de operación CBC, CFB y OFB permite trabajar con bloques de bits totalmente independientes, utilizando menores recursos y menor tiempo de procesamiento, además tiene la gran ventaja de que la “secuencia cifrante” puede ser pre-calculada antes de que la carga útil esté disponible, de este modo se minimiza el retraso introducido por el cifrado.

Los resultados de la simulación en Matlab indican tiempos de cifrado de 0.529 segundos por cada bloque de 128 bits de texto plano. Cuando la secuencia cifrante ha sido pre-calculada, los resultados en los tiempos de cifrado se reducen notablemente al orden de milésimas de segundo por cada bloque de 128 bits de texto plano.

Conclusión

En un entorno propenso a ataques como la Internet y ante un sistema como VoIP, la seguridad es una prioridad en el momento de su implementación y mantenimiento. Por esta razón, es necesario utilizar algoritmos de cifrado que ayuden a que la información transmitida no sea entendible por un atacante, aun cuando este cuente con las herramientas necesarias para su captura, de tal forma que sólo sea comprensible por los interlocutores autorizados. En este trabajo, la confidencialidad entre la comunicación VoIP se garantizó con el AES (Advanced Encryption Standard) en su modo de operación Contador. De ahí que los resultados mostraron una mejor calidad de voz percibida y un menor retardo extremo a extremo, requerimientos indispensables en la comunicación VoIP.

Si te interesa conocer más sobre esta implementación y utilizar el software que hicimos, puedes contactar a Sergio Tovar.

 

Referencias:
[1] J. Angel. “Criptografía para Principiantes”. Versión 1.0. http://swgu.ru/sg37r14 
[2] J. Ramió. “Libro Electrónico de Seguridad Informática y Criptografía”. Versión 4.1. http://swgu.ru/sg37r15
[3] J. Daemen, V. Rijmen. “AES proposal: Rijndael”.http://swgu.ru/sg37r16
[4] A. Elbayoumy, S. Shepherd. “Stream or Block Cipher for Securing VoIP”. International Journal of Network Security, Vol.5, No.2, pp.128-133, UK. Sept. 2007. http://swgu.ru/sg37r17
[5] “Recommendation for Block Cipher Modes of Operation”. National Institute of Standards and Technology. http://swgu.ru/sg37r18

 

Bio

Sergio Alejandro Tovar Ramírez es Ing. en Electrónica y Comunicaciones por la UAM Iztapalapa, y Especialista en Seguridad y TI por la Sección de Estudios de Posgrados del IPN. Actualmente es alumno de Maestría en Ingeniería en Seguridad y TI en IPN ESIME Culhuacán.
José Velázquez López Obtuvo es Doctor en Ciencias en Comunicaciones y Electrónica por la ESIME Culhuacan del IPN. Actualmente es profesor Titular del departamento de Ing. en Computación en la ESIME Culhuacan.
Gina Gallegos-García es Doctor en Ciencias por parte de la ESIME Culhuacan. Actualmente es Profesora Invitada de la Sección de Estudios de Posgrado e Investigación y pertenece al Sistema Nacional de Investigadores.