Kryptovorgänge und -mechanismen

Erfahren Sie mehr über die vom Dedicated Key Management JCE-Provider unterstützten Vorgänge, Mechanismen und Algorithmen.

Schlüssel und Schlüsselpaare generieren

Verwenden Sie den JCE-Provider, um Schlüssel der folgenden Typen zu generieren:

  • RSA: RSA wird häufig für sichere Datenübertragung, digitale Signaturen und Schlüsselaustauschprotokolle verwendet.

  • EC (Elliptische Kurve): Die Kryptographie mit elliptischen Kurven bietet hohe Sicherheit bei kleineren Schlüsselgrößen und ist so für moderne kryptografische Anwendungen wie SSL/TLS und Blockchain effizient.

  • AES (Advanced Encryption Standard): AES ist ein weit verbreiteter Verschlüsselungsstandard für den Schutz sensibler Daten, der starke Sicherheit sowohl für ruhende Daten als auch für übertragene Daten bietet.

  • DESede (Triple DES): Triple DES ist eine Verbesserung DES ursprünglichen DES-Algorithmus und bietet eine verbesserte Sicherheit durch mehrere Verschlüsselungsrunden. DESede wird nur auf Nicht-FIPS-Clustern unterstützt und wird in der Regel für Legacy-Anwendungen verwendet, die Abwärtskompatibilität erfordern.

Schlüssel mit Schlüsselfabriken konvertieren

Schlüsselfabriken werden verwendet, um Schlüssel so zu konvertieren, dass sie bestimmten Schlüsselspezifikationen entsprechen. Weitere Informationen finden Sie unter Schnittstelle KeySpec in der Java Platform-API-Dokumentation. Die beiden primären Typen von Schlüssel-Factorys für JCE sind:

SecretKeyFactory

Die Factory SecretKeyFactory ist für den Import oder die Ableitung symmetrischer Schlüssel konzipiert. Damit können Sie eine unterstützte Key oder KeySpec übergeben, um symmetrische Schlüssel zu importieren. Weitere Informationen finden Sie in der Java Platform-API-Dokumentation unter Klasse SecretKeyFactory.

Die folgenden KeySpec-Klassen sind mit der Methode generateSecret kompatibel:

  • KeyAttributesMap: Mit dieser Klasse können Sie Schlüsselbyte zusammen mit zugehörigen Attributen importieren.
  • SecretKeySpec: Mit dieser Klasse werden symmetrische Schlüsselspezifikationen importiert. Weitere Informationen finden Sie unter Schnittstelle SecretKey in der Java Platform-API-Dokumentation.
  • DESedeKeySpec: Diese Klasse wird nur mit DESedeKeyFactory verwendet und ermöglicht den Import der Spezifikation DESedeKey. Beachten Sie, dass DESede nur in Nicht-FIPS-Clustern unterstützt wird. Weitere Informationen finden Sie in der Java Platform-API-Dokumentation unter Klasse DESedeKeySpec. Mit dieser Klasse können Sie symmetrische Schlüssel basierend auf einem vorhandenen DKMS-AES-Schlüssel ableiten.

Die Methode translateKey kann jeden Schlüssel akzeptieren, der die Schnittstelle Key implementiert, die Flexibilität bei der Schlüsselverarbeitung bietet. Um einen persistenten Schlüssel zu übersetzen, setzen Sie DEDICATED_KMS_JCE_TRANSLATE_KEY_PERSISTENT in Ihren Umgebungsvariablen oder Systemeigenschaften auf TRUE.

KeyFactory

Die Factory KeyFactory wird für den Import asymmetrischer Schlüssel verwendet. Wenn Sie eine gültige Key oder KeySpec übergeben, können Sie asymmetrische Schlüssel in die dedizierte Schlüsselverwaltung importieren. Weitere Informationen finden Sie in der Java Platform-API-Dokumentation unter Klasse KeyFactory.

