Asegurar publicaciones anónimas en sitios web

4

¿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:

  1. 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 y hash( 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).
  2. 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.
  3. 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?

    
pregunta djsutton 16.05.2015 - 20:20
fuente

2 respuestas

2

Supongo que podría agregar algo como lo siguiente para aparecer debajo de una posición anónima (solo en la sesión del editor, por supuesto)

  

Si más adelante desea editar esta publicación, utilice la siguiente información:

     

postid = 123456, authentication = iufdhgoieroertzz3147493532v

     

o usa este enlace directamente:    enlace

     

Es posible que desee guardar esta información y / o el enlace localmente en un lugar seguro para su uso posterior. Haga eso ahora porque no será posible que usted (u otros) lo reproduzcan más tarde.   Cuando intente editar una publicación mediante el botón "Editar", se le pedirá que ingrese el código de autenticación anterior. Tenga en cuenta que cada postid requiere un código de autenticación differnet.

Por supuesto, el 123456 aquí es el ID interno de la publicación y iufdhgoieroertz3147493532v es una cadena aleatoria única almacenada en la publicación, pero nunca se imprime (excepto inmediatamente después de la edición correcta como se escribió anteriormente).

Un atacante no puede adivinar la autenticación sin el acceso al almacenamiento local que el usuario eligió, o el acceso al valor del parámetro durante la transmisión, o el acceso a la base de datos de publicaciones.

Algo de esto podría hacerse de forma más transparente con las cookies y / o el almacenamiento local, pero las personas suficientemente interesadas en el anonimato contra las incautaciones del gobierno tampoco pueden estar contentas con las cookies y el almacenamiento local.

    
respondido por el Hagen von Eitzen 16.05.2015 - 21:15
fuente
2

Primero, no hay tal cosa como anónimo completo. Al menos una vez que el usuario vuelve a editar la publicación, se puede vincular al usuario (o su dirección IP) si su sitio se monitorea después de la publicación inicial. Aparte de esto, esto podría funcionar sin necesidad de inicios de sesión:

  • Crea un token aleatorio.
  • Entregue al usuario el token original. Puede ser en forma de un enlace que el usuario puede marcar como se sugiere en la otra respuesta o simplemente puede mostrar el token para que el usuario pueda escribirlo.
  • Hash el token (SHA-256 o algo así) y almacena la publicación usando el token hash como clave. Debido a la forma en que funcionan los hash criptográficos, puede pasar de token a hash pero no de vuelta. Así, el usuario puede encontrar y editar su publicación, pero nadie más puede hacerlo. Y dado que el token es aleatorio, no hay información asociada al usuario dentro del token.
  • El rango de tokens debe ser lo suficientemente grande como para que no puedas encontrar una publicación válida simplemente adivinando un token o para que puedas forzar la fuerza bruta para encontrar tokens válidos. Dado que el token solo se usa para acceder a una publicación para editarla (para mostrar que usa el hash), puede calificar las ediciones limitadas para que la fuerza bruta disminuya.
  • También es importante no almacenar ningún tipo de información que pueda usarse para convencer al usuario, es decir, no hay direcciones IP, cookies, archivos de registro, tal vez ni la hora exacta de la publicación.
  • Y, por supuesto, tiene una muy buena seguridad general del sitio, porque de lo contrario, un atacante podría haber pirateado su sistema y vigilarlo todo. En este caso todas las publicaciones se pueden considerar ya no anónimas. Esto también significa aplicar HTTPS para que ningún atacante en la ruta a su servidor pueda detectar el tráfico.
respondido por el Steffen Ullrich 17.05.2015 - 09:54
fuente

Lea otras preguntas en las etiquetas