En Mi Local Funciona

Technical thoughts, stories and ideas

Hablemos de Seguridad - Parte 1: Introducción

Publicado por Thorsten Prumbs el

Seguridad

Vamos a empezar una pequeña serie de artículos relacionados con el mundo de la seguridad digital. Como es un campo muy amplio, nos vamos a limitar a los conceptos más básicos - por lo menos al principio, quién sabe.

¿Qué es seguridad?

Al final la seguridad es:

  • Confianza.
  • Un proceso continuo.

Nos ayuda a entender la seguridad el compararla con la sanidad. Por ejemplo, un médico sólo puede asegurar que un paciente no padece una enfermedad conocida. No se puede asegurar nunca que un paciente esté sano porque pueden existir enfermedades todavía desconocidas.

La seguridad es igual. Nadie puede exclamar que un sistema es seguro. Sólo se puede asegurar que un sistema no es vulnerable a un tipo de ataque muy concreto. Es interesante ver también el Problema de la inducción.

Términos de seguridad

En el mundo de la seguridad hablamos de activos o assets que queremos proteger (securizar) contra el uso indebido, es decir, impedir un uso no autorizado con la ayuda de medidas de seguridad.

Existen diversas formas de atacar contra las medidas de seguridad y estos ataques se pueden caracterizar con múltiples propiedades como:

  • Quién.
  • Dónde.
  • Cómo.
  • Con qué Fuerza o Intención.
  • Etc.

Como hay una diversidad de atributos que describen un ataque, se suele hablar de vectores de ataques.

En el mundo digital, los activos pueden ser almacenes de datos, APIs, productos software, etc.

Ahora empieza la incertidumbre y el negocio

Ahora bien, en el mundo real existen infinitos tipos de ataque a un activo concreto y proteger un activo contra todos los ataques (incluyendo los desconocidos) es simplemente imposible.

Por lo tanto intentamos fijarnos sólo en aquellos ataques que puedan tener algun impacto en el valor del activo. De estos ataques con impacto para el activo intentamos calcular la probabilidad.

A un ataque con impacto y probabilidad lo denominamos riesgo. Aquí el mundo de la seguridad entra en el mundo de la incertidumbre y la percepción humana.

Dichos riesgos se intentan gestionar con el llamado Risk Management, dónde rápidamente nos encontramos con Fat-tailed_distribution y la Teoría del cisne negro.

Esto puede parecer muy lejano, pero hay que recordar que el mundo digital es muy, pero que muy volátil. Si nos imaginamos de nuevo el mundo de la seguridad digital como el mundo de la salud, entonces tendríamos casi a diario nuevas versiones o releases nada menos que de la especie humana, la biología y la química, con un comportamiento potencialmente muy diferente a la versión anterior.

¿Cómo mejoramos nuestra seguridad si no podemos estar seguros?

No podemos estar seguros, pero podemos intentar vivir cada día mejor, no peor, con la incertidumbre. En la práctica esto quiere decir: minimizar los riesgos.

Los riesgos se pueden minimizar de varias maneras y se deben utilizar de forma conjunta:

  • Minimizar impacto:
    • Minimizar vectores de ataques:
      • Reducir superficies de ataque.
      • Aumentar protección.
    • Minimizar daño en caso de ataque.
  • Cambiar percepción del riesgo (Teatro de seguridad).

Un ejemplo, muy simplificado pero real, sería ¿Cómo proteger la cuenta bancaria de un cliente?:

Reducir la superficie de ataque

La arquitectura del producto software debe ser la más simple posible, separando responsabilidades, aislando de otros dominios de negocio (incluso físicamente), simplificando el stack tecnológico, etc.

Aumentar la protección

El mundo de la seguridad digital trata sobre todo de aumentar la protección utilizando medidas de seguridad como la identificación, autenticación, autorización, auditoría, privacidad y disponibilidad.

Adelantamos que un banco podría implementar mecanismos de autenticación múltiple (Multi-factor authentication), emplear mecanismos de permisos mínimos según el contexto (origen, dispositivo, hora, etc.), registrar trazas de auditoría en un sistema de almacenamiento WORM, a la par que respetar la privacidad de los usuarios minimizando los datos almacenados o en curso de computación e integración junto con la encriptación fuerte de cualquier comunicación y dato sensible. Respecto a la disponibilidad se elimina cualquier único punto de fallo (SPOF) y se garantizan tiempos de respuesta máximos incluso ante ataques distribuidos de denegación de servicio (DDoS).
Todo esto y más veremos más en detalle en las siguientes partes de esta serie.

Minimizar daño en caso de ataque

En el caso de un ataque exitoso, se intenta mitigar el daño causado, bien para la empresa y/o para el cliente o usuario. Un banco lo hace con contratos de seguros que asumen cierto porcentaje de fraude e indemnizan hasta cierto punto el daño causado como por ejemplo pérdida de dinero por robo de tarjetas, spoofing, etc.

Cambiar percepción del riesgo

Una manera de minimizar los riesgos sería dejar de percibir los riesgos. Obviamente no es una solución a un posible ataque. Sin embargo se suele utilizar para mejorar la percepción de seguridad de los usuarios.

Un banco suele tomar esta medida modernizando el diseño de su página web. De la misma manera los bancos convencionales construían sus sedes centrales con una arquitectura aparentemente robusta, con granito y columnas amplias, aunque a nivel de estructura y puertas de acceso todo era como en un edificio normal.

Atacante vs defensor - La guerra en el mundo digital

Después de esta pequeña introducción al mundo de la seguridad digital cabe añadir que la situación actual de seguridad digital es la de una autentica guerra desencadenada donde es prácticamente imposible atribuir un ataque con certeza.

Los atacantes van desde usuarios que se aprovechan de software mal desarrollado/configurado hasta actores estatales y el crimen organizado con fondos económicos muy grandes.

Si vemos atacantes y defensores en plena batalla, podemos dejarnos influir por las conclusiones y pensamientos del Arte de la Guerra (The Art of War).
Algunas de las conclusiones más condensadas se resumen en:

So it is said that if you know your enemies and know yourself, you will not be put at risk even in a hundred battles.

If you only know yourself, but not your opponent, you may win or may lose.

If you know neither yourself nor your enemy, you will always endanger yourself.

y

All warfare is based on deception.

Hence, when we are able to attack, we must seem unable;

when using our forces, we must appear inactive;

when we are near, we must make the enemy believe we are far away;

when far away, we must make him believe we are near.

Fuente: Wikipedia

En el próximo episodio de esta serie descubriremos cómo aumentar nuestra protección mitigando vectores de ataques con medidas de seguridad.

Si te ha gustado el comienzo de esta serie, ¡síguenos en Twitter para estar al día de próximas entregas!

Thorsten Prumbs
Autor

Thorsten Prumbs

Líder de la Comunidad de Arquitectura de Soluciones en atSistemas.
Especialista en ALM, Java EE, rendimiento y seguridad. Siempre aprendiendo por ingeniería inversa.
Twitter: @tprumbs