PDA

View Full Version : Microsoft Windows XP e 2000: confermati i problemi di crittografia


Redazione di Hardware Upg
22-11-2007, 15:06
Link alla notizia: http://www.hwupgrade.it/news/software/microsoft-windows-xp-e-2000-confermati-i-problemi-di-crittografia_23356.html

Microsoft inserirà nel prossimo SP3 di Windows XP una patch per risolvere il problema relativo al pseudo-random number generator (PRNG)

Click sul link per visualizzare la notizia.

axias41
22-11-2007, 15:26
Da alcune fonti in rete si apprende che per poter sfruttare la vulnerabilità un potenziale malintenzionato deve prima prendere controllo del sistema, impossessandosi dei privilegi di amministratore. Questa condizione limita fortemente la pericolosità del bug anche se un aggiornamento dedicato è assolutamente desiderabile.


Direi invece il contrario, la stragrande maggioranza degli utenti usa Windows come amministratore

Kralizek
22-11-2007, 15:31
pensa lato server... quanta gente "vive" loggato come admin? 0.

dsajbASSAEdsjfnsdlffd
22-11-2007, 15:35
beh se uno usa un sistema nel modo sbagliato c'è poco da fare.
anche puntarsi una pistola carica alla tempia non è consigliabile.

Alex_HWdiscount
22-11-2007, 15:38
scusa... ma hai mai visto la gente sui server???
io si, nelle più grandi aziende italiane...
user: administrator

axias41
22-11-2007, 15:43
pensa lato server... quanta gente "vive" loggato come admin? 0.


L'algoritmo che in Windows 2000 si occupa di fornire numeri pseudo-casuali: tali elementi sono alla base della crittografia di file e cartelle


La crittografia di file e cartelle è possibile anche sul mio portatile con Windows Pro

Pr|ckly
22-11-2007, 15:47
scusa... ma hai mai visto la gente sui server???
io si, nelle più grandi aziende italiane...
user: administrator

Se per gente intendi chi amministra direi che è quantomeno normale.

delysid.it
22-11-2007, 15:51
Usatelo voi WIN NT senza diritti di amministratore... se un sistema operativo è concepito male devo sbattaermi i maroni loggandomi ogni volta?

Alex_HWdiscount
22-11-2007, 16:07
Infatti...
Comunque qui si parla di XP o 2000 client... :)

R3GM4ST3R
22-11-2007, 16:47
Un problema che avevo riscontrato anche io semplicemente programmando...
Un bel giorno infatti mi è stato chiesto di creare un algoritmo per creare dei 2 codici alfanumerici casuali, scrivendo 2 routine diverse utilizzando quindi variabili temporanee e private, le due routine generavano lo stesso codice come risultato.
Analizzando il problema e googlando quì e la ho scoperto che l'algoritmo che genera i numeri "pseudo" casuali si basa sul system clock.
;)

Radagast82
22-11-2007, 17:09
azzo a saperlo prima avrei recuperato tutte le mie foto che come un demente ho criptato con xp e non decriptato prima del format e passaggio a vista... risultato: una vita in foto persa...

Fx
22-11-2007, 17:13
scusa... ma hai mai visto la gente sui server???
io si, nelle più grandi aziende italiane...
user: administrator

in tal caso è certificato al limone che l'ultimo dei loro problemi è questo baco

Hal2001
22-11-2007, 20:05
azzo a saperlo prima avrei recuperato tutte le mie foto che come un demente ho criptato con xp e non decriptato prima del format e passaggio a vista... risultato: una vita in foto persa...

Ma scusa non ho capito una cosa.. premetto che avendo XP Home su tutte le macchine (congiuntamente con TrueCrypt) non ho mai provato il sistema integrato, ma non dovrebbe criptare tutto il file system?
In questo caso mica le foto, tutto il contenuto era illegibile da altra installazione. E poi visto che la partizione era ancora salva visto che hai provato a spostare i file, non potevi avviare nuovamente da WindowsXP?
Ultima cosa: non sono compatibili con quello di Vista? :eek:

