KMIP - Hardware Security Modules Meta-Data-Only (MDO) Keys Saikat Saha & Denis Pochuev Feb 2012
2 Purpose of HSM (Hardware Security Module) - Hardware based Key Storage Device - Provides High Assurance – FIPS Level 2 & 3 - Creates, Stores and manages various cryptographic objects Symmetric Keys Asymmetric Keys Certificates - Provides Crypto Acceleration and root of trust (trust anchor) - Available in PCI as well as Network Appliance versions with multiple partitions - NIST disapproves key material leaving the FIPS boundary
3 Enterprise Key Management for HSMs EKM Centralized Key Management Remote sites handle only IT related activities Key Archive Backup/Archive Initialization Activation Audit Log KMIP Key Management Interoperability Protocol Allows for interoperability between 1.differing device types 2.devices from different vendors EKM Management Console 3 Application HSM EKM Client HSM EKM Client
4 Backup HSM and Key Archive HSM With Multiple Partitions Audit Log Key Secure Application + HSM with EKM Client Database + HSM with EKM Client Initialization Activation EKM Web Browser Centralized Administration of HSMs with EKM KMIP EKM Centrally see all keys created and used by HSM Stores and manages key attributes Centralized audit for compliance
5 General idea behind MDO keys Core Server Functionality = Key Mgmt + Key Usage Where does the key usage happen? - at the server - at the client (HSM case) Cryptographic Objects = Key Material + Meta Data If key usage can be restricted only to clients, why not keep the key material there and only transfer Meta Data? Application HSM Server Key material perimeter
6 KMIP commands and MDO keys Supported KMIP Commands Create Create Key Pair Register Locate Get Get Attributes Get Attribute List Add Attribute Modify Attribute Delete Attribute Destroy Query MDO KMIP Commands Create Create Key Pair Register Locate Get Get Attributes Get Attribute List Add Attribute Modify Attribute Delete Attribute Destroy Query
7 Registered Object Meta-Data Regular KMIP Request Request Message (0x420078) | 0x01 | | Request Header (0x420077) | 0x01 | … Batch Item (0x42000f) | 0x01 | | Operation (0x42005c) | 0x05 | 0x | 0x Unique Batch Item ID (0x420093) | 0x08 | 0x | 39 Request Payload (0x420079) | 0x01 | | Object Type (0x420057) | 0x05 | 0x | 0x Template-Attribute (0x420091) | 0x01 | | Attribute (0x420008) | 0x01 | | Attribute Name (0x42000a) | 0x07 | 0x | Cryptographic Usage Mask Attribute Value (0x42000b) | 0x02 | 0x | 0x Attribute (0x420008) | 0x01 | | Attribute Name (0x42000a) | 0x07 | 0x | Name Attribute Value (0x42000b) | 0x01 | | Name Value (0x420055) | 0x07 | 0x | mykey Name Type (0x420054) | 0x05 | 0x | 0x Symmetric Key (0x42008f) | 0x01 | | Key Block (0x420040) | 0x01 | | Key Format Type (0x420042) | 0x05 | 0x | 0x Key Value (0x420045) | 0x01 | | Key Material (0x420043) | 0x08 | 0x | ab cd ef … Cryptographic Algorithm (0x420028) | 0x05 | 0x | 0x Cryptographic Length (0x42002a) | 0x02 | 0x | 0x KMIP Register operation in detail
8 Regular KMIP Request Request Message (0x420078) | 0x01 | | Request Header (0x420077) | 0x01 | … Batch Item (0x42000f) | 0x01 | | Operation (0x42005c) | 0x05 | 0x | 0x Unique Batch Item ID (0x420093) | 0x08 | 0x | 39 Request Payload (0x420079) | 0x01 | | Object Type (0x420057) | 0x05 | 0x | 0x Template-Attribute (0x420091) | 0x01 | | Attribute (0x420008) | 0x01 | | Attribute Name (0x42000a) | 0x07 | 0x | Cryptographic Usage Mask Attribute Value (0x42000b) | 0x02 | 0x | 0x Attribute (0x420008) | 0x01 | | Attribute Name (0x42000a) | 0x07 | 0x | Name Attribute Value (0x42000b) | 0x01 | | Name Value (0x420055) | 0x07 | 0x | mykey Name Type (0x420054) | 0x05 | 0x | 0x Symmetric Key (0x42008f) | 0x01 | | Key Block (0x420040) | 0x01 | | Key Format Type (0x420042) | 0x05 | 0x | 0x Key Value (0x420045) | 0x01 | | Key Material (0x420043) | 0x08 | 0x | ab cd ef … Cryptographic Algorithm (0x420028) | 0x05 | 0x | 0x Cryptographic Length (0x42002a) | 0x02 | 0x | 0x KMIP Register operation in detail MDO KMIP Request Request Message (0x420078) | 0x01 | 0x | Request Header (0x420077) | 0x01 | … Batch Item (0x42000f) | 0x01 | 0x | Re Operation (0x42005c) | 0x05 | 0x | 0x Unique Batch Item ID (0x420093) | 0x08 | 0x | 30 Request Payload (0x420079) | 0x01 | 0x | Object Type (0x420057) | 0x05 | 0x | 0x Template-Attribute (0x420091) | 0x01 | 0x000000e8 | Attribute (0x420008) | 0x01 | 0x | Attribute Name (0x42000a) | 0x07 | 0x | Cryptographic Algorithm Attribute Value (0x42000b) | 0x05 | 0x | 0x Attribute (0x420008) | 0x01 | 0x | Attribute Name (0x42000a) | 0x07 | 0x | Cryptographic Length Attribute Value (0x42000b) | 0x02 | 0x | 0x Attribute (0x420008) | 0x01 | 0x | Attribute Name (0x42000a) | 0x07 | 0x | Cryptographic Usage Mask Attribute Value (0x42000b) | 0x02 | 0x | 0x Attribute (0x420008) | 0x01 | 0x | Attribute Name (0x42000a) | 0x07 | 0x | Name Attribute Value (0x42000b) | 0x01 | 0x | Name Value (0x420055) | 0x07 | 0x | mykey Name Type (0x420054) | 0x05 | 0x | 0x
9 New key format What happened to Key Format in previous request? - Key Format is not a full-fledged attribute - Absence of the object => custom key format - Key Format is purely internal
10 KMIP Updates for MDO keys Crypto Domain Parameters o Crypto parameters need to be a part of the Register command, not only Create Key Pair ECC Enumeration o Need a broader set of supported curves
11 Questions? Thank you.