IBM Cloud Docs
Verschlüsselungsoperationen: PKCS #11-API

Verschlüsselungsoperationen: PKCS #11-API

IBM Cloud® Hyper Protect Crypto Services stellt eine Reihe von Verschlüsselungsfunktionen bereit, die in einem Hardwaresicherheitsmodul(HSM)A physical appliance that provides on-demand encryption, key management, and key storage as a managed service. in der Cloud ausgeführt werden. Sie können Verschlüsselungsoperationen durchführen, indem Sie auf eine PKCS #11-Bibliothek zugreifen, die auf dem PKCS #11-Standard basiert. PKCS #11 ist ein Standard, der eine Anwendungsprogrammierschnittstelle (API) mit dem Namen Cryptoki für Einheiten spezifiziert, die kryptographische Informationen enthalten und Verschlüsselungsfunktionen ausführen.

Weitere Informationen zu PKCS #11 finden Sie in der Einführung in PKCS #11.

PKCS #11-Bibliothek installieren und konfigurieren

Um einen PKCS #11 -API-Aufruf auszuführen, müssen Sie zunächst die PKCS #11 -Bibliothek installierenund dann PKCS #11 -Benutzertypen einrichten.

Die Namen der Bibliotheksdateien verwenden die folgende Namenskonvention: pkcs11-grep11-<**platform**>.so.<**version**>. Die Plattformangabe ist entweder amd64 oder s390x und die Versionsangabe entspricht der Standardsyntax übergeordnete_version.untergeordnete_version.build. Nachdem Sie die Bibliothek heruntergeladen haben, verschieben Sie die Bibliothek in einen Ordner, auf den Ihre Anwendungen zugreifen können. Wenn Sie beispielsweise Ihre Anwendung unter Linux® ausführen, können Sie die Bibliothek nach /usr/local/lib, /usr/local/lib64 oder /usr/lib verschieben.

Für den Zugriff auf die PKCS #11 -API konfigurieren Sie die PKCS #11 -Bibliothek, indem Sie den API-Endpunkt und den API-Schlüssel in der grep11client.yaml-Konfigurationsdatei festlegen. Initialisieren Sie anschließend die Bibliothek. Ausführliche Anweisungen dazu finden Sie unter Verschlüsselungsoperationen mit der PKCS #11-API durchführen.

Wenn Sie eine Java PKCS #11 mit dem SunPKCS11-Provider auf der Plattform IBM Z (s390x) ausführen, stellen Sie sicher, dass Sie beim Starten Ihrer Anwendung die neueste IBM Semeru-JVM verwenden und die Option -Xjit:noResumableTrapHandler Java angeben. Sie können die neueste s390x-Version der IBM Semeru-Java Virtual Machine (JVM) herunterladen, indem Sie das Filterfeld Architektur auf der IBM Semeru Runtime-Downloadseitein s390x ändern.

Fehlerbehandlung

Die PKCS #11 -API von Hyper Protect Crypto Services folgt der -Standardmethode von PKCS #11 Cryptographic Token Interface für die Fehlerbehandlung.

Prüfen, ob Schlüssel durch Verschlüsselungseinheiten geschützt sind

Die PKCS #11-API arbeitet mit generierten Schlüsselobjekten, die über einen fernen Keystore unter IBM Cloud gespeichert, aktualisiert und abgerufen werden können. Um einen noch höheren Schutz zu ermöglichen, können die Schlüsselobjekte, die in IBM Cloud gespeichert sind, auch überprüft werden, um sicherzustellen, dass keine Manipulation erfolgt.

Jeder symmetrische Schlüssel - generiert, abgeleitet oder mit aufgehobenem Wrapping - enthält einen digitalen Fingerabdruck, der in einem Schlüsselattribut CKA_CHECK_VALUE gespeichert wird. Dieses Attribut ist eine 3-Byte-Kontrollsumme für das Schlüsselobjekt selbst.

Nach dem Generieren, Ableiten oder Aufheben des Wrappings eines Schlüsselobjekts wird empfohlen, den ursprünglichen Kontrollsummenwert (Inhalt des Attributs CKA_CHECK_VALUE) zusammen mit allen eindeutigen IDs des Schlüsselobjekts separat zu speichern. Die separat gespeicherten Kontrollsummen können dann verwendet werden, um zu verifizieren, ob Schlüssel manipuliert wurden oder nicht.

Um einen Schlüssel zu überprüfen, führen Sie eine ECB-Verschlüsselungsoperation (ECB = Electronic Codebook) für einen einzelnen Block mit null (0x00) Bytes durch, indem Sie den zu prüfenden Schlüssel verwenden. Wenn die ersten 3 Byte der resultierenden Verschlüsselung mit dem Wert des Schlüsselattributs CKA_CHECK_VALUE identisch sind, das lokal für denselben Schlüssel gespeichert ist, bedeutet dies, dass das Schlüsselobjekt nicht manipuliert ist. Das Schlüsselattribut CKA_CHECK_VALUE kann nicht verwendet werden, um einen Teil des Schlüsselwerts abzurufen.

Ein Beispiel für das Abrufen von Kontrollsummenwerten für AES-, DES2-und DES3-Schlüssel sowie die Überprüfung der Schlüsselkontrollsummen finden Sie hier.

PKCS #11-Funktionsliste

