开始使用KMIP4J

article/2025/10/27 0:22:07

开始使用KMIP4J

        密钥管理互操作协议(KMIP)的开源实现

        KMIP定义了密钥生命周期管理系统(KLMS)和其客户之间的沟通。一些公司已经使用专有的KMIP实现,这些KMIP实现使用不同的编程语言,但是到现在为止,没有开源的解决方案存在。因此,KMIP4J这是一个使用Java代码开发的开源KMIP实现,现已在www.sourceforge.net。此文章给出了开源实现的概述。

        “加密提供了安全!”这句话可能是最大的一个根本性的误解在现代的IT安全领域。有密码学基本知识的人都知道,对安全通信来说,除了加密、消息完整性和通信伙伴的身份认证是至关重要的。但即使这些概念结合,如果用于加密的密钥不小心处理,它们也是一文不值。安全关系到从数据保护到密钥管理(密钥的创建、存储、更新和分发任务)的整个过程。

KMIP解决的问题

        一些最大的和最著名的IT公司组成了一个OASIS工作组,负责创建一个新的协议,KMIP一种协议可以被视为一种语言,它定义了事件的顺序,消息的内容,和它的编码。KMIP符合一个密钥管理系统和客户之间的沟通要求。

        今天,大公司通常有各种密钥生命周期管理系统(KLMS),每个都有自己的通信协议(见图1,左侧)KMIP采用不同的方法和合并所有的对象和操作方法到一个单独的协议中,使一个集中KLMS成为可能(见图1,右侧)使用一个协议的集中KLMS减少了操作和基础设施的成本,并且提供了一个一致的安全策略的实施。此外,在同一个应用程序中,所有的加密对象被同等地管理。

 

        一些公司已经使用专有实现的KMIP,用不同的编程语言,但是直到现在,不存在开放源代码解决方案。因此,我们决定写和发布KMIP的一个开源实现,这将允许协议扩展在不久的将来。

实现如何工作

        我们的系统的结构是基于客户机-服务器体系结构(见图2)。水平虚线显示了KMIP库和测试环境的边界。实现的测试环境由一个客户端和服务器端组成。客户端提供一个GUI程序,服务器端是一个简化KLMS和一个固有适配器。适配器允许将KMIP适应任何现有的或新的KLMS

 

        客户端GUI(client GUI)(参见图3)允许你选择并运行指定用例的请求。使用一个XML文件,您可以创建任何其他要求,比如创建请求一个128位长的对称密钥用于AES加密。此信息被转发到stub封装成一个KMIP容器,该容器使用KMIP指定对象,属性和操作填充。

        编码器(encoder)的任务是处理容器(container)中的信息和生成Tag-Type-Length-Value(TTLV)编码信息,根据KMIP规范(见图4)。解码器是编码器的配对,它将TTLV编码响应转换成容器。

        几个关键类实现一个接口,可以换成其他类通过改变配置文件(StubConfig.xmlweb.xml)。 在下次启动,请求的类被动态加载。这种方法使软件非常的灵活,很容易配置。通信层就是一个可替换类的一个例子,可以通过修改配置,将通信层改为其他的通信方式。默认情况下,客户端和服务器之间建立一个SSL/TLS连接。测试用例中,通过改变配置文件中的通信层配置,客户端和服务器之间也可以建立一个http连接

        在服务器端,一个web用服务器配上一个servlet,负责通信和消息的转发。解码消息后,适配器的任务是翻译KMIP成为KLMS可以理解的格式。想使用KMIP与现有KLMS系统的用户必须实现这个功能。所实现的测试环境的KLMS有4架构,一个接口层、服务层、管理器层和数据层。然而,目前该系统只支持KMIP1.0用例中指定的操作。

