Algoritmo criptográfico dañado o riesgoso

Categoría de OWASP: MASVS-CRYPTO: Criptografía

Descripción general

A pesar del uso generalizado de la criptografía para proteger la confidencialidad y la integridad de los datos, surge un riesgo significativo cuando los desarrolladores implementan inadvertidamente algoritmos criptográficos débiles o desactualizados. Esta vulnerabilidad se debe a las debilidades inherentes de estos algoritmos, que pueden ser aprovechadas por agentes maliciosos que poseen la capacidad de procesamiento o el conocimiento necesarios. Las consecuencias de este tipo de explotación pueden ser graves y provocar acceso no autorizado, violaciones de la seguridad de los datos y manipulación de información sensible.

Impacto

Los datos sensibles pueden exponerse, modificarse o falsificarse. Los algoritmos criptográficos rotos o riesgosos pueden generar vulnerabilidades y pueden usarse de forma abusiva para descifrar información sensible, manipular datos o suplantar entidades legítimas. El impacto de aprovechar estas vulnerabilidades puede variar desde filtraciones de datos y pérdidas financieras hasta daños a la reputación y pérdida de la confianza de los usuarios.

Riesgo: Funciones hash criptográficas débiles o dañadas

El uso de funciones hash criptográficas débiles o dañadas (como MD5 o SHA1) representa un riesgo significativo para la seguridad y la integridad de los datos. Las funciones hash están diseñadas para crear huellas digitales (hashes) únicas y de longitud fija de los datos de entrada, lo que las hace útiles para diversos fines, como la verificación de la integridad de los datos, el almacenamiento de contraseñas y las firmas digitales. Sin embargo, cuando se emplean funciones hash débiles o vulneradas, pueden surgir varias vulnerabilidades:

  • Ataques de colisión: Las funciones hash débiles son susceptibles a ataques de colisión, en los que un atacante encuentra dos entradas diferentes que producen el mismo valor hash. Esto puede permitirles sustituir datos maliciosos por datos legítimos sin que se detecte, lo que compromete la integridad de los datos.
  • Violaciones de la seguridad de los datos: Si las contraseñas se codifican con un algoritmo débil, una violación exitosa de un sistema podría exponer las credenciales del usuario. Luego, los atacantes podrían usar tablas de arcoíris o otras técnicas para descifrar las contraseñas y obtener acceso no autorizado a las cuentas.
  • Rechazo de firmas digitales: Las funciones de hash débiles que se usan en las firmas digitales se pueden aprovechar para crear firmas falsificadas, lo que dificulta determinar la autenticidad y la integridad de los documentos o mensajes.

Mitigaciones

Para mitigar estos riesgos, es fundamental usar funciones hash criptográficas sólidas y bien verificadas, como SHA-2 o SHA-3, y mantenerlas actualizadas a medida que se descubran nuevas vulnerabilidades. Además, adoptar prácticas de seguridad, como el salado de contraseñas y el uso de algoritmos de hash específicos para contraseñas, como bcrypt o Argon2, puede mejorar aún más la protección de datos.


Riesgo: Funciones de encriptación criptográfica débiles o dañadas

El uso de funciones de encriptación criptográfica débiles o dañadas (como DES o RC4) plantea graves riesgos para la confidencialidad de los datos sensibles. La encriptación está diseñada para proteger la información transformándola en un formato ilegible, pero si el algoritmo de encriptación es defectuoso, se pueden omitir estas protecciones:

  • Violaciones de la seguridad de los datos: Los algoritmos de encriptación débiles son susceptibles a varios ataques, incluidos los ataques de fuerza bruta, los ataques de texto sin formato conocido y las técnicas de criptoanálisis. Si tienen éxito, estos ataques pueden exponer datos encriptados, lo que permite el acceso no autorizado a información sensible, como detalles personales, registros financieros o datos comerciales confidenciales.
  • Manipulación y alteración de datos: Incluso si un atacante no puede desencriptar por completo los datos, es posible que pueda manipularlos sin que se detecte si el algoritmo de encriptación es débil. Esto puede provocar modificaciones no autorizadas de los datos, lo que podría generar fraude, tergiversación o cualquier otra actividad maliciosa.