in tal caso è certificato al limone che l'ultimo dei loro problemi è questo baco

Ah perché secondo te invece fanno tutto il giorno a loggarsi tra un utente e l'altro?

CapSnake
22-11-2007, 20:47
@ Radagast82 @ Hal2001
Quando cripti l'hard disk (o una cartella) da win xp (vista nn ho mai provato), il sistema operativo associa l'utente ai file. La reinstallazione rende i file inaccessibili, anche se l'utente della nuova installazione ha lo stesso nome di quello vecchio. Questo perché win associa una stringa esadecimale ad ogni utente creato su un pc, ed è questa stringa che identifica l'utente.
Paradossalmente con win i file diventano inacessibili, ma con tutti gli altri sistemi che leggono ntfs no! (ad esempio con knoppix li potevo aprire tutti)
Comunque nn serve linux per recuperare i file, basta un software che consente di recuperare i file su hard disk (mi sembra che all'epoca usai "file recovery pro" o qualcosa di simile).
Spero di esser sato chiaro :)

Khimera
22-11-2007, 21:01
scusa? mi sembra abbastanza normale quello che dici! Anche su linux (parlo di ciò su cui ho esperienza) funziona in questo modo.

Ogni algoritmo per generare numeri casuali è uno pseudo-generatore di numeri casuali, quindi non si piò avere la totale casualità.
Parti da quì.
Questo vuol dire che, usando sempre lo stesso algoritmo, se si fa partire il generatore dalla stessa impostazione iniziale, il risultato finale sarà lo stesso. Questo si concretizza con l'uso dei "seed" (seme), ovvero si da in pasto all'algoritmo un numero iniziale, se i due numeri sono diversi il risultato sarà completamente diverso.
Forse mi sono spiegato male, ti faccio vedere:

// codice C

srand(time(NULL)); //srand si usa per resettare il generatore di numeri
// casuali e dare un SEED manualmente
// time(NULL) ritorna il clock di sistema, un numero
// molto elevato (quì poco importa) che cambia
// ogni secondo

int a = rand(); // credo...

