Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Tutto e di + - Domanda sulla crittografia...
Forum - Tutto e di + - Domanda sulla crittografia...

Avatar
klez91 (Normal User)
Pro


Messaggi: 117
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 9:56
Martedì, 07/07/2009
Ciao a tutti non sapevo dove postare, per cui ho deciso di postare qui. E' una domanda che mi sono sempre chiesto, ovvero come fanno software di controllo remoto come TeamViewer, per citarne uno, ad instaurare una connessione crittografata tra client e server. Mi spiego meglio, per poter creare una connessione crittografata c'è bisogno di una password, però non ho trovato alcuna impostazione, almeno a prima vista, per poter cambiare questa password. E' forse compilata nell'eseguibile ? Se così fosse il software non è vulnerabile al reverse engineering ? Lo stesso ragionamento potrebbe essere fatto ad esempio per Windows Live Messenger, ovvero di come faccia a salvare le password nel registro di sistema in forma crittografata. Spero di essermi spiegato bene :k:

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 10:04
Martedì, 07/07/2009
La crittografia avviene con RSA e lo scambio di chiavi pubbliche-private.

Nel caso in questione, il client crea una propria chiave privata (che non e' una password) e fornisce la corrispondente chiave pubblica per la comunicazione (similmente a come avviene lo scambio dati crittografato https/ssl).

La sessione viene protetta con AES 256 bit, molto sicuro, allo stato attuale.

Se vuoi approfondire, studia RSA.

PM Quote
Avatar
klez91 (Normal User)
Pro


Messaggi: 117
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 12:53
Martedì, 07/07/2009
Innanzitutto ti ringrazio per la risposta. Ho letto un po' in rete riguardo l'RSA e da come ho capito, correggimi se sbaglio, per rendere la mia applicazione client-server molto sicura, potrei fare ad esempio in questo modo: il client invia la sua chiave pubblica al server; il server genera una password casuale per un algoritmo simmetrico come l'AES, la cripta attraverso la chiave pubblica ricevuta e la invia al client; il client la decripta attraverso la chiave privata e da questo momento in poi i dati scambiati tra client e server saranno criptati utilizzando l'algoritmo AES. E' corretta dal punto di vista della sicurezza l'applicazione così impostata ?

PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 14:12
Martedì, 07/07/2009
In teoria si...

in pratica questa tecnica è soggetta allo spoofing. Ad esempio un estraneo potrebbe fingersi "Tizio", inviare la propria chiave pubblica al server e ottenere un'autenticazione come Tizio.

Un metodo migliore è lo scambio di chiavi Diffie-Hellman http://it.wikipedia.org/wiki/Scambio_di_chiavi_Diffie-Hellman dove entrambi i partecipanti inviano la propria chiave pubblica.

I dettagli del funzionamento di questo algoritmo sono complessi se non si hanno le necessarie basi di algebra dei gruppi modulo N su Z.

In parole povere gli utenti A e B (che possono essere un client e un server) generano due numeri, uno privato e uno pubblico. Chiamiamoli PrivA, PrivB, PubA e PubB.
A mantiene segreto il numero PrivA, B mantiene segreto il numero PrivB.

Sia A che B pubblicano i numeri PubA e PubB. A riceve PubB e tramite una formula matematica, applicata tra PubB e PrivA, ricava un nuovo numero K. B riceve PubA e applica la stessa formula matematica tra PubA e PrivB ricavando esattamente lo stesso numero K che aveva ricavato l'altro utente.

K sarà la chiave da usare con AES o con qualsiasi altro cifrario simmetrico.

Un eventuale estraneo che captasse entrambi i numeri pubblici, potrebbe in teoria risalire alla stessa chiave K. Il problema è che la formula inversa (cioè quella che permette di ricavare la chiave K senza conoscere i numeri PrivA o PrivB) che dovrà usare questo intruso, è calcolabile soltanto con complessità esponenziale. Il che significa che per trovare una chiave (un numero) di 1024 bit, potrebbe volerci l'intera vita dell'universo unendo in parallelo tutti i computer e supercomputer del mondo!

PM Quote