Blog / Configuraciones Seguras /

Blog de Internet Security Auditors: La importancia de las suites de cifrado en las comunicaciones en PCI DSS

La importancia de las suites de cifrado en las comunicaciones en PCI DSS

 1. Introducción

Desde 1995, SSL (Secure Sockets Layer) se convirtió en uno de los protocolos más utilizados y extendidos a nivel mundial para el cifrado de las comunicaciones. La gran cantidad de vulnerabilidades en SSL hizo que en 1999 se desarrollase Transport Layer Security 1.0 (TLSv1.0), un protocolo que buscaba mejorar la seguridad en las comunicaciones, aunque como ocurrió en SSL, fueron apareciendo vulnerabilidades en dicho protocolo, principalmente ante ataques BEAST, por lo que tuvo que evolucionar y ser sustituido por TLSv1.1 en 2006.

TLSv1.1 mejoró a TLSv1.0 en cuanto a la seguridad ya que añadía protección con el cifrado de bloques, garantizando el intercambio de datos en un entorno securizado y privado entre dos entes (usuario y servidor); su facilidad de implementación y su uso complementando a otros protocolos en expansión como HTTP, SSH o SMTP, permitió su consolidación en los sistemas de hoy día. Actualmente, son muchas las organizaciones y fabricantes que lo consideran obsoleto (poniendo como fecha límite marzo de 2020) y no se aconseja su utilización para aplicaciones comerciales y comunicaciones a través de redes públicas, por lo que la transición a las versiones TLSv1.2 (2008) o TLSv1.3 (2018) es lo más recomendable puesto que son protocolos más actuales y los cuales están menos afectados por vulnerabilidades y que ofrecen comunicaciones seguras.

NOTA: Este artículo no va enfocado a explicar la criptografía, sino que se centra en el uso de los protocolos de comunicaciones seguros y de cómo las suites de cifrado favorecen esa seguridad.

2. Definiciones

  • Secreto Perfecto Hacia Adelante (Perfect Forward Secrecy). Propiedad que garantiza la protección de las claves utilizadas anteriormente ante el descubrimiento de las claves utilizadas actualmente, por lo que se basa en un sistema de claves efímeras. La clave que se utiliza para la transmisión de datos no puede ser utilizada posteriormente para generar ninguna otra.
  • Claves efímeras. Las claves efímeras tienen solamente un uso, por lo que son generadas para utilizarse en una sesión. Una vez que las claves son creadas, se destruyen cuando el secreto compartido se computa.
  • Claves estáticas. Al contrario que las claves efímeras, estas claves se utilizan para más de un uso, por lo que es más fácil que puedan ser comprometidas que las anteriores.
  • Cifrado autenticado (AE). Se trata de una forma de cifrado que proporciona confidencialidad, integridad y autenticidad de forma simultánea a los datos. Su funcionamiento se basa en el cifrado de datos utilizando una clave y proporcionando unos datos cifrados junto con su etiqueta de autenticación.
  • Etiqueta de autenticación o código de autenticación de mensaje (MAC). Es una cadena de bits aleatorios que provee integridad al texto cifrado y/o a los datos asociados autenticando los mensajes.

3. TLS y el handshake

A pesar de que TLSv1.1 cuenta con vulnerabilidades, su utilización para el cifrado de las comunicaciones no está prohibido, aunque sí desaconsejado. TLSv1.1 se encuentra aceptado por el estándar PCI DSS debido a que proporciona un cifrado seguro siempre y cuando se combine con ciertas suites de cifrado, o por guías o estándares referentes en la industria aceptadas por PCI DSS como son las publicadas por el NIST.

El objetivo de TLSv1.1 es el de proporcionar privacidad e integridad a las comunicaciones entre aplicaciones. Se compone de dos capas: el protocolo de autenticación TLS (TLS Record Protocol) y el protocolo del handshake TLS (TLS Handshake Protocol).

  • Protocolo de autenticación. Se encarga de proporcionar una comunicación privada utilizando criptografía simétrica para el cifrado de datos, y fiable utilizando una comprobación de la integridad del mensaje mediante MAC (utiliza como funciones hash MD5 o SHA).
  • Protocolo de Handshake. Se encarga de autenticar al cliente y al servidor, además de permitirles negociar el algoritmo y las claves de cifrado antes de que se produzca la comunicación. Este protocolo se encarga de dotar de seguridad a las comunicaciones mediante tres propiedades:
    • Autenticación usando claves asimétricas o públicas.
    • Negociación de secreto compartido segura.
    • Negociación confiable.

Ilustración 1: Handshake en TLS. Extraído de researchgate.

Durante el handshake, se negocian los algoritmos que proporcionan la autenticación, confidencialidad y la integridad. El conjunto de algoritmos de cifrado negociados es lo que se conoce como suites de cifrado. Estas especifican una colección de algoritmos para el intercambio de información durante una sesión entre dos dispositivos.  Estos parámetros quedan definidos tras el handshake llevado a cabo por el protocolo TLS, en lo que se conoce como el subprotocolo “change cipher spec”, en el cual el cliente propone al servidor las suites de cifrado que soporta, siendo el servidor el encargado de seleccionar una de ellas para llevar a cabo la comunicación de forma segura.

4. Suites de cifrado

