Message Authentication Code (MAC) –  Análisis e importancia

Message Authentication Code (MAC) – Análisis e importancia

La criptografía es la técnica utilizada para cifrar mensajes y asegurar su confidencialidad en base a una serie de códigos y algoritmos que se encargan de cambiar la representación del lenguaje de dicho mensaje. El Message Authentication Code, también conocido como MAC una clave secreta que sólo conocen la persona que envía el mensaje y el destinatario para defenderse de los ataques que se puedan producir. El MAC utilizado se puede calcular en base a la función MAC = CK(M), en la que M es el mensaje de longitud arbitraria; si ese mismo código es encontrado en el sistema de la persona que recibe el mensaje entonces se comprueba su autenticidad e integridad. La autentificación de mensajes también es conocida como data-origin authentication.

Existen tres características imprescindibles que un sistema de seguridad debe tener: confidencialidad, integridad y autenticidad, es decir, debe asegurarnos que nadie tendrá acceso a la lectura de un mensaje, que no se modificará de ninguna forma y deberá ser capaz de demostrarnos que proviene de la persona que pensamos.

El Código de Autentificación de Mensajes permite a la persona que recibe un mensaje saber quién lo ha enviado y asegurarse que no es el ataque de ningún tipo de hacker, ya que esta persona podrá detectar si alguien ha hecho alguna modificación en algún momento del camino que realiza el mensaje. Los MAC suelen utilizarse en transacciones online para mantener la integridad de la información que se intercambia entre dos partes. Si por ejemplo, un atacante se hiciera pasar por nuestra entidad bancaría y no detectamos el fraude podría aprovechar la oportunidad para beneficiarse económicamente a nuestra costa, por eso la mayoría de estas empresas trabajan con códigos de autentificación.

Este sistema se puede utilizar de forma muy sencilla para asegurarnos de que nadie intercepta el mensaje y lo modifica. El primer paso es que tanto la parte A como la B compartan una clave secreta que sólo conozcan ellos y sea la misma para ambos; la parte A, la cual envía el mensaje utiliza el mensaje y la clave secreta en la función anteriormente nombrada (MAC = CK(M)) para obtener el valor MAC. Una vez obtenido A enviará a B el mensaje sin cifrar junto con el valor MAC a través de una red. Cuando B recibe el mensaje puede utilizarlo junto con la calve que anteriormente ya habían pactado para conseguir el valor MAC y comprobar si es el mismo que A le había enviado. Si es el mismo significa que el mensaje no ha sido manipulado de ningún modo, mientras que si el resultado es distinto podemos entender que el mensaje que hemos recibido no es exactamente el mensaje que A había enviado. Para entender la función, M es la longitud del mensaje, CK es la función que transforma el mensaje utilizando el valor K que es la clave secreta como parámetro.

Funcionamiento

A pesar de que es uno de los métodos de seguridad más utilizados y conocidos lo cierto es que existen varias formas de romper la seguridad que genera una técnica criptográfica; de forma teórica a los mecanismos usados o de forma concreta a su implementación ya sea software o hardware. Este tipo de sistemas de seguridad funcionan por probabilidad, y aunque sea increíblemente pequeña, el atacante tiene un probabilidad mayor de 0 de conseguir su objetivo, como ocurre con todos los sistemas incondicionalmente seguros. También existe la posibilidad de explotar los canales ocultos, canales de comunicación no intencionados difícilmente detectables y que viola la política de seguridad con la que contamos por lo que se pueden usar para romper el sistema. Todos estos son las formas de engañar o destruir el sistema de seguridad de forma teórica pero además en la práctica puede ocurrir que el software o hardware estén diseñados de forma incorrecta y se creen más brechas.

Existe una variante de este sistema llamada HMAC que se basa en clave hash y calcula un código de encriptación MAC implicando una función hash criptográfica. Se puede utilizar tanto la función MD5 como la SHA-1 para el cálculo de HMAC, con un algoritmo resultante denominado HMAC-MD5 o HMAC-SHA1 que varía del MAC base. Al ser un algoritmo específico, se puede utilizar esta clave para aplicaciones que requieran claves MAC, y la fortaleza de su seguridad depende de la longitud de la clave secreta utilizada. La diferencia fundaméntela es que con HMAC lo que se hace es coger un fragmento del texto del mensaje y cifrarlo en vez de cifrar el mensaje entero. Una desventaja de HMAC es su lentitud, pero otras muchas variantes de MAC como VMAC, UMAC y CMAC, que son más rápidas pero mucho menos utilizadas.