Der PKCS #11-Standard definiert eine API mit dem Namen Cryptoki. In der folgenden Tabelle werden die Funktionen der PKCS #11-API Cryptoki aufgeführt und beschrieben.

Nicht alle PKCS #11-Funktionen werden durch Hyper Protect Crypto Services implementiert. Funktionen, die implementiert sind, werden durch Yes in der Tabelle markiert.

Tabelle 1. Beschreibt die implementierten PKCS #11 -Funktionen nach Service-Back-End
Kategorie PKCS #11-Funktion Implementiert? (Ja oder Nein) Beschreibung
Allgemeiner Zweck C_Initialize Ja Initialisiert Cryptoki.
Allgemeiner Zweck C_Finalize Ja Bereinigt verschiedene zu Cryptoki gehörige Ressourcen.
Allgemeiner Zweck C_GetInfo Ja Ruft allgemeine Informationen zu Cryptoki ab.
Allgemeiner Zweck C_GetFunctionList Ja Ruft Eingangspunkte von Cryptoki-Bibliotheksfunktionen ab.
Slot- und Token-Management C_GetSlotList Ja Ruft eine Liste der Slots im System ab.
Slot- und Token-Management C_GetSlotInfo Ja Ruft Informationen zu einem bestimmten Slot ab.
Slot- und Token-Management C_GetTokenInfo Ja Ruft Informationen zu einem bestimmten Token ab.
Slot- und Token-Management C_WaitForSlotEvent Nein Wartet auf das Eintreten eines Slotereignisses (Tokeneinfügung, -entfernung usw.).
Slot- und Token-Management C_GetMechanismList Ja Ruft eine Liste der Mechanismen ab, die von einem Token unterstützt werden.
Slot- und Token-Management C_GetMechanismInfo Ja Ruft Informationen zu einem bestimmten Verfahren ab.
Slot- und Token-Management C_InitToken Ja Initialisiert ein Token.
Slot- und Token-Management C_InitPIN Ja Initialisiert die PIN des normalen Benutzers.
Slot- und Token-Management C_SetPIN Ja Ändert die PIN des aktuellen Benutzers.
Sitzungsmanagement C_OpenSession Ja Öffnet eine Verbindung zwischen einer Anwendung und einem bestimmten Token oder richtet einen Anwendungsrückruf für das Einfügen von Tokens ein.
Sitzungsmanagement C_CloseSession Ja Schließt eine Sitzung.
Sitzungsmanagement C_CloseAllSessions Ja Schließt alle Sitzungen mit einem Token.
Sitzungsmanagement C_GetSessionInfo Ja Ruft Informationen zu der Sitzung ab.
Sitzungsmanagement C_GetOperationState Ja Ruft den Status der Verschlüsselungsoperationen einer Sitzung ab.
Sitzungsmanagement C_SetOperationState Ja Legt den Status der Verschlüsselungsoperationen einer Sitzung fest.
Sitzungsmanagement C_Login Ja Meldet sich bei einem Token an.
Sitzungsmanagement C_Logout Ja Meldet sich von einem Token ab.
Objektmanagement C_CreateObject Ja1 Erstellt ein Objekt.
Objektmanagement C_CopyObject Ja Erstellt eine Kopie eines Objekts.
Objektmanagement C_DestroyObject Ja Löscht ein Objekt.
Objektmanagement C_GetObjectSize Ja Ruft die Größe eines Objekts in Byte ab.
Objektmanagement C_GetAttributeValue Ja Ruft einen Attributwert eines Objekts ab.
Objektmanagement C_SetAttributeValue Ja Ändert einen Attributwert eines Objekts. Es können nur boolesche Attribute geändert werden.
Objektmanagement C_FindObjectsInit Ja Initialisiert eine Objektsuchoperation.
Objektmanagement C_FindObjects Ja Setzt eine Objektsuchoperation fort.
Objektmanagement C_FindObjectsFinal Ja Beendet eine Objektsuchoperation.
Verschlüsselung C_EncryptInit Ja Initialisiert eine Verschlüsselungsoperation.
Verschlüsselung C_Encrypt Ja Verschlüsselt einteilige Daten.
Verschlüsselung C_EncryptUpdate Ja Setzt eine mehrteilige Verschlüsselungsoperation fort.
Verschlüsselung C_EncryptFinal Ja Beendet eine mehrteilige Verschlüsselungsoperation.
Entschlüsselung C_DecryptInit Ja Initialisiert eine Entschlüsselungsoperation.
Entschlüsselung C_Decrypt Ja Entschlüsselt einteilige verschlüsselte Daten.
Entschlüsselung C_DecryptUpdate Ja Setzt eine mehrteilige Entschlüsselungsoperation fort.
Entschlüsselung C_DecryptFinal Ja Beendet eine mehrteilige Entschlüsselungsoperation.
Message-Digest C_DigestInit Ja Initialisiert eine Operation für den Message-Digest.
Message-Digest C_Digest Ja Verarbeitet einteilige Daten. Die Länge der Eingabedaten darf nicht null sein und der Zeiger, der auf die Eingabedatenposition verweist, darf nicht NULL sein.
Message-Digest C_DigestUpdate Ja Setzt eine mehrteilige Digest-Operation fort. Die Länge der Eingabedaten darf nicht null sein und der Zeiger, der auf die Eingabedatenposition verweist, darf nicht NULL sein.
Message-Digest C_DigestKey Nein Verarbeitet einen Schlüssel.
Message-Digest C_DigestFinal Ja Beendet eine mehrteilige Digest-Operation.
Signieren und MACing C_SignInit Ja Initialisiert eine Signaturoperation.
Signieren und MACing C_Sign Ja Signiert einteilige Daten.
Signieren und MACing C_SignUpdate Ja Setzt eine mehrteilige Signaturoperation fort.
Signieren und MACing C_SignFinal Ja Beendet eine mehrteilige Signaturoperation.
Signieren und MACing C_SignRecoverInit Nein Initialisiert eine Signaturoperation, wobei die Daten anhand der Signatur wiederhergestellt werden.
Signieren und MACing C_SignRecover Nein Signiert einteilige Daten, wobei die Daten anhand der Signatur wiederhergestellt werden.
Signaturen und MACs überprüfen C_VerifyInit Ja Initialisiert eine Verifizierungsoperation.
Signaturen und MACs überprüfen C_Verify Ja Verifiziert eine Signatur für einteilige Daten.
Signaturen und MACs überprüfen C_VerifyUpdate Ja Setzt eine mehrteilige Verifizierungsoperation fort.
Signaturen und MACs überprüfen C_VerifyFinal Ja Beendet eine mehrteilige Verifizierungsoperation.
Signaturen und MACs überprüfen C_VerifyRecoverInit Nein Initialisiert eine Verifizierungsoperation, wobei die Daten von der Signatur wiederhergestellt werden.
Signaturen und MACs überprüfen C_VerifyRecover Nein Verifiziert eine Signatur für einteilige Daten, wobei die Daten von der Signatur wiederhergestellt werden.
Zwei-Zweck-Verschlüsselungsfunktionen C_DigestEncryptUpdate Ja Setzt simultane mehrteilige Digest- und Verschlüsselungsoperationen fort.
Zwei-Zweck-Verschlüsselungsfunktionen C_DecryptDigestUpdate Ja Setzt simultane mehrteilige Entschlüsselungs- und Digest-Operationen fort.
Zwei-Zweck-Verschlüsselungsfunktionen C_SignEncryptUpdate Ja Setzt simultane mehrteilige Signatur- und Verschlüsselungsoperationen fort.
Zwei-Zweck-Verschlüsselungsfunktionen C_DecryptVerifyUpdate Ja Setzt simultane mehrteilige Entschlüsselungs- und Verifizierungsoperationen fort.
Schlüsselmanagement C_GenerateKey Ja Generiert einen geheimen Schlüssel.
Schlüsselmanagement C_GenerateKeyPair Ja Generiert ein Paar aus öffentlichem Schlüssel und privatem Schlüssel.
Schlüsselmanagement C_WrapKey Ja Führt Wrapping für einen Schlüssel aus (verschlüsselt einen Schlüssel).
Schlüsselmanagement C_UnwrapKey Ja Führt Unwrapping für einen Schlüssel aus (entschlüsselt einen Schlüssel).
Schlüsselmanagement C_DeriveKey Ja Leitet einen Schlüssel aus einem Basisschlüssel ab.
Zufallszahlengenerierung C_SeedRandom Nein Fügt Seedmaterial zum Zufallsgenerator hinzu.
Zufallszahlengenerierung C_GenerateRandom Ja Generiert Zufallsdaten. Die Länge der Zufallsdaten darf nicht null sein und der Zeiger, der auf die Zufallsdatenposition verweist, darf nicht NULL sein.
Parallele Funktionsverwaltung C_GetFunctionStatus Nein Traditionelle Funktion, die immer CKR_FUNCTION_NOT_PARALLEL zurückgibt.
Parallele Funktionsverwaltung C_CancelFunction Nein Traditionelle Funktion, die immer CKR_FUNCTION_NOT_PARALLEL zurückgibt.

