JCE调用密码卡实现内置RSA密钥运算的方法及装置制造方法及图纸

技术编号:14746249 阅读:57 留言:0更新日期:2017-03-01 22:39
本发明专利技术公开了一种JCE调用密码卡实现内置RSA密钥运算的方法及装置,装置包括终端设备和密码卡;终端设备包括应用程序模块、JCE实现模块和密码卡管理工具;密码卡插接在所述终端设备上,与所述密码卡管理工具连接用于存储生成的RSA密钥对;应用程序模块与JCE实现模块连接用于发送RSA密钥对导出或RSA密钥运算请求;JCE实现模块与密码卡连接用于将处理后的RSA密钥对导出请求或RSA密钥运算请求发送至密码卡,密码卡响应所述JCE实现模块的请求。本发明专利技术实现了JCE调用密码卡中存储的RSA密钥进行密钥运算,保证了私钥的安全存储及通信的安全。

【技术实现步骤摘要】

本专利技术涉及信息安全
,特别涉及一种JCE调用密码卡实现内置RSA密钥运算的方法及装置
技术介绍
Java是一中可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台的总成。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。Java平台定义了一组API,跨越主要安全领域,包括密码,公钥基础设施,认证,安全通信和访问控制。这些API使开发人员能够轻松地集成到他们的应用程序代码的安全性,主要围绕实施的独立性、实现互操作性和算法的可扩展性展开。JCE是JavaCryptographyExtension的简称,(Java密码扩展)提供用于加解密、密钥生成、密钥管理和密钥协商以及MessageAuthenticationCode(MAC)算法的框架和实现。它提供对对称、不对称、块和流密码的加密支持,它还支持安全流和密封的对象。JCE采用实现的独立和算法的独立,使JCE安全框架具有了良好的扩展性。它使用提供者(provider)的理念为管理和组织所有密码安全的实现并为应用程序提供服务。JAVA环境中可以同时存在多种不同的JCE实现,在security.provider中定义了一套标准接口,所有的JCE实现都要实现这一套标准接口。JCE的服务提供者,应该提供一套基本的安全服务,其中RSA算法是当前应用最为广泛的一种非对称密码算法。RSA公钥由两部分组成:n:RSA合数模,是一个正整数e:RSA公开密,是一个正整数RSA私钥可采用如下两种表示方法。第一种表示方法,由一对整数(n,d)构成:n:RSA合数模,是一个正整数d:RSA私有幂,是一个正整数第二种表示方法,由一个五元组(p,q,dP,dQ,qInv)构成:p:第一个因子,是一个正整数q:第二个因子,是一个正整数dP:第一个因子的CRT幂,是一个正整数dQ:第二个因子的CRT幂,是一个正整数qInv:CRT系数,是一个正整数RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。RSA是公开密钥密码体制,所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。在公开密钥密码体制中,加密密钥(即公开密钥)是公开信息,而解密密钥(即秘密密钥)是需要保密的。加密算法和解密算法也都是公开的,虽然解密密钥是由公开密钥决定的,但却不能根据公开密钥计算出解密密钥。所以,RSA算法的安全性关键在于私钥的安全性。JCE中提供了关于RSA算法的相关接口,包括密钥生成、加密、解密、签名、验证等基础功能。其中,解密和签名需要传入对应的私钥对象才能进行具体的解密和签名操作,但私钥对象作为安全的核心,存储在应用内存中,非常容易被窃取。
技术实现思路
本专利技术的目的在于克服现有技术的不足,提出一种克服上述问题或者至少部分地解决上述问题的一种JCE调用密码卡实现内置RSA密钥运算的方法,实现了JCE调用密码卡中存储的RSA密钥进行密钥运算,保证了私钥的安全存储及通信的安全。本专利技术解决其技术问题所采用的技术方案是:一种JCE调用密码卡实现内置RSA密钥运算的方法,包括密钥导出步骤和密钥运算步骤;所述密钥导出步骤包括:应用程序模块向JCE实现模块发送包括密钥标识的第一RSA密钥对导出请求;JCE实现模块接收第一RSA密钥对导出请求,创建带有密钥标识的随机源,将密钥标识转换成密钥号,并向密码卡发送包括密钥号的第二RSA密钥对导出请求;密码卡接收第二RSA密钥对导出请求,并向JCE实现模块发送已存储的指定密钥号对应的RSA密钥对的公钥数据;JCE实现模块接收密码卡发送的公钥数据,根据公钥数据及密钥号组装假私钥数据,并将公钥数据、假私钥数据转换成密钥对象发送给应用程序模块;所述密钥运算步骤包括:应用程序模块向JCE实现模块发送包括密钥对象的第一RSA密钥运算请求;JCE实现模块接收第一RSA密钥运算请求,将接收到的密钥对象进行解析,并根据解析结果向密码卡发送包括公钥或密钥号的第二RSA密钥运算请求;密码卡接收第二RSA密钥运算请求,并向JCE实现模块发送运算结果;JCE实现模块接收密码卡发送的运算结果,并将运算结果发送给应用程序模块。进一步的,所述密钥导出步骤之前还包括密钥生成步骤,所述密钥生成步骤包括:密码卡接收密码卡管理工具触发的密钥生成请求,获取密码卡管理工具指定的密钥号和膜长;密码卡内部根据指定的密钥号和膜长完成RSA密钥对的生成及存储。进一步的,密码卡中存储的RSA密钥对的私钥以密文形式存储且无法导出。进一步的,所述假私钥按照RSA密钥对中私钥的格式进行组装。进一步的,私钥由一对整数(n,d)构成时,所述假私钥的组装方法具体包括:将除n以外的其他组成元素以二进制的随机数代替;在元素d或者除n以外的其他元素中嵌入密钥号信息;将嵌入密钥号后的二进制随机数转换成正整数并组装成假私钥。进一步的,所述密钥运算步骤中,解析到的密钥对象中包括公钥时,将公钥转换成密码卡内部识别数据格式,发送给密码卡进行加密运算。进一步的,所述密钥运算步骤中,解析到的密钥对象中包括假私钥时,则将假私钥中存储密钥号信息的元素由正整数转换成二进制数组,并找出嵌入元素d或者除n以外的其他元素中的密钥号,发送给密码卡进行解密运算。进一步的,发送给密码卡进行加密运算的消息中还包括需要进行加密的数据。进一步的,密码卡进行加密运算后将加密后的密文发送给JCE实现模块。进一步的,发送给密码卡进行解密密运算的消息中还包括需要进行解密的数据。进一步的,密码卡进行解密运算后将解密后的明文发送给JCE实现模块。一种JCE调用密码卡实现内置RSA密钥运算的装置,包括终端设备和密码卡;所述终端设备包括应用程序模块、JCE实现模块和用于为密码卡生成RSA密钥对指定密钥号和膜长的密码卡管理工具;所述密码卡插接在所述终端设备上,与所述密码卡管理工具连接用于生成并存储指定密钥号和膜长的RSA密钥对;所述应用程序模块与所述JCE实现模块连接用于发送RSA密钥对导出或RSA密钥运算请求;所述JCE实现模块与所述密码卡连接用于将处理后的RSA密钥对导出请求或RSA密钥运算请求发送至所述密码卡,所述密码卡响应所述JCE实现模块的请求。进一步的,所述密码卡通过PCI接口、PCI_E接口或usb接口插接到所述终端设备。本专利技术提供的技术方案带来的有益效果是:1、采用密码卡在硬件中生成并加密存储RSA密钥对,实现了私钥的安全保护;2、使用JCE实现模块调用密码卡内部RSA密钥对,并使用密码卡硬件进行密码运算,解决了私钥在内存中存储或使用时容易被获取的问题;3、采用密码卡管理工具配置密钥号和膜长,密码卡根据所配置的密钥号和膜长进行RSA密钥对生成并存储;由于密码卡管理工具为界面工具,用户需生成RSA密钥对时操作简单方便。上述说明仅是本专利技术技术方案的概述,为了能够更清楚地了解本专利技术的技术手段,从而可依本文档来自技高网
...
JCE调用密码卡实现内置RSA密钥运算的方法及装置

