Captura

Mediante el uso de la criptografía se pretende proteger un mensaje confidencial empleando de un algoritmo y una clave. No obstante, no todos los algoritmos y no todas las claves ofrecen los mismos niveles de seguridad. La búsqueda de las debilidades de estos elementos se conoce como “criptoanálisis“.

En términos prácticos, la fortaleza de un sistema de encriptación se expresa en un valor conocido como “factor de trabajo” que puede ser medido en horas de tiempo computacional o el coste económico de los recursos invertidos para romper la encriptación. Si el factor de trabajo es suficientemente alto, se considera que el sistema de encriptación es “invulnerable”. Obviamente esta afirmación solamente es válida para un periodo de tiempo particular, ya que se debe tener en cuenta la evolución tecnológica, el abaratamiento de recursos de hardware y las vulnerabilidades propias de los algoritmos que hacen que la “invulnerabilidad” de un criptosistema al día de hoy lo hagan vulnerable en un futuro próximo. Ejemplos claros son la ruptura del cifrado de la máquina ENIGMA, los ataques de fuerza bruta al algoritmo RC4 de 40 bits de Netscape, la “máquina para romper DES” de la EFF, Crack.sh: The World’s Fastest DES Cracker, entre otros.

Es por ello que para proteger de forma eficaz la confidencialidad y la integridad de los activos de información de una organización se hace indispensable el uso de algoritmos robustos y longitudes de clave lo suficientemente largas, en conjunto con una evaluación periódica de vulnerabilidades para garantizar que se cuenta con un nivel de seguridad tolerable para la organización en función de los niveles de criticidad de los datos protegidos.

Obviamente, el estándar PCI DSS no es ajeno a este tema. Para la protección en el almacenamiento y la transmisión tanto de credenciales de autenticación como del PAN y para la validación de integridad en ficheros (FIM) se hace referencia explícita al uso de “criptografía fuerte” o “robusta” (“strong cryptography“). Pero, ¿cuáles algoritmos y longitudes de clave son considerados como “criptografía fuerte”?

El National Institute of Standards and Technology (NIST) ha catalogado los algoritmos y sus longitudes de clave en 6 grupos (NIST Special Publication 800-57 Part 1: Recommendation for Key Management -Part 1: General):

  • Aprobado (Approved): El algoritmo se encuentra especificado en los documentos del NIST o hace parte de los algoritmos acreditados por el FIPS (Federal Information Processing Standard – Estándares Federales de Procesamiento de la Información) y puede ser empleado sin restricciones
  • Aceptable (Acceptable): El algoritmo y sus longitudes de clave son seguros para el uso y no se conocen riesgos de seguridad en ese momento
  • Obsoleto (Deprecated): El uso del algoritmo y de la longitud de clave es permitido pero el usuario debe aceptar algunos riesgos
  • Restringido (Restricted): El uso del algoritmo o de la longitud de la clave está obsoleto y hay restricciones adicionales requeridas para procesos de protección criptográfica de datos
  • Uso heredado (Legacy-use): El algoritmo o la longitud de clave puede ser usado para procesar datos previamente protegidos (desencriptar datos o verificar una firma digital) pero pueden existir riesgos en este proceso
  • No permitidos (Disallowed): El algoritmo o la longitud de clave no son aceptados debido a los riesgos asociados

Bajo esta clasificación y bajo la perspectiva de PCI DSS, solamente se debe hacer uso efectivo de algoritmos y longitudes de clave clasificados como “Aprobados” y “Aceptables“.

Algoritmos de encriptación y firma digital y longitudes de clave aceptados por PCI DSS

De acuerdo con el glosario de términos de PCI DSS, a continuación se enumeran los algoritmos y las longitudes de clave mínimas aceptadas por el estándar:

Algoritmo Longitud de clave mínima
AES 128 bits y superior (192 y 256)
TDES/TDEA (Triple Data Encryption Algorithm) Obligatorio el uso de tres claves (Three-key TDEA): 112 bits y superior
RSA 2048 bits y superior
ECC (Elliptic Curve Cryptography) 224 bits y superior
DSA (Digital Signature Algorithm) 2048/224 bits y superior
DH (Diffie–Hellman) 2048/224 bits y superior
Cualquier otro algoritmo aprobado y aceptable con clave > 112 bits Ver NIST Special Publication 800-57 Part 1

Algoritmos de hash aceptados por PCI DSS

Adicional a las acciones de encriptación y firma digital, a continuación se listan los algoritmos de hash aceptados por el estándar:

Familia Algoritmo
SHA-2 SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 y SHA-512/256
SHA-3 SHA3-224, SHA3-256, SHA3-384 y SHA3-512
Whirpool Whirpool-512
Cualquier otro algoritmo aprobado y aceptable de hash Ver NIST Special Publication 800-57 Part 1

Algoritmos no permitidos por el estándar

A continuación se enumeran algunos algoritmos no permitidos por el estándar y cuyo uso debe ser evitado en cualquier implantación de PCI DSS:

Algoritmo Justificación para no usarse
TDEA (2TDEA) No aprobado por el NIST como protección criptográfica a partir de diciembre 31 del 2015
SKIPJACK No aprobado por el NIST como protección criptográfica
MD4 y MD5 (hash) No aprobado por el NIST por problemas de colisión
SHA1 (hash) Si se emplea SHA1 se deben emplear controles adicionales. Ver FAQ "What is the Council’s guidance on the use of SHA-1?" https://pcissc.secure.force.com/faq/articles/Frequently_Asked_Question/What-is-the-Council-s-guidance-on-the-use-of-SHA-1
RIPEMD-128 No aprobado por el NIST por problemas de colisión
Cualquier algoritmo con longitud de clave < 112 bits Longitud de clave vulnerable

Recomendaciones adicionales

Otros puntos a tener en cuenta para la implementación de un criptosistema robusto son los siguientes:

  • En el momento de hacer uso de un algoritmo, configurar su funcionamiento indicando un modo de cifrado robusto (Encryption Mode) y – si es necesario – un vector de inicialización (IV) aleatorio y no repetible. Implementaciones de SSL/TLS con AES empleando Cipher Block Chaining (CBC) han demostrado ser susceptibles a ataques como BEAST o Lucky 13. Evitar el uso de Electronic Codebook (ECB) y CBC, ya que pueden tener riesgos.
  • Muchas veces los problemas de seguridad no son innatos del algoritmo empleado sino de la implementación del mismo en un protocolo o software específico. Tales son los casos de WEP (Wired Equivalent Privacy) que usaba el algoritmo RC4 con un vector de inicialización (IV) de 40 bits que se repetía, permitiendo obtener la clave en pocos minutos y de SSL, que contenía vulnerabilidades de diseño permitiendo la exfiltración de datos confidenciales. Para ello, validar que el protocolo es robusto y no contiene vulnerabilidades conocidas (usar WPA2 en vez de WEP, TLS v1.2 en vez de SSL v3 y versiones actualizadas de las librerías de OpenSSL).

Para referencias adicionales se puede consultar los documentos “Cryptographic Storage Cheat Sheet” de OWASP y “Algorithms, key size and parameters report – 2014” de European Union Agency for Network and Information Security (ENISA).

Finalmente, una comparación de diferentes algoritmos y longitudes de clave (incluyendo criptoperiodos) bajo recomendaciones del NIST, NSA, BSI y ANSSI (entre otros) se puede encontrar en la página BlueKript: Cryptographic Key Lenght Recommendation.

Si requieres de soporte adicional, no olvides dejar tu pregunta en el foro o en los comentarios en este artículo.