In anticipo: mi dispiace per essere negativo, tuttavia;
L'implementazione del proprio protocollo di sicurezza è mai una buona idea, a meno che non si tratti di un esperto di sicurezza altamente qualificato, o in realtà non si preoccupa veramente della sicurezza e si vuole solo creare un'impressione di sicurezza (marketing) e ferma gli script kiddies.
SSL non è sicuramente un blocco di impronte digitali, come si dice nei commenti, JCryption e la tua proposta sono uguali ad avere una porta in cui è possibile inserire un codice a due cifre per aprire la porta e si hanno infinite ripetizioni. È difficile da rompere se non sei davvero interessato e passa, ma se vuoi entrare in quella casa (e probabilmente lo fai, altrimenti non sarebbe necessaria la sicurezza), entrerai.
Altro Il punto è che le persone dimenticano spesso di menzionare ciò che vogliono ottenere. La sicurezza ha le famose tre componenti chiamate CIA, ovvero riservatezza, integrità e disponibilità. Per te è importante che i dati che trasporti siano confidenziali o che siano importanti per l'integrità (ad esempio sei sicuro che i dati inviati provengano da quello che ti aspetti e non dall'uomo nel mezzo)?
Per renderlo concreto in questo caso, l'unica cosa che si ottiene qui è che un attaccante passivo non può vedere cosa sta passando sulla linea. Non appena l'attaccante diventa attivo e cambia i messaggi sulla loro rotta, tutta la tua sicurezza cade a pezzi. Quindi il mio consiglio sarebbe di limitarsi a seguire la soluzione che gli esperti hanno trovato (TLS in questo caso, non ssl dato che è la vecchia versione di esso) e solo assicurarsi che il server lo supporti.
edit:
Btw, SSL/TLS non può funzionare senza i certificati. L'intero punto nella criptazione della chiave pubblica è che dovrebbe esserci almeno da qualche parte una parte fidata.
D'altra parte, se non ti interessa che i tuoi utenti ricevano un messaggio di "certificato non valido", puoi semplicemente creare il tuo certificato che è davvero facile. In tal caso il tuo certificato non è attendibile dai browser, tuttavia, puoi essere sicuro che almeno la tua comunicazione è sicura (ok, ci sono eccezioni in questo caso, ma comunque ...)
L'argomento che i certificati dovrebbe essere gratis è davvero da un punto di vista prospettico. Penso che le persone che sostengono che sia fasullo/idiota non sanno quello che serve per essere un'autorità di certificazione. Queste società investono milioni per mantenere la comunicazione sicura e sicura di ricavare dei bei guadagni dalla vendita di certificati, ma sono al loro posto e meritano anche di fare soldi, proprio come gli altri.
EDIT2: dopo i commenti
ho davvero dire che si ha una comunicazione sicura. Tuttavia, ti manca il punto che con certificati autofirmati non sai a chi parli in modo sicuro. Immagina una stanza buia completamente isolata dall'ascolto di una conversazione. Ora immagina la differenza tra una stanza simile con e senza luce. Se la stanza è illuminata, puoi effettivamente vedere a chi stai parlando in modo sicuro e solo scegliere per parlare con le persone di cui ti piace fidarti. Ora immagina di fare lo stesso in una stanza completamente buia. Puoi solo sperare che il tizio con cui parli all'interno di questa oscura stanza sia solo un alleato e non il tuo avversario. Tuttavia, non puoi saperlo, solo spero che il numero sia ok. E anche se la tua conversazione è sicura, nessuno può ascoltarti, non hai ancora la sicurezza "completa".
Se io, essendo un truffatore, faccio un attacco man-in-the-middle, posso creare un certificato autofirmato senza che l'utente se ne accorga. Quindi il vantaggio di utilizzare TLS con certificati autofirmati è che si ha almeno l'implementazione del protocollo corrent (e anche l'implementazione di questo è tutt'altro che semplice). Inoltre è possibile evitare i brutti avvisi avvisando gli utenti di affidarsi manualmente al certificato una sola volta. Tuttavia, questo è possibile solo se si dispone di un gruppo relativamente piccolo di visitatori di ritorno, per un sito pubblico questo non è davvero una soluzione.
Utilizzare sempre SSL/TLS con certificati validi. Se si hanno motivi diversi dalla sicurezza di rete per crittografare l'accesso (come la prevenzione della registrazione debug/crash/normale/ecc. Della password lato server, che può essere successivamente ripristinato da un utente malintenzionato) è possibile utilizzare questo: http://stackoverflow.com/questions/12457234/encrypt-in-javascript-decrypt-in-php-using-public-key-cryptography –