Google Cloud HSM как поставщик для шифрования - PullRequest
0 голосов
/ 20 ноября 2018

AWS позволяет нам использовать AWS Cloud HSM в качестве поставщика. См. здесь и здесь

Security.addProvider(new com.cavium.provider.CaviumProvider())

В образцах из GKE, однако мыКажется, только проворный замок в качестве поставщика.См. здесь

Security.addProvider(new BouncyCastleProvider());

Возможно, я упускаю что-то фундаментальное.

Хотелось бы сделать начальный знак, как показано ниже JCA API

https://docs.oracle.com/javase/10/docs/api/java/security/Signature.html#initSign(java.security.PrivateKey)

1 Ответ

0 голосов
/ 09 мая 2019

Я не уверен, каков точный вопрос, но похоже, что вы хотите написать код, который подписывает данные с помощью закрытого ключа от HSM и работает в AWS и Google Cloud.Для этого выполните следующие действия:

  1. Загрузка поставщика
  2. Открытие хранилища ключей
  3. Извлечение закрытого ключа
  4. Инициализация объекта подписи с помощьюзакрытый ключ (и обновите его данными для подписи)
  5. Знак

Шаг 1 можно выполнить программно (через Security.addProvider , как вы написалив вашем вопросе) или статически в файле java.security.Если вы хотите, чтобы ваш код не зависел от облачной платформы, на которой он запущен, вы можете рассмотреть возможность сделать это статически (хотя это также возможно сделать программно и сохранить независимость от платформы).

Остальноеиз шагов просто требуется довольно стандартный код JCE.Ниже приведен пример:

KeyStore keyStore = KeyStore.getInstance("type", "provider name");
PrivateKey privKey = (PrivateKey) keyStore.getKey("alias", null);
Signature sig = Signature.getInstance("transformation", "provider name");
sig.initSign(privKey);
sig.update(dataToSign);
byte[] signature = sig.sign();

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

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