se tu fai andare questo codice due volte in un secondo, il programma
produrrà DUE volte lo STESSO numero "casuale", perchè l'algoritmo è stato resettato due volte con lo stesso numero (time(NULL) non cambia in un secondo). Il segreto è usare "srand()" solo una volta, all'inizio del programma o comunque quando ritieni necessario, e poi utilizzare rand() quante volte ti pare, il risultato sarà sempre diverso, e pseudo casuale, ovvero i numeri non saranno veramente casuali ma la loro distribuzione sarà lineare (o gaussiana, ora non ricordo, credo che dipenda dall'implementazione).

Ciao!
P.S. non credo che il problema di XP sia quello che hai riscontrato tu, quindi...

coschizza
22-11-2007, 22:20
Da quello che ho letto trovo che sia esagerato definirlo un problema legato alla citografia perche di fatto se un utente per sfruttare il problema deve essere loggato come amministratore potra comunque recuperare i file cifrati anche dagli altri utenti perche con il 2000 l'amministratore veniva aggiunto in automatico tra gli utenti in grado di accedere ai file criptati "agente di recupero" da tutti gli utenti, mentre nei sistemi piu recenti bisognava aggiungerlo manualmente.

sspp0zss
23-11-2007, 00:22
"Benny Pinkas e Zvi Gutterman e hanno effettuato un reverse-engine dell'algoritmo che in Windows 2000 si occupa di fornire numeri pseudo-casuali"

"" reverse-engine "" ????

Scusate non capisco il problema, hanno scoperto l'algoritmo del PRNG di windows? e allora? :|
Scusate ragazzi, ma la notizia mi sembra abbastanza vaga, oltre un po di spam per win server 2k3 e vista non ci trovo nulla, non e' che qualcuno ha qualche link piu' approfondito da passare?
poi sopratutto se e' stato "sfondato l'algoritmo del PRNG di windows" cosa centra il fatto di essere administrator o no? :|

R3GM4ST3R
23-11-2007, 09:35
La funzione per randomizzare in C è la rnd();
Utilizzando il framework, invece, c'è la fantastica classe System.Random();
In ogni caso, ho risolto quel problema, e conosco benissimo la manfrina infatti utilizzando come giustamente dicevi tu un seed che cambia sicuramente, anche se in modo lineare, funziona correttamente!
Random(System.DateTime.Now.Millisecond);

Ora, non ho idea se sia questo il problema di base che ha generato il baco che hanno sfruttato, ad ogni modo utilizzare solo il "system clock" (con i secondi per giunta) per la generazione dei numeri casuali, che si sà, stanno alla base della crittografia dei dati, non credo sia il massimo della vita...( ci sono un sacco di seghe mentali dei matematici per la generazione dei numeri casuali (pseudo random e true random), non vedo il motivo per non utilizzarli)

Quindi dico : "che bravi!", hanno fatto il "reverse engineering", e anche questo è tutto da vedere, visto che anni fa rubarono gran parte dei sorgenti di windows 2000 (lo ricordo a chi fosse sfuggito)
(ma non ricordo se la crittografia, è stata introdotta con l'SP4 di windows 2000)

Verificherò se le funzioni di generazione di numeri casuali erano presenti in quel "pacchetto"...

cmq senza dubbio interessante sta news indagherò...
mi puzzano un po' le "cryptoAPI" e "ADVAPI32.DLL" mi sa che tutto gira intorno a ste due librerie...;)
quando avrò due min googlerò un po' :D
ciao!

Lucas Malor
23-11-2007, 10:28
Ma sinceramente..... chi e' che si fidava del servizio di crittografia di Windows? Io l'ho usato una sola volta, e per un file non cosi' essenziale.

ronzino
23-11-2007, 22:41
mi sembra ci sia un po' di confusione sull'argomento.

Consiglio a tutti i curiosi di leggersi almeno l'abstract, il paragrafo 1 fino a pag 4, e i paragrafi 6 e 7 pagine 18-20 della pubblicazione degli autori.
Non sono necessarie conoscenze particolari per farsi un'idea del problema.

http://eprint.iacr.org/2007/419.pdf
almeno questa è la VERA fonte della notizia, non quelle citate e linkate ciclicamente dai forum, che sono spesso mal interpretate da chi le riporta.

essendo un po' più precisi
i signori in questione hanno scoperto che windows prende pochi parametri per randomizzare, per altro li prende dalla cima dello stack e rinfresca il valore letto di rado.
Un attacco di tipo buffer overflow, dove è l'hacker a decidere cosa metterti sullo stack è un problema. Inoltre, tutti i processi condividono lo stesso generatore. Per di più, questa parte di codice gira in modalità utente, e non in modalità kernel, quindi non c'è nessun blocco imposto dall'azione coordinata del processore e del sistema operativo che impedisca di vedere cosa sta facendo il generatore di numeri casuali ad un amministratore di sistema.

Il commento di microsoft e symantech "per fare quanto detto devi essere un amministratore" lascia tempo che trova pari a zero (imho) E NON PER IL FATTO CHE molti utenti sono loggati come admin, ma per il semplice fatto che le statistiche fatte in merito a furti in azienda di dati riservati e crittografati
affermano che il 50% di questi eventi si verificano a causa di gente che opera all'interno dell'azienda stessa, quindi da gente che probabilmente ha un account da admin !!! Se poi non sei admin

è disponibile un programmino idiotissimo che boota da cd che ti rimuove la password da uno qualsiasi degli account presenti su un sistema windows in meno di 1 secondo
Utilizzo da 2 anni questo tool e ha funzionato benissimo sotto
winxp pro e home
win2000
su tutte le decine di macchine provate.
Quindi loggarsi come admin è semplicissimo.

In generale, per le funzioni randomizzatrici vale sempre questo esempio:
una funzione randomizzatrice ha bisogno di un seme (o più di uno) forniti dall'utente.

inoltre, tutte le funzioni inseminatrici prendono anche un'altro parametro di inseminazione che è l'ora di sistema (piu altri descritti dopo, qualora siano ben fatte).

volendo si può randomizzare un numero senza passare il seme utente ma facendolo randomizzare solo in base all'ora di sistema.

Il problema di sicurezza sta nel fatto che se un male intenzionato sniffa (entra in possesso) di dati crittografati o pacchetti di dati in transito sulla rete, semplicemente guardando il timestamp, ovvero l'ora di generazione del pacchetto, il set di possibili numeri randomici utilizzati per la crittografia si restringe pesantemente.

facendo un esempio con un pacchetto tcp intercettato che riporti come timestamp
1 gennaio 2007 ore 17:00:00.00
sicuramente non è stato usato per inseminare la random il seguente valore di orologio
1 gennaio 2007 ore 16:59:00.00
perchè è altamanete improbabile che un pacchetto vaghi per la rete per 1 minuto.

Una funzione inseminatrice ben fatta, prende in input ad esempio la posizione del mouse, il colore di alcuni pixel dello schermo, l'ora di sistema, stringhe a caso lette dalla ram e dall'harddisk o bit presi a caso dai registri della cpu.
In altre parole prende in pasto tutto ciò che può esser diverso non solo in 2 computer diversi, ma anche all'interno dello stesso computer al variare del tempo.

E' però normale che se voi freezzate il mondo esiste sempre un istante temporale in cui i fattori inseminatori hanno un valore preciso e noto e se li sfruttate 2 volte, ottenete due numeri casuali uguali.

TUTTAVIA, un conto è fare questo sulla base dell'orologio di sistema, che bene che ti va cambia ogni millisecondo (ammesso che il quanto di tempo non sia proprio un secondo), altro discorso è inseminare con i bit letti a caso dalla cache di primo livello di una cpu, cambiano con una frequenza dell'ordine dei ghz, ovvero dei nanosecondi.

Capite bene che se il mio programma insemina sempre con la stringa mappata nel codice

"hwupgrade" + "ora di sistema"

se l'haker ti prende un file crittografato, sa quando l'hai creato (click destro-proprietà) e sa che il tuo programma di crittografia ha come stringa inseminatrice "hwupgrade" può decriptare in modo molto più veloce e semplice.

ronzino
23-11-2007, 22:45
Ma sinceramente..... chi e' che si fidava del servizio di crittografia di Windows? Io l'ho usato una sola volta, e per un file non cosi' essenziale.

lo usi ogni centesimo di secondo che sei seduto davanti al pc e navighi su internet con connessioni SSL HTTPS FTPS o con crittografia wireless WEP WPA, vedi un dvd o un hd-dvd o blu-ray.

Se sei seduto davanti ad un pc windows, qualsiasi processo che fa crittografia su qualunque cosa non è sicuro con questo bug.

insomma, il bug trovato non è uno scherzo da niente e affligge il 100% degli utenti, tranne quelli che usano il pc solo per giocare a solitario :D

La crittografia è una branca della matematica/informatica/elettronica che va tantissimo ultimamente. Si investono cifre allucinanti in ricerca su questa roba perfino in italia e in europa (ve lo do per certo perchè ne ho preso parte) ! Gli attacchi sono "roba per pochi" nel senso che devi essere uno molto competente per condurlo e capirlo fino a fondo (non parliamo poi per inventarlo/scoprirlo :)) e soprattutto nelle prime fasi, possono servirti mezzi dai costi non indifferenti per studiare le debolezze dell'algoritmo o di ciò che lo implementa.

ma quando gli enti coinvolti, sono anche gli enti governativi (esempio, computer delle agenzie governative di tutto il mondo) beh la cosa inizia ad assumere una piega diversa, anche se per condurre l'attacco servono strumentazioni dal costo mostruoso.

ronzino
23-11-2007, 23:08
...

Quindi dico : "che bravi!", hanno fatto il "reverse engineering", e anche questo è tutto da vedere, visto che anni fa rubarono gran parte dei sorgenti di windows 2000 (lo ricordo a chi fosse sfuggito)


beh... non potevano dire altrimenti. Si tratta di codice rubato, se avessero scritto nella pubblicazione "dall'analisi dei codici sorgenti rubati di cui ne abbiamo una copia"

tempo 1 giorno e finivano sotto inchiesta, cosa che potrebbe comunque accadere anche ora perchè quando si mettono le mani a questi livelli su algoritmi di sicurezza, i governi e le loro agenzie preferiscano tenerti "impegnato" per vie legali. L'america l'ha già fatto in passato, potrebbe rifarlo, magari "spingendo" microsoft a denunciare i tizi per reverse engineering (che è comunque vietato, anche se tollerato in questi casi) per far avviare intanto la causa.

ronzino
23-11-2007, 23:18
Un problema che avevo riscontrato anche io semplicemente programmando...

Analizzando il problema e googlando quì e la ho scoperto che l'algoritmo che genera i numeri "pseudo" casuali si basa sul system clock.
;)