One-time Mac muy parecida a One-time encryption es la función utilizada cuando queremos definir un valor MAC para un solo mensaje y que ayuda a que el proceso sea mucho más rápido y ágil, además de que igualmente nos asegura que no se lee ni modifica el mensaje en ningún momento. Basado en esta idea de One-time Mac nos encontramos también con Carter-Wegman Mac, que se extiende en una función pseudoaleatoria que permite utilizar una sola clave para mensajes consecutivos. Basado también en la función MAC podemos encontrarnos con CBC MAC, capaz de encriptar mensajes de cualquier longitud, desde uno a varios bloques. Esto lo consigue ya que cada bloque depende de la encriptación del anterior creando una cadena de bloques. Es importante especificar la longitud del texto dentro del primer bloque para poder seguir con los demás ya que intentarlo sin saber esto puede causar problemas y dificultar la lectura. Para asegurarnos de su confidencialidad es aconsejable ir cambiando su clave secreta de vez en cuando usando este algoritmo.

Debemos elegir qué tipo de código de autenticación preferimos según el mensaje que queramos encriptar teniendo en cuenta su longitud, si queremos usar una clave cada vez o si por el contrario intercambiamos demasiados mensajes con la otras persona y queremos la misma siempre, la velocidad, si usamos hardware o preferimos software etc. teniendo en cuenta las ventajas y desventajas de cada método.

Metodología

Las cuentas de Google ya cuentan en sus sistemas con una medida de seguridad novedosa que deja atrás esos códigos SMS necesarios hasta ahora para verificar la cuenta; de esta forma se podía saber si el dueño del smartphone usado para intentar acceder a la cuenta es el mismo que creó la cuenta en su día. Ahora podemos aumentar la seguridad en nuestras redes sociales y acceder a nuestra cuenta con un sistema llamado TOTP un poco más complejo pero que nos aporta una mayor seguridad y de un solo uso facilitándonos una one time password. El servidor elegirá un número que utilizará como clave que transferirá a nuestro dispositivo y servirá como base para futuros códigos de autentificación. Cuando se nos pide finalmente el código de autenticación el sistema utiliza la clave que ya ha guardado para combinarla con la hora actual que detecta en el móvil para poder generarlo. Este sistema es algo más complejo de lo que puede parecer ya que la clave principal en la que se basa y se queda guardada en nuestro dispositivo se consigue cuando hacemos la configuración inicial de nuestra app de Gmail escaneando un código QR. Este sistema TOTP se basa en el hash anteriormente mencionado y lo utiliza como identificador único e inimitable. La clave generada y la hora se combinan utilizando el algoritmo SHA1 para conseguir el código hash, pero como la hora está basada en bloques de 30 segundos así se nos permite disponer del tiempo suficiente para conseguir el código final e introducirlo antes de que caduque.

Este método de verificación puede parecer un engorro para algo bastante simple pero lo cierto es que se nos permite para solamente tener que introducirlo cada 30 días o incluso solamente una vez. ¿Qué conseguimos haciendo esto? Si verificamos nuestra cuenta en los dispositivos que solamente utilizamos nosotros marcando la casilla de “trust this computer” aumentamos enormemente la seguridad de nuestra cuenta, ya que si alguien intentase utilizar dicha cuenta no solo necesitaría nuestra contraseña sino también el código de verificación.

Existen numerosos métodos de encriptación, algunos de ellos ya obsoletos o con distintas versiones que se mejoran y fortalecen con el paso del tiempo. El algoritmo MAC, también conocido como función hash criptográfica, nos asegura que nadie ha interceptado un mensaje modificándolo ni se están haciendo pasar por nosotros. Muchas compañías lo utilizan sobre todo si intercambian mensajes entre departamentos o con otras empresas de forma habitual para asegurar autenticidad y confidencialidad. A pesar de tener ciertas limitaciones, es una de las forma más seguras de encriptación de mensajes que se pueden utilizar además de que podemos escoger entre cualquiera de sus variantes para que se adapte a nuestras necesidades, si bien es cierto que el sistema MAC necesita que ambas personas compartan el código secreto para comparar mensajes y ver si se han modificado o no, merece la pena a la hora de evitar que se nos engañe o ataque nuestro negocio.