Protezione dei post di siti Web anonimi

4

Un sito web può consentire agli utenti di postare in modo sicuro in modo anonimo, consentendo comunque che questi post vengano modificati dall'autore originale in un secondo momento e impedendo la modifica da parte di altri utenti?

In questo contesto, "in modo sicuro post anonimo" significa che un utente malintenzionato con accesso completo al server fisico dopo il fatto (ad esempio il sequestro governativo) non può determinare quale utente ha creato un determinato post anonimo. Non sono stato in grado di trovare un algoritmo che soddisfi questi requisiti.

I miei primi pensieri:

  1. Quando un utente accede (indipendentemente dall'attività anonima), hash( password + sale 1 ) viene utilizzato per l'autenticazione utente come normale e hash( password + sale 2 ) è memorizzato sul server come "chiave anonima" mentre l'utente ha effettuato l'accesso (mai scritto sull'archivio).
  2. Quando un utente crea un post anonimo, hash( ID post + chiave anonima ) è memorizzato come 'token di proprietà' per il post anonimo.
  3. Quando un utente desidera modificare un post anonimo, il sistema autentica la proprietà ripetendo il processo di generazione del token proprietario e controllando se il risultato corrisponde al token esistente.

Nota che:

  • Un utente malintenzionato non può cercare l'autore di un post anonimo senza catturare la chiave anonima dell'autore dalla memoria del server mentre l'utente ha effettuato l'accesso.
  • Poiché gli ID post sono unici, ogni post anonimo avrà un token di proprietà diverso anche se sono creati dallo stesso utente, quindi un utente malintenzionato non può determinare quali post anonimi condividono un autore.

Detrazioni a questo algoritmo:

  • Un utente che desidera pubblicare in modo anonimo deve avere un account normale sul sistema.
  • Il profilo di un utente non può collegarsi ai suoi post anonimi, in quanto il sistema non memorizza questo collegamento. L'utente deve ricordare e trovare il post tramite altri mezzi e chiedere di modificare, a quel punto verrà eseguito il controllo della proprietà. Questo distingue questa domanda da una domanda simile dove profilo l'obiettivo era la linkabilità con l'anonimato.
  • Quando si modifica una password, un utente dovrebbe comunicare al server tutti i post anonimi in modo che i token di proprietà possano essere aggiornati o perdere definitivamente l'accesso a tali post.
  • Un utente malintenzionato con accesso amministrativo al sistema mentre è in esecuzione sarebbe in grado di registrare le chiavi anonime degli utenti mentre si collegano e successivamente utilizzarle per rompere l'anonimato dei token proprietari.

Mi mancano alcune grandi cose che renderebbero questa insicurezza sotto la definizione di 'sicuro postare anonimamente' sopra? C'è un sistema migliore (più semplice, più sicuro o meno detrazioni) per questo? Esiste già un algoritmo per qualcosa di simile?

    
posta djsutton 16.05.2015 - 20:20
fonte

2 risposte

2

Suppongo che potresti aggiungere qualcosa di simile al seguente per apparire sotto un post anonimo (ovviamente solo nella sessione dell'editor)

If you later want to edit this post, please use the following information:

postid = 123456, authentication = iufdhgoieroertz3147493532v

or use this link directly: http://example.com/anon-edit.php?postid=123456&auth=iufdhgoieroertz3147493532v

You may want to save this information and/or link locally in a safe place for later use. Please do that now because it will not be possible for you (or others) to reproduce this later. When you try to edit a post via the "Edit" button, you will be asked to enter the authentication code above. Note that each postid requires a differnet authentication code.

Di coures, il 123456 qui è l'id interno del post e iufdhgoieroertz3147493532v è una stringa casuale unica memorizzata con il post, ma non viene mai emessa (tranne immediatamente dopo la modifica riuscita come scritto sopra).

Un utente malintenzionato non può indovinare l'autenticazione senza accesso alla memoria locale scelta dall'utente o accesso al valore del parametro durante la trasmissione o l'accesso al database di pubblicazione.

Alcuni di questi potrebbero essere resi più trasparenti con i cookie e / o con l'archiviazione locale, ma le persone sufficientemente interessate all'anonimato contro i sequestri governativi potrebbero non essere soddisfatte dei cookie e dell'archiviazione locale.

    
risposta data 16.05.2015 - 21:15
fonte
2

In primo luogo, non esiste nulla di completamente anonimo. Almeno una volta che l'utente torna a modificare il post, può essere collegato all'utente (o al suo indirizzo IP) se il tuo sito viene monitorato dopo il post iniziale. A parte questo, potrebbe funzionare senza bisogno di login:

  • Crea un token casuale.
  • Assegna all'utente il token originale. Potrebbe essere sotto forma di un link che l'utente può aggiungere come segnalibro nell'altra risposta oppure potresti semplicemente mostrare il token in modo che l'utente possa scriverlo.
  • Hash il token (SHA-256 o qualcosa di simile) e archivia il post usando il token hash come chiave. A causa di come funzionano gli hash crittografici puoi passare dal token all'hash ma non viceversa. Quindi l'utente può trovare e modificare il suo post ma nessun altro può farlo. E poiché il token è casuale non ci sono informazioni associate all'utente all'interno del token.
  • La gamma di token dovrebbe essere abbastanza grande da non poter trovare un post valido solo indovinando un token o che potresti forzare la forza per trovare i token validi. Dato che il token è utilizzato solo per accedere a un post per modificarlo (per la visualizzazione si usa l'hash) è possibile valutare le modifiche limite in modo che la forzatura bruta venga rallentata.
  • È inoltre importante non archiviare alcun tipo di informazioni che potrebbero essere utilizzate per demask l'utente, cioè nessun indirizzo IP, nessun cookie, nessun file di log, forse nemmeno l'ora esatta del post.
  • E ovviamente hai una buona sicurezza generale del sito, perché altrimenti un utente malintenzionato potrebbe aver violato il tuo sistema e guardare tutto. In questo caso tutti i messaggi possono essere considerati non più anonimi. Ciò significa anche applicare HTTPS in modo che nessun attaccante nel percorso del tuo server possa annusare il traffico.
risposta data 17.05.2015 - 09:54
fonte

Leggi altre domande sui tag