1: Die aktuelle Implementierung der Funktion C_CreateObject unterstützt geheime Schlüsselobjekte, private Schlüsselobjekte, öffentliche Schlüsselobjekte, Datenobjekte, X.509 Public Key Certificate-Objekte, WTLS Public Key Certificate-Objekte und X.509-Attributzertifikatsobjekte.

Unterstützte Mechanismen

Als Mechanismus wird ein Prozess zur Implementierung einer Verschlüsselungsoperation bezeichnet. Dies kann je nach Firmware-Version auf der Verschlüsselungskarte variieren. In der folgenden Tabelle sind die unterstützten Mechanismen und ihre Beziehung zu allgemeinen Cryptoki-Funktionskategorien aufgeführt.

Tabelle 2. Beschreibt die unterstützten PKCS #11 -Mechanismen
Funktionsgruppe Unterstützte Mechanismen
Verschlüsseln und entschlüsseln. CKM_RSA_PKCS1, CKM_RSA_PKCS_OAEP1, CKM_AES_ECB, CKM_AES_CBC, CKM_AES_CBC_PAD, CKM_DES3_ECB, CKM_DES3_CBC, CKM_DES3_CBC_PAD
Signieren und verifizieren. CKM_RSA_PKCS1, CKM_RSA_PKCS_PSS1, CKM _RSA_X9_311, CKM_SHA1_RSA_PKCS, CKM_SHA256_RSA_PKCS, CKM_SHA224_RSA_PKCS, CKM_SHA384_RSA_PKCS, CKM_SHA512_RSA_PKCS, CKM_SHA1_RSA_PKCS_PSS, CKM_SHA224_RSA_PKCS_PSS CKM_SHA512_RSA_PKCS_PSS, CKM_SHA1_RSA_X9_31, CKM-DSA1, CKM_DSA_SHA1, CKM-ECDSA1, CKM_ECDSA_SHA1, CKM_ECDSA_SHA224, CKM_ECDSA_SHA256, CKM_ECDSA_SHA384, CKM_ECDSA_SHA512, CKM_SHA1_HMAC CKM_SHA512_224_HMAC, CKM_SHA512_256_HMAC, CKM_IBM_ED25519_SHA512, CKM_IBM_ED448_SHA3, CKM_IBM_DILITHIUM2
Digest. CKM_SHA_1, CKM_SHA224, CKM_SHA256, CKM_SHA384, CKM_SHA512, CKM_SHA512_224, CKM_SHA512_256
Generieren eines Schlüssels oder eines Schlüsselpaars. CKM_RSA_PKCS_KEY_PAIR_GEN, CKM_RSA_X9_31_KEY_PAIR_GEN, CKM_DSA_KEY_PAIR_GEN, CKM_DSA_PARAMETER_GEN, CKM_EC_KEY_PAIR_GEN (CKM_ECDSA_KEY_PAIR_GEN), CKM_DH_PKCS_KEY_PAIR_GEN, CKM_DH_PKCS_PARAMETER_GEN, CKM_GENERIC_SECRET_KEY_GEN, CKM_AES_KEY_GEN, CKM_DES2_KEY_GEN, CKM_DES3_KEY_GEN, CKM_IBM_DILITHIUM
Wrapping und Unwrapping. CKM_RSA_PKCS, CKM_RSA_PKCS_OAEP, CKM_AES_ECB, CKM_AES_CBC, CKM_AES_CBC_PAD, CKM_DES3_ECB, CKM_DES3_CBC, CKM_DES3_CBC_PAD
Ableiten. CKM_ECDH1_DERIVE, CKM_DH_PKCS_DERIVE, CKM_DES3_ECB_ENCRYPT_DATA, CKM_SHA1_KEY_DERIVATION, CKM_SHA224_KEY_DERIVATION, CKM_SHA256_KEY_DERIVATION, CKM_SHA384_KEY_DERIVATION, CKM_SHA512_KEY_DERIVATION, CKM_IBM_BTC_DERIVE

