Sicurezza informatica...

« Older   Newer »
  Share  
albus
view post Posted on 2/3/2008, 19:23




In ambito informatico una password (in italiano: "parola chiave", "parola d'ordine", o anche "parola d'accesso") è una sequenza di caratteri alfanumerici utilizzata per accedere in modo esclusivo ad una risorsa informatica (sportello bancomat, computer, connessione internet, casella e-mail, reti, programmi, basi dati, ecc.) o per effettuare operazioni di cifratura.

Una password è solitamente associata ad uno specifico username (in italiano nome utente o identificatore utente) al fine di ottenere un'identificazione univoca da parte del sistema a cui si richiede l'accesso.

La coppia username/password fornisce le credenziali di accesso ad una delle forme più comuni di autenticazione; tipico il suo uso nelle procedure di login. Dato lo scopo per il quale è utilizzata, la password dovrebbe rimanere segreta a coloro i quali non sono autorizzati ad accedere alla risorsa in questione. Non è consigliabile che una password abbia senso compiuto e può essere costituita anche da una frase (nel qual caso si parla più propriamente di passphrase).

L'uso di parole d'ordine come forma di riconoscimento risale all'antichità, soprattutto in ambiente militare. Ad esempio le sentinelle di guardia erano solite chiedere una parola d'ordine a chi si avvicinava, e permettevano il passaggio solo a coloro che ne erano a conoscenza. In tempi più moderni, in ambienti di spionaggio e controspionaggio, alla parola d'ordine doveva essere risposta una contro parola d'ordine.

Password dinamiche

Una livello maggiore di sicurezza può essere raggiunto mediante password dinamiche: si tratta di password che variano automaticamente dopo un intervallo di tempo prefissato. In tal caso l'autenticazione al sistema si ottiene quando la password generata automaticamente e quella immessa dall'utente coincidono.

Nella sua forma più semplice tale meccanismo si basa, infatti, su una componente hardware ed una software: la parte software, un programma in esecuzione su di un server o su un altro sistema da proteggere, generara delle password dinamiche a intervalli di tempo prefissati secondo un determinato algoritmo; la parte hardware, un dispositivo (ad esempio una smart card) nel cui firmware è codificato il medesimo algoritmo, è sincronizzata con il server in modo da generare la medesima password nel medesimo intervallo di tempo.

Norme elementari di sicurezza

