I tuoi sistemi sono facili da attaccare?

Sicurezza

In che modo il key stretching (la deduzione della chiave delle password) può rendere i tuoi sistemi più sicuri?

Il furto di password non è nulla di nuovo, ma continua ad occupare i titoli dei giornali. Tutti ricordiamo la nota violazione ad Ashley Madison, dove i dettagli personali degli utenti del noto sito d’infedeltà furono scoperti dagli hacker, venduti sul Dark Web, e più tardi pubblicati su Internet alla mercé di tutti.

In realtà, questo potrebbe accadere a qualsiasi azienda in ogni settore di mercato – i dati personali sono uno dei bersagli principali degli attacchi informatici. Infatti, i tuoi dati personali possono essere venduti sul Dark Web per circa un solo dollaro.

Le password stanno occupando recentemente i titoli dei giornali a causa anche del caso Apple iPhone, in cui Apple è stata chiamata in giudizio dall’FBI. Il caso Apple vs FBI ha dato inizio a una discussione in merito al fatto se le aziende tecnologiche debbano progettare la loro crittografia in modo tale che possa essere bypassata da investigazioni governative.

Se una backdoor per l’FBI per risolvere un caso di terrorismo potrebbe suonare per molti come una richiesta ragionevole, è la possibile esistenza di una backdoor come tale che è abbastanza inquietante. Cosa accadrebbe se non fosse l’FBI a cercare di usarla per una buona ragione, ma un hacker che ha scoperto quella backdoor? Le backdoor creano debolezze nelle sicurezza che permetteranno a un’ampia gamma di hacker di violare dispositivi e dati. E la crittografia in sé non consente di nascondersi ai criminali.

Se vuoi essere certo che la tua azienda non sia la prossima ad occupare i titoli dei giornali a causa di un furto di password che ha reso noti segreti aziendali e i dati personali di dipendenti, partner e clienti, devi fare le cose giuste dall’inizio. E dall’inizio significa fin da quando stai creando la documentazione per i requisiti di specifica. Solo allora i programmatori potranno fare un lavoro corretto nel salvaguardare i tuoi sistemi.

Quindi, come dovesti approcciare le password?

Le persone tendono a creare password che sono piuttosto semplici da individuare con strumenti adatti e la potenza di calcolo. Il keyword stretching con una funzione crittografica di hash può esser usato a livello di sistema per migliorare la sicurezza. Usando il keyword stretching puoi beneficiare del fatto che devi verificare le password dell’ utente solo alla velocità con cui gli utenti le inseriscono.

Jarno Niemela, Lead Researcher dei Laboratori F-Secure spiega che:

L’attaccante che usa un attacco di forza bruta si basa sul fatto che può fare decine di miliardi di tentativi di password al secondo: nell’esempio a questo link, questo sistema di dimostrazione risalente al 2012 aveva fatto 68 miliardi di tentativi SHA1 per secondo, e con i mezzi moderni velocità più elevate sono più facilmente accessibili. Anche oggi, invece di costruire un cluster GPU, puoi semplicemente ottenerne uno dal cloud di Amazon, e avere qualsiasi velocità in base a quanto sei disposto a pagare. Se usi il key stretching passi da miliardi di tentativi al secondo a decine di migliaia. Per esempio, il cluster 25-GPU del 2012 ha eseguito 63 miliardi di tentativi SHA1 al secondo, ma quando ha usato Bcrypt, è stato in grado di effettuare solo 71 mila tentativi.

Jarno ha scritto due articoli sul “password hashing” e “password salting” che ti potrebbero interessare o che vorresti poter condividere con i tuoi amministratori tecnici (“Sei sicuro che SHA-1+salt sia sufficiente per le password?”, e “No, il salting delle password non è sufficiente, usa CUDA Accelerato PBKDF2”). Anche se risalgono a un paio di anni fa, sono ancora articoli validi.
Il punto che discute Jarno in questi post è che il semplice hashing e salting non basta. Devi limitare il numero di input di password con algoritmi matematici avanzati che il computer deve poter eseguire e che non possono essere bypassati. Limitare i tentativi solo a livello di tempo (per esempio uno per secondo) non è sufficiente. Potrebbe essere anche una buona idea usare due differenti tipi di algoritmi – uno per prevenire che vengano bypassate le restrizioni sull’uso della memoria, e un altro per prevenire che qualcuno usi calcoli ancora più efficaci.

Jarno Niemela
Jarno Niemela

Jarno preferisce combinare Bcrypt o PBKDF2 e funzioni Scrypt, così che metà del tempo stabilito sia speso su Bcrypt o PBKDF2 e l’altra metà su Scrypt. Scrypt offre una fortissima protezione contro il crack delle password GPU o CUDA-accelerato, e nel caso in cui venga scoperta una vulnerabilità in Scrypt, la password è ancora fortemente protetta con Bcrypt o PBKDF2.
Jarno conclude:

Un’altra cosa che è fondamentale è selezionare un numero sufficientemente elevato di iterazioni per le funzioni di key stretching. Si dovrebbe misurare il numero di iterazioni che corrisponde al tempo che ti puoi permettere per verificare un singolo login utente. Per esempio 500ms per un dispositivo mobile o PC e 1-10ms per un server.

 

 

Articolo tratto da “Are your systems easy to hack?” di Eija Paajanen, Product Marketing Manager, F-Secure Corp.

0 Commenti

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Potrebbe anche interessarti

%d blogger hanno fatto clic su Mi Piace per questo: