一种支持数据签名的java卡实现方法技术

技术编号:10991874 阅读:129 留言:0更新日期:2015-02-04 10:44
本发明专利技术提供一种支持数据签名的java卡实现方法,属于信息安全领域。采用的方法为:java卡虚拟机根据函数调用指令,执行被调用的函数;通过执行第一函数,将传入的第一数据信息作为私钥保存,根据私钥计算公钥,对第二数据信息、公钥进行哈希计算,将得到的哈希结果作为第一中间值,将计算模式信息作为签名模式保存,将公钥、传入的第二数据信息和第一中间值保存;通过执行第二函数,更新第一向量值;通过执行第三函数,分配存储区,对第一向量值和传入的原待签名数据进行哈希计算,得到第二中间值,获取私钥,对私钥和第二中间值进行签名,将得到的签名结果保存至存储区中,计算签名结果的长度,返回签名结果的长度。

【技术实现步骤摘要】
一种支持数据签名的java卡实现方法
本专利技术涉及信息安全领域,特别涉及一种支持数据签名的java卡实现方法。
技术介绍
随着通信技术的迅速发展,信息网络得到广泛的应用,与此同时计算机网络犯罪也层出不穷。人们通常采用集合国密算法的智能卡进行身份识别,从而达到保护信息网络内部数据安全的目的。目前,智能卡种类很多,java卡作为智能卡中的一种得到广泛应用,然而,本专利技术技术人员在开发的过程中发现,java卡不能够支持国密算法,限制了java卡在身份识别方面的应用。
技术实现思路
为了解决现有技术的缺陷,现提出一种支持数据签名的java卡实现方法,包括:java卡虚拟机进行初始化时,清空第一存储区;当所述java卡虚拟机执行函数调用指令时,所述java卡虚拟机从堆栈中获取函数引用及对象引用:当第一函数被调用时,执行步骤S1;步骤S1:所述java卡虚拟机获取第一数据信息、计算模式信息、第二数据信息,执行步骤S2;步骤S2:所述java卡虚拟机判断所述第一数据信息的类型和所述计算模式信息的类型,如果所述第一数据信息为私钥类型,并且所述计算模式信息为签名模式,则将所述第一数据信息作为私钥保存至所述第一存储区中,根据所述私钥计算公钥,执行步骤S3;否则报错,结束;步骤S3:所述java卡虚拟机将预先设置的第一向量值置为初始值,并对所述公钥、所述第二数据信息以及预先保存的第一预设数据、第二预设数据、第三预设数据、第四预设数据进行哈希计算,将得到的哈希结果作为第一中间值,将所述公钥、所述签名模式、所述第二数据信息和所述第一中间值保存至所述第一存储区中;当第二函数被调用时,所述java卡虚拟机获取传入的原待签名数据,判断第一存储区中是否存在公钥、签名模式、第二数据信息、第一中间值,是则获取第一向量值,采用预设哈希算法对所述原待签名数据和所述第一向量值进行哈希计算,用得到的哈希结果更新所述第一向量值;否则报错,结束;当第三函数被调用时,执行步骤T1;步骤T1:所述java卡虚拟机获取传入的原待签名数据,并且分配第二存储区,判断第一存储区中是否存在私钥、签名模式、第二数据信息、第一中间值,是则执行步骤T2;否则报错,结束;步骤T2:所述java卡虚拟机获取第一向量值,执行步骤T3;步骤T3:所述java卡虚拟机采用预设哈希算法对所述原待签名数据和所述第一向量值进行哈希计算,用得到的哈希结果更新所述第一向量值,采用预设哈希算法对所述第一向量值进行哈希计算,将得到的哈希结果作为第二中间值,从所述第一存储区中获取私钥,采用签名算法对所述私钥和所述第二中间值进行签名,将得到的签名结果保存至所述第二存储区中,计算所述签名结果的长度,返回所述签名结果的长度。所述步骤S1中,所述java卡虚拟机获取第一数据信息、计算模式信息、第二数据信息,具体为:步骤01:所述java卡虚拟机接收第一函数的第一参数、第一函数的第二参数、第一函数的第三参数、第一函数的第四参数、第一函数的第五参数;步骤02:所述java卡虚拟机根据所述第一函数的第一参数查找与其对应的地址,获取所述地址中的数据将所述数据作为第一数据信息,将所述第一函数的第二参数作为计算模式信息;根据所述第一函数的第三参数、所述第一函数的第四参数、所述第一函数的第五参数获取第二数据信息。当第一函数被调用时,还包括:将表示第一函数的第一参数已经初始化的标识置位;所述java卡虚拟机接收第一函数的第一参数、第一函数的第二参数、第一函数的第三参数、第一函数的第四参数、第一函数的第五参数之后,还包括:步骤1:所述java卡虚拟机根据所述表示第一函数的第一参数已经初始化的标识,判断所述第一函数的第一参数是否已经初始化,如果已经初始化,则执行步骤2;否则报错,结束;步骤2:所述java卡虚拟机判断所述第一函数的第三参数、所述第一函数的第四参数、所述第一函数的第五参数是否合法,如果合法,则执行步骤02;如果不合法,则报错,结束。所述判断所述第一数据信息的类型,具体包括:计算所述第一数据信息的长度,根据所述第一数据信息的长度判断所述第一数据信息的类型,如果所述第一数据信息的长度为第一预设长度,则确定所述第一数据信息为私钥类型;否则确定所述第一数据信息为公钥类型。所述步骤S2中,如果所述第一数据信息为私钥类型,并且所述计算模式信息为签名模式时,还包括:判断所述第一存储区中是否存在私钥、签名模式、所述第二数据信息,是则结束;否则将所述第一数据信息作为私钥保存至第一存储区中,根据所私钥计算公钥,执行步骤S3。所述步骤S3中,所述采用预设哈希算法对所述第二数据信息、所述第一预设数据、所述第二预设数据、所述第三预设数据、所述第四预设数据、所述公钥进行哈希计算,具体包括:根据所述第二数据信息计算第二数据信息长度值,将所述第二数据信息长度值、所述第二数据信息、所述第三预设数据、所述第四预设数据、所述第一预设数据、所述第二预设数据、所述公钥顺序拼接得到拼接结果,采用预设哈希算法对所述拼接结果进行哈希计算。当所述第二函数被调用时,所述java卡虚拟机获取传入的原待签名数据,具体包括:步骤11:所述java卡虚拟机接收第二函数的第一参数、第二函数的第二参数、第二函数的第三参数,将所述第二函数的第一参数作为存储原待签名数据的数组,将所述第二函数的第二参数作为所述原待签名数据在存储原待签名数据的数组中的起始地址,将所述第二函数的第三参数作为原待签名数据的长度,根据所述原待签名数据在存储原待签名数据的数组中的起始地址和所述原待签名数据的长度,从存储原待签名数据的数组中获取所述原待签名数据。所述java卡虚拟机接收第二函数的第一参数、第二函数的第二参数、第二函数的第三参数之后,还包括:判断是否同时满足所述第二函数的第一参数不为空、所述第二函数的第二参数大于等于0,并且所述第二函数的第三参数大于等于0,是则执行步骤11;否则报错,结束。所述采用预设哈希算法对所述原待签名数据和所述第一向量值进行哈希计算,用得到的哈希结果更新所述第一向量值,具体包括:步骤a1:判断所述第一向量值是否为初始值,是则执行步骤a2;否则执行步骤a3;步骤a2:将所述第一向量值置为预设值,从所述第一存储区中获取所述第一中间值,采用预设哈希算法对所述第一中间值和所述第一向量值进行哈希计算,用得到的哈希结果更新所述第一向量值,执行步骤a3;步骤a3:采用预设哈希算法对所述原待签名数据和所述第一向量值进行哈希计算,用得到的哈希结果更新所述第一向量值。所述步骤T1中,所述java卡虚拟机获取传入的原待签名数据,并且分配第二存储区,具体包括:步骤21:所述java卡虚拟机接收第三函数的第一参数、第三函数的第二参数、第三函数的第三参数、第三函数的第四参数、第三函数的第五参数;步骤22:所述java卡虚拟机将所述第三函数的第一参数作为存储原待签名数据的数组,将所述第三函数的第二参数作为原待签名数据在存储原待签名数据的数组中的起始地址,将所述第三函数的第三参数作为原待签名数据的长度,根据原待签名数据在存储原待签名数据的数组的起始地址和原待签名数据的长度,从存储原待签名数据的数组中获取原待签名数据;将所述第三函数的第四参数作为存储签名结果的数组,将所述第三函数的第五参数作为签本文档来自技高网...
一种支持数据签名的java卡实现方法

