29 jun. 2016

Guías de buenas prácticas de criptografía y SSL/TLS

El equipo de SSL Labs ha actualizado su manual de buenas prácticas a la hora de configurar un servidor web con la máxima seguridad. En SSL Labs son expertos en comprobar si un servidor web está correctamente configurado, y si no lo está, nos indican cómo configurarlo correctamente para solucionar posibles vulnerabilidades descubiertas.

Recomendaciones generales sobre los certificados y claves privadas

La primera recomendación de seguridad es utilizar siempre claves RSA de 2048 bits como mínimo, es recomendable aumentar la seguridad hasta los 3072 bits pero debemos tener en cuenta que el establecimiento de las conexiones será más lenta. Otra recomendación pasa por usar claves ECDSA de 256 bits, pero debemos tener en cuenta que algunos clientes es posible que no soporten ECDSA y por tanto no podrán conectarse. No obstante, es posible desplegar en el servidor web tanto claves RSA como ECDSA simultáneamente.

Otra recomendación muy importante es proteger las claves privadas del servidor, de tal forma que muy poca gente tenga acceso a ellas. Además, es recomendable generar las claves privadas nosotros mismos, protegerlas en un contenedor cifrado y realizar copia de seguridad por si perdemos la clave original. Si en algún caso la clave privada se ve comprometida, es necesario revocarla cuanto antes y renovarla para generar nuevas claves. Además, también se recomienda renovar los certificados anualmente.

Debemos tener en cuenta que al pedir un certificado, cubramos todos los subdominios de la página web. También debemos tener presente que los certificados debemos adquirirlos en una CA de confianza, y que el algoritmo de firma de los certificados sea SHA256, actualmente SHA-1 no se considera seguro.

Recomendaciones sobre la configuración del sistema con TLS

Actualmente el principal protocolo que debe soportar nuestro servidor web es TLS 1.2 que es el único que no tiene actualmente fallos de seguridad, además es la única versión que proporciona una suite de cifrado moderno. Con la finalidad de mantener la compatibilidad con clientes antiguos, tal vez sea necesario soportar también TLS 1.1 y TLS 1.0, pero en un par de años quitarán el soporte para TLS 1.0 por lo que debemos tenerlo en cuenta. Otra recomendación es la de estar muy atentos a la salida de TLS 1.3, el último protocolo de seguridad que aún está en producción.

Siempre debemos utilizar suites de seguridad con cifrados robustos, TLS 1.2 incorpora suites AEAD que proporcionan una autenticación robusta y también un intercambio de claves seguros usando DH de al menos 2048 bits, Forward Secrecy, protocolo HSTS y cifrado de al menos 128 bits. Las suites de cifrados que actualmente se recomienda usar son las siguientes:
  1. ECDHE-ECDSA-AES128-GCM-SHA256
  2. ECDHE-ECDSA-AES256-GCM-SHA384
  3. ECDHE-ECDSA-AES128-SHA
  4. ECDHE-ECDSA-AES256-SHA
  5. ECDHE-ECDSA-AES128-SHA256
  6. ECDHE-ECDSA-AES256-SHA384
  7. ECDHE-RSA-AES128-GCM-SHA256
  8. ECDHE-RSA-AES256-GCM-SHA384
  9. ECDHE-RSA-AES128-SHA
  10. ECDHE-RSA-AES256-SHA
  11. ECDHE-RSA-AES128-SHA256
  12. ECDHE-RSA-AES256-SHA384
  13. DHE-RSA-AES128-GCM-SHA256
  14. DHE-RSA-AES256-GCM-SHA384
  15. DHE-RSA-AES128-SHA
  16. DHE-RSA-AES256-SHA
  17. DHE-RSA-AES128-SHA256
  18. DHE-RSA-AES256-SHA256
  19. EDH-RSA-DES-CBC3-SHA

Uso de librerías y estándares

Actualmente la recomendación principal para el cifrado de datos pasa por utilizar la librería Nacl o libsodium, estas librerías están orientadas específicamente a proporcionar siempre la máxima seguridad, velocidad y usabilidad. Los algoritmos de cifrado simétrico recomendables son Chacha20-Poly1305 y AES-GCM, el primero porque está muy optimizado de cara a los procesadores y además es más fácil de implementar que AES-GCM. El segundo es recomendable utilizarlo debido a que es actualmente el estándar en la industria y los procesadores incorporan el juego de instrucciones AES-NI para acelerar el cifrado y descifrado de datos. No se recomienda utilizar algoritmos de cifrado por bloques como AES-CBC, AES-CTR etc, y por supuesto nunca utilizar RC4.

La longitud de las claves privadas se sigue recomendando que sea de 256 bits para los cifrado simétricos, actualmente son las más seguras. Respecto a los algoritmos de firma simétrica, se debe seguir utilizando HMAC, nada de usar HMAC-MD5 o HMAC-SHA1, ni tampoco hashes cifrados ni CRC, actualmente el algoritmo de firma/hash más seguro es SHA-512/256 hasta que SHA-3 salga en escena, nunca se debe usar MD5 o SHA-1.

Respecto al cifrado asimétrico, si tenemos que usar RSA siempre es recomendable usar RSA-OAEP para reforzar la seguridad del propio algoritmo. No obstante, debemos tener en cuenta que se están realizando progresos para crackear RSA así que es recomendable usar siempre la mayor longitud de clave posible (4096 bits como mínimo). Asimismo, respecto a la firma asimétrica siempre debes usar Nacl, Ed25519, o RFC6979.

Por último, si vas a utilizar Diffie-Hellman es recomendable que lo hagas con la librería Nacl, o sino con Curve25519 que es una librería actualizada para usar DH con curvas elípticas, si no puedes usar nada de esto, utiliza DH-2048.

En este post de GitHub se puede comprobar un listado de recomendaciones relacionadas con la criptografía que podemos usar en los diferentes software, y también en configuraciones de servidores que utilicen cifrado de datos, tanto a nivel de red como cifrado de datos local. Además, en la Wiki en GitHub de SSL Labs se pueden encontrar todas las recomendaciones de seguridad.

Fuente: Redes Zone I y II

0 comentarios:

Publicar un comentario

Gracias por dejar un comentario en Segu-Info
Si vas a dejar una consulta, procura tener habilitado tu perfil en Blogger o deja una forma de contacto.

Gracias por comentar!