Domanda Python chat con RSA e cPickle

Stato
Discussione chiusa ad ulteriori risposte.

DuckDuckStop

Utente Bronze
4 Giugno 2015
13
2
3
38
Salve ragazzi,
Mettetevi comodi, perchè per spiegare il tutto ci vorrà un pò di tempo probabilmente.
Premetto che non è da moltissimo che ho iniziato a programmare in Python, ma per sperimentare ho deciso, un bel giorno, di iniziare a scrivere una chat che potesse criptare i messaggi con algoritmo RSA, giusto per vedere cosa sarebbe successo e per poi magari imparare qualcosina in più.
Bene. Un mese dopo sono riuscito nell'intento creando una chat, senza GUI, che criptava i messaggi con le dovute chiavi pubbliche ecc... usando delle chiavi a 4096 bit così generate:

#RSA: Generate a pair of key
print Y + "[RSA] Generating a pair of keys, this can take several minutes..." + W
(pubkey, privkey) = rsa.newkeys(4096, poolsize)
print Y + "[RSA] Done!" + W

Esatto, il tempo richiesto per la generazione della chiave poteva anche raggiungere i 5 o 6 minuti.
Devo inoltre aggiungere che la chat di cui si sta parlando è una chat di gruppo, quindi il server è una sorta di chatroom dove ogni client può connettersi con un proprio nick, e chiave pubblica. Da qui sono iniziati i dubbi e i problemi:
Prima di tutto un problema banale:
Quando si chatta insieme ad altre persone e si sta scrivendo un messaggio e contemporaneamente se ne riceve uno, ciò che stavi scrivendo si cancella, e il messaggio ricevuto viene visualizzato male. Questo è dovuto al fatto che non si usa una GUI e che quindi la riga del terminale viene sovrascritta. Qui vi faccio la prima domanda, è possibile in qualche modo non sovrascrivere quella riga, come dividendo le due sezioni del terminale?
A parte questo piccolo problema, la chat sembra funzionare bene e velocemente, ma è proprio questo "velocemente" che mi preoccupa, come è possibile che criptare e decriptare messaggi RSA lunghi 4096 bit, con le dovute chiavi,impieghi soltanto qualche millesimo di secondo?
Questi sono i codici per la crittografia:
#RSA: Encrypt message
crypto = rsa.encrypt(message, srvkey)
#RSA: Decrypt data with privatekey
rmsg = rsa.decrypt(data, privkey)
Ho provato ad analizzare anche i dati di traffico con Wireshark, prima e dopo l'implementazione del modulo RSA, ed effettivamente le differenze si notano, ma volevo chiarirmi questo dubbio e sapere, appunto se con questo metodo i dati che viaggiano sono veramente criptati in modo sicuro...

EDIT: per l'rsa ho usato questo: https://pypi.python.org/pypi/rsa
 
Stato
Discussione chiusa ad ulteriori risposte.