Las suites de cifrado se componen de distintos campos.
Para TLSv1.2 o versiones anteriores:

  • Protocolo utilizado. El protocolo que dota de seguridad en la capa de transporte. En este caso, el protocolo utilizado es TLS.
  • Algoritmo para el intercambio de claves. Utilizado para determinar cómo van a ser autenticados el cliente y el servidor durante el handshake. Los algoritmos son asimétricos y son los siguientes: ECDHE_ECDSA, DHE_RSA, ECDHE_RSA, DHE_DSS, DH_DSS o DH_RSA.
    • Si se trata de algoritmos como Diffie-Hellman (DH) o Diffie-Hellman con curva elíptica (ECDH), el siguiente campo, el campo de la firma, indica la clave pública del servidor.
    • Si el algoritmo es efímero, como son los algoritmos Diffie-Hellman Efímero (DHE) o Diffie-Hellman con curva elípitica Efímero (ECDHE), el campo de la firma corresponde al tipo de clave pública del servidor que va a ser utilizado para autenticarlo.
    En caso de no existir un campo de firma definido, el algoritmo de intercambio de claves indica el algoritmo simétrico de claves pre-compartidas como son: DHE_PSK, ECDHE_PSK o PSK.
  • Algoritmo de cifrado. Indica cómo va a ser cifrado el mensaje mediante un algoritmo de cifrado de bloques (AES_128, AES_256, CHACHA20). Estos algoritmos difieren en la longitud de clave (AES_128 con claves de 128 bits, y AES_256 y CHACHA20 con claves de 256 bits). Los algoritmos de cifrado de bloques van acompañados del modo de operación de cifrado de clave (128 bits) de ese bloque (GCM – Galois Counter Mode, CBC – Cipher Block Chaining, CCM – Counter with CBC-MAC). Los modos de operación están formados normalmente por un esquema de cifrado y por un código de autenticación de mensaje (MAC).
  • Algoritmo de autenticación de mensaje. Es un algoritmo opcional y se utiliza para autenticar un mensaje usando HMAC. Genera los hashes y las firmas que aseguran la integridad de los mensajes. Los algoritmos que pueden ser utilizados son: SHA, SHA256, SHA384 o POLY1305.
Los distintos campos que conforman las suites de cifrado para TLSv1.2 quedan representadas en el siguiente ejemplo:

Ilustración 2: Suites de cifrado para TLSv1.2

Para TLSv1.3, estos valores difieren, pues no se especifica el algoritmo de intercambio de claves ni el método de autenticación. Las suites de cifrado de TLSv1.3 solo se pueden utilizar cuando los certificados del servidor son RSA y ECDSA, pero no DSA o DH que fueron eliminadas de TLSv1.3. Los campos de las suites de cifrado son los siguientes:

  • Protocolo utilizado. El protocolo que dota de seguridad en la capa de transporte. En este caso, el protocolo utilizado es TLS.
  • Algoritmo de cifrado. Este algoritmo dota de confidencialidad, integridad y autenticación de mensaje. Los algoritmos para el cifrado de bloques utilizados pueden ser: AES_128, AES_256 o CHACHA20. A estos algoritmos se les añade el modo de operación de cifrado de clave de ese bloque de cifrado: GCM, POLY1305, CCM o CCM_8. Para TLSv1.3 queda CBC obsoleto. Estos modos de operación generan una etiqueta de autenticación de distinto tamaño: GCM, POLY1305 y CCM de 16 bytes, mientras que CCM_8 de 8 bytes.
  • Algoritmo para la autenticación de mensaje. Se utiliza para autenticar los mensajes y dotarlos de integridad. Los algoritmos que se pueden utilizar son: SHA256, SHA384.
Estos campos quedan representados en la siguiente imagen de ejemplo:

Ilustración 3: Suites de cifrado para TLSv1.3

5. Configuraciones para PCI DSS

Algunas consideraciones que deben tenerse en relación a los entornos PCI DSS son las siguientes:

  • Utilizar suites de cifrado cuyo certificado contenga una firma de al menos 112 bits.
  • Elegir claves efímeras antes que claves estáticas puesto que al utilizar la característica de Secreto Perfecto hacia Adelante (Perfect Forward Secrecy) se garantiza la protección de claves en caso de que una actual se vea comprometida. Por tanto, algoritmos como DHE (Diffie-Hellman Ephimeral) o ECDHE (Elliptic-curve Diffie-Hellman Ephimeral) son preferidos a DH o ECDH.
  • Utilizar cifrado autenticado (AE) para añadir integridad y autenticidad. El cifrado autenticado previene diversos ataques sobre la autenticación. Por tanto, es preferible utilizar GMC o CCM antes que el modo CBC.
  • Seleccionar algoritmos que proveen una etiqueta de autenticación lo más larga posible para proporcionar una mayor seguridad en la autenticación debido a que es más complicado alterar la integridad cuanto más larga sea esta etiqueta. En este caso, sería preferible utilizar CCM antes que CCM_8 puesto que utiliza 16 octetos para rellenar la etiqueta de autenticación en vez de 8.

6. Conclusiones

Tras analizar los distintos protocolos y suites de cifrado se puede concluir que las suites de cifrado constituyen un elemento fundamental en la seguridad de las comunicaciones puesto que son las encargadas de establecer los algoritmos de cifrado de datos aportando confidencialidad, integridad y autenticidad. Se trata de un elemento imprescindible dentro de PCI DSS porque permite que los datos de tarjeta no sean transmitidos en claro a través de un canal seguro.

La importancia de elegir protocolos de comunicaciones seguros dificulta que los datos transmitidos puedan verse comprometidos. Por ello, la utilización de protocolos como TLSv1.2 y TLSv1.3 es lo más recomendable para las comunicaciones, aunque TLSv1.1 acompañado de suites de cifrado seguras son todavía válidas igualmente dentro de PCI DSS. 

7. Referencias


Autor: Diego de la Horra
Dpto. Consultoría

Suscríbete al Blog