Newsgroup: it.comp.sicurezza.varie
Titolo: Sicurezza e criptazione dati con smartcard

Ciao, dovrei sviluppare un'applicazione in che va uso di una chiave
privata per decriptare dei file.
Devo trovare il modo di inserire all'interno del programma, nascosta,
una chiave che mi permetterà di decriptare la chiave privata (che
risiede su una smartcard non criptata). 
Per chiarezza: questo tipo di smartcard non permette di criptare i
dati, chiunque può leggere quello che c'è sopra. Io registro la chiave
privata criptata con una chiave di cui io solo sono a conoscenza,
inserita dentro al mio software.
Il programma è in ambiente Windows.
Non posso usare card diverse tipo Crptoflex ecc, in cui comunque va
dato un pin (e il problema si ripropone, come nascondo il pin dentro
al programma?)
Tutto nasce dal fatto che la persona che ha a disposizione la card non
deve tenere a mente nulla. Se la card viene rubata non può comunque
essere usata perchè viene usata in congiunzione con un lettore di
impronte digitali.
Il punto debole della catena è che qualcuno avendo a disposizione il
mio software può trovare la chiave.
Che modi ci sono per evitare che studiando il programma si riesca a
risalire alla chiave che vi è nascosta?
Grazie!

 risalire alla chiave che vi è nascosta?
Nessuno, AFAIK.
Qualunque chiave sia registrata in chiaro su un supporto e' a rischio, e 
ovviamente per quanto tu nasconda la chiave all'interno del programma 
nulla vieta che io, con pazienza, facendo il reverse engineering del 
programma possa ricavarla. E se la inserisci criptata devi comunque 
memorizzare da qualche parte la chiave per decrittarla. Non per nulla 
programmi come PGP usano una passphrase per crittare le chiavi!
IMHO la cosa migliore potrebbe essere appunto l'uso delle chiavi con PIN 
(4-5 numeri da ricordare al cliente non sono poi gran cosa), oppure, al 
limite, l'uso di una chiave per criptare la chiave privata che venga 
generata dal lettore biometrico. 
Questo e' un pensiero mio, nel senso che non so se possa funzionare, 
quanto sia efficace e solido come metodo e duraturo. Immagino che i 
lettori biometrici abbiano una certa tolleranza ai cambiamenti della 
misura effettuata (es: l'impronta digitale), cosa che invece una chiave 
generata tramite hash non e' in grado di fare, anzi, e' fatta in tal modo 
proprio per rendere impossibile questo (lo chiamerei quasi un sistema 
caotico... vabbe', altre storie)... 
Ma se il pattern di match e' sempre lo stesso e non e' memorizzato da 
nessuna parte, puo' essere usato per criptare tale chiave pubblica, 
purche' sia abbastanza lungo e l'algoritmo utilizzato abbastanza solido.
HappyCactus e le idee di prima mattina
-- 
HappyCactus - Registered Linux User #209744
http://www.angelfire.com/jazz/happycactus/index.html
Made with 100% recycled electrons

mdurliSP...@hotmail.com
 wrote in
news:lshpiu4taid024c1j...@4ax.com
: 

Nascondere la chiave nel programma, per quante precauzioni anti-debug 
e anti reverse-engineering tu possa prendere, è poco sicuro. Anche 
perchè ottenuta qualla singola chiave è possibile leggere  tutte le 
altre smartcard. 
Se il lettore di impronte ti torna un'informazione "ripetibile" (in 
pratica ti dice chi è l'utente a cui ha "scannerizzato" il pollice) 
puoi usare quella come chiave per decrittografare l'informazione 
della smartcard. 
In questo modo solo la corrispondenza "pollice-smartcard" garantisce 
l'accesso al sistema e comunque chi riesce a trovare la chiave di una 
certa smartcard non la può utilizzare per tutte le altre.
Il punto debole diventa il database delle impronte digitali (presumo 
che al lettore sia collegata un'applicazione che confronta l'impronta 
letta con quelle conosciute). Se è possibile ricavare in modo 
semplice l'elenco degli utenti allora è possibile fare n tentativi 
per ricavare la giusta chiave. Se il numero dei possibili utenti è 
molto alto e tu puoi azzerare la smartcard dopo un certo numero di 
tentativi (che dipende dall'affidabilità del lettore di impronte) 
questo dovrebbe garantire da accessi "casuali" (in pratica chi ha 
sottratto/trovato la smartcard deve essere anche in grado di ricavare 
il codice dell'utente dall'elenco di quelli disponibili nel DB 
collegato al lettore).
-- 
Valter Minute
vmi...@inwind.it
 (the reply address of this message is invalid)