Подпись js на chrome с хранилищем ключей ОС

W3C работает над http://www.w3.org/TR/WebCryptoAPI/ определить способ генерации цифровых подписей, шифрования и т. д. из JavaScript. В основном определяет новый объект crypto внутри window объект в DOM который должен предоставлять javascript с функциями подписи и шифрования. Chrome начинает реализовывать этот объект, который в настоящее время доступен в его движке javascript (я думаю, что в стадии бета-тестирования), я делаю некоторые попытки генерировать некоторые подписи с ним, кажется, работает правильно, однако я думаю, что наиболее полезный способ генерировать цифровые подписи с этот новый объект использует закрытые ключи в хранилище ключей ОС вместо автоматически сгенерированного материала ключа, но этот доступ не рассматривается в этом рабочем проекте.

Я годами работаю с подписным апплетом, чтобы иметь дело с хранилищем ключей ОС (MS, Firefox KS, MAC OS X), но я хочу сделать это напрямую в javascript, если возможно избежать всех проблем, которые апплет создает в последние дни... новые требования безопасности оракула, новые атрибуты MANIFEST.MF, плагины для блокировки браузера и т. д., которые являются настоящей болью!

Поэтому я ищу способ сделать это с помощью javascript и, похоже, все основные браузеры идут своим путем:

  • В Internet Explorer есть ActiveXObject для доступа к хранилищу ключей Windows:

    // instantiate the CAPICOM objects
    var store = new ActiveXObject("CAPICOM.Store");
    store.Open(CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_ONLY);
    ...
    
  • Для доступа к Firefox Keystore кажется, что Firefox добавляет signText метод в window.crypto (больше информации о реализации Firefox webCryptoAPI здесь и о собственной реализации здесь):

    window.crypto.signText("textToSign", "ask");

РЕДАКТИРОВАТЬ: Этот метод Firefox является устаревшим, начиная с версии 34, потому что это не стандарт: https://developer.mozilla.org/en-US/docs/Archive/Mozilla/JavaScript_crypto

Однако на Chrome кажется, что в настоящее время не существует ничего, чтобы сделать то же самое.

Так кто-нибудь знает, как можно добиться этого в Chrome? Кто-нибудь знает общий способ сделать это во всех браузерах? Любой совет, чтобы дать мне в правильном направлении, будет оценен.

Спасибо!

1 ответ

Решение

Вам нужно написать активный компонент, который будет обращаться к MS Crypto Store и выполнять криптографические операции. Это может быть либо апплет Java, либо расширение браузера Chrome с использованием NativeClient SDK. Апплет Java будет работать в MSIE, Firefox, Chrome и большинстве других браузеров, но на клиентском компьютере должна быть установлена ​​JRE (среда выполнения Java).

Другие вопросы по тегам