Saltar al contenido

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.
Rust
// 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)?;