Monthly Archives: March 2015

Conocimientos básicos para esquemas de cifrado

Últimamente se ha incrementado la demanda de servicios y soluciones de seguridad informática de una forma “esperada” debido no precísamente al incremento de los ataques ocurridos en los últimos años sino a la difusión y comunicación que ha habido de dichos ataques, derivando esto en una preocupación creciente por protegerse de ellos y no convertirse en víctima.

Una de los métodos de protección que se han visto en incremento es el uso de criptografía para proteger los datos al transmitirlos o en descanso. Comenzando por el incremento del uso del protocolo HTTPS, buzones ligeramente más seguros por SFTP, generación de <<túneles>> TLS, VPN, IPSec para transmisión de datos, entre otros. Sin embargo también el desarrollo de esquemas de seguridad (criptográficos) “propios” se ha visto en aumento. Estos esquemas pueden ser desde una simple implementación de un cifrado de un dato con AES hasta esquemas complejos para protección de datos en flujos de trabajo complejos entre diferentes ambientes, infraestructura, compañías.

Una de las vulnerabilidades más explotadas en criptografía es el mal diseño de estos esquemas de seguridad criptográfica que en ocasiones terminan siendo fatales para la tecnología. Tal es el caso del casi obsoleto WEP en tecnologías inalámbricas hoy en día.

El problema que existe con la generación de estos esquemas es la carencia de información, capacitación, conocimientos o experiencia en las partes involucradas en esta creación. No hay que olvidar que uno de los temas más complejos en seguridad informática es la criptografía pues involucra una formación un tanto distinta o mejor dicho más especializada en ciertas áreas para poder entenderla.

Haciendo un listado de los puntos que se deberían dominar para garantizar un esquema con cierto nivel aceptable de seguridad son:

  • Rendimiento de los algoritmos de cifrado según el tipo de dato a cifrar/descifrar
  • Dominio total de los modos de operación para algoritmos de cifrado por bloques
  • Completo entendimiento y manejo de la información a nivel de bytes
  • Generación de entropía e información pseudo-aleatoria criptográficamente segura
  • Administración, generación y protección de llaves de cifrado
  • Dominio del poder computacional existente y en incremento
  • Conocimiento y entendimiento de vulnerabilidades en los algoritmos de cifrado
  • Entendimiento total de los protocolos actuales que utilizan esquemas de encripción: IPSec, SSH, TLS, Kerberos, WPA, etc.
  • Conocimiento e implementación de tipos de encripción: privada, pública, hashes, híbridos, etc.
  • Limitaciones y rendimiento computacional en los diferentes estados de la información: en descanso, en transmisión, en procesamiento.
  • Manejo de bibliotecas PKI y todo lo que conlleva como son:
    – Certificados Digitales
    – Listas de revocación
    – Cadenas de confianza
    – X.509
    – …
  • Manejo e implementación de codificaciones: Base64, Hex, Unicode, UTF-8, etc.

En un siguiente post mencionaré referencias para “atacar” estos temas de forma adecuada.