Мне нужно передать некоторую конфиденциальную информацию с помощью вызова JavaScript AJAX по незашифрованному каналу (HTTP, а не HTTPS).
Я хочу зашифровать данные, но шифрование на стороне JavaScript означает, что я раскрываю ключ, который делает симметричное шифрование всего лишь упражнением в обеспечении безопасности посредством неясности.
Существует ли какое-либо асимметричное шифрование для JavaScript? Таким образом, я могу сохранить в секрете ключ дешифрования Сервера. (Меня не беспокоит безопасность сообщений Server> JavaScript, а только безопасность определенного сообщения JavaScript> Server)
Этот вопрос, кажется, имеет то, что вы ищете, Библиотека криптографии Javascript для подписи данных формы в браузере Ссылка PGP: http://www.hanewin.net/encrypt/ имеет RSA
Асимметричный открытый ключ / закрытый ключ - единственный способ сделать это. Для защиты от атак MIM сервер может хэшировать открытый ключ с паролем пользователя, затем пользователь (в браузере) пересчитывает хэш - если они совпадают, то пользователь может быть уверен, что открытый ключ, отправленный с сервера, не имеет был подделан - это зависит от того факта, что только сервер и пользователь знают пароль пользователя.
PS Я хотел написать это как комментарий, так как это было бы более уместно, чем ответ, но мне не хватает очков :)