Saltar al contenido

Qué es un secreto y de quién lo guardas

Antes de elegir dónde guardar algo hay que saber contra quién. Los cinco lectores posibles del disco de un usuario, y cuáles puede detener un almacén de secretos.

Los cinco lectores

La segunda fila es la que importa y es la que casi nadie tiene en la cabeza al escribir un fichero de configuración. Tu aplicación no es la única que corre en esa máquina, y los ficheros del usuario están abiertos para todo lo que ese usuario ejecute.

La promesa que no se puede hacer

La quinta fila merece decirse en voz alta porque ordena todo lo demás: no se puede guardar un secreto del propio usuario en su propia máquina.

Si el programa puede leerlo sin intervención, el usuario puede leerlo también: le basta con mirar lo que hace el programa. Si hace falta que el usuario aporte algo —una contraseña, una huella—, entonces no es un secreto guardado, es un secreto que él tiene.

De ahí salen dos consecuencias que valen para toda la fase:

  • Un almacén del sistema protege de otros programas y de las copias, no del dueño de la sesión. Eso es exactamente lo que hace falta, y es todo lo que hace falta, si el secreto es del usuario.
  • Un secreto que quieres guardar contra el usuario no tiene solución local. Y eso incluye las claves de tu propio servicio incrustadas en el binario — el nivel 34.5 lo trata entero, y la conclusión no es agradable.

Qué guardas, y qué costaría perderlo

Antes de elegir mecanismo conviene clasificar, porque no todo lo que guarda una aplicación necesita el mismo cuidado:

El tercer cajón es el que más rinde y el que menos se usa. Antes de decidir dónde guardar algo delicado, la pregunta correcta es si hace falta guardarlo.

Un secreto tiene ciclo de vida

Y esto adelanta la fase: guardar es solo la mitad. Un testigo caduca, se revoca, se refresca, y hay que borrarlo cuando el usuario cierra sesión. Cuatro operaciones, no una:

  • Guardar, con un identificador que puedas volver a construir.
  • Leer, sabiendo que puede no estar —el usuario lo borró, cambió de máquina, el almacén estaba bloqueado—.
  • Actualizar, que en casi todos los almacenes es guardar encima.
  • Borrar, que es la que siempre se olvida y la que deja testigos válidos en máquinas de gente que ya cerró sesión.