Die folgenden KeySpec-Klassen werden für die Methode generatePublic unterstützt:

  • KeyAttributesMap: Verfügbar für RSA und EC KeyTypes.
  • X509EncodedKeySpec: Diese Klasse gilt für generatePublic in den Feldern RSAKeyFactory und EcKeyFactory und wird zum Importieren der X509-codierten Schlüsselspezifikation verwendet. Weitere Informationen finden Sie in der Java Platform-API-Dokumentation unter Klasse X509EncodedKeySpec.
  • RSAPublicKeySpec: Für generatePublic in RSAKeyFactory. Verwenden Sie diese Klasse, um die RSA-Public Key-Spezifikation zu importieren. Weitere Informationen finden Sie in der Java Platform-API-Dokumentation unter Klasse RSAPublicKeySpec.
  • ECPublicKeySpec: Für generatePublic in EcKeyFactory. Verwenden Sie diese Klasse, um die EC-Public-Key-Spezifikation zu importieren. Weitere Informationen finden Sie in der Java Platform-API-Dokumentation unter Klasse ECPublicKeySpec.

Die folgenden KeySpec-Klassen werden für die Methode generatePrivate unterstützt:

  • PKCS8EncodedKeySpec: Wird sowohl für EC- als auch für RSA-Private Keys verwendet. Weitere Informationen finden Sie in der Java Platform-API-Dokumentation unter Klasse PKCS8EncodedKeySpec.
  • RSAPrivateCrtKeySpec: Nur für private RSA-Schlüssel. Weitere Informationen finden Sie in der Java Platform-API-Dokumentation unter Klasse RSAPrivateCrtKeySpec.
  • ECPrivateKeySpec: Nur für EC-Private Keys. Weitere Informationen finden Sie in der Java Platform-API-Dokumentation unter Klasse ECPrivateKeySpec.

Die Methode translateKey akzeptiert jeden Schlüssel, der die Schnittstelle Key implementiert und eine nahtlose Konvertierung zwischen verschiedenen Schlüsselformaten ermöglicht.

Cipher-Funktionen

Der JCE-Provider für dedizierte Schlüsselverwaltung unterstützt folgende Kombinationen aus Algorithmus, Modus und Auffüllung.

Algorithmus Modus Auffüllen Hinweise
AES CBC

AES/CBC/NoPadding

AES/CBC/PKCS5Padding

Implementiert Cipher.ENCRYPT_MODE und Cipher.DECRYPT_MODE.

Implementiert Cipher.UNWRAP_MODE für AES/CBC NoPadding

AES EZB

AES/ECB/PKCS5Padding

AES/ECB/NoPadding

Implementiert Cipher.ENCRYPT_MODE und Cipher.DECRYPT_MODE.
AES CTR Ä/ZTR/NoPadding Implementiert Cipher.ENCRYPT_MODE und Cipher.DECRYPT_MODE.
AES GCM AES/GCM/NoPadding

Implementiert Cipher.WRAP_MODE, Cipher.UNWRAP_MODE, Cipher.ENCRYPT_MODE und Cipher.DECRYPT_MODE.

Bei der AES-GCM-Verschlüsselung ignoriert das HSM den Initialisierungsvektor (IV) in der Anforderung und verwendet eine von ihm generierte IV. Wenn der Vorgang abgeschlossen ist, müssen Sie Cipher.getIV() aufrufen, um die Infusion abzurufen.

AESWrap EZB

AESWrap/ECB/NoPadding

AESWrap/ECB/PKCS5Padding

AESWrap/ECB/ZeroPadding

Implementiert Cipher.WRAP_MODE und Cipher.UNWRAP_MODE.
DESede (Dreifaches DES) CBC

DESede/CBC/PKCS5Padding

DESede/CBC/NoPadding

Implementiert Cipher.ENCRYPT_MODE und Cipher.DECRYPT_MODE.

DESede wird nur in Nicht-FIPS-Clustern unterstützt.

DESede (Dreifaches DES) EZB

DESede/ECB/NoPadding

DESede/ECB/PKCS5Padding

Implementiert Cipher.ENCRYPT_MODE und Cipher.DECRYPT_MODE.

DESede wird nur in Nicht-FIPS-Clustern unterstützt.

RSA EZB

RSA/ECB/PKCS1Padding siehe Hinweis 1

