L'esigenza della sicurezza per le applicazioni peer to peer e' dovuta alla loro natura aperta e autonoma.
Confronto ai sistemi client sever, dove i server assicurano sicurezza all'intera rete, gli utenti in un sistema P2P non possono garantirla.

La sicurezza dei sistemi P2P e' un problema per diversi aspetti: disponibilita' di risorse, autenticita' ed integrita' dei file e anonimato.

Disponibilita' di risorse

Ogni nodo in un sistema peer to peer e' in grado di spedire messaggi agli altri nodi e comunicare con loro per contribuire alla disponibilita' di risorse della rete.


Nell'animazione sopra e' rappresentato un attacco di tipo DOS


La disponibilita' di risorse puo' portare al verificarsi di possibili attacchi.
Attacchi di tipo DOS (Denial of service) hanno lo scopo di occupare la larghezza di banda di un nodo.

Un nodo malizioso per effettuare un attacco di tipo DOS sceglie un nodo vittima e spedisce una query agli altri nodi, che hanno richiesto a lui qualche risorsa, nella quale specifica che la risorsa richiesta e' posseduta dal nodo vittima.
Gli altri nodi, ricevuto il messaggio, cercano di connettersi con il nodo vittima per ottenere la risorsa che hanno richiesto. Il numero delle richieste di connessione supera la larghezza di banda del nodo vittima che non riesce piu'a comunicare con gli altri nodi.

Autenticita' ed integrita' dei file

Spesso si pone il problema dell'autenticita' e dell'integita' dei file per la comunicazione in rete. Autenticita' ed integrita' sono due caratteristiche diverse. L'autenticita' e' un attributo che ci assicura che un file e' autentico e non una copia. L'autenticita' del file puo' essere provata dall'antichita' del file: piu' un file e' vecchio, piu' si pensa che sia autentico.

L'integrita' e', invece, la caratteristica che un file non sia stato manomesso da qualche nodo malizioso. Il problema dell'integrita' e' risolto con l'utilizzo di funzioni di hash o con la firma digitale. Queste tecniche ci assicurano che un file arriva al destinatario cosi' come e' partito dal mittente senza essere stato manomesso.

Sistemi come Freenet utilizzano lo scambio di chiavi per la comunicazione, ottenute con una funzione di hash, SHA-1. Vi sono tre tipi di chiavi:

  • KSK: hash con la descizione del file. Se, pero', due file hanno la stessa descrizione avranno anche la stessa chiave, cio' provoca collisioni.
  • SSK: chiave che elimina il problema delle collisioni creando un unico namespace (coppia utente-file).
  • CHK: hash ottenuto con il contenuto del file. Identifica in modo univoco il file.


  • Anonimato


    L'anonimato e' un aspetto molto importante per la sicurezza perche' garantisce la privacy. Ogni nodo in questo modo non conosce l'identita' degli altri nodi e non conosce i file che possiedono gli altri nodi.

    Freenet e' il sistema che si sofferma maggiormente su questo aspetto perche', a differenza degli altri sistemi, ogni nodo posside i propri file e una copia dei file piu' richiesti. Con questa distribuzione delle risorse e' difficile risalire a chi sia il propritario effettivo del file.



    Articoli:


    Open Problems in Data-sharing Peer-to-peer Systems