1: Dieser Mechanismus unterstützt nur einteilige Operationen, die keine der Funktionen zur Aktualisierung von Cryptotoki, wie C_EncryptUpdate, C_DecryptUpdate und C_DigestUpdate, verwenden können.

2: Dieser Mechanismus wird von der Verschlüsselungskarte IBM 4768 nicht unterstützt und ist für C_SignUpdate- und C_VerifyUpdate-Operationen nicht verfügbar.

Unterstützte Attribute und Schlüsseltypen

PKCS #11-Attribute definieren Objektmerkmale, die festlegen, wie ein Objekt verwendet werden kann und wie auf das Objekt zugegriffen werden kann. In der folgenden Tabelle werden die unterstützten Attribute und ihre Beziehungen zu den verschiedenen unterstützten Schlüsseltypen gezeigt.

Tabelle 3. Unterstützte Attribute und Schlüsseltypen
Attribut Beschreibung Unterstützte Schlüsseltypen
CKA_BASIS DSA-Domänenparameter und für C_CreateObjectverwendet. Basis g. Private DSA-Schlüssel, öffentliche DSA-Schlüssel
CKA_ZERTIFIKATSKATEGORIE Wird verwendet, um anzugeben, ob ein gespeichertes Zertifikat ein Benutzerzertifikat ist, für das der entsprechende private Schlüssel im Token verfügbar ist ("Tokenbenutzer"), ein CA-Zertifikat ("Zertifizierungsstelle")oder ein anderes Endentitätszertifikat ("andere Entität"). Der Standardwert ist CK_CERTIFICATE_CATEGORY_UNSPECIFIED. Nicht zutreffend
CKA_ZERTIFIKATSTYP Muss angegeben werden, wenn das Zertifikatsobjekt mit C_CreateObjecterstellt wird Die Zertifikatstypen sind X.509 öffentlicher Schlüssel, WTLS-Zertifikat für öffentlichen Schlüssel und X.509-Attributzertifikat. Nicht zutreffend
CKA_CHECK_VALUE Die Kontrollsumme des Schlüssels oder Zertifikats. AES-Schlüssel, DES-Schlüssel
CKA_CLASS Objektklasse (Typ), ist für alle Objekte gleich. Private EC-Schlüssel, öffentliche EC-Schlüssel, private RSA-Schlüssel, öffentliche RSA-Schlüssel, private DH-Schlüssel, öffentliche DH-Schlüssel, private DSA-Schlüssel, öffentliche DSA-Schlüssel, AES-Schlüssel, DES-Schlüssel, generische Schlüssel
CKA_KOEFFIZIENT Wird für C_CreatObjectverwendet Private RSA-Schlüssel
CKA_COPYABLAGE Bei Angabe von CKA_TRUE kann das Objekt mit C_CopyObjectkopiert werden. Private EC-Schlüssel, öffentliche EC-Schlüssel, private RSA-Schlüssel, öffentliche RSA-Schlüssel, private DH-Schlüssel, öffentliche DH-Schlüssel, private DSA-Schlüssel, öffentliche DSA-Schlüssel, AES-Schlüssel, DES-Schlüssel, generische Schlüssel
CKA_DECRYPT CK_TRUE, wenn der Schlüssel eine Entschlüsselung unterstützt. Private EC-Schlüssel, private RSA-Schlüssel, private DH-Schlüssel, private DSA-Schlüssel, AES-Schlüssel, DES-Schlüssel, generische Schlüssel
CKA_DERIVE CK_TRUE, wenn der Schlüssel die Schlüsselableitung unterstützt (d. h., andere Schlüssel können aus diesem Schlüssel abgeleitet werden). Der Standardwert lautet CK_FALSE. Private EC-Schlüssel, öffentliche EC-Schlüssel, private RSA-Schlüssel, öffentliche RSA-Schlüssel, private DH-Schlüssel, öffentliche DH-Schlüssel, private DSA-Schlüssel, öffentliche DSA-Schlüssel, AES-Schlüssel, DES-Schlüssel, generische Schlüssel
CKA_EC_PARAMS (CKA_ECDSA_PARAMS) DER-Codierung eines ANSI X9.62-Parameterwerts. Private EC-Schlüssel, öffentliche EC-Schlüssel
CKA_EC_POINT DER-Codierung eines ANSI X9.62 ECPoint-Werts Q. Öffentliche EC-Schlüssel
CKA_ENCRYPT CK_TRUE, wenn der Schlüssel eine Verschlüsselung unterstützt. Öffentliche EC-Schlüssel, öffentliche RSA-Schlüssel, öffentliche DH-Schlüssel, öffentliche DSA-Schlüssel, AES-Schlüssel, DES-Schlüssel, generische Schlüssel
CKA_END_DATE Enddatum für das Zertifikat oder den Schlüssel. Standardmäßig ist kein Wert eingegeben. Private EC-Schlüssel, öffentliche EC-Schlüssel, private RSA-Schlüssel, öffentliche RSA-Schlüssel, private DH-Schlüssel, öffentliche DH-Schlüssel, private DSA-Schlüssel, öffentliche DSA-Schlüssel, AES-Schlüssel, DES-Schlüssel, generische Schlüssel
CKA_EXTRACTABLE CK_TRUE, wenn der Schlüssel extrahierbar ist und gewrappt werden kann. Private EC-Schlüssel, private RSA-Schlüssel, private DH-Schlüssel, private DSA-Schlüssel, AES-Schlüssel, DES-Schlüssel, generische Schlüssel
CKA_EXPONENT_1 Für C_CreateObjectverwenden. Privater Exponent d Modulo q-1. Private RSA-Schlüssel
CKA_EXPONENT_2 Für C_CreateObjectverwenden. CRT-Koeffizient q-1 Modulo p. Private RSA-Schlüssel
CKA_HASH_OF_ISSUER_PUBLIC_KEY Hashwert des öffentlichen Schlüssels des Ausstellers für ein Zertifikat. Standardmäßig ist kein Wert eingegeben. Nicht zutreffend
CKA_HASH_OF_SUBJECT_ÖFFENTLICHER_SCHLÜSSEL Hashwert des öffentlichen Schlüssels des Subjekts für ein Zertifikat. Standardmäßig ist kein Wert eingegeben. Nicht zutreffend
CKA_IBM_PQC_PARAMS Unterstützung von Parametern für Post-Quantum-Verschlüsselungsmechanismen. Im Fall des Dilithium-Mechanismus CKM_IBM_DILITHIUM wird eine Marshaling-Objekt-ID (OID) bereitgestellt, welche die Stärke des zu verwendenden Dilithium-Algorithmus darstellt. Derzeit wird nur die Stärke von Dilithium 4 round 2 unterstützt. Dilithium-Schlüssel
CKA_IBM_USE_AS_DATEN Ein Objekt wird für Hashing-oder Schlüsselableitungsoperationen verwendet, wenn CK_TRUE Private EC-Schlüssel, öffentliche EC-Schlüssel
CKA_ID Schlüssel-ID für öffentliches oder privates Schlüsselpaar oder für öffentlichen oder privaten Schlüssel. Standardmäßig ist kein Wert eingegeben. Private EC-Schlüssel, öffentliche EC-Schlüssel, private RSA-Schlüssel, öffentliche RSA-Schlüssel, private DH-Schlüssel, öffentliche DH-Schlüssel, private DSA-Schlüssel, öffentliche DSA-Schlüssel, AES-Schlüssel, DES-Schlüssel, generische Schlüssel
CKA_AUSSTELLER DER-Codierung des Namens des Zertifikatsausstellers. Standardmäßig ist kein Wert eingegeben. Nicht zutreffend
CKA_JAVA_MIDP_SECURITY_DOMAIN Java MIDP-Sicherheitsdomäne für ein Zertifikat. Der Standardwert ist CK_SECURITY_DOMAIN_UNSPECIFIED. Nicht zutreffend
CKA_KEY_TYPE Typ des Schlüssels. Private EC-Schlüssel, öffentliche EC-Schlüssel, private RSA-Schlüssel, öffentliche RSA-Schlüssel, private DH-Schlüssel, öffentliche DH-Schlüssel, private DSA-Schlüssel, öffentliche DSA-Schlüssel, AES-Schlüssel, DES-Schlüssel, generische Schlüssel
CKA_LABEL Beschreibung des Objekts. Standardmäßig ist kein Wert eingegeben. Private EC-Schlüssel, öffentliche EC-Schlüssel, private RSA-Schlüssel, öffentliche RSA-Schlüssel, private DH-Schlüssel, öffentliche DH-Schlüssel, private DSA-Schlüssel, öffentliche DSA-Schlüssel, AES-Schlüssel, DES-Schlüssel, generische Schlüssel
CKA_LOCAL CK_TRUE, nur wenn der Schlüssel lokal (auf dem Token) mit einem C_GenerateKey- oder C_GenerateKeyPair-Aufruf generiert oder mit einem C_CopyObject-Aufruf als Kopie des Schlüssels erstellt wurde, dessen Attribut CKA_LOCAL auf CK_TRUE festgelegt worden war. Private EC-Schlüssel, öffentliche EC-Schlüssel, private RSA-Schlüssel, öffentliche RSA-Schlüssel, private DH-Schlüssel, öffentliche DH-Schlüssel, private DSA-Schlüssel, öffentliche DSA-Schlüssel, AES-Schlüssel, DES-Schlüssel, generische Schlüssel
CKA_MODIFIABLE Wird auf CK_TRUE gesetzt, wenn das Objekt geändert werden kann Private EC-Schlüssel, öffentliche EC-Schlüssel, private RSA-Schlüssel, öffentliche RSA-Schlüssel, private DH-Schlüssel, öffentliche DH-Schlüssel, private DSA-Schlüssel, öffentliche DSA-Schlüssel, AES-Schlüssel, DES-Schlüssel, generische Schlüssel
CKA_MODULUS Modulus n. Private RSA-Schlüssel
CKA_MODULUS_BITS Länge in Bits des Modulus n. Öffentliche RSA-Schlüssel
CKA_NAME_HASH-ALGORITHMUS Definiert den Mechanismus, der zur Berechnung des Hashwerts der öffentlichen Schlüssel des Antragstellers und des Ausstellers für ein Zertifikat verwendet wird. Der Standardwert ist SHA-1. Nicht zutreffend
CKA_PRIME DSA-Domänenparameter und für C_CreateObjectverwendet. Primzahl p (512 bis 2048 Bit in Schritten von 64 Bit). Private DSA-Schlüssel, öffentliche DSA-Schlüssel
CKA_PRIME_1 Wird für C_CreateObjectverwendet Primzahl q. Private RSA-Schlüssel
CKA_PRIME_2 Wird für C_CreateObjectverwendet Privater Exponent d Modulo p-1. Private RSA-Schlüssel
CKA_PRIVATE CK_TRUE, wenn es sich um ein privates Objekt handelt; CK_FALSE, wenn es sich um ein öffentliches Objekt handelt. Der Standardwert ist tokenspezifisch und kann von den Werten anderer Attribute des Objekts abhängen. Private EC-Schlüssel, öffentliche EC-Schlüssel, private RSA-Schlüssel, öffentliche RSA-Schlüssel, private DH-Schlüssel, öffentliche DH-Schlüssel, private DSA-Schlüssel, öffentliche DSA-Schlüssel, AES-Schlüssel, DES-Schlüssel, generische Schlüssel
CKA_PRIVATE_EXPONENT Wird für C_CreateObjectverwendet Primzahl p. Private RSA-Schlüssel
CKA_PUBLIC_EXPONENT Öffentlicher Exponent e. Private RSA-Schlüssel, öffentliche RSA-Schlüssel
CKA_PUBLIC_KEY_INFO DER-Codierung von SubjectPublicKeyInfo für den öffentlichen Schlüssel. Der Wert wird aus den zugrunde liegenden Daten des öffentlichen Schlüssels abgeleitet und ist standardmäßig leer. Öffentliche RSA-Schlüssel, öffentliche EC-Schlüssel, öffentliche Dilithium-Schlüssel
CKA_SENSITIVE CK_TRUE, wenn Schlüssel sensibel ist. Private EC-Schlüssel, private RSA-Schlüssel, private DH-Schlüssel, private DSA-Schlüssel, AES-Schlüssel, DES-Schlüssel, generische Schlüssel
CKA_SERIAL_NUMMER DER-Codierung der Zertifikatsseriennummer. Standardmäßig ist kein Wert eingegeben. Nicht zutreffend
CKA_SIGN CK_TRUE, wenn der Schlüssel Signaturen unterstützt, wobei die Signatur ein Anhang an die Daten ist. Private EC-Schlüssel, private RSA-Schlüssel, private DH-Schlüssel, private DSA-Schlüssel, AES-Schlüssel, DES-Schlüssel, generische Schlüssel
CKA_START_DATE Startdatum für das Zertifikat oder den Schlüssel. Standardmäßig ist kein Wert eingegeben. Private EC-Schlüssel, öffentliche EC-Schlüssel, private RSA-Schlüssel, öffentliche RSA-Schlüssel, private DH-Schlüssel, öffentliche DH-Schlüssel, private DSA-Schlüssel, öffentliche DSA-Schlüssel, AES-Schlüssel, DES-Schlüssel, generische Schlüssel
CKA_SUBJECT DER-Codierung des Zertifikat- oder Schlüsselsubjektnamens. Private EC-Schlüssel, öffentliche EC-Schlüssel, private RSA-Schlüssel, öffentliche RSA-Schlüssel, private DH-Schlüssel, öffentliche DH-Schlüssel, private DSA-Schlüssel, öffentliche DSA-Schlüssel
CKA_SUBPRIME DSA-Domänenparameter und für C_CreateObjectverwendet. Subprime q (160 Bit für p < = 1024 Bit, 224 Bit oder 256 Bit für p > 1024 Bit). Private DSA-Schlüssel, öffentliche DSA-Schlüssel
CKA_TOKEN CK_TRUE, wenn es sich um ein Tokenobjekt handelt; CK_FALSE, wenn es sich um ein Sitzungsobjekt handelt. Private EC-Schlüssel, öffentliche EC-Schlüssel, private RSA-Schlüssel, öffentliche RSA-Schlüssel, private DH-Schlüssel, öffentliche DH-Schlüssel, private DSA-Schlüssel, öffentliche DSA-Schlüssel, AES-Schlüssel, DES-Schlüssel, generische Schlüssel
CKA_TRUSTED Das Zertifikat oder der Schlüssel kann für die Anwendung, die erstellt wurde, als vertrauenswürdig eingestuft werden. Öffentliche EC-Schlüssel, öffentliche RSA-Schlüssel, öffentliche DH-Schlüssel, öffentliche DSA-Schlüssel, AES-Schlüssel, DES-Schlüssel, generische Schlüssel
CKA_UNWRAP CK_TRUE, wenn der Schlüssel das Aufheben des Wrappings unterstützt (d. h., er kann verwendet werden, um das Wrapping anderer Schlüssel aufzuheben). Private EC-Schlüssel, private RSA-Schlüssel, private DH-Schlüssel, private DSA-Schlüssel, AES-Schlüssel, DES-Schlüssel, generische Schlüssel
CKA_URL (URL) Die URL, über die das vollständige Zertifikat abgerufen wird Standardmäßig ist kein Wert eingegeben. Nicht zutreffend
CKA_WERT Codierte Zertifikatbytes oder Schlüsselbytes bei Verwendung von C_CreateObject. Private EC-Schlüssel, öffentliche DSA-Schlüssel, private DSA-Schlüssel, ED25519 private Schlüssel, ED448 private Schlüssel, AES-Schlüssel, DES-Schlüssel
CKA_VALUE_LEN Länge in Byte des Schlüsselwerts. AES-Schlüssel
CKA_VERIFY CK_TRUE, wenn der Schlüssel Verifizierung unterstützt, wobei die Signatur ein Anhang an die Daten ist. Öffentliche EC-Schlüssel, öffentliche RSA-Schlüssel, öffentliche DH-Schlüssel, öffentliche DSA-Schlüssel, AES-Schlüssel, DES-Schlüssel, generische Schlüssel
CKA_WRAP CK_TRUE, wenn der Schlüssel Wrapping unterstützt (d. h., er kann zum Wrappen anderer Schlüssel verwendet werden). Öffentliche EC-Schlüssel, öffentliche RSA-Schlüssel, öffentliche DH-Schlüssel, öffentliche DSA-Schlüssel, AES-Schlüssel, DES-Schlüssel, generische Schlüssel
CKA_WRAP_WITH_TRUSTED CK_TRUE, wenn der Schlüssel nur mit einem Wrapping-Schlüssel gewrappt werden kann, für den CKA_TRUSTED auf CK_TRUE festgelegt wurde. Der Standardwert lautet CK_FALSE. Private EC-Schlüssel, private RSA-Schlüssel, private DH-Schlüssel, private DSA-Schlüssel, AES-Schlüssel, DES-Schlüssel, generische Schlüssel
CKA_ANWENDUNG Beschreibung der Anwendung, die das Objekt verwaltet (standardmäßig leer) Nicht zutreffend
CKA_OBJEKT-ID DER-Codierung der Objekt-ID, die den Datenobjekttyp angibt (standardmäßig leer) Nicht zutreffend
CKA_OWNER DER-Codierung des Subjektfelds des Attributzertifikats. Unterscheidet sich vom Attribut CKA_SUBJECT in CKC_X_509-Zertifikaten, weil die ASN.1-Syntax und -Codierung anders sind Nicht zutreffend
CKA_AC_AUSSTELLER DER-Codierung des Ausstellerfelds des Attributzertifikats. Dies unterscheidet sich vom Attribut CKA_ISSUER, das in CKC_X_509-Zertifikaten enthalten ist, da die Syntax und Codierung von ASN.1 unterschiedlich sind. (Standardwert leer) Nicht zutreffend
CKA_ATTR_TYP BER-Codierung einer Folge von Objekt-ID-Werten, die den im Zertifikat enthaltenen Attributtypen entsprechen. Wenn dieses Feld vorhanden ist, bietet es Anwendungen die Möglichkeit, nach einem bestimmten Attributzertifikat zu suchen, ohne das Zertifikat selbst abzurufen und zu analysieren. (Standardwert leer) Nicht zutreffend