RSA/ECB/OAEPPadding

RSA/ECB/OAEPWithSHA-1ANDMGF1Padding

RSA/ECB/OAEPWithSHA-224ANDMGF1Padding

RSA/ECB/OAEPWithSHA-256ANDMGF1Padding

RSA/ECB/OAEPWithSHA-384ANDMGF1Padding

RSA/ECB/OAEPWithSHA-512ANDMGF1Padding

Implementiert Cipher.WRAP_MODE, Cipher.UNWRAP_MODE, Cipher.ENCRYPT_MODE und Cipher.DECRYPT_MODE.
RSA EZB RSA/ECB/NoPadding Implementiert Cipher.ENCRYPT_MODE und Cipher.DECRYPT_MODE.
RSAAESWrap EZB

RSAAESWrap/ECB/OAEPPadding

RSAAESWrap/ECB/OAEPWithSHA-1ANDMGF1Padding

RSAAESWrap/ECB/OAEPWithSHA-224ANDMGF1Padding

RSAAESWrap/ECB/OAEPWithSHA-256ANDMGF1Padding

RSAAESWrap/ECB/OAEPWithSHA-384ANDMGF1Padding

RSAAESWrap/ECB/OAEPWithSHA-512ANDMGF1Padding

Implementiert Cipher.WRAP_MODE und Cipher.UNWRAP_MODE.

Funktionen signieren und prüfen

DKMS JCE-Provider unterstützt die folgenden Signatur- und Verifizierungstypen:

RSA-Signaturtypen

  • NONEwithRSA

  • RSASSA-PSS

  • SHA1withRSA

  • SHA1withRSA/PSS

  • SHA1withRSAandMGF1

  • SHA224withRSA

  • SHA224withRSAandMGF1

  • SHA224withRSA/PSS

  • SHA256withRSA

  • SHA256withRSAandMGF1

  • SHA256withRSA/PSS

  • SHA384withRSA

  • SHA384withRSAandMGF1

  • SHA384withRSA/PSS

  • SHA512withRSA

  • SHA512withRSAandMGF1

  • SHA512withRSA/PSS

ECDSA-Signaturtypen

  • NONEwithECDSA

  • SHA1withECDSA

  • SHA224withECDSA

  • SHA256withECDSA

  • SHA384withECDSA

  • SHA512withECDSA

Nachrichtendigestfunktionen

Generieren Sie kryptografische Hashwerte für die Datenintegritätsprüfung. DKMS JCE-Provider unterstützt die folgenden Meldungsdigests.

  • SHA-1

  • SHA-224

  • SHA-256

  • SHA-384

  • SHA-512

Hash-basierte Funktionen für Message Authentication Code (HMAC)

Generieren Sie HMAC-Schlüssel (Hash-Based Message Authentication Code) für kryptografische Hashfunktionen. HMAC wird zur Überprüfung der Datenintegrität und -authentizität verwendet, indem ein Secret Key mit einer Hash-Funktion angewendet wird. Der JCE-Provider für dedizierte Schlüsselverwaltung unterstützt die folgenden HMAC-Algorithmen:

  • HmacSHA1 (Maximale Datengröße in Byte: 16288)

  • HmacSHA224 (Maximale Datengröße in Byte: 16256)

  • HmacSHA256 (Maximale Datengröße in Byte: 16288)

  • HmacSHA384 (Maximale Datengröße in Byte: 16224)

  • HmacSHA512 (Maximale Datengröße in Byte: 16224)

Cipher-basierter Message Authentication Code (CMAC)

Generieren Sie Cipher-basierte Message Authentication Codes (CMACs) mit Block-Cipher (z. B. AES), um einen Authentifizierungscode zu erzeugen, der die Nachrichtenintegrität und -authentizität gewährleistet. CMAC arbeitet ähnlich wie HMAC, verwendet jedoch eine symmetrische Schlüssel-Cipher für den kryptografischen Vorgang.

Der JCE-Provider für dedizierte Schlüsselverwaltung unterstützt den AESCMAC-Algorithmus für die CMAC-Generierung.