Salve a tutti, sto facendo un programma di prova dove un client e un server si scambiano messaggi criptati. Per quanto riguarda le cifrature uso le librerie PEAR, ovvero le classi Crypt_RSA_KeyPair per generare le chiavi e Crypt_RSA per cifrare e decifrare il messaggio e x creare la firma digitale(messaggio cifrato con chiave privata del mittente).
Come canale di comunicazione utilizzo le socket e quindi le vare funzioni socket_create(), socket_bind(), socket_listen(), socket_read(), socket_write()......
La teoria sulla cifratura, da come ho capito, e' che il mittente cifra il messaggio con la chiave privata del destinatario, crea la firma digitale utilizzando la propria chiave privata e invia il tutto al destinatario.
Il destinatario verifica se la firma e' valida utilizzando la chiave pubblica del mittente, e se e' valida decripta il messaggio utilizzando la propria chiave privata.
Il mio problema è che se io faccio un programma server(che funge da mittente) e un client (che funge da destinatario) in due file differenti(per poi eseguirli concorrentemente), come faccio a far sapere l'uno e l'altro del valore delle chiavi essendo esse variabili locali a ciascun file?
L'idea mia sarebbe che dovrei fare un terzo file che si preoccupa della generazioni delle chiavi....
Pero' resta il problema di come poterle comunicare agli altri file visto che usando le socket non posso usare le sessioni (se metto session_start() mi si impalla)....
In teoria per le chiavi pubbliche non ci sarebbe problema, le genero e le salvo in un db, pero quelle private devono essere solo a conoscenza dei proprietari e da come ho capito le chiavi vengono generate per forza in coppia...........
Scusate la lunghezza e pero' volevo essere chiaro ed esporre tutte le mie idee....
Grazie