Saltar al contenido

Lo que rompe el acceso en Windows

El restablecimiento de contraseña por un administrador, los perfiles viajeros, el cambio de máquina y la restauración desde una copia. Los cuatro escenarios donde los secretos dejan de descifrarse.

Los cuatro

La primera y la segunda fila juntas son la lección: cambiar la contraseña desde dentro de la sesión conserva los secretos, restablecerla desde fuera no. Es la misma acción para el usuario y un resultado opuesto, y ninguna interfaz se lo explica.

Por qué el administrador rompe y el usuario no

Merece el porqué, porque con él se puede explicar la incidencia a alguien:

Y fíjate en la última fila: eso es lo correcto, aunque duela. Si un administrador pudiera restablecer una contraseña y conservar los secretos, el mecanismo no protegería de nadie con privilegios.

Qué hace tu aplicación

Lo bueno es que los cuatro escenarios se manifiestan igual —el secreto no está, o no descifra— y por tanto el camino de recuperación se escribe una sola vez. Es el mismo que ya escribiste en macOS para «no está» y «denegado»:

Rust
match secretos::leer(&cuenta) {    Ok(Some(t)) => sesion::restaurar(t),    // no está, no descifra, o el material cambió: todos aquí    Ok(None) => sesion::pedir_credenciales(),    Err(e) if e.es_de_descifrado() => {        secretos::borrar(&cuenta).ok();   // limpiar lo que ya no sirve        sesion::pedir_credenciales()    }    Err(e) => Err(e),}

El detalle que añade Windows es el borrado. Un secreto que ya no descifra se queda ahí para siempre y falla igual en cada arranque; borrarlo al detectarlo evita acumular basura y hace que el siguiente inicio de sesión empiece limpio.

La regla que sale de todo esto

Y vale para los tres sistemas, aunque en Windows sea más visible:

Nada que el usuario no pueda volver a obtener debe vivir solo en un almacén de credenciales.

Un testigo se vuelve a pedir iniciando sesión: perfecto. Una clave de cifrado de sus datos locales, no — si se pierde, sus datos se pierden con ella, y eso es un desastre en vez de una molestia. Cuando el paso 5 del árbol del nivel 34.5 lleva a cifrar datos importantes, hay que responder también: ¿qué pasa si esta clave desaparece? Las respuestas aceptables son que el usuario pueda recuperarla desde tu servicio, o que sepa desde el principio —dicho claramente, no en la letra pequeña— que sus datos están atados a esta cuenta y esta máquina.