Monitoraggio di visite uniche al sito Web senza registrazione degli indirizzi IP

7

Il lunedì, alcuni indirizzi IP xxx.xxx.xxx.xxx visitano il mio sito. Lo registro.

Martedì, un altro indirizzo IP yyy.yyy.yyy.yyy visita il mio sito. Lo registro.

Se i due indirizzi IP sono uguali, butto fuori il secondo perché sono interessato solo a visite uniche al mio sito. Se non sono uguali, tengo entrambi nel mio registro.

Domanda: È possibile farlo senza mai registrare gli indirizzi IP stessi, usando una sorta di hashing / crittografia, in modo tale che non è possibile dedurre gli indirizzi IP da i dati hash / crittografati?

A prima vista, mi sembra impossibile, perché puoi sempre forzare tutti gli indirizzi IP possibili in qualsiasi schema di hash / crittografia che stai usando, fino a quando non corrisponde ai tuoi dati hash / crittografati - e quindi deducendo l'indirizzo IP originale.

Ma spero di perdere qualcosa. Forse è possibile dedicare del tempo a questo per renderlo in qualche modo raggiungibile?

Non sono abbastanza esperto in sicurezza per conoscere la possibilità o l'impossibilità di ciò. Qualsiasi consiglio sarebbe apprezzato.

Informazioni aggiuntive: mi piacerebbe memorizzare quante più informazioni possibili (senza, ovviamente, essere in grado di dedurre gli indirizzi IP originali). Ad esempio, potrei non voler necessariamente memorizzare solo il totale di tutti i visitatori unici. Invece, potrei voler conoscere i visitatori unici totali durante un particolare giorno, settimana o mese. Quindi, in realtà, la memorizzazione di tutti gli indirizzi IP con crittografia / hash sarebbe importante. Quindi, in questo senso, ho sbagliato quando ho parlato sopra di "buttare via il secondo".

Nota: sto cercando uno schema in base al quale nessuno, nemmeno io , può dedurre l'indirizzo IP. Sono state fornite alcune soluzioni che sono tali che io stesso posso dedurre tecnicamente l'indirizzo IP originale, ma non voglio nemmeno l'abilità di farlo da solo. Sembra impossibile, ma chi lo sa. Forse esistono degli inganni là fuori per ottenere ciò che voglio?

    
posta SecurityClown 11.08.2012 - 06:37
fonte

6 risposte

8

Prima di tutto: perché sei così preoccupato di non memorizzare gli indirizzi IP? Non sono dati privati; il SO o il router NAT lo include felicemente con ogni pacchetto inviato. Va bene è un po 'necessario, ma quello che voglio dire è che non sono veramente privati. Inoltre, gli IP casuali non sono davvero utili per gli hacker e non è un problema di privacy quando puoi vederli solo tu.

In secondo luogo, non è molto utile salvare gli indirizzi IP con l'obiettivo di contare le visite uniche. Non solo un IP può avere centinaia o migliaia di utenti (come le scuole), ma un singolo utente può anche occupare facilmente una / 16 sottorete o due (le modifiche IP di molte persone ogni pochi giorni circa), per non parlare dei laptop e dei telefoni cellulari. Una tecnica migliore sarebbe i cookie di sessione, che sono sfortunatamente limitati al browser (e quindi a un dispositivo, quindi senza contare le persone ma il numero di browser in realtà), ma è molto meglio degli indirizzi IP.

Infine, se vuoi continuare a memorizzare gli indirizzi IP, ci sono fondamentalmente due modi:

  1. Filtro Bloom , come menzionato prima. Questo non è corretto al 100%, ma probabilmente abbastanza buono per questo scopo.
  2. Uso di una funzione di hashing che richiede sempre un'elaborazione. Sha-2 sta facendo l'IP un paio di milioni di volte, non è pratico forzarlo.
    • (Ci sono circa 3,7 miliardi di indirizzi IP utilizzabili e unici a livello globale, quindi se ci vogliono 50ms per calcolare un hash, ci vogliono 2,9 anni prima di avere il 50% di possibilità di forzare uno di loro, non prendendo in considerazione la legge di Moore .)
risposta data 11.08.2012 - 21:47
fonte
3

Consideriamo l'intero stato dei tuoi sistemi. Quello stato può essere duplicato; basta spegnere le macchine e prendere una copia del contenuto del disco.

