Java SunPKCS11 доступ к USB-криптокен через сеть

У меня есть рабочая реализация токена ACS CryptoMate64 с Java SunPKCS11 в Windows через предоставленную библиотеку acos-pkcs11.dll (Java 32bit, чтобы SunPKCS11 был доступен в Windows).

ACS CryptoMate64 - это USB-токен, к которому SunPKCS11 получает доступ локально на компьютере Windows. Для Linux нет библиотек PKCS11 (нет.so файлов или чего-либо подобного).

Поскольку я использую машины Linux для получения некоторой функциональности, я хотел бы спросить, есть ли способ получить доступ к устройству PCKS11 через сеть, подключенную к другому компьютеру через USB.

Идея заключается в следующем: Linux: приложение, которое хочет использовать USB CryptoMate64, но не имеет библиотек. Windows: подключен USB CryptoMate64 с помощью acos-pkcs11.dll. Приложение использует CryptoMate64, который подключен на компьютере Windows.

Можно ли настроить Java SunPKCS11 на машине Linux для удаленного использования через сеть? Или это часть модуля PKCS11, предоставляемого производителем?

Я знаю, что HSM могут обмениваться данными через сеть через PKCS11, поэтому я спрашиваю, можно ли также обмениваться данными таким образом с помощью криптокена USB.

Любые предложения или идеи, как это сделать, приветствуются.

1 ответ

Метод, обычно используемый сетевыми модулями HSM, заключается в том, чтобы библиотека PKCS#11 выполняла маршаллинг для вызовов метода и отправляла эти данные по сети с использованием транспортного протокола. Этот транспортный протокол приложения обычно определяется для сокета TCP. Из-за характера данных это транспортное соединение должно быть безопасным. Он должен по крайней мере обеспечивать аутентификацию клиента и сервера и поддерживать конфиденциальность, аутентичность и целостность. Можно использовать TLS с аутентификацией клиента, хотя протокол не может полагаться на систему имен DNS для своей безопасности.

Теперь сетевой HSM или система, содержащая HSM, должна содержать службу, которая выполняет несоблюдение правил для данных, выполняет предварительную обработку и отправляет ее в HSM. Хотя это и не требуется, это может быть реализовано простым вызовом не сетевой библиотеки PKCS#11 с защищенными данными без маршалирования.

Другой вариант - создать свой собственный поставщик безопасности Java. Этот провайдер может вызвать код на сервере и вызвать библиотеку PCKS#11 там. Реализация провайдера безопасности Java также не легка, и требует, чтобы вы подписали провайдера с помощью предоставленного Oracle сертификата для вашего закрытого ключа (для обычных установок Java SE).

Как вы, возможно, понимаете, использование HSM в сети не следует воспринимать легкомысленно и должно быть частью безопасности HSM. Вы можете попытаться создать такую ​​систему самостоятельно, но вы не должны обманывать себя; вполне вероятно, что сетевой HSM не так безопасен, как локально используемый. В общем, вам лучше купить другой USB-токен, если услуга недоступна у поставщика HSM. Или вы можете купить сетевой HSM, конечно.

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