* Nel determinare una password è sconsigliabile l'uso di parole ovvie (come il proprio nome o cognome o altri dati anagrafici), di senso compiuto o direttamente associabili all'account (come il nome utente stesso) come anche di parole troppo brevi (di solito per le password viene stabilito un numero minimo di caratteri dal momento che all'aumentare del numero di caratteri aumenta esponenzialmente il numero delle disposizioni possibili);
* In generale è poi preferibile utilizzare una password complessa e comunque memorizzarla (o, in subordine, annotarla in un posto sicuro) piuttosto che sceglierne una di facile memorizzazione ma di più facile determinazione.
* È inoltre sconsigliabile utilizzare parole presenti nei dizionari, come anche anagrammi o combinazioni delle stesse (tale tipo di password sono quelle più facilmente attaccabili mediante attacchi brute force), mentre è consigliabile utilizzare combinazioni del maggior numero possibile di "tipi" di caratteri: maiuscoli, minuscoli, numeri e caratteri speciali;
* È inoltre buona norma variare le password utilizzate dopo un tempo determinato e non utilizzare la medesima password per più servizi.

Generazione di password pronunciabili

Per quel che riguarda la generazione di password pronunciabili (ovvero parole non di senso compiuto, ma pronunciabili, dipendentemente dalla lingua di provenienza ovviamente), lo standard APG è organizzato con una procedura principale che fa riferimento a tre componenti importanti: (1) la unit table; (2) la digram table; (3) il sottoprogramma di numero casuale.
Il generatore casuale di password funziona formando le sillabe pronunciabili e concatenandole per formare una parola. Le regole di pronunciabilità sono immagazzinate in una tabella per ogni unità ed ogni accoppiamento delle unità (digram). Le regole sono usate per determinare se una data unità sia legale o illegale, a seconda della relativa posizione all'interno della sillaba e delle unità adiacenti. La maggior parte delle regole e dei controlli sono orientati alle sillabe e non dipendono da qualcosa al di fuori della sillaba corrente. La procedura principale definisce le regole interne usate per generare le parole casuali.
Il generatore di numeri casuali usa un sottoprogramma del DES per produrre i valori in virgola mobile di doppia precisione fra 0 e 1 (escluso). Questi numeri sono moltiplicati per una variabile n programmata che è un valore numerico intero. In questo modo si genera un numero intero casuale fra 0 e n-1 compreso.
I numeri casuali generati dalla procedura DES servono come input al generatore casuale di parole. Il sottoprogramma per generare questi numeri è richiamato dal generatore di parole ogni volta che un carattere (unità) è necessario. Non tutti i caratteri generati saranno accettabili per il generatore di parole in ogni posizione della parola. Ogni carattere è controllato per vedere se vengono rispettate le regole definite dalle tabelle del digram e dell'unità. Di conseguenza il sottoprogramma del generatore di numeri casuali sarà richiamato ripetutamente fino a restituire un carattere accettabile. Esiste un limite superiore fissato a 100 chiamate; se si raggiunge tale limite, l'intera parola è scartata e il programma ricomincia.
Come input il DES accetta due blocchi di dati di 64 bit. Uno consiste della vecchia password o di una stringa di dati; l'altra è una chiave pseudo-casuale di 64 bit (56 bit + 8 bit di parità) derivata seguendo la procedura descritta nell'ANSI X9.17. La vecchia password è digitata manualmente dalla tastiera. Un allineamento dell'input è generato dai primi otto byte della parola d'accesso o della stringa immessa. Il programma accetterà una stringa nulla (carriage return). Tutti i caratteri ulteriori sono ignorati. Se il blocco dell'input è minore di otto caratteri, gli elementi supplementari dell'input sono riempiti di zeri. L'ECB del DES è poi usato per cifrare i dati di input. L'output è un numero casuale di 64 bit che è la forma cifrata dell'input. La prima funzione nella struttura del DES è setkey(), che converte la chiave pseudo-casuale in un formato usato da DES per la crittografia. Le opzioni della linea di comando trasmesse a setkey() sono (0, 0, key). Il primo '0' è regolato in modo che il setkey() non generi la parità; il secondo '0' dice a setkey() che è richiesta crittografia (piuttosto che decrittografia); key è un puntatore all'inizio dell'array di chiavi. Dopo setkey(), viene richiamata la funzione des(), che per input usa gli indirizzi degli array di input e output, definiti entrambi come array di unsigned char di 8 byte di lunghezza.
L'array di output è prodotto da una funzione answer(), che restituisce il numero finale richiesto. La funzione answer() prende l'indirizzo dell'array di output come puntatore ad unsigned char ed il numero intero n il cui valore compreso tra 0 e n-1 è necessario al programma di generazione di parole casuali. Questa funzione genera una somma variabile, definita come valore intero unsigned. Per ottenere un valore numerico dall'array di caratteri di output, aggiunge i valori ASCII dei primi tre elementi dell'array di output ed immagazzina la somma nella relativa variabile. Quindi

somma = out[0 ] + out[1 ] + out[2 ]

che è un numero intero. Per ottenere un numero entro il range richiesto, da 0 a n-1, dalla somma, la funzione prende il valore del modulo tra la somma e n, sum%­n. Questo valore quindi è restituito alla funzione chiamante.

Sicurezza delle applicazioni

Le password pronunciabili generate da questo generatore automatico si compongono dei 26 caratteri dell'alfabeto inglese:

* password di 6 caratteri: circa 18 milioni;
* password di 8 caratteri: circa 5,7 miliardi;
* password di 10 caratteri: circa 1600 miliardi.

Inserendo una password abbastanza lunga risulta praticamente impossibile riuscire a indovinarla. Utilizzando non solo le lettere dell'alfabeto, ma anche numeri e caratteri speciali, creando password non pronunciabili e quindi completamente random, ci si mette al sicuro attacchi di tipo dizionario.

tratto da Wikipedia. Osservate, leggete, scrivete altro se sapete altro.
 
Top
0 replies since 2/3/2008, 19:23   117 views
  Share