Как удалить открытые ключи из токена безопасности PKCS # 11 в Java?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как удалить открытые ключи из токена безопасности PKCS # 11 в Java?

Сообщение Anonymous »

Я хотел бы изменить программное обеспечение, написанное на Java. Программное обеспечение должно иметь возможность создавать открытые и закрытые ключи в HSM, а также удалять их. Я хотел бы выполнить эти задачи с помощью поставщика Sun PKCS#11. Мне удалось создать и сохранить ключи и соответствующие сертификаты, а также удалось удалить закрытый ключ и сертификаты. Однако я не могу понять, как удалить открытый ключ.
Источник Java, создающий и хранящий ключи и сертификаты, аналогичен этому:

Код: Выделить всё

KeyStore keyStore = KeyStore.getInstance("PKCS11", "SunPKCS11-libtpm2");
keyStore.load(null, "userpin".toCharArray());

KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA", "SunPKCS11-libtpm2");
keyPairGenerator.initialize(2048);
KeyPair keyPair = keyPairGenerator.generateKeyPair();

keyStore.setKeyEntry("WorkstationAuthentication", keyPair.getPrivate(), null, getCertificates());
После запуска этого кода Java утилита pkcs11-tool показывает, что пара ключей и сертификаты сохранены:

Код: Выделить всё

# pkcs11-tool --module /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so --slot-index=0 --list-objects --login
Using slot with index 0 (0x1)
Logging in to "myfirsttoken".
Please enter User PIN:

Public Key Object; RSA 2048 bits
label:
Usage:      encrypt, verify
Access:     local

Private Key Object; RSA
label:
ID:         534b5332303038576f726b73746174696f6e41757468656e7469636174696f6e
Usage:      decrypt, sign
Access:     always sensitive, never extractable, local
Allowed mechanisms: RSA-X-509,RSA-PKCS-OAEP,RSA-PKCS,SHA1-RSA-PKCS,SHA256-RSA-PKCS,SHA384-RSA-PKCS,SHA512-RSA-PKCS,RSA-PKCS-PSS,SHA1-RSA-PKCS-PSS,SHA256-RSA-PKCS-PSS,SHA384-RSA-PKCS-PSS,SHA512-RSA-PKCS-PSS

Certificate Object; type = X.509 cert
label:      WorkstationAuthentication
subject:    DN:
ID:         534b5332303038576f726b73746174696f6e41757468656e7469636174696f6e

Certificate Object; type = X.509 cert
label:
subject:    DN: DC=com, DC=example, CN=example-CA
ID:         636e3d736173636572742d63612c64633d233136303737333631373336333635373237342c64633d2331363032366636392f636e3d736173636572742d63612c64633d233136303737333631373336333635373237342c64633d2331363032366636392f3332333331303437363031363137343435323138303332383239393236343439353035313332
Я мог бы удалить закрытый ключ и сертификаты в Java следующим образом:

Код: Выделить всё

if (keyStore.containsAlias("WorkstationAuthentication")) {
keyStore.deleteEntry("WorkstationAuthentication");
}
pkcs11-tool показывает, что закрытый ключ и сертификаты удалены, но открытый ключ остался в токене:

Код: Выделить всё

# pkcs11-tool --module /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so --slot-index=0 --list-objects --login
Using slot with index 0 (0x1)
Logging in to "myfirsttoken".
Please enter User PIN:

Public Key Object; RSA 2048 bits
label:
Usage:      encrypt, verify
Access:     local
Мне не удалось найти в Java ни одного метода, целью которого было бы удалить этот открытый ключ. И что еще интереснее, как мы видим в выводе pkcs11-tool, ни метка, ни идентификатор не имеют никакого значения, поэтому даже если бы существовал какой-либо метод, целью которого является удаление открытого ключа, мы не смогли бы идентифицировать открытый ключ.
Я мог бы удалить открытый ключ с помощью pkcs11-tool, но мне хотелось бы удалить его в Java.
Итак, как же кто-то может удалить открытый ключ? ключ от токена в Java? Или как кто-то может помешать сохранению открытого ключа в токене? Если я правильно понимаю, нет смысла хранить открытый ключ в токене, поскольку открытый ключ содержится в сертификате.

Подробнее здесь: https://stackoverflow.com/questions/790 ... en-in-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»