【技术保护点】
一种支持数据签名的java卡实现方法,其特征在于,包括:java卡虚拟机进行初始化时,清空第一存储区;当所述java卡虚拟机执行函数调用指令时,所述java卡虚拟机从堆栈中获取函数引用及对象引用:当第一函数被调用时,执行步骤S1;步骤S1:所述java卡虚拟机获取第一数据信息、计算模式信息、第二数据信息,执行步骤S2;步骤S2:所述java卡虚拟机判断所述第一数据信息的类型和所述计算模式信息的类型,如果所述第一数据信息为私钥类型,并且所述计算模式信息为签名模式,则将所述第一数据信息作为私钥保存至所述第一存储区中,根据所述私钥计算公钥,执行步骤S3;否则报错,结束;步骤S3:所述java卡虚拟机将预先设置的第一向量值置为初始值,并对所述公钥、所述第二数据信息以及预先保存的第一预设数据、第二预设数据、第三预设数据、第四预设数据进行哈希计算,将得到的哈希结果作为第一中间值,将所述公钥、所述签名模式、所述第二数据信息和所述第一中间值保存至所述第一存储区中;当第二函数被调用时,所述java卡虚拟机获取传入的原待签名数据,判断第一存储区中是否存在公钥、签名模式、第二数据信息、第一中间值,是则获取第一向量值,采用预设哈希算法对所述原待签名数据和所述第一向量值进行哈希计算,用得到的哈希结果更新所述第一向量值;否则报错,结束;当第三函数被调用时,执行步骤T1;步骤T1:所述java卡虚拟机获取传入的原待签名数据,并且分配第二存储区,判断第一存储区中是否存在私钥、签名模式、第二数据信息、第一中间值,是则执行步骤T2;否则报错,结束;步骤T2:所述java卡虚拟机获取第一向量值,执行步骤T3;步骤T3:所述java卡虚拟机采用预设哈希算法对所述原待签名数据和所述第一向量值进行哈希计算,用得到的哈希结果更新所述第一向量值,采用预设哈希算法对所述第一向量值进行哈希计算,将得到的哈希结果作为第二中间值,从所述第一存储区中获取私钥,采用签名算法对所述私钥和所述第二中间值进行签名,将得到的签名结果保存至所述第二存储区中,计算所述签名结果的长度,返回所述签名结果的长度。...