KMIP4J开源实现

        KMIP4J是KMIP 1.0规范的实施。在该过程中,OASIS发布了KMIP1.1版本,KMIP1.1没有集成到工作进展中。由于软件的灵活性和可扩展性,1.1版本可以实现。

        OASIS官方KMIP页面(参见参考资料)提供更多协议的规范。另一重要文件“KMIP V1.0的用例”。这些用例包括典型的KMIP通信请求-响应场景。文档包括每个消息的参数和TTLV编码结果。所有用例已经成功地测试在测试环境。

        下面的部分解释了如何使用KMIP4J实现一个简单的KMIP客户端。

实现KMIP客户端

        这个例子显示了一个非常简单的KMIP客户端。它使用KMIP4J库来创建一个请求到KLMS这个SimpleKMIPClient 的主要功能是配置一个记录器,创建一个KMIPStub,调用createKMIPRequest(参见清单1)。这个函数创建KMIP对象和属性,为一个“create key”操作,并将它们放置到一个KMIPcontainer容器中。 这个请求,KLMS被要求创建一个128位的对称密钥用于AES算法加密和解密。函数调用stub.processRequest(request)的结果在一个容器中,这个结果包含服务器响应的KMIP对象和属性。

        清单1.简单的KMIP客户端

import java.util.ArrayList;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
import ch.ntb.inf.kmip.attributes.*;
import ch.ntb.inf.kmip.container.*;
import ch.ntb.inf.kmip.kmipenum.*;
import ch.ntb.inf.kmip.objects.base.*;
import ch.ntb.inf.kmip.stub.KMIPStub;public class SimpleKMIPClient {// initialize Loggerprivate static final Logger logger = Logger.getLogger(SimpleKMIPClient.class);public static void main(String[] args) {// configure LoggerDOMConfigurator.configureAndWatch( "config/log4j-1.2.17.xml", 60*1000 );KMIPStub stub = new KMIPStub();KMIPContainer request = createKMIPRequest();KMIPContainer response = stub.processRequest(request);System.out.println(response.toString());}private static KMIPContainer createKMIPRequest() {// Create Container with one BatchKMIPContainer container = new KMIPContainer();KMIPBatch batch = new KMIPBatch();container.addBatch(batch);container.calculateBatchCount();// Set Operation and Attributebatch.setOperation(EnumOperation.Create);batch.addAttribute(new ObjectType(EnumObjectType.SymmetricKey));// Set TemplateAttribute with Attributes ArrayList<Attribute> templateAttributes = new ArrayList<Attribute>();templateAttributes.add(new 
CryptographicAlgorithm(EnumCryptographicAlgorithm.AES));templateAttributes.add(new CryptographicLength(128));templateAttributes.add(new CryptographicUsageMask(0x0C));TemplateAttributeStructure tas = new TemplateAttribute();tas.setAttributes(templateAttributes);batch.addTemplateAttributeStructure(tas);return container;}
}

        我们自己的服务器运行时,SimpleKMIPClient产生以下输出(参见图5)

        为了配置这个项目。 kmip4j.jar库需要添加到构建路径。此外,StubConfig.xml配置文件和log4j-1.2.17.xml必须添加,如图6所示。一个Eclipse项目和所有必要的文件可以在参考资料中找到。

        此外,如果你想使用HTTPS通信,您需要一个带有证书的Java密钥库文件。密钥库文件的路径必须在StubConfig.xml文件中指定。

        这个例子展示了客户端如何创建一个基本的KMIP请求到KLMS,使用我们的开源KMIP4J实现。这将是一个好的起点对于大多数客户。

结论

        KMIP定义了密钥生命周期管理系统和客户之间的沟通。与旧系统相比有很多不兼容的协议,一个集中的KLMS搭配KMIP减少操作和基础设施成本并且提供一致的安全策略的实施。使用KMIP是非常重要的一步对于更好的组织和加密对象更一致的管理。



源码下载:http://sourceforge.net/p/kmip4j/wiki/Home/

测试用例:http://interop.cryptsoft.com/kmip_uc/

原文:http://www.ibm.com/developerworks/library/se-kmip4j/