【技术保护点】
一种JCE调用密码卡实现内置RSA密钥运算的方法,其特征在于,包括密钥导出步骤和密钥运算步骤;所述密钥导出步骤包括:应用程序模块向JCE实现模块发送包括密钥标识的第一RSA密钥对导出请求;JCE实现模块接收第一RSA密钥对导出请求,创建带有密钥标识的随机源,将密钥标识转换成密钥号,并向密码卡发送包括密钥号的第二RSA密钥对导出请求;密码卡接收第二RSA密钥对导出请求,并向JCE实现模块发送已存储的指定密钥号对应的RSA密钥对的公钥数据;JCE实现模块接收密码卡发送的公钥数据,根据公钥数据及密钥号组装假私钥数据,并将公钥数据、假私钥数据转换成密钥对象发送给应用程序模块;所述密钥运算步骤包括:应用程序模块向JCE实现模块发送包括密钥对象的第一RSA密钥运算请求;JCE实现模块接收第一RSA密钥运算请求,将接收到的密钥对象进行解析,并根据解析结果向密码卡发送包括公钥或密钥号的第二RSA密钥运算请求;密码卡接收第二RSA密钥运算请求,并向JCE实现模块发送运算结果;JCE实现模块接收密码卡发送的运算结果,并将运算结果发送给应用程序模块。

