Tus contraseñas, en un dispositivo que llevas encima.
Kleidos guarda tus contraseñas cifradas en un dispositivo pequeño y las escribe por ti por Bluetooth, después de que lo desbloquees en el propio dispositivo. Sin app. Sin nube. Sin registrarte en nada.
AES-256 + HMAC-SHA256
Bluetooth LE Secure Connections
Red de administración WPA3
En directo desde el dispositivoDesbloquear un dispositivo y abrir una entrada.Un StickC Plus S3 despierta en su pantalla bloqueada. Se pulsa un botón cuatro veces y el arco recorre un dígito distinto cada vez; el dispositivo deriva la clave y la bóveda desbloqueada lista seis servicios de demostración: GitHub, Google, Microsoft, Dropbox, Mastodon y Bluesky.Una grabación de la propia pantalla del dispositivo: la placa envió cada fotograma por Wi-Fi según lo dibujaba, mientras un script accionaba sus controles, así que el clip transcurre a la velocidad real del dispositivo.
Dibujo con pantallas del dispositivoUn firmware, nueve placasDibujadas a escala con las medidas reales de la carcasa y la pantalla de cada placa: 24 × 48 mm la más pequeña, 73 × 115 mm la más grande.
Cómo funciona
1Paso 1. Lo desbloqueas
Introduces el PIN en el dispositivo. Los modelos de dos botones no tienen teclado numérico: mantienes pulsado un botón mientras un arco recorre las cifras y lo sueltas en la tuya, una pulsación por cifra. El PIN es de 4, 6 u 8 cifras; los modelos con teclado usan una frase de paso en su lugar, y los táctiles te dejan elegirla.
Pantalla del dispositivo La pantalla de PIN, a mitad de recorrido. Capturado de la propia pantalla del dispositivo en una compilación de desarrollo.
2Paso 2. Eliges una entrada
Recorres la bóveda y abres una entrada. Dibuja la marca del servicio cuando reconoce el nombre, y la contraseña sigue oculta hasta que pides verla; después se vuelve a ocultar sola.
En directo desde el dispositivoLa lista de la bóveda.En el modelo táctil un dedo arrastra la lista de la bóveda hasta el último de los seis servicios de demostración, y dos toques lo abren: se ve la cuenta y la contraseña sigue oculta.Una grabación de la propia pantalla del dispositivo: la placa envió cada fotograma por Wi-Fi según lo dibujaba, mientras un script accionaba sus controles, así que el clip transcurre a la velocidad real del dispositivo.Pantalla del dispositivo Una entrada, con la contraseña oculta. Capturado de la propia pantalla del dispositivo en una compilación de desarrollo.
3Paso 3. Dejas que la escriba
Eliges qué enviar. Kleidos se convierte en un teclado Bluetooth, lo escribe en el ordenador que emparejaste y vuelve a apagar el Bluetooth.
Capturas del dispositivoElegir qué escribir.Una entrada de demostración abierta. El selector pregunta qué escribir — el par, el usuario o la contraseña —, el dispositivo se anuncia y espera a un ordenador, y al cancelar la sesión Bluetooth se apaga de nuevo.Montado con capturas de la propia pantalla del dispositivo, en el orden y en los tiempos en que las muestra una ejecución real.
Qué hace el enlace Bluetooth
Solo envía. El dispositivo es un teclado: lo único que el ordenador puede escribirle es el byte de los LED del teclado, y Kleidos no hace nada con él.
El emparejamiento es solo LE Secure Connections, con un número de seis cifras que comparas y confirmas en el dispositivo. El emparejamiento antiguo no está ni compilado.
Las pulsaciones salen solo por un enlace emparejado, cifrado y autenticado con clave de 16 bytes, y el enlace se vuelve a comprobar justo antes de cada informe.
El dispositivo se anuncia con una dirección privada que cambia cada 15 minutos.
Un ordenador ya emparejado no puede volver a emparejarse en silencio: el dispositivo lo rechaza y te pregunta primero.
El Bluetooth está apagado hasta que abres una sesión — enviar una entrada, emparejar un ordenador nuevo, la primera configuración — y se apaga cuando el dispositivo se bloquea o se duerme.
4Paso 4. Lo administras desde el navegador
Para añadir, importar o exportar entradas abres el panel de administración: el dispositivo desbloqueado levanta su propia red Wi-Fi y muestra un código QR. Lo escaneas y tienes el panel en el navegador. Los modelos con teclado también pueden editar entradas en el propio dispositivo.
La seguridad en el dispositivo
La bóveda son unos pocos ficheros en la flash del dispositivo. Todo lo que viene ahora trata de cuánto valen esos ficheros para quien se los lleve.
Cada entrada va cifrada y autenticada
Un registro se cifra con AES-256-CBC y se autentica con HMAC-SHA256, cifrar y después autenticar. La etiqueta se verifica antes de descifrar nada, y cubre el tipo del registro, su ranura y un contador: así un registro no se puede mover a otra ranura, ni leer como si fuera de otro tipo, ni revertir por separado. Las entradas de contraseña se rellenan todas hasta los mismos 4 KB, así que su tamaño no dice nada de lo que guardan.
Tu PIN no se guarda en ninguna parte
La clave se deriva del PIN con PBKDF2-SHA256 sobre una sal aleatoria propia de cada bóveda: 175.000 iteraciones en las placas ESP32-S3 y 40.000 en las ESP32 clásicas, calibradas para un desbloqueo de unos dos segundos. Lo que se guarda es un verificador, no el PIN. El cifrado, la autenticación y la comprobación del desbloqueo usan tres claves distintas.
Bloqueo y, al final, borrado
Desde el cuarto intento fallido el dispositivo se bloquea 30 segundos, y desde el séptimo, 5 minutos. El décimo borra la bóveda, todos los emparejamientos Bluetooth y la identidad de la red de administración. El intento se anota antes de comprobar el secreto, así que cortar la corriente no recupera un intento.
Las claves se borran al bloquear
Bloquear y dormir apagan las radios y después borran de la memoria las claves y las listas descifradas. Los búferes que las contenían se sobrescriben a propósito, no solo se liberan.
Las compilaciones de producción están calladas
La compilación de producción abierta y la endurecida no llevan consola serie ni una sola llamada de log, y un fallo no imprime nada: ni cabecera, ni registros, ni traza. Lo único que queda es la línea de arranque de la ROM del propio chip, que no dice nada de tu bóveda. Las contraseñas, los usuarios y los PIN se mantienen fuera de los logs por diseño.
Compilación endurecida: en desarrollo
En desarrollo
En las placas de 8 MB se está diseñando una compilación endurecida que añade Secure Boot v2, cifrado de la flash y ajustes cifrados, y que ata la clave de la bóveda al chip concreto, para que una copia de la flash no se pueda atacar lejos del dispositivo. No está terminada: en las placas ESP32-S3 todavía nada aprovisiona la clave del chip, así que hoy una compilación endurecida no puede ni crear una bóveda.
El panel de administración
En desarrollo
Todo lo que va en lote — añadir entradas, importar de otro gestor, exportar una copia de seguridad cifrada, actualizar el firmware — se hace en el navegador, sobre una red que levanta el propio dispositivo. El servidor web es el propio dispositivo: no pasa nada por ningún servicio externo.
El panel está en desarrollo. Ya es donde se añaden entradas, se importan de otro gestor y se exporta una copia de seguridad cifrada, y sigue cambiando: donde el dispositivo dibuja la marca de cada servicio, el panel escribe el nombre como texto.
Solo se abre desde un dispositivo desbloqueado, y solo en la red del propio dispositivo: WPA3-SAE con hash-to-element, tramas de gestión protegidas obligatorias, sin vuelta atrás a WPA2 y un único cliente a la vez.
Por defecto cada sesión saca una contraseña nueva de 20 caracteres y la muestra como un código QR de Wi-Fi normal en la pantalla desbloqueada. Si lo prefieres, puedes fijar una.
Dentro de ese enlace cifrado el panel habla HTTP sin cifrar, con un token por sesión, una comprobación de Host que corta el DNS rebinding, un tiempo de inactividad y límites de peticiones por dirección. No hay TLS por encima: el cifrado del Wi-Fi es la frontera del transporte.
Borrar, eliminar u olvidar un emparejamiento te vuelve a pedir el secreto de desbloqueo y cuenta para el mismo bloqueo. Un secreto incorrecto recibe siempre el mismo rechazo, tanto si solo era incorrecto como si fue el que inició un bloqueo o el que gastó el último intento.
El Bluetooth y el Wi-Fi nunca funcionan a la vez: cada uno se niega a arrancar mientras el otro está levantado.
Las actualizaciones, en las placas de 8 MB: subes el firmware desde el panel detrás de una segunda contraseña que se muestra en el dispositivo. Una imagen compilada para otra placa, o de una versión anterior, se rechaza; y una actualización que arranca pero no se confirma vuelve sola a la anterior.
Panel en un navegador La bóveda en el panel: las mismas seis entradas de demostración que muestra el dispositivo.
La captura de arriba es la propia página del panel — los bytes que sirve el firmware — abierta en un navegador contra una bóveda de demostración servida desde este ordenador en lugar de desde una placa. El recorrido y el resto de las capturas están con las demás grabaciones.
Los dispositivos
Un mismo firmware en nueve placas, desde un stick de 24 × 48 mm con dos botones hasta un equipo de 73 × 115 mm con teclado. La placa cambia cómo lo desbloqueas y cuánto cabe en la pantalla; no cambia la bóveda.
Escala
M5StickC Plus S3
Chip
ESP32-S3
Entrada
Dos botones
Pantalla
135×240
Carcasa
24×48 mm
Compilación endurecida
En desarrollo
M5StickC Plus2
Chip
ESP32
Entrada
Dos botones
Pantalla
135×240
Carcasa
24×48 mm
Compilación endurecida
En desarrollo, revisión de chip 3.0 o posterior
M5StickC Plus 1.1
Chip
ESP32
Entrada
Dos botones
Pantalla
135×240
Carcasa
24×48 mm
Compilación endurecida
No disponible (4 MB de flash)
M5StickC Plus SE
Chip
ESP32
Entrada
Dos botones
Pantalla
135×240
Carcasa
24×48 mm
Compilación endurecida
No disponible (4 MB de flash)
M5Stack CoreInk
Chip
ESP32
Entrada
Rueda
Pantalla
200×200
Carcasa
40×56 mm
Compilación endurecida
No disponible (4 MB de flash)
M5Stack CoreS3 SE
Chip
ESP32-S3
Entrada
Pantalla táctil
Pantalla
320×240
Carcasa
54×54 mm
Compilación endurecida
En desarrollo
M5Stack Core2 v1.3
Chip
ESP32
Entrada
Pantalla táctil
Pantalla
320×240
Carcasa
54×54 mm
Compilación endurecida
En desarrollo, revisión de chip 3.0 o posterior
M5Cardputer ADV
Chip
ESP32-S3
Entrada
Teclado
Pantalla
240×135
Carcasa
84×54 mm
Compilación endurecida
En desarrollo
LilyGO T-Deck Plus
Chip
ESP32-S3
Entrada
Teclado
Pantalla
320×240
Carcasa
73×115 mm
Compilación endurecida
En desarrollo
Cada placa está dibujada con sus propias medidas de carcasa y pantalla, no a partir de una foto. Las imágenes y las grabaciones de las pantallas reales están en la página de uso.
Las pantallas se muestran en inglés. El dispositivo también habla español, francés, alemán e italiano.
Kleidos es un proyecto independiente, sin relación con M5Stack ni con LilyGO. Los nombres de producto son marcas de sus propietarios.
Todo, con honestidad: lo que funciona, lo que se está construyendo y lo que no se ha empezado. Cada fila dice qué lo hace cierto.
Funciona
Un firmware, nueve placas
Cada placa registra su propio hardware — su pantalla, su controlador de alimentación, sus botones o su teclado — en el mismo firmware, y los dibujos de «Los dispositivos» se generan con esas mismas placas medidas (src/boards/).
Funciona
La bóveda cifrada en el dispositivo
Las entradas se guardan como registros cifrados y autenticados, con claves distintas para cifrar, autenticar y comprobar el desbloqueo, y la batería de pruebas del ordenador cubre el ciclo completo y los rechazos (src/vault/).
Funciona
El desbloqueo, con cada tipo de entrada
Las placas de dos botones marcan un PIN con el arco temporizado, las que tienen teclado aceptan una frase de paso, y a las táctiles se les ofrece cualquiera de las dos (src/ui/entry/).
Funciona
Teclear por Bluetooth
El dispositivo se convierte en un teclado Bluetooth durante la sesión que se le ordena abrir, teclea por un enlace emparejado y autenticado, y apaga la radio cuando la sesión termina (src/ble/).
Funciona
Actualizar el firmware desde el navegador
En las placas con sitio para dos particiones de aplicación, el firmware se sube desde el panel de administración; una imagen compilada para otra placa o una versión anterior se rechazan, y una actualización que arranca pero nunca se confirma vuelve atrás por sí sola (src/platform/ota.cpp).
En construcción
El panel de administración
En desarrollo. Ya es donde se añaden entradas, se importan de otro gestor y se exportan como copia cifrada, y sigue cambiando (src/web/).
En construcción
La compilación endurecida
En desarrollo. El arranque seguro, el cifrado de la flash y los ajustes cifrados están configurados para las placas de 8 MB, y en las de ESP32-S3 todavía nada aprovisiona la clave propia del chip, así que allí una compilación endurecida no puede crear hoy una bóveda (docs/security/secure-provisioning-checklist.md).
Sin empezar
El consumo, medido en la batería
El consumo de cada placa sigue siendo una estimación. La hoja de banco que sustituiría las estimaciones por lecturas de un medidor no se ha pasado, así que esta página no da ninguna cifra de consumo (docs/testing/production-sleep-checklist.md).
Sin empezar
La tirada larga de principio a fin
Los criterios de publicación piden 50 ciclos completos — arrancar, desbloquear, buscar, teclear, dormir — sin un cuelgue. Esa casilla está sin marcar, y también lo está cualquier otra de esa lista (docs/QA_CHECKLIST.md).
Sin empezar
La primera publicación
Todavía no hay nada que instalar: el firmware va por la versión 0.1.0, no hay ninguna publicación, y esta página dice «muy pronto» porque es lo que hay (version.txt).
Sin empezar
Grabar una placa desde el navegador
La página que instalaría el firmware por USB desde un navegador está escrita y aparcada: no tiene ninguna publicación que ofrecer, así que este sitio no publica nada en su dirección y su propio manifiesto no lista ninguna compilación (web/).
Sin empezar
Una revisión de alguien de fuera
Nadie de fuera del proyecto ha revisado el firmware ni la criptografía. El expediente por el que empezaría un auditor está escrito y esperando (docs/security/audit-dossier.md).
No hay fechas. Esta lista solo nombra trabajo que existe en el repositorio, y un paso que nada de allí pueda demostrar figura como no empezado.
Lo que todavía no hace
Lee esta parte antes que el resto.
Es una versión previa, la 0.1.0. Nadie independiente la ha auditado.
La compilación endurecida está en desarrollo y todavía no funciona de principio a fin en un dispositivo.
En las compilaciones abiertas, quien copie la flash puede probar PIN tras PIN sin tener el dispositivo delante. Un PIN más largo, de 6 u 8 cifras, o una frase de paso en los modelos con teclado o con pantalla táctil, lo hace más lento; solo el atado al chip de la compilación endurecida lo impide. Lleva el dispositivo contigo.
El panel de administración se fía de quien entre en su red Wi-Fi. Para entrar hace falta la contraseña de un solo uso que aparece en tu pantalla desbloqueada: escanea ese código tú, y en privado.
Solo la compilación endurecida comprueba las firmas del firmware.
Los departamentos
El proyecto está organizado como lo estaría una empresa. Cada departamento es trabajo que existe en este repositorio, y todos los puestos los ocupa la misma persona.
JMRP
Dirección
Fundador y director
José M. Requena Plens
JMRP
Marca y diseño
Director creativo
José M. Requena Plens
Sí, otra vez.
docs/design/
JMRP
Producto y hardware
Responsable de selección de placas
José M. Requena Plens
Y sigue siendo él.
variants/
JMRP
Firmware
Ingeniero principal de firmware
José M. Requena Plens
src/
JMRP
Seguridad
Arquitecto de criptografía
José M. Requena Plens
La entrevista fue corta.
src/crypto/
JMRP
Interfaz y experiencia
Responsable de diseño de producto
José M. Requena Plens
src/ui/
JMRP
Panel de administración · servidor
Ingeniero de servidor
José M. Requena Plens
Viene del departamento de al lado.
src/web/
JMRP
Panel de administración · cliente
Ingeniero de cliente
José M. Requena Plens
web_src/index.html
JMRP
Validación y QA
Responsable de calidad
José M. Requena Plens
Aquí también hay plan de carrera.
test/
JMRP
Laboratorio de hardware
Técnico de pruebas de placa
José M. Requena Plens
qa/tests/hardware/
JMRP
Documentación
Redactor técnico
José M. Requena Plens
Y el que pone el café.
docs/
JMRP
Publicación
Responsable de versiones
José M. Requena Plens
version.txt
JMRP
Cumplimiento y licencias
Asesoría legal (GPL-3.0)
José M. Requena Plens
Vacantes: todas.
LICENSE
Seguir y suscribirse
No hay nada que instalar ni ningún registro. Elige lo que ya leas.
Todavía no hay repositorio que seguir. El código es privado mientras se prepara la primera versión, así que el feed y las dos cuentas son todo lo que hay.