http://chatgpt.dhexx.cn/article/TCnLk94I.shtml

相关文章

KMIP4J数据处理流程

Kmip1.0测试环境介绍&#xff1a;http://blog.csdn.net/lihuayong/article/details/25098093 1 测试环境整体结构 系统的结构是基于客户端-服务器体系结构&#xff08;见下图&#xff09;。红色水平虚线显示了KMIP1.0库和测试环境的边界。实现的测试环境由一个客户端和服务器端…

KMIP1.0环境搭建

开发环境&#xff1a;MyEclipse 10 JDK&#xff1a;jdk1.7 Tomcat&#xff1a;apache-tomcat-7.0.6 数据库&#xff1a;H2嵌入式数据库 下载java 实现的KIMP1.0版本的源码包和相关的jar包文件。 下载地址&#xff1a;http://sourceforge.net/projects/kmip4j/files/KMIP4J-V1.0…

kmip4j_KMIP4J入门

kmip4j 有关管理数据安全性和合规性的电子书 组织难以确定多个合规性任务的优先级,并创建数据安全策略来满足这些要求并保护其最敏感的数据。 您可以下载eBook, 管理合规性并保护企业数据 ,以了解在企业数据保护策略中有效管理合规性要求和保护数据的六个基本步骤。 “加密…

KMIP协议/TTLV格式解码

文章目录 KMIP协议官方文档手动解析TTLV格式请求响应 自动解析解析请求和响应 KMIP协议官方文档 KMIP协议官方文档&#xff1a;http://docs.oasis-open.org/kmip/spec/ 打开是这样的&#xff0c;在我写这篇文章的时候 KMIP更新到了1.4版本 以下KIMIP1.0协议为例&#xff1a; …

导入pfx证书

本文分享从Micrsoft Manange Console&#xff08;简写为 MMC&#xff09;中导入PFX证书的内容&#xff0c;您可以按住“Windows R”&#xff0c;从Run对话框中输入mmc&#xff0c;打开MMC界面。 一&#xff1a;添加管理单元&#xff08;snap-in&#xff09; 从File主菜单中选…

关于pfx证书和cer证书

Pfx证书&#xff0c;同时包含了公钥信息和私钥信息&#xff08;用私钥加密进行签名证明是本人签名&#xff0c;用公钥解密对签名进行进行验证&#xff0c;证明签名的合法性&#xff09; PFX也称为PKCS#12(Public Key Cryptography Standards #12&#xff0c;公钥密码技术标准#…

OpenSSL 生成pfx

OpenSSL 生成pfx Window需要安装OpenSSL&#xff08;需要下载&#xff09;&#xff0c;Linux自带OpenSSL工具&#xff08;无需安装&#xff09; Window下载地址&#xff1a; 1. 官网 2. 上传了一份到csdn Window 命令 # 生成私钥 "D:\Program Files\OpenSSL-Win64\bi…

pfx 证书 转 jks 证书

今天在tomcat 配置 https pfx 证书时 总是配置失败 很是 头疼 &#xff0c;配置参数如下&#xff1a; <Connector port"443" protocol"org.apache.coyote.http11.Http11Protocol" SSLEnabled"true"maxThreads"150" scheme"ht…

通过openssl生成pfx证书

通过centos7上自带的openssl工具来生成。首先创建一个pfxcert目录。然后进入此目录。 1.生成.key文件&#xff08;内含被加密后的私钥&#xff09;&#xff0c;要求输入一个自定义的密码 [rootlocalhost cert]# openssl genrsa -des3 -out server.key 2048 Generating RSA priv…

windows合成pfx

思路 通过openssl工具合成pfx 步骤 1、通常情况下&#xff0c;开发人员的电脑都会安装git version软件&#xff0c;没有的话可以安装一个 2、安装好之后&#xff0c;回到桌面&#xff0c;鼠标右键-git bash here ,可以打开如下窗口 3、输入openssl回车&#xff0c;再输入…

服务器pfx文件如何导入,linux 导入pfx 证书