Unterstützte Kurven

Die PKCS #11-Bibliothek unterstützt eine begrenzte Zahl von Kurventypen für bestimmte Mechanismen. In der folgenden Tabelle werden die Namen der unterstützten Kurven für verschiedene Mechanismen aufgelistet. Die Zahl im Kurvennamen bezeichnet die unterstützte vorbereitete Bitanzahl.

Unterstützte Kurven für die Generierung von EC-Schlüsseln (Elliptic Curve)

Der Mechanismus CKM_EC_KEY_PAIR_GEN wird unterstützt, wenn Sie die Funktion C_GenerateKeyPair zum Generieren von Elliptic Curve-Schlüsseln (EC-Schlüsseln) aufrufen. Die Parameter für Kurvennamen müssen als Objekt-IDs (OIDs) mit CKA_EC_PARAMS angegeben werden. Sie können die OID abrufen, indem Sie den Kurvennamen im OID-Repositorysuchen.

Tabelle 4. Unterstützte Kurventypen für die Generierung von EC-Schlüsseln
PKCS #11-Mechanismus Unterstützte Kurventypen Unterstützte Kurvennamen
CKM_EC_KEY_PAIR_GEN NIST-Kurven(National Institute of Standards and Technology)
  • P-192, auch als secp192r1 und prime192v1 bezeichnet.
  • P-224, auch als secp224r1 bezeichnet.
  • P-256, auch als secp256r1 und prime256v1 bezeichnet.
  • P-384, auch als secp384r1 bezeichnet.
  • P-521, auch als secp521r bezeichnet.
