Questo è un discorso generale... non rivolto esclusivamente a facebook.
Il problema VERO è che in molti, troppi, credono che stando seduti a casa propria, davanti ad una tastiera ed un monitor, sono al sicuro dai "cattivi"...
Allora noi come siamo messi con il nostro "beneamato forum"??
Visto che la domanda era seria...
mi sembra il minimo iniziare da qui:
P.S. Dimenticavo!!!! certo che quando ti risvegli dopo mesi di lungo letargo .....................un bel fanculo con l'elastico è proprio quello che ci vuole.
hai perfettamente ragione...
Perché il nostro è un sito amatoriale sul nostro paesello, ma è sempre su internet...
quindi la domanda non è banale e una risposta decente dovrebbe trattare diversi argomenti, alcuni dei quali io li do per scontati, ma potrebbero non farlo in molti.
(Leggi: la risposta potrebbe diventare lunghetta )Potrebbe diventare lunghetta era un eufemismo... per chi ha una connessione a tempo (Davidz?) e pensa che valga la pena di leggere la marea di "stronzate" che ho scritto... consiglio di salvarsi la pagina e di leggerla con calma da scollegati... non fatemi sentire in colpa all'arrivo della prossima bolletta!
Premesso che, non sono iscritto a facebook e non mi frega di farlo ( per ora ), soprattutto perchè mi piace conoscere personalmente e stringere la mano a nuovi conoscenti che poi potranno diventare " amici " con lettera minuscola inizialmente e poi "AMICI " con lettera maiuscola in seguito
In effetti la parola "amico" su facebook è utilizzata un po' a sproposito, ma "conoscente" avrebbe avuto sicuramente meno presa sui CLIENTI
. Comunque sono convinto che se chiedi a qualsiasi persona iscritta a facebook quanti amici ha ti risponderà con un numero spropositato, ma se gli chiedi quanti AMICI VERI ha, il numero si ridimensionerà a poche unità... cosa differente se chiedi ad un gruppo di persone cosa è il Grande Fratello... alcuni (molti?) risponderanno che è il nome di una trasmissione televisiva creata dalla Endemol.
sono tutto orecchie nell'ascoltare gli argomenti ai quali ti riferisci riguardo invece il nostro forum per il quale, come sicuramente avrai capito, sono simpatizzante e sostenitore
Gli argomenti a cui mi riferisco riguardano in generale la sicurezza e la privacy su internet, non esclusivamente sul nostro forum... comunque sarà più un minimo accenno che altro, anzi, per alcuni non saranno altro che delle ovvietà (per farmi perdonare
Exploits of a Mom, mentre questa è totalmente gratuita e fuori contesto, ma il link ve lo do ugualmente:
windows 7 ).
Per non andare completamente fuori argomento, ogni tanto ci infilerò anche facebook, ma non prendetelo come un mio accanimento verso questa società, sono soltanto termini di paragone...
La sicurezza nel campo ICT, come in ogni altra cosa, non esiste... cioè, esiste finché non viene violata, e quando viene violata non è detto che 1) se ne accorgano, 2) vi venga comunicato...
in qualsiasi contratto che firmate, troverete una parte chiamata "esclusione di responsabilità" o similari, dove chi propone il contratto, cercherà di pararsi il culo come meglio può...
questo è uno stralcio dell'
esclusione di responsabilità di facebook La Società non si assume nessuna responsabilità per eventuali errori, omissioni, interruzioni, eliminazioni, difetti, ritardi nel funzionamento o nella trasmissione di dati od errori sulla linea di trasmissione, nonché per il furto, la distruzione o l'accesso non autorizzato a, ovvero l'alterazione delle comunicazioni dell'utente.
la parte riguardante il furto, la distruzione o l'accesso non autorizzato, non è un caso unico... ce l'hanno tutti, e chi non ce l'ha è perché (sbagliando) la reputa ovvia... (dopo logicamente bisogna vedere in che modo è stato effettuato il furto... per vedere se effettivamente non ci sono responsabilità.)
il furto o l'accesso non autorizzato alle informazioni non è così raro come può sembrare... è di qualche giorno fa la notizia del
furto dei dati su Monsterquesto è un piccolo stralcio:
Come accade a molte aziende che conservano grandi database di informazioni, Monster è obiettivo di tentativi illeciti di accesso e appropriazione non autorizzata di informazioni contenute nel suo database. Recentemente siamo venuti a conoscenza del fatto che il nostro database è stato oggetto di accessi illeciti, e che alcuni contatti e dati di account sono stati violati, compresi username e password di utenti Monster, indirizzi email, nomi, numeri di telefono, e alcuni basilari dati di natura demografica. Le informazioni oggetto di accesso illecito non comprendono i CV.
a quanto sembra il database italiano non è stato violato, ma loro stessi consigliano a TUTTI di cambiare la password di accesso a Monster e, aggiungo io, di cambiare la password in QUALSIASI altro sito in cui usavate la stessa password di Monster (se avevate un account su Monster ovviamente).
Certo, non è una bella pubblicità per Monster, ma è una cosa che poteva succedere a tutti e è una cosa che va sempre tenuta in considerazione.
Crimine e phishing è una vignetta abbastanza triviale, ma rende bene l'idea di come ora come ora i cattivi possano essere persone in giacca e cravatta e soprattutto persone che non avrai mai modo di incontrare, perché potrebbero stare nella parte opposta del mondo.
I tempi cambiano e i criminali sono sempre tra quelli che percepiscono a pieno i cambiamenti.
Tornando al nostro sito, ma ripeto che è utilizzato come esempio, il concetto è più generale... anche noi siamo "bucabili"!
Anzi, noi siamo "molto più bucabili" di altre società o siti, perché questo è un sito amatoriale e le risorse impiegate sia dal punto di vista architetturale, di mantenimento e di attenzione sono nettamente minori di chi ha qualcuno pagato per pensarci o di chi utilizza strumenti studiati apposta per monitorare e impedire possibili violazioni.
Chi ha accesso al database o ai file che reggono in piedi valentano.net (accesso autorizzato o non autorizzato) riesce a vedere, se vuole, informazioni che da semplici utilizzatori del sito non si riescono a vedere...
queste informazioni comprendono gli indirizzi IP, gli indirizzi email, i messaggi privati, le password di ognuno (anche se in realtà le password non sono salvate in chiaro, ma viene salvato soltanto il suo hash... comunque ritornerò sull'argomento) e una sezione nascosta del forum dove hanno accesso soltanto gli amministratori del sito e tutti quelli che l'accesso non ce l'hanno, ma se lo procurano.
Questa sezione nascosta è, o meglio, era una sezione dove noi amministratori all'inizio di questa avventura ci confrontavamo su determinati argomenti o su come affrontare determinate situazioni... come tutti i thread del forum, chiunque riesca a guadagnare l'accesso a quella sezione o riesca a mettere le mani sul database, riuscirà a leggerli, poiché i post sono tutti salvati in chiaro. In questa sezione c'è finito anche uno dei più bei thread IMHO che io abbia mai aperto su questo sito (devo essermi perso qualcosa).
Tornando alle altre informazioni... ognuno di voi, quando si è inscritto al sito ha fornito un indirizzo email e in seguito tramite il profilo personale ha deciso se rendere questo indirizzo email visibile a tutti oppure no. Chi non l'ha reso visibile a tutti sa, o comunque dovrebbe sapere, che gli amministratori o chi ha i permessi adatti può vedere quale è l'indirizzo email utilizzato per la registrazione... questo indirizzo può vederlo in chiaro anche chi, in un modo o in un altro, riesca ad accedere al database.
Molti siti vengono bucati soltanto per raccogliere indirizzi email, per vari scopi... phishing, spam, etc..
I messaggi personali di qualsiasi forum di cui ho avuto modo di vedere il codice (senza estensioni aggiuntive), vengono salvati sul database sempre in chiaro... quindi va da se che tramite PM io non ci scambierei "segreti industriali"... come nei casi precedenti, questi PM possono essere letti (tecnicamente parlando; legalmente parlando: "dipende") da chiunque abbia accesso al database, anzi alcuni forum hanno moduli aggiuntivi o comunque anche se non ci sono si possono scrivere, che permettono di visualizzare i PM di chiunque semplicemente tramite pannello di controllo (naturalmente avendo i permessi adatti)... vi assicuro che su questo sito non c'è nessun modulo installato atto a fare questo, ma potenzialmente, se uno volesse, gli basterebbe accedere al database o aprire un backup del database con un qualsiasi editor di testo per leggerli tutti.
Quindi saranno pure messaggi personali, ma continuo a ripetere che non è il caso di ritenerli più sicuri di qualsiasi messaggio pubblico (anche se non accessibili a tutti, tecnicamente qualcuno potrebbe leggerli ugualmente... io sono uno di questi), ovvio che se il PM ve lo mandate già crittato il discorso può cambiare.
Per chiarezza... se entrambe le persone (mittente e destinatario del PM) lo hanno cancellato tramite il proprio pannello di controllo, questo PM non sarà più presente nel database, ma potrebbe essere presente in un suo backup.
Le password... prima di farci "un salto dentro" il consiglio è di non usare mai e poi mai la stessa password su siti differenti o per accedere alle email, o comunque di non utilizzare mai le password che si usano per cose "importanti" su siti su cui non si ha piena fiducia (ma ricordatevi che potete avere fiducia quanto vi pare nelle persone autorizzate, ma qualcuno può appropiarsene anche in modo poco lecito).
La memorizzazione delle password in un database può avvenire in diversi modi (ricordo che non è un trattato completo, ma soltanto un accenno):
uno di questi è la memorizzazione della password in chiaro, questo significa che chi ha accesso al database può vedere la vostra password senza problemi.
Un altro metodo è quello di utilizzare un algoritmo di criptazione reversibile, questo significa che la password verrà memorizzata criptata, ma esiste un metodo (più sicuro o meno sicuro... dipende dall'implementazione) che permette di recuperare la password in chiaro.
Quando richiedete la password in un sito perché ve la siete dimenticata e vi rispediscono in email la password che avevate impostato voi, significa che utilizzano uno di questi due metodi, ma non avrete la certezza su quale dei due stiano utilizzando.
In molti casi, invece di salvare nel database la password in chiaro o criptata, si memorizza il valore ritornato da una funzione di hash applicata sulla password. Una funzione di hash non è reversibile e ritorna (qualsiasi cosa gli diate in pasto) un numero (esadecimale) di una determinata lunghezza, dipendente dal tipo di funzione utilizzata.
Faccio un esempio per far capire meglio come funziona... se io utilizzo come password la parola "valentano" e il sito a cui mi sto registrando utilizza sha1 come funzione di hash, avrò che nel database verrà memorizzato "7997c83ea4897caff192a362e9230cf3234022d6" che è appunto il risultato della funzione di hash sha1 a cui abbiamo dato in pasto la stringa "valentano" (senza apici)... quel numero di 160bit (40 cifre esadecimali) rappresentano la mia password, nel momento in cui farò il login verrà calcolato l'sha1 della password che inserirò nel form di login con quello che è registrato nel database, se sono uguali significa che la password è giusta.
Forse già vi è venuto il dubbio... se una funzione di hash restituisce sempre un numero di una determinata lunghezza (nel caso di sha1 un numero di 160bit, cioè 40 cifre esadecimali) per qualsiasi cosa gli diate in pasto (stringe di lunghezza differente, anche l'intera divina commedia volendo...) significa che c'è la possibilità che con due stringhe differenti in ingresso si riceva come risultato lo stesso numero a 160bit... quindi è possibile che venga considerata corretta una password che non era quella originale se risulta avere lo stesso digest (il risultato dell'hash) della password vera... queste si chiamano collisioni. La bontà di una funzione di hash viene giudicata in base alla difficoltà di trovare una collisione. Fino a qualche anno fa si utilizzava quasi sempre l'md5 (128bit... 32 cifre esadecimali) come funzione di hash, però ora ne è sconsigliato l'uso perché è diventato "troppo facile" trovare collisioni.
L'sha1 è ritenuto ancora abbastanza "sicuro", ma sarà il prossimo a crollare...
tornando al discorso delle password, anche se nel database viene memorizzato il risultato dell'sha1 della password, non è impossibile risalire alla password originale... ci sono vari metodi di attacco che permettono anche facilmente (dipende dalla bontà della password) di scoprirla.
Uno di questi attacchi è chiamato "attacco a dizionario", il funzionamento è semplice... si crea un file di testo contenente le parole più probabili, per ognuna di loro si crea l'hash e si confronta con quello memorizzato nel database, se coincidono avete trovato la password. Esistono già dizionari belli e pronti (giga e giga) di tutte le lingue, i nomi, i cognomi, i personaggi dei film, i film, i paesi, le nazioni etc etc... esistono programmi automatici che fanno tutto il lavoro e in aggiunta utilizzano la stessa voce del dizionario sia tutto minuscolo, tutto maiuscolo, con la prima lettera maiuscola e le altre minuscole, della parola digitata al contrario, della parola con l'aggiunta di uno o più numeri alla fine (normalmente utilizzata con i dizionari dei nomi... due numeri...), etc... avendo a disposizione un database con per esempio 100 password e un normale computer di oggi, un attacco a dizionario rivelerebbe in poco tempo più del 50% delle password memorizzate (50% ad essere ottimisti).
Per bucare la nostra password "valentano" basterebbe soltanto il dizionario dei paesi italiani.
E' per questo motivo che viene sempre consigliato di non utilizzare mai password semplici come un nome, cognome o qualsiasi parola esistente in qualsiasi lingua.
Un metodo più veloce di attacco è l'utilizzo delle "rainbow tables" (se volete informazioni aggiuntive su tutti i termini assurdi che ho citato, basta fare una ricerca con un qualsiasi motore di ricerca).
Un altro attacco è il "brute force", cioè provare tutte le combinazioni possibili. Per fare questo tipo di attacco serve parecchia potenza di calcolo, ma a seconda dei caratteri che gli dite di "provare" il tempo diminuisce drasticamente.. per esempio io posso fare un attacco "brute force" utilizzando soltanto i caratteri minuscoli dell'alfabeto inglese e... scovare le password scritte in minuscolo, di lunghezza minore o uguale a 8 caratteri, diventa una cosa fattibile con poco tempo...
E' per questo motivo che viene sempre consigliato di utilizzare password più lunghe di 8 caratteri con caratteri minuscoli, maiuscoli, numeri e anche qualche simbolo... in quanto la potenza di calcolo per effettuare un brute force aumenta esponenzialmente... un conto è ciclare su 26 caratteri o addirittura soltanto su 10 caratteri (i numeri... P.S. le date utilizzate come password), un altro è ciclare su 26+26+10+x (minuscole + maiuscole + numeri + numero dei simboli permessi).
Per limitare questi tipi di attacco, si utilizza il "sale"... cioè invece di calcolare l'hash della password come prima, si calcola l'hash della password+salt o salt+password... il salt non è altro che una stringa di TOT caratteri (minuscoli, maiuscoli, numeri e simboli) casuale... ogni utente avrà un salt differente.
Il salt viene memorizzato in chiaro sul database, poiché servirà per capire se la password è corretta...
Tornando al nostro esempio, generiamo un salt random che sarà ad esempio "1rT$b" (salt di 5 caratteri), l'hash memorizzato nel database non sarà più quello della nostra password liscia (quindi "valentano"), ma sarà quello della pre/post concatenazione delle due stringhe (per es. "valentano1rT$b"). L'sha1 di "valentano1rT$b" è "df1bfc3e353a9763ab7208e4cc93d356b55cba67", questo valore verrà memorizzato nel campo password del database e "1rT$b" verrà memorizzato in chiaro nel campo "salt".
Se due utenti utilizzano la stessa password "valentano" non sarà più possibile accorgersi, perché il salt sarà differente per entrambi e quindi l'hash generato da password+salt risulterà differente.
Per controllare se la password è corretta il controllo verrà fatto con la password digitata nel form di login concatenata con il salt prelevato dal database, se il risultato di sha1 di questa concatenazione sarà uguale al valore memorizzato nel campo password dell'utente, la password verrà considerata corretta.
Aggiungere un salt random alla password permette di irrobustire la password e di conseguenza rendere più difficoltoso un "brute force", in aggiunta non si potranno fare attacchi tramite dizionari su tutte le password di un database in contemporanea... naturalmente se a me interessasse soltanto la password di un utente, il salt non aggiungerebbe nessuna protezione in più (anche se in realtà vanifica l'utilizzo delle rainbow tables già generate), perché essendo il salt in chiaro sul database, posso aggiungerlo nella giusta posizione ai miei dizionari (quindi un attacco a dizionario non viene pregiudicato su una singola password anche se si usa il salt).
SMF (cioè il forum utilizzato qui) "sala" le password, quindi il metodo utilizzato è l'ultimo descritto...