Некоторое время назад я заметил, что Википедия ссылается на Реализация Javascript различных хэш-функций. Также нашел Clipperz Crypto. Даже Mozilla реализует крипто-объект в Firefox.
Итак, Является ли Javascript подходящей платформой для криптографии? Или может быть?
Или, я полагаю ... Есть ли какие-либо цели или преимущества для хеширования данных перед POST?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я не понимаю, почему криптографическая функция не может быть реализована с использованием javascript.
Однако .. Криптография - ресурсоемкий процесс.
По сравнению с скомпилированным кодом Javascript медленный.
Да, осталось только 80% рынка ...
даже V8 медленнее по сравнению со статическим скомпилированным кодом.
Вы можете зашифровать данные с помощью JavaScript; однако я не уверен в преимуществах. Потому что, если вы используете, скажем, bas64, вам нужно отправить ключ шифрования клиенту, и если кто-то может перехватить зашифрованную информацию, он / она, вероятно, также сможет перехватить ключ шифрования.
Никогда не используйте это для замены сертификатов SSL.
Да, это правда, я не могу придумать, как безопасно передать ключ на стороне клиента. Отредактировали мой комментарий.
Как вы сказали, JS не следует использовать для сквозного шифрования; однако есть некоторые службы, которые предлагают безопасную электронную почту, выполняя шифрование / дешифрование на стороне клиента и сохраняя только зашифрованную информацию на сервере.
Криптография с открытым ключом фактически предназначена для такого рода ситуаций, когда вы не можете доверять распространению ключа (или пользователю ключа). Я не могу придумать ни одного приложения, где это было бы полезно через SSL, как вы говорите.
В Javascript используются функции хеширования, например, проверка клиентской части кода проверки (путем сравнения хэша в сеансе с вычисленным хешем из ввода). Очевидно, что его использование ограничено, поскольку он работает почти исключительно на стороне клиента (и вы не можете доверять вводу клиента), но потенциал есть.
Вопрос о том, можно ли доверять вводу клиента, полностью ортогонален вопросу о том, является ли Javascript подходящей платформой для криптографии. Этот недавняя статья утверждает, что это не так, некоторые люди не согласны.
Вы никогда не сможете использовать javascript как безопасную платформу для передачи защищенных данных ...
Но можно сделать md5 или другой тип шифрования на стороне клиента, что даст вам достаточно безопасный способ проверки, который вы могли бы протестировать на стороне сервера! -)
Я вижу по крайней мере одно применение: если вы отправляете клиенту зашифрованные данные, а затем расшифровываете их в JavaScript на основе ключа / пароля, который пользователь вводит локально. Это предполагает общий ключ или известный пароль, который вы использовали для первоначального шифрования данных на сервере. Кроме того, эти функции часто используются вредоносным и / или запутанным JavaScript.
Ответ зависит от того, чем вы хотите заниматься.
Если вы хотите использовать криптографию на стороне клиента, в автономном режиме, в постоянных веб-приложениях, тогда да. Так, например, вы хотите зашифровать все данные, которые хранятся во встроенной базе данных, используя спецификацию HTML 5 globalStorage (). Затем используйте шифрование javascript, потому что вероятность того, что у вас не будет соединения для обработки всей криптографии на стороне сервера.
Если нет, используйте проверенные и проверенные методы.
В этих статьях блога описываются полезные применения криптографии в JavaScript:
Для безопасной идентификации:
http://digitalbazaar.com/2010/08/07/webid/
Для обеспечения безопасного интерфейса для приложений localhost со встроенными серверами через веб-сайт:
Больше нет, благодаря V8, Squirrelfish и TraceMonkey. Остался только IE.