Newsgroup: it.comp.programmare.win32
Titolo: Come gestire la memorizzazione di una password

Avete presente la funzionalità di filtraggio dei contenuti di Internet Explorer?
  Potete dirgli di non far vedere pagine con linguaggio scurrile o con scene di
nudo. E c'è la possibilità di impostare una password da supervisore per
disabilitare il filtraggio o modificarne il comportamento.
Dovrei fare una cosa molto simile. Un programma che può essere usato da un
bambino in un certo modo e da un adulto in un altro modo. Per passare dalla
modalità bambino alla modalità adulto bisogna inserire una password.
La cosa è complicata perchè il bambino è anche intelligente e potrebbe capire il
meccanismo di salvataggio della password per cercare di superarlo.
Se salvassi la password in un file ad-hoc, il bambino potrebbe riconoscere
questo file come quello associato alla password e cancellarlo, facendo partire
Internet Explorer (o il mio programma) senza restrizioni. Non penso che IE
funzioni così.
Io ho pensato a questa soluzione che, però, ha un problema.
Durante il setup, la procedura di installazione copia un file fatto in un
determinato modo nella cartella comune a tutti gli utenti (C:\DOCUMENTS AND
SETTINGS\ALL USERS\DATI APPLICAZIONI\<NOME PROGRAMMA>\PWD.KEY).
Appena il programma si avvia, verifica l'esistenza di questo file: se il file
non c'è, il programma non si avvia. Quando viene inserita per la prima volta la
password dall'adulto, questa password viene memorizzata, ovviamente cifrata,
all'interno del file PWD.KEY. Se il bambino dovesse capire che in quel file è
memorizzata la password e dovesse tentare di cancellare il file, il programma
non si avvierebbe.
Il problema di questo metodo è che normalmente la cartella Dati Applicazione di
All Users non può essere scritta da un utente normale, quindi la password non
può essere memorizzata in quel file neanche dall'adulto (che non fa parte del
gruppo Administrators).
Cosa mi consigliate di fare? Come fa IE a memorizzare la password da Supervisore?

Cosa mi consigliate di fare? Come fa IE a memorizzare la password da Supervisore?
Boh,
non mi pare sia cosi complicato.
Se la password e' adeguatamente cifrata come fa a decrittarla ?
Stai parlando ddi un bambino mica di un hacker professionista.

xnoise ha scritto:

Non mi sono spiegato. Il problema non è decrittare la password per ottenere 
quella originale, ma utilizzare il programma in modalità full. Se il bambimo 
capisce che la password è memorizzata in un determinato file, può cancellare 
quel file ed impostare una nuova password per la modalità adulto, ottenendo 
pieni poteri...
PS: In realtà non si tratta di un bambino e di un adulto, ma di due persone di 
cui una deve lavorare in modalità sicura (non può fare danni) ed un'altra in 
modalità rischiosa (può fare qualsiasi cosa, anche danni). I termini bambino ed 
adulto venivano comodi dal paragone fatto con IE.
PS2: Ricercando in rete ho visto che IE è più fesso di quello che pensavo. La 
password da Supervisore è memorizzata nel registro di configurazione, ovviamente 
criptata. Se l'utente (anche il bambino) dovesse cancellare quella chiave del 
registro, IE funzionerebbe senza restrizioni!

 :-)
Ok, il bimbo non è così capace :)

Non mi sono spiegato.
Boh , secondo me ti complichi le cose inutilmente.
La passw la memorizzo nel registro sotto la chiave HKCU di adulto .
Naturalmente e' criptata ma a quel livello prob non serve neanche.
Avvio da adulto ... il prog mi chiede la passw :
1) la fornisco corretta e ho il full control 
2) non la fornisco o e' errata , il programma gira limitato .
Adesso cosa fa l'utente limitato ?
Uso il prog , il quale gli chiede una passw che lui non puo fornire
correttamente e quindi gira limitato .
Non mi pare cosi complicato .

 Non mi pare cosi complicato .
Il problema è che devo dare la possibilità all'utente adulto di cambiare la 
password quando vuole. Quindi la memorizzazione della password nel registry non 
può farlo il programma di installazione, ma l'applicazione vera e propria che 
gira come utente normale sotto Windows (non Administrator).
Alla prima esecuzione, quindi, l'applicazione non vede la password da nessuna 
parte e dà la possibilità all'utente (che si suppone adulto) la possibilità di 
memorizzare una nuova password per la modalità full.
Se il bambino è leggermente smaliziato e intenzionato a rompere il meccanismo 
della password cosa fa? Penso che la prima cosa che faccia è trovare dove viene 
memorizzata questa password. Se riesce a trovare il punto (nel tuo caso sotto 
nel registry sotto HKCU), cancella la chiave associata. A questo punto il 
programma non può stabilire se l'assenza della password è dovuta alla prima 
esecuzione del programma subito dopo l'installazione (e quindi deve dare la 
possibilità all'utente di impostare una nuova password per la modalità full) 
oppure ad un tentativo di hack da parte del bambino.

 parte del bambino.
Vero, ma in questo caso non potrebbe richiedere la password fissa?
Cioè io fornisco l'applicazione con una password fissa (che conoscerà 
l'adulto e basta) ... il programma parte e se non trova nel registro una 
password (installazione o cancellazione del bambino) richiederà la password 
fissa.
Se viene inserita correttamente, sarà in modalità full e permetterà di 
scrivere nel registro una password "più comoda" da usare le volte successive 
... se è errata partirà in modalita "protetta", così usi la password fissa 
solo per l'installazione o "la cancellazione" della chiave (scelta 
dall'adulto) da parte del bambino nel registro.
Ovvio che se il bambino conosce la chiave d'installazione ... può installare 
il programma su altro PC ... ma almeno quella deve rimanere "segreta" ... 
tanto *in teoria* serve solo per installare il prodotto / attivarlo (o 
ri-attivarlo se il bambino smanetta troppo nel registro ;) )
-- 
Ciauz! :)
Virtual 

nel registry sotto HKCU), cancella la chiave associata. 
Non credo proprio.
HKCU e' accessibile solo dall'utente loggato in quel momento.
Nessun altro vi puo accedere quindi nessuno puo cancellare la
password.
Se adulto installa il prog la password rimarra scritta sotto il HKCU.
Ovviamente bambino non deve avere il prog di installazione.
Al limite se devi gestire piu utenti ,
Administrator installera il prg , dopo di che creera una cartella in
cui memorizzare la password e dara'a  questa cartella solo ad alcuni
il permesso di potervi accedere in modo da poter usare la passw e
usare il prog in maniera completa.

 usare il prog in maniera completa.
E' complicato dire all'adulto (normalmente abbastanza ignorante) di fare tutte 
queste cosette. Penso che la soluzione migliore sia quella di assegnare gli 
opportuni permessi di lettura/scrittura durante la fase di installazione del 
programma che comunque viene eseguita come Admnistrator.



Non puoi semplicemente usare un utente differente ( nel tuo OS ) uno
per l'adulto e uno per il bambino?
Il tuo programma semplicemente controlla i privilegi dell'utente
( tipo legge se appartiene al NETGROUP o LOCALGROUP
io_sono_un_adulto )
e funziona in full, se invece non appartiene a quel gruppo allora
funziona in modo limitato. in questo modo la gestione della password
la deleghi al tuo OS.