Ora ottieni quella copia come stato iniziale su alcune macchine virtuali, che emuleranno i tuoi server. Alimentali e fai la cosa contabile che produce il numero di "visite uniche". Questo dà un numero N . Quindi emula una connessione da un dato IP (queste sono macchine virtuali in una rete virtuale, così puoi emulare l'intera Internet come desideri), e fare di nuovo la contabilità . Se ciò produce N + 1 , allora l'IP era nuovo; in caso contrario, restituirà N , rivelando che l'IP era già stato conteggiato.

Questo metodo estremamente generico mostra che, indipendentemente dalla quantità di crittografia che puoi lanciare sul problema, tu, come amministratore di sistema, hai ancora il potere di verificare se un dato IP è nell'insieme di "indirizzi IP visti in precedenza" o non. Dato che ci sono solo quattro miliardi di indirizzi IP possibili (in IPv4), la ricerca esaustiva è fattibile. È un potere che non puoi rinunciare finché le tue macchine sono tue. E se non puoi perdere questo potere, non sarai in grado di convincere nessuno che non ce l'hai (eccetto le persone credulone).

Nella migliore delle ipotesi, puoi utilizzare hashing lento (come bcrypt ) per rendere esauriente cerca più difficile, ma non puoi aumentare la barra troppo in alto perché il tuo server dovrà fare questo hashing per ogni client in entrata. Inoltre, tutti questi hash dovranno usare lo stesso "salt", perché questa non è la stessa esatta situazione dell'hash della password. Ad ogni modo , non sarai in grado di dimostrare che non tieni gli indirizzi IP da qualche parte, perché sarebbe facile collegare un'altra macchina che passivamente spie sulla rete e registra gli indirizzi IP dalle connessioni in entrata.

Come menzionato da @Luc, gli indirizzi IP non sono un segreto. Provengono da un set limitato che può essere enumerato in modo esauriente con la tecnologia esistente. Una situazione diversa è quando si desidera tenere traccia di indirizzi e-mail , per rilevare duplicati, ma senza conservarli effettivamente nel proprio database perché non si vuole essere il responsabile della fuga di milioni di indirizzi verso qualsiasi spammer chi ruba una copia di backup. Per quella situazione, l'hashing è conveniente. La principale differenza tra gli indirizzi IP e gli indirizzi e-mail è la dimensione dell'insieme dei possibili indirizzi, rendendo l'elencazione esaustiva altamente fattibile per gli indirizzi IP e totalmente ridicola per gli indirizzi e-mail.

    
risposta data 24.02.2013 - 16:28
fonte
2

Ti confermo che è possibile non registrare gli indirizzi IP dei visitatori. Ad esempio, se si utilizza Apache come server Web, è possibile personalizzare il formato del registro in modo che non tenga traccia dell'indirizzo IP. In questo modo non hai bisogno di indirizzi ip di hashing.

Tuttavia, se devi monitorare visitatori unici del tuo sito, l'utilizzo di ip a tale scopo non aiuta. Prova a pensare a una LAN con resti di potenziali visitatori. Dovresti invece usare il meccanismo di sessione e memorizzare l'ID di sessione univoco accoppiato con la data effettiva invece di ip.

Questo non può garantire che gli indirizzi IP non vengano memorizzati altrove come nei router o nei firewall o altri dispositivi sw / hw.

    
risposta data 11.08.2012 - 08:47
fonte
1

link - Bloom Filter ti permette di creare gruppi (filtri) e aggiungere dati ad esso, che non è reversibile a causa di falsi positivi.

Altri metodi non sono OK, perché è facile attaccare lo spazio IPv4 a 32 bit.

    
risposta data 11.08.2012 - 11:22
fonte
1

Se ti preoccupi della privacy dei tuoi visitatori ma vuoi che l'analisi controlli piwik. link

puoi nascondere l'ip come 201.xxx.xxx.xxx (Non so se lo stesso si applichi nel database dell'installazione di piwik)

In passato ho visto una tecnica con piwik e apache per non registrare gli indirizzi IP ma l'ID dei browser di registro o qualcosa del genere. Sto cercando il posto ma non riesco a trovarlo.

    
risposta data 11.08.2012 - 21:16
fonte
0

Ho sentito parlare di persone che eseguono l'hashing dell'indirizzo IP e altre informazioni (stringa di user-agent, impostazioni locali del browser ...) e che archiviano quell'hash. Finché non è solo l'indirizzo IP, ciò dovrebbe rendere impossibile discernere i dati dall'hash, mantenendo tuttavia l'opzione di raggruppare i visitatori.

Non hai fornito alcun dettaglio, ma per Apache esiste un modulo chiamato removeip (pacchetto Debian / Ubuntu per Apache2: libapache2-mod-removeip ).

Il problema in quest'ultimo caso è che non puoi dire chi è chi. Ma poi, qualsiasi informazione che puoi usare per tracciare i tuoi utenti può essere usata da persone che estorcono tali informazioni da te. Come hai già indicato: il metodo migliore non è quello di avere quei dati in assoluto.

    
risposta data 24.02.2013 - 16:49
fonte

Leggi altre domande sui tag