Я пошел тем же путем, что и вы, вам, вероятно, лучше реализовать что-то вроде oAuth.
Проблема с тем, что вы предлагаете, заключается в том, что абсолютно нет надежного способа хранения частногоключ на клиентском компьютере, и в настоящее время безопасно не возвращать открытый ключ на сервер, отличный от HTTPS (и если вы используете HTTPS, какой смысл в этом?)
Если вы действительно хотите продолжить,Есть несколько реализаций: http://shop -js.sourceforge.net / crypto2.htm
И вы, вероятно, хотите что-то ужасно раздражающее, например, PersistJS (http://pablotron.org/?cid=1557), чтобы попытаться сохранитьзакрытый ключ как можно дольше.