verissimo, ma questo non è un problema di windows ma un problema della libreria ANSI - C per la generazione dei numeri casuali.
è una libreria abbastanza fessacchiotta, che appunto si basa (vedi precedente mio esempio) su un seme dato dall'utente e uno dato dall'orologio di sistema. Le funzioni se inseminate con la stessa data e lo stesso seme utente, producono lo stesso risultato, ma non è un bug, rientra nel loro normale modo di randomizzare.

Se devi randomizzare un numero così tanto per farlo (lanciare un dado, fare uno screen saver, o un gioco e simili), va benissimo ANSI-C, ma se devi fare roba seria, è meglio usare o altre funzioni di libreria o le primitive messe a disposizione dal sistema operativo.
ANSI-C fa cosi perche non potrebbe per sua natura fare molto di più, dato che il codice sorgente ANSI-C scritto sotto windows, se ricompilato deve girare sotto ogni altro sistema operativo.
Per randomizzare in modo serio, serve l'accesso ad altri dati sparsi nel sistema, che solo mediante una system call, ovvero una chiamata al sistema operativo, si possono ottenere. Dato che ogni sistema operativo ha le sue system call, non puoì fare librerie di randomizzazione potenti in ANSI-C

L'articolo/bug è riferito alle librerie microsoft usate da windows per la generazione di numeri casuali usate dal sistema operativo stesso, e non delle funzioni srand() e rand() dell' ansi-C.

Lucas Malor
27-11-2007, 09:35
lo usi ogni centesimo di secondo che sei seduto davanti al pc e navighi su internet con connessioni SSL HTTPS FTPS o con crittografia wireless WEP WPA, vedi un dvd o un hd-dvd o blu-ray.

Aspetta un secondo... questo dovrebbe valere solo se usi Internet Explorer come browser, o comunque un browser che si appoggia alle librerie Microsoft. Non credo che Firefox utilizzi le librerie di crittazione di Windows. Certo non ci posso mettere la mano sul fuoco... :p

EDIT: no direi che avevo ragione :)
http://kb.mozillazine.org/Encryption

era anche da aspettarselo, visto che e' un browser multipiattaforma. Credo anche Opera abbia librerie di criptazione proprie. Insomma, e' l'ennesima prova che e' sconsigliato usare soluzioni built-in della Microsoft! <_<