# Evercookie

Evercookie è un'applicazione basata su JavaScript creata e sviluppata da Samy Kamkar per produrre e gestire "cookie zombie" in un browser, ovvero oggetti cookie che sono intenzionalmente e deliberatamente difficili da eliminare. Nel 2013, un documento NSA top-secret è stato diffuso da Edward Snowden: Evercookie viene citato come metodo efficace per tracciare gli utenti del sistema Tor.

## Introduzione

Un cookie tradizionale è una quantità relativamente piccola di dati, in forma testuale, memorizzati dal browser dell'utente. I cookie possono essere utilizzati per salvare le preferenze e le informazioni sulla sessione corrente e hanno miriadi di applicazioni (cookie tecnici, cookie statistici, ecc.); tuttavia, questi oggetti possono anche essere utilizzati per tracciare e profilare gli utenti per scopi di marketing. A causa delle preoccupazioni sulla privacy, tutti i principali browser moderni includono dei meccanismi per la gestione e l'eliminazione dei cookie; ad esempio, permettono all'utente di rifiutare sistematicamente i cookie di terza parte (third-party cookies).
Adobe ha affermato di aver introdotto nel plugin Adobe Flash Player un nuovo meccanismo, simile ai cookie, chiamato Local Shared Object (LSO), ovvero un oggetto condiviso locale. Tra le motivazioni addotte, vi sono i limiti di dimensione (LSO può memorizzare 100 KB di dati per sito web di default, superando il limite di 4KB dei tradizionali cookie), la probabilità di un'eventuale cancellazione da parte dell'utente e la natura intrinsecamente semplice, poiché testuale, dei cookie HTTP tradizionali. Sebbene Adobe abbia pubblicato un meccanismo per eliminare i cookie LSO, ha ricevuto alcune critiche da parte di esperti di sicurezza e privacy.
Dalla versione 4, Mozilla Firefox gestisce i cookie LSO allo stesso modo dei cookie HTTP tradizionali, quindi possono essere eliminati insieme.

## Descrizione

Il 13 settembre 2010, Samy Kamkar ha rilasciato la versione beta v0.4 di Evercookie come open source. Secondo il sito web del progetto:
   “Evercookie è progettato per rendere i dati persistenti davvero tali. Memorizzando gli stessi dati in diverse posizioni alle quali un client può accedere, se qualcuno dei dati viene perso (ad esempio, cancellando i cookie), i dati possono essere recuperati, quindi reimpostati e riutilizzati.
   Considera Evercookie come dei cookie che non andranno via.
   Evercookie è un'API javascript che produce cookie estremamente persistenti in un browser. Il suo obiettivo è identificare un client anche dopo l'eventuale rimozione dei cookie standard, dei cookie Flash e altri.
   Evercookie è in grado di fare ciò, perché memorizza i dati dei cookie in diversi tipi di meccanismi di archiviazione disponibili sul browser locale. Inoltre, se Evercookie nota che l'utente ha rimosso uno qualsiasi dei tipi di cookie in questione, li ricrea utilizzando ogni meccanismo disponibile.”
Un Evercookie non è solo difficile da eliminare, "resiste" attivamente alla sua cancellazione copiandosi in forme diverse sulla macchina dell'utente e "resuscitando" se si accorge che alcune delle copie sono mancanti o scadute. Nello specifico, durante la creazione di un nuovo cookie, Evercookie utilizza, tra gli altri, i seguenti meccanismi di archiviazione:
* Cookie HTTP standard
* oggetti condivisi locali (cookie Flash)
* Memorizzazione dei cookie nei valori RGB delle immagini PNG generate automaticamente e memorizzate nella cache utilizzando il tag HTML5 Canvas per leggere nuovamente i pixel
* Memorizzazione dei cookie nella cronologia web
* Memorizzazione dei cookie negli ETag HTTP
* Memorizzazione dei cookie nella cache Web
* caching di window.name