2015-02-10 7 views
3

Web Cryptography API поддерживает использование встроенных криптографических функций браузеров через JavaScript, например, надежный генератор случайных чисел или возможность использовать разные алгоритмы шифрования или подписи.API веб-криптографии: Как найти поддерживаемые алгоритмы?

Спецификация перечисляет overview of algorithms в качестве отправной точки для реализаторов, но имеет следующие редакции добавил:

Примечание: Все алгоритмы, перечисленные следует рассматривать как «особенности группы риска», за исключением реализаторы их принятия. Их включение в проект редактора отражает запросы на их включение членами сообщества и включены в качестве упражнения для обеспечения надежности API, определенного в этой спецификации.

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

Насколько я понял, идея спецификации заключается в предоставлении интерфейса для криптографии, а не записи конкретных алгоритмов (что делает общий смысл!).

Как определить, поддерживает ли клиент определенный алгоритм? Хорошей практикой является скрыть детали реализации, но поскольку алгоритм должен иметь так называемое распознанное имя алгоритма Я не понимаю, почему вы не хотели бы выставлять зарегистрированные алгоритмы. Еще нет интерфейса указано, и объект, где вы зарегистрировать алгоритм описывается следующим образом:

Эта спецификация использует внутренний объект, [[supportedAlgorithms]].

Этот внутренний объект не распространяется на приложения.

Единственная возможность обнаружить доступные алгоритмы в текущем состоянии будет поймать NotSupportedError из тонкого интерфейса.

С моей точки зрения, открытие - это простой поток программ, и ошибки должны обрабатываться как исключение, а не для реализации логики.

Любые советы или предложения? Также приветствуются ссылки на надлежащие обсуждения w3c-mailinglist.

ответ

2

Поддержка интерфейса обнаружения алгоритма не планируется.

Проблема обсуждается в длинном списке рабочих групп w3c рабочих групп в 2012 году, что вызывает некоторые проблемы, см. Разделы «RE: Strawman proposal for the low-level API - about the interoperable set of algo and algo naming» и «RE: Algorithm Discovery (was Re: Strawman proposal for the low-level API - about the interoperable set of algo and algo naming)».

Одна точка обсуждения суммирует проблемы с механизмом обнаружения:

(1) Открытие, как я читал различные присоединяет, имеет дело с алгоритмов не перестановки параметров, которые могут быть разрешены или поддерживается, так что, таким образом, открытие алгоритма может быть успешным, но все еще может потерпеть неудачу, и, таким образом, дополнительное усилие для открытия является накладным и дополнительным путем кода

проблемы была частично Агаями n обсуждался с , а во время a phone conference in July 2014 рабочая группа решила «решить проблему позже» путем использования профилей. Это также упоминается в спецификации:

В частности, мы ожидаем, что «профиль браузера», который будет создан из совместимых алгоритмов для веб-браузеров.

Идея создания профилей, например, традиционных веб-браузеров, интеллектуальных телевизоров и т. Д. Если присутствует конкретный профиль, было бы обязательно поддерживать определенные алгоритмы. Это будет определено в будущем после этапа тестирования.

0

Я не знаю, каковы ваши требования к реализации и в какой момент времени вы должны знать поддерживаемые алгоритмы, но я использовал API WebCrypto в одном конкретном проекте, где были известны заранее заданные алгоритмы.

Мы смогли выполнить ряд простых тестов во время инициализации, которые определяли, поддерживаются ли наши алгоритмы. Это, в сочетании с некоторыми известными неспособностями (window.msCrypto определено? IE11 и SHA-1 отсутствует, window.crypto.webkitSubtle определено? Webkit и AES-GCM отсутствует и т. Д.), Позволили нам хотя бы знать на раннем этапе, если поддержка был и используется альтернативный алгоритм, альтернативная реализация или неудача.