CKM_EC_KEY_PAIR_GEN Kurven des regulären Hirnpools(BP)
  • BP-160R, auch als brainpoolP160r1 bezeichnet.
  • BP-192R, auch als brainpoolP192r1 bezeichnet.
  • BP-224R, auch als brainpoolP224r1 bezeichnet.
  • BP-256R, auch als brainpoolP256r1 bezeichnet.
  • BP-320R, auch als brainpoolP320r1 bezeichnet.
  • BP-384R, auch als brainpoolP384r1 bezeichnet.
  • BP-512R, auch als brainpoolP512r1 bezeichnet.
CKM_EC_KEY_PAIR_GEN Twisted Brain-Poolkurven(BP-Kurven)
  • BP-160T, auch als brainpoolP160t1 bezeichnet.
  • BP-192T, auch als brainpoolP192t1 bezeichnet.
  • BP-224T, auch als brainpoolP224t1 bezeichnet.
  • BP-256T, auch als brainpoolP256t1 bezeichnet.
  • BP-320T, auch als brainpoolP320t1 bezeichnet.
  • BP-384T, auch als brainpoolP384t1 bezeichnet.
  • BP-512T, auch als brainpoolP512t1 bezeichnet.
CKM_EC_KEY_PAIR_GEN SEC-Kurven(Standards for Efficient Cryptography)
  • secp256k1
