Giro de la Suerte: Programación Divina - Capítulo 42
- Inicio
- Giro de la Suerte: Programación Divina
- Capítulo 42 - 42 Capítulo 42 Explicando 2
Tamaño de Fuente
Tipo de Fuente
Color de Fondo
42: Capítulo 42: Explicando 2 42: Capítulo 42: Explicando 2 —Esto es increíble.
Todo está bien construido.
Eres, de verdad, el estudiante más inteligente que he visto en toda mi vida —dijo con un suspiro.
—No lo digo por presumir, ya que incluso yo, como profesor, me siento poco cualificado frente a ti.
Hay muchas partes del código que no entiendo, y tu forma de programar está a años luz de la de tus compañeros.
—Dela Cruz lo miró de reojo mientras Jeff escuchaba con seriedad.
Al ver su expresión, asintió para sus adentros, ya que no había ni un atisbo de arrogancia en su mirada.
—Tienes un futuro brillante por delante —dijo, haciendo que Jeff se sonrojara por el cumplido.
Al notar su reacción, a Dela Cruz casi se le escapó una risa y le dedicó una mirada divertida.
—Muy bien, chico listo, pero dime una cosa.
¿Añadiste algún tipo de verificación de propiedad a tu aplicación?
—preguntó.
—¿Y si alguien afirma mañana, o en cualquier otro momento en el futuro, que la ha hecho él?
¿Cómo puedes demostrar que es tuya de verdad?
—concluyó.
Jeff respondió entonces con una leve sonrisa: —No se preocupe, profesor.
Estaba preparado para eso.
—No podrán, ya que hay algo integrado en el sistema, una forma de demostrar quién es el verdadero creador.
—Oh, ¿te importaría decirme qué es?
—preguntó Dela Cruz, sintiendo curiosidad.
—Bueno, no es algo que se pueda encontrar simplemente mirando el código directamente.
La verificación está bien oculta y la encripté yo mismo dentro de la aplicación —explicó Jeff con confianza.
Entonces levantó un dedo.
—Primero, el sistema espera una secuencia de entrada especial, que es la frase de desarrollador.
No es una entrada de texto cualquiera.
Tiene que introducirse en una consola específica que integré en el modo de depuración —explicó Jeff.
—¿Modo de depuración?
Pero no vi ninguna opción de depuración —replicó Dela Cruz, perplejo.
—Usted preguntó cómo puedo demostrar que este es realmente mi trabajo, ¿verdad?
—volvió a mencionar Jeff a su profesor mientras empezaba.
Sonrió levemente mientras cerraba el APK descompilado que se estaba ejecutando y volvía a abrir correctamente la aplicación real en el ordenador.
Después de todo, si solo miraban el código descompilado o la carpeta desempaquetada, era como examinar los planos en lugar de observar el sistema en funcionamiento.
En cuanto se abrió la aplicación, y con solo unas pocas pulsaciones en el teclado (CTRL + SHIFT+ D), algo apareció en la pantalla.
…
csharp
[MODO DE DEPURACIÓN DE DESARROLLADOR ACTIVADO]
Por favor, introduzca la Frase de Verificación de Desarrollador:
…
—Como puede ver, solo se activa cuando se introduce un patrón de pulsaciones específico en los primeros diez segundos tras el inicio.
Sin él, el sistema ni siquiera revela que la consola de depuración existe —explicó Jeff.
Para que quede claro, aunque Jeff escribió Genesis IA en Python, la apariencia del modo de depuración se parecía mucho a lo que cabría esperar de un programa escrito en C#.
Eso es porque el estilo de los mensajes, como el uso de corchetes y líneas de estado en mayúsculas, es una práctica de formato común entre los desarrolladores de diversos lenguajes de programación, especialmente en C#, Java o incluso en scripts de Bash.
Sin embargo, este estilo no se limita a un único lenguaje de programación.
Incluso en Python, se podría simplemente escribir:
print(«[MODO DE DEPURACIÓN DE DESARROLLADOR ACTIVADO]») — para lograr el mismo efecto.
Al final, no se trata del lenguaje de programación utilizado.
Se trata simplemente de cómo el desarrollador elige dar formato al mensaje.
Y esto es lo que Jeff había elegido.
…
csharp
[MODO DE DEPURACIÓN DE DESARROLLADOR ACTIVADO]
…
C# (pronunciado «C-Sharp») es un lenguaje de programación desarrollado por Microsoft, y fue lanzado por primera vez a principios de la década de 2000.
Fue diseñado para ser simple, moderno y potente, similar a Java o C++, pero ofreciendo un enfoque más sencillo para desarrollar aplicaciones de Windows, juegos y software de servidor.
Es ampliamente reconocido como el lenguaje preferido para crear aplicaciones de escritorio de Windows, incluyendo programas ejecutables.
También se usa comúnmente en el desarrollo de videojuegos, particularmente con el Unity Game Engine, así como en sistemas de backend y aplicaciones web mediante el uso de ASP.NET.
Además, a menudo se elige para desarrollar herramientas y utilidades, como programas de depuración basados en consola.
Jeff, que ya era muy versado en programación, diseñó intencionadamente la salida de depuración de esta manera.
Este tipo de formato de mensaje parece claro y profesional.
Es fácilmente perceptible para cualquiera que use la consola, ya que muchos desarrolladores, especialmente en la industria, siguen este patrón para hacer que los registros del sistema sean más fáciles de leer e interpretar.
Así que, aunque la salida pueda parecerse a lo que se vería en C#, la lógica que hay detrás sigue funcionando con Python.
—Una vez dentro de la consola de depuración, tienes que introducir mi frase de verificación privada.
Pero incluso entonces, no se limita a mostrar el texto introducido —explicó Jeff con calma.
Sus dedos flotaban sobre el teclado.
Sin prisas, empezó a teclear la frase de verificación: genesis unlocked.
Tecleó a tal velocidad que sus manos parecían un borrón ante los ojos de Dela Cruz.
Sin embargo, lo que apareció en el monitor no fue más que una pantalla en blanco; estaba completamente vacía.
La razón de esto era simple, y no era un error.
La salida en blanco fue intencionada por diseño.
En sistemas donde la seguridad realmente importa, especialmente en consolas de desarrollador o herramientas de verificación de propiedad, revelar incluso la más mínima pista de lo que se está tecleando podría ser peligroso.
Los atacantes podrían adivinar la longitud de la frase contando los asteriscos o los marcadores de posición.
Peor aún, alguien que simplemente mirara por encima del hombro podría robar la clave observando el proceso de entrada.
Así que, en lugar de mostrar estrellas, puntos o cualquier otro carácter, la entrada se captura silenciosamente en segundo plano.
La frase se recibe, se procesa y se le aplica un hash, pero la pantalla permanece completamente en blanco durante todo el proceso.
Este enfoque se conoce como modo de entrada ciega, una técnica que a veces se utiliza en sistemas de alta seguridad para evitar el «shoulder surfing» o el análisis de fuerza bruta basado en la longitud de la entrada.
—La frase activa un generador de hash que utiliza el cifrado SHA-256, el cual combina la entrada con una clave «salt» interna incrustada en la aplicación —explicó Jeff.
—Si el hash coincide con la firma que creé durante el proceso de compilación, el sistema revelará los verdaderos metadatos de propiedad.
Esto incluye el ID del desarrollador, la fecha de compilación y el token de verificación —continuó explicando.
El cifrado SHA-256 no es algo que Jeff inventara, para que quede claro.
Es un algoritmo criptográfico estándar, creado por la NSA y publicado por el NIST en 2001, y se utiliza ampliamente en todo el mundo para la protección segura de datos.
Jeff no almacena directamente la frase genesis unlocked dentro de la aplicación.
Si lo hiciera, cualquiera podría simplemente descompilar la aplicación y robar la frase.
En su lugar, Jeff toma la frase y la mezcla con un «salt» secreto, que actúa como una contraseña adicional que solo él conoce.
¿Por qué?
Porque la criptografía no es solo cuestión de programar; está arraigada en matemáticas avanzadas y lógica compleja.
Un único y pequeño error, como una aleatoriedad débil, patrones predecibles o una mala generación de claves, puede comprometer por completo la seguridad de todo el sistema.
Por eso, la mayoría de los expertos en seguridad recomiendan usar algoritmos bien probados como AES, SHA-256, bcrypt y otros.
Estos algoritmos han sido revisados, probados y desafiados a fondo por miles de profesionales durante muchos años, por lo que confiar en ellos se considera el enfoque más seguro.
Pero ese tipo de excusa patética solo la usaban los programadores ordinarios, incluso aquellos considerados expertos.
Porque Jeff es diferente.
Posee la habilidad de un programador divino.
Comprende plenamente los riesgos que implica y posee la capacidad de crear algo mucho más avanzado si realmente lo deseara.
Sin embargo, por ahora, no tiene ninguna razón para llegar tan lejos.
En cuanto al «salt», actúa como una contraseña oculta adicional que ya está incrustada en el código del programa.
Jeff no teclea manualmente el «salt» durante la verificación; es el sistema el que lo añade automáticamente en segundo plano.
El hashing, en este contexto, funciona tomando la combinación de la frase y el «salt» y transformándola en una larga cadena de código secreto compuesta por números y letras.
Sin embargo, no se puede revertir este proceso para recuperar la frase original.
El hashing es una función unidireccional.
Es como meter ingredientes en una licuadora; no puedes volver a separarlos en sus partes originales una vez que se han mezclado.
Para que se entienda bien, el «salt» no es la seguridad en sí mismo.
El propósito del «salt» es garantizar que, aunque dos personas usen exactamente la misma frase, los hashes resultantes sigan siendo diferentes.
El «salt» también protege contra los ataques de tablas arcoíris, que son métodos en los que los hackers utilizan listas de hashes pregeneradas para encontrar coincidencias rápidamente.
Al añadir un «salt» único, estas listas se vuelven inútiles.
En este proceso, la frase es la clave real, mientras que el «salt» hace que esa clave sea única e impredecible, fortaleciendo enormemente la seguridad general.
En cuanto al hash, funciona como cerrar una puerta con llave de tal manera que, aunque los hackers entiendan perfectamente cómo funciona la cerradura, no pueden adivinar fácilmente la llave correcta.
Esta es la fortaleza de los algoritmos de hashing como el SHA-256.
No ocultan el proceso, sino que hacen que adivinar la entrada correcta sea prácticamente imposible debido al enorme número de combinaciones posibles.
Así que, aunque alguien descompilara la aplicación, tal como había hecho Dela Cruz, y lograra encontrar el «salt» dentro del código y también viera el hash almacenado creado durante el proceso de compilación, seguiría sin ser suficiente.
Sin la frase original exacta, se enfrentarían a la tarea casi imposible de intentar recrear la entrada correcta para que coincidiera con el hash.
Siguen sin poder revertir el hash para obtener la frase original, por mucho que analicen o descompilen el sistema.
La única forma de desbloquearlo es tecleando la frase correcta exacta, y eso es algo que solo Jeff sabe.
Si la frase es larga, compleja e impredecible, ninguna cantidad de conjeturas o intentos de fuerza bruta tendrá éxito en un tiempo razonable.
Ahora, imagina que un tipo estúpido usara una frase como 12345.
Una entrada tan simple y común sería fácil de adivinar, haciendo que todo el mecanismo de seguridad sea inútil, sin importar cuán fuerte sea el algoritmo de hashing.
Incluso con un «salt», si la frase es débil o demasiado simple, un hacker podría romperla en segundos.
Sin embargo, si la frase es algo como genesis-unlocked-creator-verified 2025-true, se vuelve casi imposible de adivinar, ya sea por accidente o mediante métodos de fuerza bruta.
Eso, por supuesto, es solo un ejemplo, pero demuestra cómo la verdadera seguridad no depende solo de las herramientas utilizadas, como el hashing o el «salting», sino también de la fortaleza e imprevisibilidad de la propia frase.
[Deja una reseña, mi hermano]
Fuente: Webnovel.com, actualizado en Leernovelas.com