开始使用KMIP4J
开始使用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.xml或web.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/
开始使用KMIP4J相关推荐
- KMIP4J数据处理流程
Kmip1.0测试环境介绍:http://blog.csdn.net/lihuayong/article/details/25098093 1 测试环境整体结构 系统的结构是基于客户端-服务器体系结构 ...
- KMIP协议/TTLV格式解码
文章目录 KMIP协议官方文档 手动解析TTLV格式 请求 响应 自动解析 解析请求和响应 KMIP协议官方文档 KMIP协议官方文档:http://docs.oasis-open.org/kmip/ ...
- kmip4j_KMIP4J入门
kmip4j 有关管理数据安全性和合规性的电子书 组织难以确定多个合规性任务的优先级,并创建数据安全策略来满足这些要求并保护其最敏感的数据. 您可以下载eBook, 管理合规性并保护企业数据 ,以了解 ...
- KMIP1.0环境搭建
开发环境:MyEclipse 10 JDK:jdk1.7 Tomcat:apache-tomcat-7.0.6 数据库:H2嵌入式数据库 下载java 实现的KIMP1.0版本的源码包和相关的jar包 ...
最新文章
- HEVC/H.265 的未来必须是使用并行处理(OpenCL?) OpenCV和OpenCL区别
- easyui使用ajax获取json文件,easyui 加载本地json 文件的方法
- VirtualBox 安装Centos 之访问虚拟机里面的服务受阻解决方案
- Textview的3种事件
- java系统系统异常处理,银行系统(Java)异常处理
- 发送带有接缝的活动邀请
- 章泽天将赴英国剑桥大学读书?证件照都是这么能打...
- 诡异的dp(凸多边形分割):catalan数
- 公司部分断电,这些人就没法干活?
- linux系统镜像官方下载地址
- 流量渠道 转化率 买家行为 处罚扣分规则 如何不被抓单,被判虚假交易对店铺的影响
- 【AC.HASH】OpenHarmony啃论文俱乐部——哈希技术:综述和分类(译)
- Django(14)-应用及分布式路由
- [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
- R语言分组计算平均数、SE、SD等等
- SUMO学习日志(一)SUMO安装
- STM32 HAL库之IIC
- 这五件事,二次SaaS创业的老炮儿都在做
- 超有创意的素材模板,摸鱼的技能又提升了
- 与阿里云整个生态体系共同成长,更快更好的为房地产行业客户提供高价值的服务。...