PKCS #11library表包含了一個因密鑰類型而異的屬性列表。它指出了在使用HSM的特定加密功能時,特定的屬性是否支持某個特定的密鑰類型。
屬性 | 描述 | 可以在對象創建后改變嗎? | 默認值 |
CKA_SIGN | 布爾類型,如果密鑰支持簽名,則CK_TRUE。 | 是 | FALSE |
CKA_VERIFY | 布爾類型,如果密鑰支持驗證,則CK_True。 | 是 | FALSE |
CKA_ENCRYPT | 布爾類型,如果密鑰支持加密,則CK_TRUE。 | 是 | FALSE |
CKA_DECRYPT | 布爾類型,如果密鑰支持解密,則CK_TRUE。 | 是 | FALSE |
CKA_WRAP | 布爾類型,如果密匙支持包裝,則CK_TRUE。 | 是 | FALSE |
CKA_UNWRAP | 布爾類型,如果密鑰支持解包,則CK_TRUE。 | 是 | FALSE |
CKA_LABEL | 對象的描述 | 是 | NA |
CKA_ID | 字節數組;鍵的標識符。 | 否 | NA |
CKA_CHECK_VALUE | 字節數組;密鑰校驗碼。 | 否 | NA |
CKA_CLASS | 對象類 | 否 | NA |
CKA_LOCAL | 布爾類型,如果密匙是在本地生成的,則為真。 | 否 | True |
CKA_EXTRACTABLE | 布爾類型,如果密鑰是可提取的并且可以被包裝,則為TRUE。 | 否 | TRUE |
CKA_EC_PARAMS | 否 | NA | |
CKA_EC_POINT(only for create public key) | 否 | NA | |
CKA_PRIVATE_EXPONENT (only for create private object) | 私密指數d。 | 否 | NA |
CKA_SENSITIVE | 如果密鑰是敏感的,則為TRUE。 | 是 | TRUE |
CKA_DERIVE |
| 是 | FALSE |
CKA_TRUSTED |
| 是 | FALSE |
CKA_NEVER_EXTRACTABLE | 返回HSM設置的值。 | 否 | TRUE for private and secret keys |
CKA_ALWAYS_SENSITIVE | 如果密鑰一直有CK_SENSITIVE屬性被設置為CK_TRUE,則CK_TRUE。 | 否 | TRUE |
CKA_WRAP_WITH_TRUSTED |
| 取決于初始值 | FALSE |
CKA_DESTROYABLE |
使用C_DestroyObject。注意:這個屬性不適用于會話密鑰。這是對規范的一種偏離。 | 是 | TRUE |
CKA_WRAP_TEMPLATE | 用于封裝密鑰。與任何使用該封裝密鑰封裝的密鑰匹配的屬性模板。不匹配的密鑰不能被封裝起來。 更多信息參見CKA_WRAP_TEMPLATE。 | 是 | Not defined |
CKA_UNWRAP_TEMPLATE | 用于封裝密鑰。應用于任何使用此封裝密鑰解開的密鑰屬性模板。任何用戶提供的模板都會在此模板之后應用,就像該對象已經被創建一樣。 更多信息參見CKA_UNWRAP_TEMPLATE。 | 是 | Not defined |
屬性有具體的表現,詳情如下:
CKA_NEVER_EXTRACTABLE
CKA_ALWAYS_SENSITIVE
CKA_WRAP_TEMPLATE
CKA_UNWRAP_TEMPLATE
CKA_DERIVE
CKA_NEVER_EXTRACTABLE
CKA_NEVER_EXTRACTABLE屬性根據密鑰的歷史記錄來追蹤 密鑰的CKA_EXTRACTABLE屬性的歷史。它是一個只讀的屬性,不能由任何用戶作為創建/生成模板的一部分來設置。
CKA_ALWAYS_SENSITIVE
CKA_ALWAYS_SENSITIVE屬性是根據密鑰的CKA_SENSITIVE屬性的歷史來追蹤的。 CKA_SENSITIVE屬性的歷史,不能由用戶作為導入/生成模板的一部分來設置,這是一個只讀屬性。
CKA_WRAP_TEMPLATE
CKA_WRAP_TEMPLATE屬性只適用于封裝密鑰。它指定了一個屬性模板,該模板必須與要封裝的密鑰的屬性相匹配,如果不匹配,封裝操作將失敗。
默認是空的,避免有一個單一的封裝密鑰被用來封裝所有的密鑰。
CKA_WRAP必須為 "true "才能使用這個屬性。
下表列出了作為CKA_WRAP_TEMPLATE操作的一部分所支持的子屬性。 CKA_WRAP_TEMPLATE的一部分,支持操作C_GenerateKeyPair, C_GenerateKey和C_CreateObject:
支持的子屬性 | HSM 接受的輸入 |
CKA_CLASS | 接受私人和保密類的。 |
CKA_KEY_TYPE | 根據密鑰類型接受。 |
CKA_LOCAL | 如果是TRUE或FALSE,則接受。 |
CKA_TOKEN | 如果是TRUE或FALSE,則接受。 |
CKA_PRIVATE | 如果是TRUE或FALSE,則接受。 |
CKA_ENCRYPT | 如果是TRUE或FALSE,則接受。 |
CKA_DECRYPT | 如果是TRUE或FALSE,則接受。 |
CKA_DERIVE | 如果是TRUE或FALSE,則接受。 |
CKA_DESTROYABLE | 如果是TRUE或FALSE,則接受。 |
CKA_SIGN | 如果是TRUE或FALSE,則接受。 |
CKA_VERIFY | 如果是TRUE或FALSE,則接受。 |
CKA_WRAP | 如果是TRUE或FALSE,則接受。 |
CKA_UNWRAP | 如果是TRUE或FALSE,則接受。 |
CKA_SENSITIVE | 如果是TRUE或FALSE,則接受。 |
CKA_ALWAYS_SENSITIVE | 如果是TRUE或FALSE,則接受。 |
CKA_MODULUS_BITS | 接受1024到4096之間的值。 |
CKA_VALUE_LEN | 適用于保密密鑰,接受1到800之間的值。 |
CKA_WRAP_WITH_TRUSTED | 如果是TRUE或FALSE,則接受。 |
CKA_TRUSTED | 如果是TRUE或FALSE,則接受。 |
CKA_UNWRAP_TEMPLATE
CKA_UNWRAP_TEMPLATE只適用于解封裝的密鑰。在一個解封裝操作中,一個帶有CKA_UNWRAP_TEMPLATE屬性的模板可以被預置到每個被解封裝的密鑰的模板中,只要與每個密鑰沒有沖突。 一個CKA_UNWRAP_TEMPLATE屬性可以被預置到每個被解封裝的密鑰的模板上,只要與用戶定義的模板沒有沖突。
默認為空。
CKA_UNWRAP必須為TRUE才能使用這個屬性。
下表列出了作為CKA_UNWRAP_TEMPLATE操作的一部分所支持的子屬性。CKA_UNWRAP_TEMPLATE的一部分,支持操作C_GenerateKeyPair, C_GenerateKey和C_CreateObject:
支持的子屬性,固件讀取接受的輸入值 | |
CKA_CLASS | 只接受私人和密文類。 |
CKA_KEY_TYPE | 接受基于密鑰類的。 |
CKA_TOKEN | 如果是TRUE或FALSE,則接受。 |
CKA_PRIVATE | 如果是TRUE或FALSE,則接受。 |
CKA_ENCRYPT | 如果是TRUE或FALSE,則接受。 |
CKA_DECRYPT | 如果是TRUE或FALSE,則接受。 |
CKA_DERIVE | 如果是TRUE或FALSE,則接受。 |
CKA_DESTROYABLE | 如果是TRUE或FALSE,則接受。 |
CKA_SIGN | 如果是TRUE或FALSE,則接受。 |
CKA_VERIFY | 如果是TRUE或FALSE,則接受。 |
CKA_WRAP | 如果是TRUE或FALSE,則接受。 |
CKA_UNWRAP | 如果是TRUE或FALSE,則接受。 |
CKA_SENSITIVE | 如果是TRUE或FALSE,則接受。 |
CKA_EXTRACTABLE | 如果是TRUE或FALSE,則接受。 |
CKA_MODULUS_BITS | 接受1024和4096之間的值。 |
CKA_VALUE_LEN | 適用于保密密鑰。接受1到800之間的值。 |
CKA_WRAP_WITH_TRUSTED | 如果是TRUE或FALSE,則接受。 |
CKA_DERIVE
CKA_DERIVE屬性用于從輸入的密鑰中派生出另一個密鑰。這個屬性對所有公鑰來說必須是FALSE,不能設置為TRUE。對于密文和EC私人鑰匙,它可以是TRUE或FALSE。