Mitigaciones

Usa algoritmos criptográficos sólidos en las funciones de encriptación.

Para mitigar estos riesgos, es fundamental usar algoritmos criptográficos sólidos y bien verificados, y seguir las prácticas recomendadas para la administración de claves y la implementación del cifrado. También es fundamental actualizar periódicamente los algoritmos de encriptación y mantenerse al tanto de las amenazas emergentes para mantener una seguridad de datos sólida.

Estos son algunos algoritmos predeterminados recomendados que puedes usar:

  • Encriptación simétrica:
    • AES-128/AES-256 con el modo GCM
    • Chacha20
  • Encriptación asimétrica:
    • RSA-2048/RSA-4096 con relleno de OAEP

Usa primitivas seguras de una biblioteca de criptografía para reducir los errores comunes

Si bien seleccionar un algoritmo de encriptación adecuado es fundamental, para minimizar realmente las vulnerabilidades de seguridad, considera usar una biblioteca de criptografía que ofrezca una API optimizada y enfatice las configuraciones predeterminadas seguras. Este enfoque no solo fortalece la seguridad de tus aplicaciones, sino que también reduce significativamente la probabilidad de introducir vulnerabilidades a través de errores de codificación. Por ejemplo, Tink simplifica las opciones de encriptación ofreciendo dos opciones distintas: encriptación AEAD y Hybrid, lo que facilita que los desarrolladores tomen decisiones de seguridad fundamentadas.


Riesgo: Funciones de firma criptográfica débiles o dañadas

El uso de funciones de firma criptográfica débiles o dañadas (como RSA-PKCS#1 v1.5 o las basadas en funciones hash débiles) plantea graves riesgos para la integridad de los datos y la comunicación. Las firmas digitales están diseñadas para proporcionar autenticación, no repudio e integridad de los datos, lo que garantiza que un mensaje o documento se origine de un remitente específico y no se haya manipulado. Sin embargo, cuando el algoritmo de firma subyacente es defectuoso, estas garantías pueden verse comprometidas:

  • Falsificación de firmas: Los algoritmos de firma débiles pueden ser vulnerables a ataques que permiten que los agentes maliciosos creen firmas falsificadas. Esto significa que pueden suplantar entidades legítimas, falsificar documentos o manipular mensajes sin que se detecte.
  • Repudio de firmas: Si se vulnera un algoritmo de firma, es posible que un firmante pueda afirmar falsamente que no firmó un documento, lo que socava el principio de no repudio y genera desafíos legales y logísticos.
  • Manipulación y alteración de datos: En situaciones en las que se usan firmas para proteger la integridad de los datos, un algoritmo débil podría permitir que los atacantes modifiquen los datos sin invalidar la firma, lo que provocaría una alteración no detectada y una posible vulneración de la información crítica.

Mitigaciones

Usa algoritmos de firma criptográfica sólidos

Para mitigar estos riesgos, es fundamental usar algoritmos de firma criptográfica sólidos y bien verificados:

  • RSA-2048/RSA-4096 con relleno de PSS
  • Algoritmo de firma digital de curva elíptica (ECDSA) con curvas seguras

Usa primitivas seguras de una biblioteca de criptografía para reducir los errores comunes

Elegir el algoritmo de firma correcto es fundamental, pero, para minimizar realmente las vulnerabilidades de seguridad, considera usar una biblioteca de criptografía que proporcione garantías de seguridad sólidas de forma predeterminada. Tink, por ejemplo, simplifica las opciones de firma ofreciendo ECDSA con curvas seguras como opción predeterminada, todo dentro de una API integral y sencilla. Este enfoque no solo mejora la seguridad, sino que también optimiza el desarrollo, ya que elimina la necesidad de una configuración o toma de decisiones complejas.


Recursos