Программная синхронизация ключей, сгенерированных клиентами HSM, с сервером RFS
Я использую PKCS11Interop для выполнения операций управления ключами внутри HSM. Я использую HSM - это сеть HSM, Thales N-Shield. Вот детали моей настройки:
1- HSM
1- RFS сервер
3- Клиенты
Мое приложение распространяется и размещено на 3 клиентах. Ключ будет сгенерирован на одном из клиентов и может использоваться компонентами приложения, присутствующими на других клиентах.
Однако я заметил, что ключ, сгенерированный на одном клиентском компьютере, не доступен для других клиентских компьютеров до тех пор, пока оба клиента не выполнят синхронизацию rfs.
Вопрос: Есть ли способ синхронизации клиентских ключей с RFS с использованием некоторого API PKCS11Interop? Если нет, то каким образом я могу синхронизировать ключи между RFS и клиентским компьютером.
Я знаю, что исполняемый файл может быть выполнен с использованием кода C#, но он не выглядит как чистое приложение.
1 ответ
То, что вы пытаетесь сделать, не является частью стандарта PKCS#11. Поэтому я сомневаюсь, что PKCS11Interop сможет этого добиться (посмотрев здесь документацию).
Когда вы генерируете объект на токене (Thales n-Shield), используя PKCS#11 (PKCS11Interop), менеджер безопасности Thale, установленный на клиенте, фактически выполняет генерацию на HSM. Если я правильно помню, Thales хранит эти объекты на клиентском компьютере в виде плоских файлов, зашифрованных главным ключом менеджера безопасности. Так что технически он не хранится в HSM. По этой причине вам нужно выполнить синхронизацию с RFS, а затем обновить других клиентов, чтобы увидеть новые ключи / объекты.
Вам нужно будет проконсультироваться с людьми из Фалеса, чтобы выяснить, могут ли они предоставить способ автоматизировать это. Или вы должны реализовать свой собственный механизм синхронизации. Поскольку rfs-sync - это инструмент командной строки, который предоставляет Thales, вы увидите, сможете ли вы выполнять команды через C#. Или уточните у них, есть ли у них библиотека C#, которая сделает это за вас.