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.
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.
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.
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.
PKCS #11-Mechanismus | Unterstützte Kurventypen | Unterstützte Kurvennamen |
---|---|---|
CKM_EC_KEY_PAIR_GEN | NIST-Kurven(National Institute of Standards and Technology) |
|
CKM_EC_KEY_PAIR_GEN | Kurven des regulären Hirnpools(BP) |
|
CKM_EC_KEY_PAIR_GEN | Twisted Brain-Poolkurven(BP-Kurven) |
|
CKM_EC_KEY_PAIR_GEN | SEC-Kurven(Standards for Efficient Cryptography) |
|
CKM_EC_KEY_PAIR_GEN | Kantenkurven |
|
CKM_EC_KEY_PAIR_GEN | Kantenkurven |
|
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.
Standard oder Schema | PKCS #11-Mechanismus | Unterstützte Kurventypen | Unterstützte Kurvennamen |
---|---|---|---|
BIP32/BIP44 | CKM_IBM_BTC_ABLEITEN | SEC-Kurven(Standards for Efficient Cryptography) |
|
SLIP10 | CKM_IBM_BTC_ABLEITEN | NIST-Kurven(National Institute of Standards and Technology) |
|
SLIP10 | CKM_IBM_BTC_ABLEITEN | SEC-Kurven(Standards for Efficient Cryptography) |
|
SLIP10 | CKM_IBM_BTC_ABLEITEN | Kantenkurven |
|
EdDSA | CKM_IBM_ED25519_SHA512 | Kantenkurven |
|
Schnorr | CKM_IBM_ECDSA_ANDERE | SEC-Kurven(Standards for Efficient Cryptography) |
|
Schnorr | CKM_IBM_ECDSA_ANDERE | NIST-Kurven(National Institute of Standards and Technology) |
|
Schnorr | CKM_IBM_ECDSA_ANDERE | Kurven des regulären Hirnpools(BP) |
|
Schnorr | CKM_IBM_ECDSA_ANDERE | Twisted Brain-Poolkurven(BP-Kurven) |
|
Schnorr | ECSG_IBM_ECSDSA_S256 |
|
|
Schnorr-Zilliqa | ECSG_IBM_ECSDSA_COMPR_MULTI |
|
Referenz zur PKCS #11-Standard-API
Eine Dokumentation zum PKCS #11-Standard finden Sie in folgenden Quellen: