Sicurezza su Internet: di Password e persone brutte

Creato il 03 giugno 2012 da Queenseptienna @queenseptienna
l’avete fatto incazzare, ora sono force choke vostri!

Salve.

Perché questo articolo?

Così. Non ho una fava da fare (a parte lavorare) e ho letto in questi giorni alcuni articoli sulla sicurezza a causa di suddetto lavoro che mi hanno ispirato.

Quale lavoro?

Un introduzione di base ci stà tutta, visto che potrebbe essere il primo articolo di una serie o l’unico di essa.

Sono uno sviluppatore.

Che è uno sviluppatore?

E’ quello che quando guardate un sito e dite “Ma che figo!” si incazza come una iena perché voi state osservando la grafica e non capite che per farla funzionare qualcuno si è sbattuto con clicli while, if, linguaggi di programmazione progettati non male ma peggio, boss pignoli, cazzi e mazzi, apocalissi, divinità scese in terra perchè bestemmiando gli hai ucciso tutti i cori angelici, webdesigner folli, host che non hanno un sistemista e potrei andare avanti per ore ed ore, dopotutto questo è anche un rant.

La mia esperienza?

Pochi di voi sanno che sono stato per qualche anno il sistemista, webmaster, webdesigner, developer, schiavo del WD (non c’è bisogno che metta il nome per intero no?), colui che, quando qualcuno tentava di iscriversi dopo essere stato bannato se la rideva come un idiota perché gli arrivava una bella mail informandolo dell’accaduto (il glorioso Arussil Noob Failsafe system 2.0) e che si divertiva a inventare fantomatici messaggi automatici da parte di Arussil-Bot che informavano l’utente dell’IP già utilizzato.

O la tag disponibile in tutte le pagine dall’alto (sparita il giorno stesso che me ne sono andato), o del sito mai uscito (3 mesi di lavoro) perché “Non lo voglio più”…

E tante altre cose divertenti che ora non esistono più perché a quanto pare “Ho fatto un casino” per citare qualcuno che sa di sviluppo quanto io di smalto per le unghie e profumi costosi e ha comprato della roba a pagamento per ottenere un risultato che definire amatoriale è poco. Tanto che mi basterebbe un pc clementoni senza batterie per bucarlo come una groviera svizzera.

Dopo certi scazzi con la direzione, ho abbandonato il tutto, e sono così scarso che ho fatto lo stagista prima, e il collaboratore dopo, per Unbit, azienda Italiana con sedi a Torino e Roma che mi ha formato (legasi fatto fare il culo) con una miriade di tecnologie nuove che qui non sto ad elencare visto che sarebbe come parlare Arabo a una commemorazione per l’11 Settembre.

Uscito di li ho trovato lavoro tipo il giorno dopo, presso Eddesign, sempre come sviluppatore per un progetto di cui non posso parlare, che mi ha costretto a imparare il PhP ad oggetti, me, uno sviluppatore Python che ad oggetti fa il culo praticamente a qualsiasi linguaggio.

Fottuto PhP.

Tornando in topic questo è il mio background attuale, sono uno sviluppatore Python, che è costretto ad usare il PhP, un pò sistemista, un pò webdesigner, un pò webmarketer, un pò tutto, ma sopratutto tutto questo anche per Scrittevolmente e SognandoLeggendo.

Ciò che era partito come un articolo sulla sicurezza su internet è diventato si e no un post di presentazione mio e del lavoro che faccio, qualcosa di comunque necessario in un primo articolo.

E questo è solo un minimo.

Il mio lavoro consiste più o meno nel girovagare per google alla ricerca di codice, ideare flowchart, bestemmiare contro il PhP ripetutamente, avere un lampo di genio, scrivere del codice, farlo funzionare e poi lasciarlo al suo destino per poi tornarci sopra e ricostruirlo da zero per farlo più figo.

Dopo questa doverosa introduzione (tanto per far capire che non scrivo minchiate, ma è davvero il mio lavoro), parliamo di sicurezza.

Annoso problema per i bimbomikia su Facebook.

sono gay!

Non l’ho scritto io, mi hanno hackerato l’account!

–Bimbominkia su Facebook

Questa bella cosa dell’hackeraggio.

Sappiate che il 99% delle volte, ciò che chiamate hackeraggio non ha un fottuto senso.

Evitiamo il super spiegone su cosa sia un Hacker, il vero Hacker, quello con la H maiuscola, rimandandovi su wikipedia.

E iniziamo il vero discorso con questa bella frase:

se ti hanno compromesso un account la colpa è tua al 99%.

Hai cliccato dove non dovevi? Sei un pirla.

Volevi guardare il video di Belen che fa le cosacce? Sei un pirla e pure con pessimi gusti.

Ti è stato promesso l’ultimo videogioco in anticipo di 2 anni sulla data d’uscita? Evitiamo di dire cosa sei che ci sono dei bambini collegati.

Ma qual’è l’1% mancante?

Sono quelli come me, gli sviluppatori, che non sanno cosa sia la vera sicurezza.

Partiamo dalle Password

Quante volte, registrandoti ad un sito, ti sono stati imposti limiti come “almeno 6 caratteri, di cui almeno uno maiuscolo, più un numero, più il numero di scarpe di tua zia detratto dalle tasse del 1940, insieme al tuo nome di battesimo in un’altra dimensione?”

