LockedIn es un gestor de contraseñas para Android que guarda la bóveda en el dispositivo y permite compartir credenciales entre usuarios sin que el servidor llegue a verlas.
El problema
Los gestores de contraseñas resuelven el almacenamiento, pero compartir una credencial con otra persona suele terminar en un mensaje, una nota o una hoja de cálculo. La alternativa segura exige criptografía que la mayoría de usuarios no debería tener que entender.
Cómo funciona
- Bóveda local: las contraseñas se cifran con AES-256-GCM y una clave maestra que no sale del dispositivo.
- Compartición de extremo a extremo: cada usuario tiene un par de claves EC P-256. El grupo comparte una clave simétrica (SGK) que se cifra con la clave pública de cada miembro y se descifra en local.
- Backend zero-knowledge: el servidor guarda identificadores hasheados y blobs cifrados. El teléfono se hashea con HMAC-SHA-256 y la contraseña remota con Argon2id.
- App y API dockerizadas: Jetpack Compose en Android y FastAPI con PostgreSQL en el backend, levantables con Docker Compose.
Mi papel
Proyecto de equipo junto a Martín González, Sabela Pérez y Salvia, construido en HackUDC 2026 (A Coruña, 394 participantes, 36 horas) para un reto de Gradiant. El repositorio vive en la cuenta de Salvia, no en la mía, y forma parte de mi portfolio como trabajo conjunto.
Estado
Es un MVP de hackathon: la bóveda, el registro, los grupos y la compartición funcionan, pero quedan pendientes la sincronización de contactos, la verificación por SMS y los mecanismos de recuperación. El README documenta esas limitaciones y el flujo criptográfico completo.
Stack
Kotlin y Jetpack Compose en Android, FastAPI y PostgreSQL en el backend, Docker Compose para el despliegue y criptografía con AES-256-GCM, ECDH P-256 y Argon2id.