Подписать данные с помощью закрытого ключа на стороне клиента (javascript)


Я знаю, это выглядит странно, но мне нужно подписать некоторые данные на стороне клиента, используя только javascript, никакой AJAX backdoor к серверной openssl не доступен. Может ли кто-то предложить какое-то клиентское решение для подписи данных с помощью закрытого ключа? Возможно ли это?

Спасибо.

4 4

4 ответа:

Найден отличныйинструмент для подписи . Он реализует RSA-SHA1 (работает отлично) и RSA-SHA256 (работает странно), и позволяет как генерировать подпись с помощью закрытого ключа, так и проверять подпись с помощью сертификата.

Я пошел по тому же пути, что и Вы, вам, вероятно, лучше реализовать что-то вроде oAuth.

Проблема с тем, что вы предлагаете, заключается в том, что нет абсолютно надежного способа хранения закрытого ключа на клиентской машине, а также безопасного возврата открытого ключа на сервер, кроме HTTPS (и если вы используете HTTPS, какой в этом смысл?)

Если вы действительно хотите продолжить, есть несколько реализаций: http://shop-js.sourceforge.net/crypto2.htm

И вы, вероятно, хотите что-то ужасно раздражающее, как PersistJS (http://pablotron.org/?cid=1557) попытаться сохранить закрытый ключ как можно дольше.

W3Cweb Cryptography API может помочь. Могу ли я использовать указывает, что современные браузеры теперь поддерживают его.

Для дополнительной поддержки цифровой подписи смотрите GlobalSign/PKI.js

PKIjs-это чистая библиотека JavaScript, реализующая следующие форматы: используется в приложениях PKI (подпись, шифрование, запросы сертификатов, OCSP и TSP запросы / ответы). Он построен на WebCrypto (Web Cryptography API) и не требует никаких плагинов. http://pkijs.org

Веб-крипто, похоже, является ответом. Вот учебник (не мой). Что касается комментария, если вы используете https, зачем вам нужна подпись - они нужны для двух разных целей. На языке infosec первый даетконфиденциальность , а второйнеотрицание .