¿Puede un sitio web permitir que los usuarios publiquen de forma segura de forma anónima, al tiempo que permite que el autor original edite estas publicaciones más adelante e impide que otros usuarios las editen?
En este contexto, 'publicar de manera anónima' significa que un atacante con acceso completo al servidor físico después del hecho (por ejemplo, incautación del gobierno) no puede determinar qué usuario fue el autor de una publicación anónima determinada. No he podido encontrar un algoritmo que cumpla estos requisitos.
Mis primeros pensamientos:
- Cuando un usuario inicia sesión (independientemente de la actividad anónima),
hash(
password + salt 1)
se usa para la autenticación del usuario como normal yhash(
password + salt 2)
se almacena en la memoria del servidor como una 'clave anónima' mientras el usuario está conectado (nunca escrito en el almacenamiento). - Cuando un usuario crea una publicación anónima,
hash(
ID de publicación + clave anónima)
se almacena como el 'token de propiedad' para la publicación anónima. - Cuando un usuario desea editar una publicación anónima, el sistema autentica la propiedad repitiendo el proceso de generación de token de propiedad y comprobando si el resultado coincide con el token existente.
Tenga en cuenta que:
- Un atacante no puede buscar al autor de una publicación anónima sin capturar la clave anónima del autor de la memoria del servidor mientras el usuario está conectado.
- Dado que las ID de publicación son únicas, cada publicación anónima tendrá un token de propiedad diferente, incluso si son creados por el mismo usuario, por lo que un atacante no puede determinar qué publicaciones anónimas comparten un autor.
Detrimentos a este algoritmo:
- Un usuario que desee publicar de forma anónima debe tener una cuenta normal en el sistema.
- El perfil de un usuario no puede vincularse a sus publicaciones anónimas, ya que el sistema no almacena este enlace. El usuario debe recordar y encontrar la publicación a través de otros medios y solicitar la edición, momento en el que se realizará la verificación de propiedad. Esto distingue esta pregunta de una pregunta similar donde el perfil la vinculación con el anonimato era el objetivo.
- Al cambiar una contraseña, un usuario deberá informarle al servidor todas las publicaciones anónimas para que se puedan actualizar los tokens de propiedad, o perder el acceso de edición a esas publicaciones de forma permanente.
- Un atacante con acceso de administrador al sistema mientras se está ejecutando podría registrar las claves anónimas de los usuarios al iniciar sesión y luego usarlas para romper el anonimato de los tokens de propiedad.
¿Me estoy perdiendo algo importante que haga que esto sea inseguro según la definición de 'publicar de forma anónima y segura' arriba? ¿Existe un sistema mejor (más simple, más seguro o menos perjudicial) para esto? ¿Ya existe algún algoritmo para algo como esto?