KMIP 中的模板和模板属性结构有什么区别?

What is the difference between a Template and Template-Attribute Structure in KMIP?

我目前正在使用开源库 KMIP4J 学习和开发 KMIP (Spec 1.0)。我正在查看规范 sheet 中作为示例提供的用例,但我一直在尝试区分模板和模板属性结构的使用。

这两个用例有什么区别?两者都有密码算法和密码长度属性,但我不明白它们之间的区别

KMIP Specification 中,有两种不同类型的对象:Managed ObjectsBase Objects.

  • 一个托管对象指的是:

    Objects stored and maintained by a key management system [KMIP Spec, Section 1]

    托管对象示例:证书、对称密钥、Public密钥、私钥、模板

  • A Base Object指的是:

    Objects used within the messages of the protocol but not managed by the key management system. Base Objects are components of Managed Objects. [KMIP Spec, Section 2.1]

    基本对象示例:属性、凭证、键值、模板属性结构


  • Template 是一种托管对象。

    A Template is the named Managed Object containing the client-settable attributes of a Managed Cryptographic Object (i.e., a stored, named list of attributes). Attributes specified in a Template apply to any object created that references the Template by name. [KMIP Spec, Section 2.2.6]

  • 模板属性结构是一种基本对象。

    Template-Attribute Structures are used in various operations to provide the desired attribute values and/or template names in the request and to return the actual attribute values in the response. [KMIP Spec, Section 2.1.8]


那么,让我们看看您指出的用例:

在用例 3.1.1 中:

  1. 客户端发送创建请求,其中包含对象类型(对称密钥)和包含该密钥所需属性值列表的模板属性结构
    • 密码算法
    • 密码长度
    • 加密使用掩码。

在用例 3.1.4 中:

  1. 客户端使用 Register 操作注册一个 Template,包含一组特定的属性:
    • 密码算法
    • 密码长度
    • 名称,指的是要创建的Template的名称:Template1
  2. 客户端发送创建请求,与之前一样,包含对象类型(对称密钥)和模板属性结构。然而,这次模板属性结构包含:
    • 对名为 Template1Template 的引用,表明该操作应使用 Template1 指定的属性(我们从第 1 步中知道密码算法和密码长度)
    • 名称,指Key的名称:key1
    • 加密使用掩码

所以这两个操作实质上创建了具有相同属性值的相同对称密钥,但第二种情况使用了预定义的模板(并且简单地添加了一个密钥名称),而第一种情况则没有。


旁注:

KMIP 1.0 Specification 在这一点上已经相当过时了。 KMIP 1.3 于 2015 年 12 月发布。我特别提到这一点是因为从 1.3 开始不推荐使用 Template 结构。