linux 导入pfx 证书 内容精选 换一换 单击“开始”,运行框输入“MMC”,回车。在MMC控制台菜单栏中单击“文件”,选择“添加/删除管理单元”。在“添加或删除管理单元”对话框,选择“可用管理单元”区域的“证书”。单击“添加”添加证书。在“证书管理”对话框,选择“计算…

.pfx 证书和 .cer 证书

证书系列&#xff1a; 1&#xff1a;.pfx 证书和 .cer 证书 2&#xff1a;导入pfx证书 通常情况下&#xff0c;作为文件形式存在的证书一般有三种格式&#xff1a; 第一种&#xff1a;带有私钥的证书&#xff0c;由Public Key Cryptography Standards #12&#xff0c;PKCS#1…

JavaDoc生成API详解

一、综述 1.1 简介 Javadoc 是 Java 自带的一种工具&#xff0c;其可以从程序源代码中抽取类、方法、成员等注释形成一个和源代码配套的API帮助文档。也就是说&#xff0c;只要在编写程序时以一套特定的标记【Tag】作注释&#xff0c;在程序编写完成后&#xff0c;通过Javadoc…

IDEA生成JavaDoc文档

1.第一步&#xff1a;首先创建一个新的文件夹。 2.第二步&#xff1a;选中所要生成的包。 3.第三步&#xff1a;点击顶部工具&#xff08;Tools&#xff09;菜单&#xff0c;并选择生成javadoc&#xff08;Generate JavaDoc&#xff09;这个选项。 4.第四部&#xff1a;①然后会…

两种方法生成javaDoc文档

如果生成javaDoc文档 一.使用命令行命令生成javaDoc文档 在文件位置打开cmd命令 回车打开 2.javadoc 参数 Java文件 -encoding UTF-8&#xff1a;编码为UTF-8 -charset UTF-8 &#xff1a;字符级编码为UTF-8 作用&#xff1a;避免出现乱码 3.生成Doc文档 4.查看生成文档 …

Javadoc生成的详细操作教程

文章目录 Javadoc文档一、什么是Javadoc文档二、Javadoc文档注释三、常用注释文档标记四、Javadoc选项说明4.1 选项说明4.2 标记的顺序4.3 可以多次使用标记 五、命令生成doc文档5.1 测试所在的目录结构5.2 命令生成Javadoc文档步骤方式一&#xff1a;单个或多个.java文件生成d…

Javadoc注释编写入门

Javadoc简介 Javadoc是Sun Microsystems为Java语言创建的文档生成器&#xff0c;在Javadoc推出之前&#xff0c;程序开发者往往需要为每一个程序单独创建并更新一个文档&#xff0c;这种做法耗时耗力且极不方便&#xff0c;Javadoc的主要优点就是在于能够根据源代码的注释&…

使用idea 生成Javadoc文档

使用idea 生成Javadoc文档 方法一&#xff1a;命令行窗口生成javaDoc 右键想要生成doc文档的类&#xff0c;点击Show in EXplorer 打开文件所在位置 ​ 在打开路径页面上选中路径&#xff0c;输入cmd回车 输入指令&#xff1a;–javadoc 参数 java文件 打开第一步的类的位…

javadoc命令使用

javadoc指令基本使用 Java 文档注释是用来生成 API 文档的。Java 文档注释以/**开始&#xff0c;并以*/结束&#xff0c;可以通过 Javadoc 生成 API 帮助文档&#xff0c;Java 帮助文档主要用来说明类、接口、方法、成员变量、构造器和内部类。 Javadoc &#xff08;Java API…

javadoc 使用

对于Java注释我们主要了解两种&#xff1a;  // 注释一行  /* ...... */ 注释若干行  但还有第三种&#xff0c;文档注释&#xff1a;  /** ...... */ 注释若干行&#xff0c;并写入 javadoc 文档  通常这种注释的多行写法如下&#xff1a;  /**  * .........  …