Newsgroup: it.comp.sicurezza.crittografia
Titolo: Mi date un aiuto???

Salve a tutti,
ho un piccolo problema da risolvere con l'aiuto della crittografia,
ma ho bisogno di un supporto.
In due parole: ho un programma che salva lo stato di un altro programma
(fa un dump tipo un debugger) in un file e deve mandare questo stato via
Internet in maniera sicura, dato che nello stato del programma ci
potrebbero
essere informazioni sensibili di varia natura. 
Avevo pensato a questa soluzione: questo programma genera una chiave
casuale e con questa codifca il file in questione con un algoritmo tipo
IDEA. Poi codifica la chiave adoperando una chiave pubblica generata da
un algoritmo tipo RSA e la spedisce insieme al file crittografato. Chi
dovrà leggere questo file, dovrà avere la chiave privata con la quale 
decodificherà la chiave inviata e infine il file.
E' una soluzione troppo complessa? E' inutile ricorrere alla doppia
cifratura?
Quello che a me interessa è che la chiave per codificare il file di dump
non sia direttamente codificata nel programma che lo genera, altrimenti
addio sicurezza visto
che questo programma è distribuito con i sorgenti allegati.
Grazie per i consigli.
P.S. Non so se può interessare, ma il tutto deve essere realizzato
usando la libreria pycrypto di Python.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 cifratura?
Probabilmente è necessario garantire anche l'integrità del file di dump
(oltre che la riservatezza).
Se sei intenzionato a usare l'RSA conviene che cifri tutto con l'RSA;
immagino che il file di stato non sia molto grande e che quindi la lentezza
dell'RSA sia accettabile.
Se è così, salvi l'SHA-1 del file di stato insieme al file stesso e cifri
tutto con la chiave pubblica.
Il ricevente lo decifra e calcola l'SHA-1 del file di stato, poi verifica
che il digest corrisponda a quello che gli è stato trasmesso. Se così non
fosse, il file ricevuto risulterebbe diverso da quello trasmesso.
Cristiano

 Cristiano
Senti io ho un problema, probabilmente di natura concettuale (e poi
perché
non ne capisco niente). La libreria che sto adoperando, mi impedisce
di adoperare l'algoritmo di RSA su stringhe di lunghezza arbitraria. 
Perciò, pensavo di adoperare un cifrario a stream, tipo ARC4.
Dove sbaglio? Il problema è che questi file di dump possono
raggiungere dimensioni ragguardevoli, perchè contengono il valore
di tutte le variabili in tutti i record di attivazione presenti sullo
stack.
Grazie ancora


 stack.
Di che dimensioni stiamo parlando?
Se puoi utilizzare l'RSA solo per lo scambio delle chiavi, la soluzione
l'hai detta tu nel primo messaggio.
Non usare uno stream cipher, se puoi generare una chiave decente usa un
block cipher (l'AES è la scelta ovvia).
Cristiano

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Carmine Noviello wrote:
| Poi codifica la chiave adoperando una chiave pubblica generata da
| un algoritmo tipo RSA e la spedisce insieme al file crittografato. Chi
| dovrà leggere questo file, dovrà avere la chiave privata con la quale
| decodificherà la chiave inviata e infine il file.
Non c'è bisogno di inviare la chiave pubblica assieme al messaggio,
basta indicarne il fingerprint per indicare al ricevente quale chiave
privata usare per decrittare.
Il ricevente ovviamente deve avere un metodo sicuro a priori per
ricevere la chiave privata.
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (Cygwin)
Comment: Using GnuPG with Mozilla - 
http://enigmail.mozdev.org
iEYEARECAAYFAkABAhoACgkQaJiCLMjyUvs8dwCgpNVRDlwYJMEYLoOMAZbhMovT
lsQAoOK9lB5BxgBUPUm3BgI7ovfl8P0T
=C6oX
-----END PGP SIGNATURE-----

 ricevere la chiave privata.
Ok, Il metodo sicuro c'è l'ho.


 Ok, Il metodo sicuro c'è l'ho.
E perché non lo usi per mandargli la chiave simmetrica da usare con un block
cipher?
Cristiano

 cipher?
Ok, non mi sono spiegato bene.
Ciò che sto facendo è una libreria che i programmatori possono adoperare
per agganciare ai loro programmi: se il programma va in crash, allora
questa libreria salva lo stato del programma e spedisce il file di dump
al programmatore. Il metodo sicuro è questo: quando il programmatore
costruisce il programma, genera la coppia di chiavi (pubblica/privata) e
allega al programma quella pubblica, tenendosi la privata. 
Per questo dico che il metodo sicuro ce l'ho. Tutto qua.



Quindi va bene come hai detto tu all'inizio: cifra il dump con un block
cipher e cifra la relativa chiave di sessione con la chiave pubblica.
Se avessi avuto la possibilità di cifrare tutto con l'RSA avresti
risparmiato il codice per il block cipher, ma tu hai detto che questo non è
possibile, per cui la soluzione è quella che hai detto all'inizio.
Cristiano

Grazie mille per la collaborazione.