CKM_EC_KEY_PAIR_GEN Kantenkurven
  • Ed25519
CKM_EC_KEY_PAIR_GEN Kantenkurven
  • Ed448

Unterstützte Kurven für die Verschlüsselung digitaler Assets und die Generierung digitaler Signaturen

Die folgenden Kurven werden für Mechanismen unterstützt, die sich auf digitale Assets und digitale Signaturen beziehen.

Tabelle 5. Unterstützte Kurventypen für die Verschlüsselung digitaler Assets und Signaturen
Standard oder Schema PKCS #11-Mechanismus Unterstützte Kurventypen Unterstützte Kurvennamen
BIP32/BIP44 CKM_IBM_BTC_ABLEITEN SEC-Kurven(Standards for Efficient Cryptography)
  • secp256k1
SLIP10 CKM_IBM_BTC_ABLEITEN NIST-Kurven(National Institute of Standards and Technology)
  • P-256, auch bekannt als secp256r1 und prime256v1
SLIP10 CKM_IBM_BTC_ABLEITEN SEC-Kurven(Standards for Efficient Cryptography)
  • secp256k1
SLIP10 CKM_IBM_BTC_ABLEITEN Kantenkurven
  • Ed25519
EdDSA CKM_IBM_ED25519_SHA512 Kantenkurven
  • Ed25519
