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 FeldernRSAKeyFactory
undEcKeyFactory
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
inRSAKeyFactory
. 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
inEcKeyFactory
. 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.