Son cose belle, fighe, sicure…

seeeeeeeeeeeeeeeee, come no.

Sfatiamo questo mito, nessuna sequenza alfanumerica, per quanto lunga e complessa è realmente sicura.

XKCD, amo questo fumetto.

Questa vignetta è di parecchio tempo fa, ma mi piega sempre.

Perchè ha ragione su un punto: una password difficile da ricordare non è una password difficile da trovare!

Introduzione sull’attacco alle password: in questo caso si parla di Brute Force.

Ovvero provo tutte le combinazioni possibili e spero di trovare la password giusta.

550 anni a 1000 prove al secondo.

Anni fa.

Un articolo del 31 gennaio 2010, parla invece di ben 700.000.000 di password provate al secondo. 2 anni fa. Con la velocità a cui i pc si evolvono di questi tempi quel numero è sicuramente più alto, molto più alto.

Ma cosa vogliono dire questi numeri? A cosa sono riferiti?

Nel caso che uso come esempi parliamo di uno dei metodi più usati, e più semplici, per conservare una password su un database: l’hashing.

Ovvero: prendo la vostra password, prendo una stringa randomica di lunghezza considerevole e li passo tutti in una funzione di Hash (Non Hush, Hash).

Funzione che unisce questa stringa casuale alla vostra password, poi la incasina, facendo tornare indietro una stringa che non ha niente a che vedere con le informazioni inserite. E quella viene salvata insieme alla stringa casuale creata all’inizio, chiamata salt.

Il tutto sul nostro database.

Quello che la gente normale pensa è che un “hacker”, prova tutte le password possibili sul sito in cui l’utente si è registrato.

ssssssssseeeeeeeeeeeeeeeeeeeeeeeeeeee ceeeeeeeeeeeerto.

Non è che sia impossibile, ma se una password è hashata è decisamente improbabile, perché allora vi dico che l’hashing è una cosapoco sicura?

Perché la prima cosa che si fa è rubare l’intero database, copiandolo, in modi che esploreremo in seguito. Poi si passa a compromettere le password una ad una. Perchè? Perchè serve il salt per decodificare una password. A meno che qualcuno non sia così pirla da usare dati dell’utente come salt, tipo la mail di registrazione.

Che succede poi? Che molti utenti usano la stessa password per tutti i siti. Ergo, una volta che te l’hanno fregata da una parte la usano in siti mainstream e ti fregano pure la.

Quindi, cosa ne traiamo?

Che la sicurezza di una password è determinata da come viene hashata.

Un algoritmo di hash semplice porta ad una decodifica semplice.

Per ottenere una password sicura si usa un algoritmo da bastardi.

Tipo bcrypt, che permette anche di rallentare la funzione andando a pasticciare ancora di più la stringa finale, in modo da tenere la funzione al passo con i nuovi pc.

Perchè?

Ovvio, perché se una funzione impiega 0,1 secondi per fare qualcosa e un’altra 0,5 la seconda porterà il dover provare ogni combinazione di caratteri ad un tempo biblico.

Esempio:

Immaginate di avere password “prova” a cui viene accodato una stringa tipo “asdfsa123123″

tutto questo passa per una funzione che ritorna una stringa “lklkopklkkop4444″

Avendo il salt “asdfsa123123″ bisogna solo provare tutte le combinazioni possibili, col salt accodato ad esse, e passarle nella funzione di hash, confrontare gli hash finali e capire qual’è la password.

Prendiamo invece di nuovo la password “prova”.

invertiamo l’ultima e la prima lettera “arovp”.

cambiamo le vocali con dei numeri “4r0vp”

ora prendiamo un salt di 128 caratteri o più (no, non ve la scrivo).

accodiamola alla password

facciamo qualche altra minchiata.

e otteniamo una stringa finale.

Quale metodo è più lento da fare?

Quale sarà più lento da fare per ogni possibile combinazione?

(questo è un esempio per non addetti a lavori, bcrypt dubito funzioni così).

Risultato? Col primo modo si provano 700.000.000 di password al secondo, col secondo molte, molte, molte, molte, meno.

Tanto che col primo buchi diverse password al secondo, con l’altro metodo ci vogliono diversi anni per ognuna.

Ora che sapete come funziona la sicurezza delle password, come potete proteggervi al meglio?

Usate una frase lunga, semplice da ricordare, numeri, maiuscole ed altra roba non sono importanti.

Usate password diverse per ogni sito. Se vi compromettono una password sarà così impossibile compromettere altri account di vostra proprietà.

State attenti a dove usate le password! E’ una cosa tremendamente importante!

Molti siti esistono solo per rubare password, è un dato di fatto. Voi la inserite li e loro se la salvano in chiaro, per poi riutilizzarla dove più gli pare.

Nei prossimi articoli parleremo proprio di questi attacchi, sempre atti a rubare la vostra password, ma eseguiti in maniera molto più subdola.

Per oggi è tutto e ricordate:

EHEHEHEHEHEHEHEHEHEHEHEHEHEHEHEHEHEHEHEHEH (cit. 10 punti a chi indovina)


Potrebbero interessarti anche :

Possono interessarti anche questi articoli :