Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Cuándo usar una librería de alto nivel

5 tareas · 35 min · Principiante

Escribir cifrado a mano con primitivas sueltas obliga a acertar en cada decisión: algoritmo, modo, vector, integridad, orden de las operaciones, comparación y clave. Una librería de alto nivel toma casi todas esas decisiones por ti y las toma bien. Casi todas: la clave sigue siendo tuya. Nómina Hatogrande escribió su propia clase de cifrado en 2022 y hoy tiene una propuesta para reemplazarla. Te piden revisarla antes de aprobarla.

0 de 5 · 0%

Objetivo de la sala

Escribir cifrado a mano con primitivas sueltas obliga a acertar en cada decisión: algoritmo, modo, vector, integridad, orden de las operaciones, comparación y clave. Una librería de alto nivel toma casi todas esas decisiones por ti y las toma bien. Casi todas: la clave sigue siendo tuya. Nómina Hatogrande escribió su propia clase de cifrado en 2022 y hoy tiene una propuesta para reemplazarla. Te piden revisarla antes de aprobarla.

Una función de cifrado de alto nivel recibe el mensaje, la clave y, como mucho, un nonce, y devuelve algo que ya trae todo lo necesario. Elige un algoritmo autenticado, fija los tamaños, calcula la etiqueta, y al abrir comprueba la etiqueta antes de devolver un solo byte. libsodium, que PHP incluye como extensión, ofrece una «caja secreta» de ese tipo con un nonce lo bastante largo como para generarlo al azar en cada mensaje sin temer repeticiones.

Lo que no decide es de dónde sale la clave, dónde se guarda, quién la puede leer ni cuándo se rota. Una librería bien elegida elimina los errores de las salas anteriores; la gestión de la clave sigue siendo un problema del equipo.

Responde para continuar

Un equipo reemplaza su cifrado casero por una función de alto nivel de una librería reconocida. ¿Qué queda por revisar?

Ver pista de ayuda

Separa lo que entra a la función de lo que la función hace por dentro.

Abre el laboratorio y lee CifraPropia.php. Antes de mirar el algoritmo, mira la clave: de dónde sale, quién más tiene ese archivo y qué pasa si hay que cambiarla. Una clave escrita en el código está en cada copia del repositorio, en cada rama, en el servidor de integración continua y en el historial para siempre. MITRE lo clasifica como CWE-321, uso de una clave criptográfica embebida.

Responde para continuar

¿De qué constante sale la clave de la clase casera? Escribe su nombre tal como aparece en el código.

Ver pista de ayuda

Está declarada al principio de la clase como privada.

Ahora lee la clase entera con lo aprendido en el módulo: cómo se forma el vector, sobre qué se calcula la integridad, con qué clave y en qué orden se descifra y se comprueba. Encontrarás varios fallos de las salas anteriores en treinta líneas. Después abre propuesta-pr-418.txt, que reemplaza todo eso por libsodium.

Responde para continuar

¿Qué función de libsodium usa la propuesta para cifrar? Escríbela sin paréntesis.

Ver pista de ayuda

Es la llamada que aparece en el return del método cifrar de la versión nueva.

La descripción de la propuesta es correcta en lo que dice: la librería elige el algoritmo, genera el nonce y verifica antes de devolver. Fíjate en lo que no dice, y en las líneas que no cambian.

Responde para continuar

¿Qué debe pedir la revisión antes de aprobar la propuesta?

Ver pista de ayuda

Busca qué línea de la clase original sigue igual en la versión nueva.

La propuesta deja lo ya cifrado como está y lo sigue leyendo con el código viejo. Para planear la migración hace falta saber cuántas piezas de la aplicación guardan datos con la clase. Usa usos.txt y cuenta archivos, no líneas: un archivo que cifra y descifra cuenta una vez. Las pruebas no guardan datos de nadie.

Responde para continuar

¿Cuántos archivos de la aplicación, sin contar las pruebas, usan hoy la clase casera?

Ver pista de ayuda

Agrupa las líneas por la ruta del archivo antes de contar.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad