PKCS11 или криптографический API?

Компании HSM обычно предоставляют API PKCS#11 для работы с HSM, или они просто предоставляют свой собственный криптографический API?

В каждом случае, как интегрироваться в приложение Linux (используя OpenSSL, возможно, как, например, как назвать механизм openssl для сторонней библиотеки?) И в приложение Windows?

Что вообще предпочтительнее? PKCS#11 API или универсальный API?

Каковы преимущества и недостатки двух?

Поставщик HSM сказал нам, что он может предоставить как API PKCS#11, так и крипто API, написанный на языке Си. Я пытаюсь понять условия и, следовательно, этот вопрос!

Простой обзор позволил бы мне исследовать дальше:)

Большое спасибо!

2 ответа

Обычно поставляется библиотека PKCS#11, если только она конкурирует с другими продуктами, которые также поставляют такую ​​библиотеку. PKCS#11 - это общий интерфейс, который можно использовать из программного обеспечения. Существует множество программных пакетов, которые позволяют использовать стандарт токенов PKCS#11, например, механизм OpenSSL PKCS#11 и поставщик безопасности PKCS#11 на языке Java.

Хотя PKCS#11 может быть расширен, это не означает, что все функциональные возможности HSM обязательно могут поддерживаться. PKCS#11 является интерфейсом относительно низкого уровня. Иногда имеет смысл использовать проприетарные API, которые лучше подходят для конкретного случая использования. Чем больше частей криптографического протокола может быть выполнено на защищенном устройстве, тем лучше.

Что касается того, какой из них лучше, это полностью зависит от вашего варианта использования и модели угроз, а также от предоставляемого крипто-API.

PKCS#11 (определение из вики)

Стандарт PKCS#11 определяет независимый от платформы API для криптографических токенов, таких как аппаратные модули безопасности (HSM) и смарт-карты, и называет сам API "Криптоки" (из "интерфейса криптографических токенов") и произносится как "крипто-ключ" - но "PKCS #11" часто используется для ссылки на API, а также на стандарт, который его определяет).

Так что, как правило, это стандартный API, который используют все производители HSM.

Это полностью зависит от поставщика HSM, если они реализуют этот API. Если они это реализовали, вы сможете общаться с их оборудованием с помощью стандартного API PKCS#11 с любой платформы (при условии, что они его поддерживают) или любых сторонних библиотек, которые могут выступать в качестве промежуточного программного обеспечения между вашим программным обеспечением и их оборудованием. Если они не реализовали это, они обычно пишут свой собственный проприетарный API, который может быть специфичным для платформы, и взаимодействуют только со своими устройствами. Это заставляет вас использовать их API для связи с их оборудованием (в данном случае HSM).

Таким образом, с вашей точки зрения, если вы использовали стандартный API PKCS#11 и в будущем, если вы сотрудничали с другим поставщиком HSM, вы можете использовать тот же код и для связи с новым HSM (поскольку PKCS#11 является стандартом). Но если вы использовали их собственный API и для связи с новым поставщиком HSM вы не сможете повторно использовать свой код, потому что их API может работать только с их устройствами.

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