【技术特征摘要】
1.一种支持数据签名的java卡实现方法,其特征在于,包括:java卡虚拟机进行初始化时,清空第一存储区;当所述java卡虚拟机执行函数调用指令时,所述java卡虚拟机从堆栈中获取函数引用及对象引用:当第一函数被调用时,执行步骤S1;步骤S1:所述java卡虚拟机获取第一数据信息、计算模式信息、第二数据信息,执行步骤S2;步骤S2:所述java卡虚拟机判断所述第一数据信息的类型和所述计算模式信息的类型,如果所述第一数据信息为私钥类型,并且所述计算模式信息为签名模式,则将所述第一数据信息作为私钥保存至所述第一存储区中,根据所述私钥计算公钥,执行步骤S3;否则报错,结束;步骤S3:所述java卡虚拟机将预先设置的第一向量值置为初始值,并对所述公钥、所述第二数据信息以及预先保存的第一预设数据、第二预设数据、第三预设数据、第四预设数据进行哈希计算,将得到的哈希结果作为第一中间值,将所述公钥、所述签名模式、所述第二数据信息和所述第一中间值保存至所述第一存储区中;当第二函数被调用时,所述java卡虚拟机获取传入的原待签名数据,判断第一存储区中是否存在公钥、签名模式、第二数据信息、第一中间值,是则获取第一向量值,采用预设哈希算法对所述原待签名数据和所述第一向量值进行哈希计算,用得到的哈希结果更新所述第一向量值;否则报错,结束;当第三函数被调用时,执行步骤T1;步骤T1:所述java卡虚拟机获取传入的原待签名数据,并且分配第二存储区,判断第一存储区中是否存在私钥、签名模式、第二数据信息、第一中间值,是则执行步骤T2;否则报错,结束;步骤T2:所述java卡虚拟机获取第一向量值,执行步骤T3;步骤T3:所述java卡虚拟机采用预设哈希算法对所述原待签名数据和所述第一向量值进行哈希计算,用得到的哈希结果更新所述第一向量值,采用预设哈希算法对所述第一向量值进行哈希计算,将得到的哈希结果作为第二中间值,从所述第一存储区中获取私钥,采用签名算法对所述私钥和所述第二中间值进行签名,将得到的签名结果保存至所述第二存储区中,计算所述签名结果的长度,返回所述签名结果的长度。2.如权利要求1所述的方法,其特征在于,所述步骤S1中,所述java卡虚拟机获取第一数据信息、计算模式信息、第二数据信息,具体为:步骤01:所述java卡虚拟机接收第一函数的第一参数、第一函数的第二参数、第一函数的第三参数、第一函数的第四参数、第一函数的第五参数;步骤02:所述java卡虚拟机根据所述第一函数的第一参数查找与其对应的地址,获取所述地址中的数据将所述数据作为第一数据信息,将所述第一函数的第二参数作为计算模式信息;根据所述第一函数的第三参数、所述第一函数的第四参数、所述第一函数的第五参数获取第二数据信息。3.如权利要求2所述的方法,其特征在于,当第一函数被调用时,还包括:将表示第一函数的第一参数已经初始化的标识置位;所述java卡虚拟机接收第一函数的第一参数、第一函数的第二参数、第一函数的第三参数、第一函数的第四参数、第一函数的第五参数之后,还包括:步骤1:所述java卡虚拟机根据所述表示第一函数的第一参数已经初始化的标识,判断所述第一函数的第一参数是否已经初始化,如果已经初始化,则执行步骤2;否则报错,结束;步骤2:所述java卡虚拟机判断所述第一函数的第三参数、所述第一函数的第四参数、所述第一函数的第五参数是否合法,如果合法,则执行步骤02;如果不合法,则报错,结束。4.如权利要求1所述的方法,其特征在于,所述判断所述第一数据信息的类型,具体包括:计算所述第一数据信息的长度,根据所述第一数据信息的长度判断所述第一数据信息的类型,如果所述第一数据信息的长度为第一预设长度,则确定所述第一数据信息为私钥类型;否则确定所述第一数据信息为公钥类型。5.如权利要求1所述的方法,其特征在于,所述步骤S2中,如果所述第一数据信息为私钥类型,并且所述计算模式信息为签名模式时,还包括:判断所述第一存储区中是否存在私钥、签名模式、所述第二数据信息,是则结束;否则将所述第一数据信息作为私钥保存至第一存储区中,根据所私钥计算公钥,执行步骤S3。6.如权利要求1所述的方法,其特征在于,所述步骤S3中,所述采用预设哈希算法对所述第二数据信息、所述第一预设数据、所述第二预设数据、所述第三预设数据、所述第四预设数据、所述公钥进行哈希计算,具体包括:根据所述第二数据信息计算第二数据信息长度值,将所述第二数据信息长度值、所述第二数据信息、所述第三预设数据、所述第四预设数据、所述第一预设数据、所述第二预设数据、所述公钥顺序拼接得到拼接结果,采用预设哈希算法对所述拼接结果进行哈希计算。7.如权利要求1所述的方法,其特征在于,当所述第二函数被调用时,所述java卡虚拟机获取传入的原待签名数据,具体包括:步骤11:所述java卡虚拟机接收第二函数的第一参数、第二函数的第二参数、第二函数的第三参数,将所述第二函数的第一参数作为存储原待签名数据的数组,将所述第二函数的第二参数作为所述原待签名数据在存储原待签名数据的数组中的起始地址,将所述第二函数的第三参数作为原待签名数据的长度,根据所述原待签名数据在存储原待签名数据的数组中的起始地址和所述原待签名数据的长度,从存储原待签名数据的数组中获取所述原待签名数据。...

【专利技术属性】
技术研发人员:陆舟于华章
申请(专利权)人:飞天诚信科技股份有限公司
类型:发明
国别省市:北京;11

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

1