Nasao sam jedan interesantan sajt sa tom tematikom:
http://www.guillermito2.net/stegano/tools/index.html
Koliko sam video, ovo je poprilicno interesantno...
Imam par ideja kako bi mogao da se napravi softver bez opisanih nedostataka.
Ako znas da programiras mozemo da razmenimo neke ideje jer i mene interesuje kako bi se pokazale na delu.
Sto se tice razmene kljuceva
http://www.rhyshaden.com/ssl.htm
Jeste da sve tamo pise, ali ukratko:
Razmena kljuceva se zasniva na asimetricnim algoritmima - sa javnim/tajnim kljucevima (npr. RSA). Odnosno ako nesto enkriptujes javnim kljucem to moze da se dekriptuje SAMO tajnim kljucem i obrnuto, sve sto eknkriptujes tajnim kljucem moze da se dekriptuje SAMO javnim kljucem.
Razmena kljuceva principski funkcionise ovako:
1. Klijent zatrazi od servera javni kljuc
2. Server posalje svoj javni kljuc klijentu
3. Klijent generise kljuc za neki od simetricnih algoritama (jer su mnogo brzi od asimetricnih), enkriptuje ga serverskim javnim kljucem i posalje ga serveru
4. Server dekriptuje kljuc za simetricni algoritam
5. Klijent i server nastavljaju komunikaciju tako sto kriptuju podatke nekim od simetricnih algoritama, za koji koriste razmenjeni kljuc.
Ovo je poprilicno uprosceno, ali to je sustina. Zbog asimetricne prirode RSA podaci enkriptovani javnim serverskim kljucem mogu da se dekriptuju samo na serveru tako da je klijent siguran da podaci koje je poslao (u ovom slucaju kljuc za simetricni algoritam) niko ne moze da vidi sem servera.