【技术特征摘要】
1.一种JCE调用密码卡实现内置RSA密钥运算的方法,其特征在于,包括密钥导出步骤和密钥运算步骤;所述密钥导出步骤包括:应用程序模块向JCE实现模块发送包括密钥标识的第一RSA密钥对导出请求;JCE实现模块接收第一RSA密钥对导出请求,创建带有密钥标识的随机源,将密钥标识转换成密钥号,并向密码卡发送包括密钥号的第二RSA密钥对导出请求;密码卡接收第二RSA密钥对导出请求,并向JCE实现模块发送已存储的指定密钥号对应的RSA密钥对的公钥数据;JCE实现模块接收密码卡发送的公钥数据,根据公钥数据及密钥号组装假私钥数据,并将公钥数据、假私钥数据转换成密钥对象发送给应用程序模块;所述密钥运算步骤包括:应用程序模块向JCE实现模块发送包括密钥对象的第一RSA密钥运算请求;JCE实现模块接收第一RSA密钥运算请求,将接收到的密钥对象进行解析,并根据解析结果向密码卡发送包括公钥或密钥号的第二RSA密钥运算请求;密码卡接收第二RSA密钥运算请求,并向JCE实现模块发送运算结果;JCE实现模块接收密码卡发送的运算结果,并将运算结果发送给应用程序模块。2.根据权利要求1所述的JCE调用密码卡实现内置RSA密钥运算的方法,其特征在于,所述密钥导出步骤之前还包括密钥生成步骤,所述密钥生成步骤包括:密码卡接收密码卡管理工具触发的密钥生成请求,获取密码卡管理工具指定的密钥号和膜长;密码卡内部根据指定的密钥号和膜长完成RSA密钥对的生成及存储。3.根据权利要求1所述的JCE调用密码卡实现内置RSA密钥运算的方法,其特征在于,所述假私钥按照RSA密钥对中私钥的格式进行组装。4.根据权利要求3所述的JCE调用密码卡实现内置RSA密钥运算的方法,其特征在于,私钥由一对整数(n,d)构成时,所述假私钥的组装方法具体包括:将除n以外的其他组成元素以二进制的随...

【专利技术属性】
技术研发人员:徐波郭刚宋志华
申请(专利权)人:山东渔翁信息技术股份有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1