venerdì 29 aprile 2011

La password a cipolla

Stamattina, preso dall'euforia del caso Sony, ho deciso che era il caso di anticipare di qualche giorno il consueto giro trimestrale di cambio password. Mi sono quindi seriamente posto il problema di come crearne una sicura. Premesso che l'ingegneria sociale... brute force... bla bla bla mi si sono presentati alcuni problemi

  • la mia ridotta fantasia
  • la volontà di non usare la stessa password
  • la mia ridotta memoria (non è vero, ma i vuoti bisogna sempre considerarli)

Ci sono molti modi per generare una password inattaccabile... "cala cala merlino (cit.)" e ricostruibile a chi conosce il metodo (quindi anche un eventuale malintenzionato che scopre il metodo), ma successivamente mostrerò solo quello che attualmente sto utilizzando io. Prendete

  • una struttura base
  • una manciata di bash (facoltativa)
  • un po' di pazienza

Partiamo spiegando cosa è, nella mia idea, la struttura di base. Lavorando in PHP, utilizzo quotidianamente le sue variabili predefinite (ed es $_POST o $_SESSION) quindi ho pensato di utilizzare questo stesso metodo per contenere le password.

Perché?
Perché aggiunge un caos ordinato, mnemonico e incrementa la lunghezza complessiva della password. (il famoso salt)

Consideriamo quindi di utilizzare come struttura base un bel

$_PWD[]

Ok, non è troppo lunga ed è abbastanza facile da ricordare, ma soprattutto include al suo interno un paio di caratteri speciali.
Ora è il momento di mescolare la manciata di bash. Ok ho la struttura di base e potrei inserire la mia password che, per semplicità di utilizzo, facciamo coincidere con il nome del sito e il mese in cui sto cambiando la password, ad esempio

$_PWD[twitter04]

ma nel caso di una "fuga di informazioni" sarebbe troppo facile risalire a tutte le altre (presupponendo un cambio contemporaneo delle password ovviamente).  Quello che io ho pensato di fare è un ciclo di md5, condito con il mese, tante volte quante le lettere del sito in questione e prendere i 4 caratteri a partire dalla posizione corrispondente al mese...

eh?

#! /bin/bash
lunghezzasito=${#1}
i=0
mese=`date +%m`
password=`echo $1$mese`
while [ "$i" -lt "$lunghezzasito" ]
do
   pass=`echo $password$mese | md5sum`
   let i++
done
echo ${password:$mese:4}

Chiaro, no? Tornando all'esempio di twitter, supponendo di aver salvato il file e dato un chmod +x otteniamo questo

overflowsith@icarus:~$ ./password twitter
19a8

di conseguenza la nostra password completa diventa:

$_PWD[19a8]

Ah, un po' di pazienza dicevo. Sì, quella serviva per arrivare fino a qui e leggere questo delirio :)

Nessun commento:

Posta un commento