Seguridad, criptografía y privacidad
Criptografía y seguridad
Qué se protege y con qué: cifrado simétrico y asimétrico, hash de contraseñas, firma digital y certificados, junto a las vulnerabilidades más comunes explicadas para prevenirlas.
La seguridad informática no es un producto que se compra ni una casilla que se marca; es una propiedad que se construye y se mantiene. Su objetivo último se resume en tres letras, la tríada CIA: confidencialidad (que solo quienes deben ver la información la ven), integridad (que la información no se altere sin permiso) y disponibilidad (que este cuando se necesite). Casi todo lo que sigue son mecanismos para defender alguna de esas tres propiedades.
Esta ficha es defensiva: explica con que herramientas se protege la información y como se previenen los ataques más comunes. No contiene pasos para atacar nada, sino el conocimiento necesario para defenderse.
Cifrado simétrico y asimétrico
El cifrado es la herramienta principal para defender la confidencialidad. En el cifrado simétrico, la misma llave sirve para cifrar y para descifrar: es rápido y eficiente, ideal para proteger volúmenes grandes, pero surge la pregunta de como compartir esa llave con quien debe leer el mensaje sin que nadie más la intercepte en el camino.
El cifrado asimétrico resuelve justo eso con una idea brillante. Cada persona genera un par de claves: una pública, que puede entregar a cualquiera, y una privada, que guarda en secreto. Lo que se cifra con la pública solo se descifra con la privada, y viceversa. Imagina candados abiertos que repartes a quien quieras: cualquiera puede cerrar uno sobre su mensaje, pero solo tu, con tu llave privada, puedes abrirlo. Así desaparece el problema de compartir la llave. En la práctica, los dos se combinan: el asimétrico se usa para acordar en secreto una llave, y el simétrico, rápido, cifra el contenido con ella.
Hash, contraseñas y por qué nunca se guardan en claro
Un hash criptográfico es una huella digital de un dato: una función que produce un resumen de tamaño fijo, y con dos propiedades clave. Es prácticamente imposible reconstruir el dato original a partir del resumen, y basta cambiar un solo bit del dato para que el resumen cambie por completo.
Esto resuelve uno de los errores más graves y comunes: guardar las contraseñas de los usuarios en claro. Si la base de datos se filtra, todas quedan expuestas. Lo correcto es guardar el hash de cada contraseña. Cuando el usuario ingresa, se calcula el hash de lo que escribió y se compara con el guardado: si coinciden, la contraseña era correcta, y nunca hubo necesidad de almacenarla. Para defenderse de ataques que prueban millones de contraseñas precalculadas, se añade una sal: un dato aleatorio único por usuario que se mezcla antes de hashar, de modo que dos personas con la misma contraseña tengan hashes distintos. Algoritmos pensados para ser deliberadamente lentos, como bcrypt o argon2, vuelven caro cada intento.
Firmas digitales y cómo sabe tu navegador
Así como el cifrado defiende la confidencialidad, la firma digital defiende la integridad y la autenticidad. Firmar consiste en cifrar con la clave privada un hash del mensaje; quien quiera verificar descifra esa firma con la clave pública y compara el hash. Si coincide, es que el mensaje vino de quien tiene la clave privada y no fue alterado en el camino.
De esto se vale tu navegador para confiar en un sitio. Cuando te conectas por HTTPS, el servidor presenta un certificado digital, firmado por una autoridad certificadora en la que tu navegador ya confía. Esa cadena de confianza es lo que permite saber, sin haber hablado antes con ese sitio, que efectivamente es quien dice ser y no un impostor en medio. TLS es el protocolo que orquesta todo: la negociación de claves, el cifrado del canal y la verificación del certificado.
Las vulnerabilidades más comunes y cómo prevenirlas
Ciertos errores aparecen una y otra vez, y conviene reconocerlos para evitarlos. La inyección ocurre cuando un programa toma datos del usuario y los mezcla con una instrucción (por ejemplo, una consulta a la base de datos) sin separarlos. El remedio es no armar instrucciones concatenando texto, sino usar consultas parametrizadas que traten los datos siempre como datos, nunca como código.
El cross-site scripting, o XSS, ocurre cuando un sitio acepta contenido de un usuario y lo muestra a otro sin limpiarlo, permitiendo que se ejecute código malicioso en el navegador de la víctima. La defensa es escapar y sanitizar siempre lo que entra, antes de mostrarlo. Las credenciales débiles (contraseñas predecibles, reutilizadas o robadas) son otra causa enorme de incidentes; la defensa es exigir contraseñas robustas, almacenarlas hasheadas y con sal, y sobre todo ofrecer un segundo factor, algo que el atacante no tiene aunque adivine la contraseña. Detras de todas estas recetas hay un mismo principio: nunca confies en la entrada que llega, y asume que cualquier dato externo puede venir comprometido.
Defensa en profundidad
Ningún mecanismo, por si solo, basta. La defensa en profundidad consiste en apilar varias capas (el principio de menor privilegio, que da a cada parte solo los permisos que necesita; el cifrado de los datos; los mecanismos de autenticación fuerte; el registro y la auditoría) de modo que si una falla, las otras contengan el daño. La seguridad no es un estado que se alcanza, sino una disciplina que se practica: actualizar, parchear, monitorear y prepararse para cuando algo falle, porque algo fallara. Conocer las herramientas (cifrado, hash, firmas, certificados) y los errores típicos es lo mínimo para defender la información que se nos confía.
Los términos de este tema
32 entradas del glosario que aparecen acá. Cada una abre en su definición del índice.
- AES
- Argon2
- ataque de fuerza bruta
- autenticación
- autoridad certificadora
- autorización
- bcrypt
- cadena de confianza
- certificado digital
- cifrado asimétrico
- cifrado de extremo a extremo
- cifrado simétrico
- claves pública y privada
- contraseña
- criptografía
- criptografía de curva elíptica
- CSRF
- defensa en profundidad
- firma digital
- función hash criptográfica
- inyección SQL
- phishing
- principio de menor privilegio
- red de confianza cero
- RSA
- sal (salt)
- segundo factor
- seguridad de la información
- SHA-256
- TLS
- tríada CIA
- XSS