Las plaintext pe moment. Nu e nevoie de securitate cand nu e deployed nicaieri inca. Defapt parola mea e 'x', sa nu pierd timp cand ma loghez de 100 de ori pe zi

Evident, nu pot sa vand chestia asta pana nu rezolv securitatea. (rezolv? lol, mai degraba sa o fac

)
Ma gandesc la ceva de genul: clientul stie public key-ul serverului (si IPul desigur), si serverul cunoaste public key-urile de la toti clientii autorizati. (diferit pt fiecare calculator/instalare). Fiecare "pachet" (pachet 'logic', nu tehnic) e encriptat cu cheia publica e 'celuilalt', si semnat cu propria cheie privata.
Din cate inteleg, asta ar trebui sa fie un pic secur. Il "spargi" daca ai acces la fisierele calculatorului clientului, SI ii stii parola. Iar daca ai acces, pui un keylogger si aflii si parola. Dar mai mult de atat nu imi imaginez cum sa-l fac mai secur. Daca ai doar o copie "blank" a softului client, user+parola si IPul serverului, dar nu ai cele 3 chei (S PbK, C PbK, C PvK) atunci nu te poti conecta. Si daca stii S PbK, si generezi tu un set de client keys, tot nu merge pt ca numai anumite chei sunt autorizate per server.
O sa pun si restrictii optionale de IP (+per user), dar default nu o sa fie utilizate, pt ca eu le consider contra-productive, insa optiunea o sa fie acolo...
Nu vreu sa folosesc ceva gen OpenSSL, am mai mult control, si -in cele din urma- inteleg securitatea aplicatiei mai bine asa...
E un pic mai mult hassle cand instalezi pe un calculator nou, dar nimic groaznic, ca dupa ce instalezi, update-urile si le face programul singur, intern, fara instalator sau alte balarii intermediare. (cum face WoW, daca nu ai ultima versiune, o downloadeaza si o instaleaza pt tine, altfel nu ai voie sa te loghezi; numai ca intr-o versiune viitoare o sa aiba background downloading care chiar merge, fata de WoW)
In principiu, instalezi clientul "blank" pe calculator, te loghezi ca admin/root de altundeva, generezi si adaugi o pereche de chei noi, si le pui pe calculatorul nou, impreuna cu IPul serverului.
O nota tehnica importanta e ca si clientul si serverul ruleaza direct din codul sursa, nu e compilat binar. (btw nu exista copy/license protection, si nici nu o sa pun, pt ca modelul de business e diferit)
Ah, ma zgarie pe creier cand ma gandesc la overhead-ul ala in pachete... dar asta e. Vreau sa fie cat mai putin overhead, de aia am stat cateva zile ca sa fac chestii gen: compresez int-ul care tine lungimi, de ex pt stringuri si liste, similar cu de ex. UTF8/multibyte. Eu am:
0 - 2^7 = 1b
0 - 2^14 = 2b
0 - 2^30 = 4b
Majoritatea stringurilor o sa fie sub 127 caractere, si cand schimbi 1000 stringuri pe secunda, te scapa de 3KB/s numai in overhead.
E mai mult o obsesie/pasiune personala, decat ceva practic, sincer.
Anyway, am VRUT sa fac securitatea asa... dar las deocamdata pana gasesc o librarie de encriptie decenta pt Python. Ceva pt RCA/AES/ce-se-foloseste. Daca nu gasesc nimic... nasol, trebuie sa gasesc atunci o librarie C, si sa-i scriu wrapper.
/edit: se pare ca OpenSSL, libraria in C, imi da tot ce am nevoie, dar nu am gasit inca un wrapper care nu e retardat.