Schnorr CKM_IBM_ECDSA_ANDERE SEC-Kurven(Standards for Efficient Cryptography)
  • secp256k1
Schnorr CKM_IBM_ECDSA_ANDERE NIST-Kurven(National Institute of Standards and Technology)
  • P-256, auch bekannt als secp256r1 und prime256v1
Schnorr CKM_IBM_ECDSA_ANDERE Kurven des regulären Hirnpools(BP)
  • BP-256R, auch bekannt als brainpoolP256r1
Schnorr CKM_IBM_ECDSA_ANDERE Twisted Brain-Poolkurven(BP-Kurven)
  • BP-256T, auch bekannt als brainpoolP256t1
Schnorr ECSG_IBM_ECSDSA_S256
  • secp256r1
  • secp256k1
  • BP-256R, auch bekannt als brainpoolP256r1
  • BP-256T, auch bekannt als brainpoolP256t1
Schnorr-Zilliqa ECSG_IBM_ECSDSA_COMPR_MULTI
  • secp256r1
  • secp256k1
  • BP-256R, auch bekannt als brainpoolP256r1
  • BP-256T, auch bekannt als brainpoolP256t1

Referenz zur PKCS #11-Standard-API

Eine Dokumentation zum PKCS #11-Standard finden Sie in folgenden Quellen: