Imagina a un tipo con hoodie, sentado frente a una computadora con varias pantallas. En ellas hay muchas letras verdes sobre fondo negro y tal vez algunas barras de progreso que muestran un porcentaje. Este es el típico hacker de las películas, un genio informático. No importa si su objetivo es un espía enemigo o el gobierno; con su experiencia y la secuencia correcta de teclas, tarde o temprano logrará acceder a la computadora de su contrincante y afectarla. ¿Pero qué tan cierto es esto? ¿Realmente siempre existirá un punto en el que alguien pueda hackear algo?
Si imaginamos una puerta de madera en una casa, sabemos que impide el paso a la mayoría de las personas; sin embargo, alguien podría abrir la cerradura con una ganzúa o, quizás, alguien más desesperado podría usar un hacha o un ariete y entrar a la fuerza. Cámbiala por una puerta de metal y tal vez logres vulnerarla con un soplete, una esmeriladora o algún explosivo. Cada vez que aumentes la seguridad de la puerta, podrías encontrar un método de ataque más potente para vencerla. ¿Realmente pasa esto con la ciberseguridad? ¿Por más que avancen los algoritmos, siempre habrá alguna forma de vencerlos?
En el mundo digital no podemos hacer bits más duros ni programas que necesiten teclazos más fuertes para romperse; lo que tenemos para protegernos son las matemáticas, problemas tan difíciles que ni las computadoras más potentes de hoy podrían resolverlos.
A lo largo de la historia, los algoritmos han ido cambiando. Las primeras computadoras eran tan lentas que no podían con el uso legítimo si no usaban un algoritmo ligero, y con el tiempo esos algoritmos se fueron rompiendo. Algunos, simplemente porque las computadoras se volvieron tan poderosas que podían romperlos rápidamente; otros, porque se les encontraron vulnerabilidades, atajos matemáticos que permitían saltarse el algoritmo.
Sin embargo, hoy tenemos algoritmos que, hasta donde se sabe, ni las computadoras actuales ni las del futuro podrían romper, incluidas las cuánticas. Hemos llegado a un punto en el que las matemáticas son tan sólidas que al atacante ya no le conviene buscar cómo romper los algoritmos, sino cómo evitarlos. Tenemos algoritmos prácticamente imposibles de romper, al grado de que la mayor vulnerabilidad es el error humano, como dejar la puerta sin llave o incluso dejar un hueco donde debería haber una puerta.
Cuando estudiaba bachillerato, en la era de oro de los cyber[1], a muchos les hackeaban las cuentas. Muchos pensaban que era una vulnerabilidad inherente del internet, que con conocimiento y recursos suficientes había forma de robar cualquier cuenta.
Yo sabía que había tres explicaciones posibles:
-
Le pusieron “recordar mi contraseña” en la computadora del cyber. Alguien que usó esa computadora después entró sin problema.
-
Su contraseña era tan fácil que alguien conocido la adivinó; usó su fecha de nacimiento o el nombre de su perro.
-
Había un keylogger en esa computadora. Una aplicación que registraba todas las teclas presionadas: esto ocurría con más frecuencia de lo que uno esperaría.
De las tres, la más probable era la primera. Pero, finalmente, en las tres opciones, el punto débil fue el usuario o la computadora que usó. El servidor ni se enteró. Y en un servicio bien hecho, aunque alguien hubiera entrado al servidor, la contraseña ni siquiera debería haber estado ahí.
Algoritmos de un solo sentido
Cuando creas una cuenta en un sitio bien hecho, el sitio no guarda tu contraseña. Guarda un número que calcula a partir de ella con una función hash.
Vamos a inventar una muy sencilla. A cada letra le asignamos su lugar en el alfabeto: a = 1, b = 2, c = 3, hasta z = 26. El hash de una palabra es la suma de sus letras.
hola → 8 + 15 + 12 + 1 = 36
Si cambias una letra, hora da 42, un número distinto que a simple vista no parece tener un patrón; sin embargo, lo tiene.
Ahora la parte importante. Si te digo “el número es 36”, ¿puedes decirme cuál era la palabra? Matemáticamente, no. Con la suma se pierde información, pues ya no sabes qué letras eran ni en qué orden.
Estos algoritmos de un solo sentido se llaman “funciones hash” y, con ellas, los servidores almacenan las contraseñas (o al menos deberían hacerlo). Si alguien roba la base de datos, verá 36, pero no sabrá tu contraseña. Entonces, lo que tendría que hacer es intentar con palabras hasta que alguna dé como resultado 36.
La cosa es que, con nuestra función simple, es muy sencillo. Prueba con palabras comunes como “hola” y “vida”; dan 36 y, con cualquiera de ellas, podrían entrar a tu cuenta. Cuando dos entradas distintas dan el mismo resultado, se le llama colisión y con este algoritmo hay un montón: amor, roma, ramo, mora y pez dan 47. Si tu contraseña es amor, alguien podría entrar con pez, porque ambos dan el mismo resultado.
Para evitar esto, utilizan algoritmos como SHA-256, que siguen la misma idea pero son mucho más complejos. En lugar de una suma, revuelven los bits de la entrada en 64 rondas de operaciones y el resultado es un número de 256 bits. Así se ve el hash de hola:
b221d9dbb083a7f33428d7c2a3c3198ae925614d70210e28716ccaa7cd4ddb79
Y así el de Hola, empezando con mayúscula:
e633f4fc79badea1dc5db970cf397c8248bac47cc3acf9915ba60b5d76b0e88f
Cambias una letra y obtienes un resultado completamente distinto, sin un patrón visible. Con SHA-256, las colisiones existen en teoría (hay infinitas palabras posibles y un número finito de resultados posibles), pero nadie ha encontrado una. Tampoco hay una forma conocida de tomar un hash y fabricar una palabra que lo produzca. Sin embargo, lo que se usa actualmente son algoritmos aún más complejos, como Argon2 y bcrypt, que son más lentos de calcular (a propósito) y le agregan partes aleatorias para dificultar atinarle con fuerza bruta.
Entonces, ¿cómo sabe el sitio que escribiste bien tu contraseña si no la tiene almacenada? Calcula el hash de lo que tecleaste y lo compara con el que tiene guardado. Si coinciden, eres tú.
El propio sitio no guarda tu contraseña. Si un empleado abre la base de datos, ve números. Si alguien se la roba, también. Si el director de la empresa, o un gobierno con una orden en la mano, les exige tu contraseña, no tienen cómo dársela. No es que se nieguen; no existe en ningún lado, solo el resultado del hash. Un servicio bien hecho nunca te dice cuál era tu contraseña; si la olvidas, te obligará a crear una nueva porque ni siquiera ellos saben cuál era la anterior.
Desafortunadamente, no todos lo utilizan. Alguna vez hice el procedimiento para recuperar mi contraseña en Telcel; me mandaron mi contraseña, tal cual, en texto plano. ¿Lo más aterrador? Fue hace pocos años.
Eso sí, el truco de probar distintas combinaciones hasta atinarle sigue funcionando. Si tu contraseña es demasiado sencilla, puede que un atacante la adivine muy pronto. Por eso la longitud de tu contraseña importa mucho. De eso hablaremos en otra publicación.
Acceso y encriptación
Que nadie pueda obtener tu contraseña es una gran protección, pero la contraseña solo es una validación, y un error de código podría saltársela. Aquí es donde entra la encriptación o cifrado.
Encriptar es convertir un mensaje en algo ilegible de forma que solo se pueda descifrar con una llave. A diferencia del hash, aquí sí puedes volver al mensaje original, pero únicamente si tienes la llave.
Vamos con otro algoritmo sencillo, tan antiguo como Julio César. La llave es un número, y cifrar es recorrer cada letra ese número de lugares en el alfabeto. Con llave 3, hola se convierte en krod: la h pasa a k, la o a r, la l a o y la a a d. Para regresar, recorres las letras hacia atrás las mismas 3 posiciones. Sin la llave, krod no dice mucho.

