Newsgroup: it.comp.programmare
Titolo: Occultare una variabile in C possibile?

E' possibile inserire all'interno del codice C una chiave privata RSA 
(generata con "openssl genrsa 1024") per decrittare un file cifrato con 
la rispettiva chiave pubblica impedendo che si possa risalire alla 
chiave privata?


No.
La chiave privata va inserita a mano, oppure letta da una chiavetta
rimuovibile o meccanismo similare.
Se la chiave fosse inserita nel sorgente o presente nel filesystem,
tutti i requisiti di sicurezza verrebbero a mancare.

Il 19/04/10 10:40, Roberto Montaruli ha scritto:

Ok, spiego meglio il problema...
Utente finale: si connette ad un server web (https) e compila una form 
con i propri dati, dei codici PIN/PUK vengono generati random, quindi si 
genera un PDF al volo che l'utente dovrà stampare e conservare.
Operatore: scarica dal web server un file contenente i dati dell'utente 
in chiaro e un file contenenti PIN/PUK cifrati.
Ora, ciò che si vuole ottenere è che l'applicazione su cui opera 
l'operatore sia in grado di leggere il suddetto file cifrato ma che non 
sia in alcun modo possibile all'operatore entrare in possesso dei 
suddetti codici
Idee?

 Idee?
Ah! Quindi e' una applicazione ad uso interno che gira su un sistema
aziendale al quale l'operatore accede autenticandosi.
Allora e' ben diverso.
Ci sara' una applicazione che gira sul server, la quale ha accesso
alle chiavi.
Mentre l'operatore accede all'applicazione e non alla parte di file
system ove le chiavi sono conservate.
Non mi pare che sia un grosso problema.
E' piu' un problema sistemistico che di programmazione.

 system ove le chiavi sono conservate.
Ni, perch� l'operatore ha a disposizione la VM installata sul proprio PC 
e comunque il problemma � un tantino pi� complesso.
Mi serve capire se l'operatore pu� risalire ad una eventuale variabile 
embeddata nel codice C pre-compilato ed eventualmente in che modo.


 embeddata nel codice C pre-compilato ed eventualmente in che modo.
usando un debugger, o un decompilatore, o entrambi.
L'unico sistema sicuro � fare in modo che le chiavi NON siano sul PC 
dell'operatore e nemmeno ci vadano a finire, n� nel codice, n� in una 
VM, n� fra i dati, n� in RAM. Sulla macchina dell'operatore devono 
andarci a finire solo i dati gi� belli criptati: ogni altra soluzione � 
vulnerabile e fonte di guai futuri...

 vulnerabile e fonte di guai futuri...
Purtroppo confermi i miei dubbi, il ché è grave..
In pratica non c'è differenza tra fornire un applicazione di 10 righe in 
PHP o una di 200 in C dato che comunque se l'operatore ha o è in grado 
di acquisisre le dovute conoscenze in rete in ogni caso sarà in grado di 
acquisire quei dati che non vogliamo fargli acquisire per ragioni di 
sicurezza, purtroppo però al momento non ho idea di come sia (ammesso 
che lo sia) possibile connettere una porta USB sul client ad un 
applicazione che gira su un server in rete impedendo al contempo che la 
comunicazione venga intercettata, ad occhio direi cosa un tantino 
improbabile da realizzare..
Il ché ci riporta all'applicazione in PHP da 10 righe che però ha un 
enorme baco o per lo meno consentirebbe ad un operatore sgamato e 
disonesto di inserire una funzione potenzialmente devastante per 
l'obbiettivo dell'applicazione stessa.