Lo que ofrece el sistema operativo
Los tres almacenes de credenciales, lo que tienen en común y las tres diferencias que van a costarte tiempo. El modelo mental antes de los detalles de cada plataforma.
Lo común
Cuatro cosas valen en los tres, y con ellas ya se puede diseñar:
- Es un almacén de pares: un identificador —que tú construyes— y un valor secreto, normalmente una cadena o unos bytes.
- Está atado a la sesión del usuario. Se desbloquea cuando el usuario entra y se cierra cuando sale. Ésa es la autorización, y es lo que responde a la quinta fila del nivel 34.1.
- No entra en las copias de seguridad normales, o entra cifrado de una forma que no viaja sola.
- Y tiene una noción de quién pregunta, más o menos fuerte según el sistema. Ésa es la primera diferencia.
Las tres diferencias
Las tres filas son la misma historia contada tres veces: macOS es el más estricto y el que más te va a interrumpir, Windows el más silencioso y el más permisivo, y Linux el que puede no estar. Una aplicación que solo se prueba en uno de los tres descubre los otros dos en las incidencias de sus usuarios.
A qué está atado el acceso
La pregunta que ordena las tres plataformas, y conviene tenerla explícita porque decide qué se rompe y cuándo:
De ahí sale la lista de lo que rompe un secreto guardado, que es el conocimiento operativo de esta fase: cambiar la firma en macOS, cambiar de máquina o de perfil en Windows, y arrancar sin escritorio en Linux. Los tres niveles siguientes desarrollan cada uno.
El identificador, que es decisión tuya
Lo único que el almacén no te da hecho: cómo nombras cada entrada. Se compone de un nombre de servicio y una cuenta, y merece pensarlo cinco minutos porque cambiarlo después deja secretos huérfanos en las máquinas de todos tus usuarios.
Tres criterios:
- El servicio identifica tu aplicación, no la función. Algo estable, con tu identificador inverso de dominio. Si mañana renombras la aplicación, esto no debería cambiar.
- La cuenta identifica al sujeto del secreto, no al secreto. El correo del usuario, o el identificador de su cuenta en tu servicio. Así, un usuario que cambia de cuenta no pisa la entrada anterior.
- Y si guardas varias cosas del mismo sujeto, sufija el servicio en vez de inventar en la cuenta: la cuenta es la que un usuario reconoce cuando abre la aplicación del llavero de su sistema y ve tus entradas — porque puede abrirla, y las va a ver.
// estable, legible por el usuario en la app de llaveros de su sistema, y con sitio// para más de un secreto por cuentaconst SERVICIO: &str = "dev.wandres.miapp";const SERVICIO_REFRESCO: &str = "dev.wandres.miapp.refresh";let entrada = keyring::Entry::new(SERVICIO, &usuario.email)?;