¿Es seguro? Para nada. Solo hay 25 llaves posibles. Alguien que vea krod y no conozca la llave las prueba todas, y solo una da algo que se lee: con 1 sale jqnc, con 2 sale ipmb, con 3 sale hola. Tarde o temprano, obtendría la llave por prueba y error.
Entonces lo hacemos más complicado. En lugar de un número único para todo, usamos uno distinto para cada letra, por ejemplo, 7, 2, 19 y 11. Ahora hola se vuelve oqel. El atacante ya no prueba 25 llaves sino 26^4, casi 457 000 combinaciones. Mucho más seguro que el anterior; sin embargo, se puede encontrar un patrón reconocible y de ahí deducir la llave más fácilmente. A una computadora le toma muy poco tiempo resolverlo.
Lo que hacen los cifrados seguros es incrementar la complejidad del algoritmo hasta un punto en el que sea muy difícil adivinar la llave mediante prueba y error. AES no recorre letras, sino que trabaja con bloques de 128 bits y los revuelve en 14 rondas de operaciones, con una llave de 256 bits. Esto es tan complejo que no se ve ningún patrón fácil de explotar y lo único que se puede hacer es probar llave por llave. Es lo que protege tus mensajes, tus fotos en la nube y la conexión con tu banco. Y por eso, aunque alguien consiga entrar a una cuenta por la puerta equivocada, si los datos están bien cifrados, sin la llave solo encontrará ruido.
¿Cuántas llaves hay? En nuestro primer juguete eran 25. En el segundo, 26^4. En AES-256, una llave puede tomar 2^256 valores distintos. Escrito completo, es un número de 78 dígitos.
Imagina una computadora capaz de probar un trillón de llaves por segundo, un 1 seguido de 18 ceros. Eso ya es más de lo que podría hacer cualquier supercomputadora actual. Probarlas todas le tomaría unos 3.7 × 10^51 años. El universo tiene unos 13 800 millones de años, así que tendrías que esperar su edad entera más de 10^41 veces.
Con la tecnología actual, nadie puede romper el cifrado AES-256 ni con todas las computadoras del planeta. Si en una película ves a un hacker que logra romper un cifrado avanzado de un espía enemigo solo por teclear durante unos minutos, ahora sabes que es tan fantasioso como ver a alguien abrir un candado apuntándole con una varita mientras pronuncia “Alohomora”.
Sin embargo, no todo está asegurado para el futuro; con las computadoras cuánticas, ciertos problemas muy específicos se podrían resolver de una forma más rápida, y para algunos algoritmos actuales su complejidad matemática se vuelve trivial.
Hasta donde se sabe públicamente, aún no hay computadoras cuánticas lo suficientemente grandes, pero ya hay respuesta para cuando sí lo sean. En 2024 el NIST publicó los primeros estándares de criptografía diseñada para resistir computadoras cuánticas, y algunos navegadores y apps de mensajería ya los usan. Falta que lleguen a todo, pero no estamos esperando con los brazos cruzados. Cómo funciona una computadora cuántica y cómo nos protegemos de ella, lo veremos en otra publicación.
En la próxima publicación vamos a tratar algo que sí está en tus manos: tus contraseñas, y por qué una frase larga te protege más que una contraseña compleja como P@ssw0rd!.
Referencias
- NIST. FIPS 180-4: Secure Hash Standard (SHS). https://csrc.nist.gov/pubs/fips/180-4/upd1/final
- NIST. FIPS 197: Advanced Encryption Standard (AES). https://csrc.nist.gov/pubs/fips/197/final
- Biryukov, Dinu, Khovratovich y Josefsson. RFC 9106: Argon2 Memory-Hard Function for Password Hashing and Proof-of-Work Applications (2021). https://www.rfc-editor.org/info/rfc9106
- Provos y Mazières. “A Future-Adaptable Password Scheme” (bcrypt). USENIX Annual Technical Conference, 1999. https://www.usenix.org/conference/1999-usenix-annual-technical-conference/future-adaptable-password-scheme
- Planck Collaboration. “Planck 2018 results. VI. Cosmological parameters”. Astronomy & Astrophysics 641, A6 (2020). https://arxiv.org/abs/1807.06209
- Shor, P. W. “Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer”. SIAM Journal on Computing 26(5), 1997. https://arxiv.org/abs/quant-ph/9508027
- NIST. “NIST Releases First 3 Finalized Post-Quantum Encryption Standards” (13 de agosto de 2024). https://www.nist.gov/news-events/news/2024/08/nist-releases-first-3-finalized-post-quantum-encryption-standards
- Chromium Blog. “Advancing Our Amazing Bet on Asymmetric Cryptography” (Chrome 124). https://blog.google/chromium/advancing-our-amazing-bet-on-asymmetric/
- Apple Security Research. “iMessage with PQ3: The new state of the art in quantum-secure messaging at scale” (2024). https://security.apple.com/blog/imessage-pq3/
- Kret y Schmidt. “The PQXDH Key Agreement Protocol”, Signal (rev. 3, 2023). https://signal.org/docs/specifications/pqxdh/
En México, “el cyber” es un local donde rentan computadoras con internet por hora. A veces era un cibercafé, pero muchas veces era la papelería de la esquina con unas cuantas computadoras al fondo. ↩︎

