Ft_otp: generador seguro de contraseñas TOTP
Después de proyectos como get_next_line, Ft_otp representa un paso más avanzado dentro del cursus de 42Madrid. Aquí no se trata solo de manipular archivos o memoria, sino de adentrarte en seguridad y autenticación: implementar un sistema TOTP (Time-based One-Time Password) capaz de generar contraseñas efímeras basadas en una clave maestra.
🌐¿Qué es Ft_otp?
Ft_otp es una herramienta que genera contraseñas temporales siguiendo el estándar TOTP. Estas contraseñas son útiles para autenticación de dos factores, y se crean a partir de una clave maestra que tú defines y proteges con cifrado.
El proyecto permite:
-
Implementar el algoritmo TOTP siguiendo la RFC 6238.
-
Generar y cifrar una clave maestra (
ft_otp.key). -
Producir contraseñas temporales verificables desde otro cliente que comparta la clave secreta.
-
Explorar conceptos de seguridad como HMAC y cifrado Base64.

🧩 Objetivo del proyecto
Crear un generador TOTP que cumpla con lo siguiente:
-
Recibir una clave maestra como semilla.
-
Generar códigos temporales de 6 dígitos basados en el tiempo actual.
-
Permitir verificación desde otra aplicación cliente que tenga la misma clave y temporizador.
-
Garantizar seguridad mediante cifrado de la clave y opciones de contraseña protegida.
⭐ Parte Bonus
Opciones avanzadas del proyecto incluyen:
-
Elegir y proteger con contraseña la clave maestra
ft_otp.key, solicitándola cada vez que se genere un nuevo código temporal. -
Desarrollar un cliente gráfico que genere y valide contraseñas maestras.
-
Añadir cualquier funcionalidad adicional útil para mejorar la seguridad o la usabilidad.
📚Conceptos clave
Para implementar Ft_otp correctamente, es necesario comprender:
-
TOTP (Time-based One-Time Password): Contraseñas de un solo uso basadas en el tiempo.
-
HOTP (HMAC-based One-Time Password): Algoritmo base de TOTP que se adapta reemplazando el contador con la hora actual.
-
HMAC: Función de hash con clave, usada para asegurar integridad y autenticidad de los datos.
La fórmula TOTP se define como:
donde K es la clave secreta y CT es un contador derivado del tiempo actual. El resultado es un PIN de 6 dígitos que puede ser validado desde otro cliente que comparta la misma clave secreta y temporizador.
🔐 Seguridad y cifrado
La clave TOTP se puede cifrar con Base64, y se añadieron opciones útiles como las indicadas en la parte bonus para proteger la clave maestra y controlar su uso.
💻 Ejecución y uso
En el repositorio:
-
La carpeta
srccontiene el código fuente en Python, que permite modificar los parámetros del algoritmo. -
El archivo
ft_otp(debian).zipenoutincluye un script con dependencias para Linux que funciona sin necesidad de instalar Python 3.
Opciones de uso del script:
🐳 Prueba con Docker
Se configuró un Dockerfile que crea un contenedor con todas las dependencias:
- Clonar el repositorio:
git clone https://github.com/goldcod3/Ft_otp.git - Instalar Docker Desktop
- Usar el Makefile para construir y ejecutar el contenedor:
make && make exec
Dentro del contenedor, se sincronizan los directorios src y out con tu carpeta /home para editar y ejecutar el código cómodamente.

🚀 Conclusión
Ft_otp no solo enseña sobre TOTP y HMAC, sino que combina:
-
Seguridad y cifrado
-
Gestión de claves secretas
-
Desarrollo de scripts interactivos y automatización
-
Contenedores Docker para despliegue rápido
Es un proyecto perfecto para consolidar conocimientos en seguridad, Python y buenas prácticas de programación antes de abordar sistemas más complejos en 42Madrid.
💻 Código fuente: GitHub
- Date: 2025-12-28
- Categories: Python - Seguridad
- Código Fuente goldcod3/Get_next_line