一种对燃气表安全模块的密钥发行方式的制作方法

文档序号:22581317发布日期:2020-10-20 17:03阅读:85来源:国知局
一种对燃气表安全模块的密钥发行方式的制作方法

本发明涉及一种密钥发行方式,具体是指一种对燃气表安全模块的密钥发行方式。



背景技术:

对燃气表安全模块的密钥发行实质上是安全平台与燃气表的安全模块之间的公钥信息交互,确保双方都在安全通信前存有双方的公钥等信息,从而为后续双方之间的安全通信打下基础。

现有的对燃气表安全模块的密钥发行方式,普遍做法是安全平台生成平台的公钥和私钥,同时也为燃气表安全模块生成安全模块的公钥和私钥,最后将安全平台的公钥以及安全模块的公钥、私钥发行给燃气表安全模块。此发行方式存在私钥转移的问题,安全模块的公钥和私钥不是由燃气表的安全模块自己生产,而是由安全平台生成然后发行给燃气表的安全模块,在发行安全模块的公钥和私钥时存在终端私钥泄露的风险。

所以,一种对燃气表安全模块的密钥发行方式成为人们亟待解决的问题。



技术实现要素:

本发明要解决的技术问题是现有技术在发行安全模块的公钥和私钥时存在终端私钥泄露的风险等问题。

为解决上述技术问题,本发明提供的技术方案为:一种对燃气表安全模块的密钥发行方式,包括安全平台和安全模块,所述密钥发行方式如下所示:

步骤一:所述安全平台自生成公钥cert1和私钥skey1,赋值a=cert1,将a发送给安全模块;

步骤二:所述安全模块自生成公钥cert2、私钥skey2以及主密钥mk,将安全平台的公钥cert1、安全模块的私钥skey2及主密钥mk存储至安全模块存储区,将安全模块状态改写为已灌装,同时赋值b=ecert1(uid||cert2||mk),将b发送给安全平台;

步骤三:所述安全平台对b解密并判断收到的uid信息的有效性,同时赋值c=ecert2(emk(“verifyencryptkey”)),将c发送给安全模块;

步骤四:所述安全模块对密文进行解密验证,同时赋值d=uid,sec,eskey2(h(uid||sec)),将d发送给安全平台;

步骤五:所述安全平台对信息进行验签,若一切正常,则将该安全模块相关信息存储至数据库系统。

进一步地,所述ecert1(uid||cert2||mk)是用安全平台的公钥cert1对uid||cert2||mk进行加密运算。

进一步地,所述ecert2(emk(“verifyencryptkey”))是用安全模块的公钥cert2对emk(“verifyencryptkey”)进行加密运算。

进一步地,所述h(uid||sec)是对uid||sec作散列运算。

进一步地,所述sec为安全码,所述uid为安全模块唯一序号,所述eskey2(h(uid||sec))为签名值。

与现有技术相比,本发明的优点:现有技术中安全模块的公钥和私钥不是由燃气表的安全模块自己生产的,而是由安全平台生产然后发行给燃气表的安全模块,在发行安全模块的公钥和私钥时存在终端私钥泄露的风险;本发明中安全模块的公钥和私钥均由燃气表的安全模块自己生成,然后进行安全平台与燃气表的安全模块之间的公钥等信息的安全交互,期间不存在私钥的转移以及终端私钥泄露的风险;本发明设计合理,值得大力推广。

附图说明

图1是一种对燃气表安全模块的密钥发行方式的流程图;

如图所示:n为分散因子、msg为安全平台发送给燃气终端的业务报文、所述msg′为燃气终端发送给安全平台的业务报文、ecert1(msg||n||eskey2(h(msg||n)))为密文、eskey2(h(msg||n))为签名值、sk为会话密钥。

具体实施方式

下面结合附图对本发明做进一步的详细说明。

结合附图1,对本发明进行详细介绍。

本发明在具体实施时提供了一种对燃气表安全模块的密钥发行方式,包括安全平台和安全模块,所述密钥发行方式如下所示:

步骤一:所述安全平台自生成公钥cert1和私钥skey1,赋值a=cert1,将a发送给安全模块;

步骤二:所述安全模块自生成公钥cert2、私钥skey2以及主密钥mk,将安全平台的公钥cert1、安全模块的私钥skey2及主密钥mk存储至安全模块存储区,将安全模块状态改写为已灌装,同时赋值b=ecert1(uid||cert2||mk),将b发送给安全平台;

步骤三:所述安全平台对b解密并判断收到的uid信息的有效性,同时赋值c=ecert2(emk(“verifyencryptkey”)),将c发送给安全模块;

步骤四:所述安全模块对密文进行解密验证,同时赋值d=uid,sec,eskey2(h(uid||sec)),将d发送给安全平台;

步骤五:所述安全平台对信息进行验签,若一切正常,则将该安全模块相关信息存储至数据库系统。

所述ecert1(uid||cert2||mk)是用安全平台的公钥cert1对uid||cert2||mk进行加密运算。

所述ecert2(emk(“verifyencryptkey”))是用安全模块的公钥cert2对emk(“verifyencryptkey”)进行加密运算。

所述h(uid||sec)是对uid||sec作散列运算。

所述sec为安全码,所述uid为安全模块唯一序号,所述eskey2(h(uid||sec))为签名值。

本发明一种对燃气表安全模块的密钥发行方式的具体实施过程如下:本发明用的是标准的国密算法:sm2非对称加密算法、sm4对称加密算法;

所述安全平台生成自己的公钥cert1和私钥skey1,将公钥cert1发送给安全模块;

所述安全模块生成自己的公钥cert2、私钥skey2以及主密钥mk,并调用sm2加密函数,输入参数安全平台的公钥cert1、安全模块的唯一序号uid、安全模块的公钥cert2、主密钥mk,用安全平台的公钥cert1加密安全模块的唯一序号uid、安全模块的公钥cert2、主密钥mk,得到密文ecert1(uid||cert2||mk),最后将密文ecert1(uid||cert2||mk),发送给安全平台;

所述安全平台收到密文后,调用sm2解密函数,输入参数安全平台的私钥skey1和密文ecert1(uid||cert2||mk),用安全平台的私钥skey1对密文进行解密,得到安全模块的唯一序号uid、安全模块的公钥cert2、主密钥mk,所述安全平台判断完安全模块的唯一序号uid的有效性后,调用sm4加密函数,输入参数主密钥mk,对字符串”verifyencryptkey”进行加密,得到密文ecert2(emk(“verifyencryptkey”)),最终将密文ecert2(emk(“verifyencryptkey”))发送给安全模块;

所述安全模块收到密文ecert2(emk(“verifyencryptkey”))后,调用sm2解密函数,输入参数安全模块的私钥skey2,对密文ecert2(emk(“verifyencryptkey”))进行解密,得到emk(“verifyencryptkey”),然后调用sm4解密函数,输入参数主密钥mk,对emk(“verifyencryptkey”)进行解密,得到“verifyencryptkey”后确认无误;

所述安全模块调用sm2签名函数,输入参数安全模块的私钥skey、安全模块的唯一序号uid、安全码sec,其中sec=“burnkeycompleted”或sec=“burnkeyfailed”,用安全模块的私钥skey2对安全模块的唯一序号uid和安全码sec进行签名,生成签名值eskey2(h(uid||sec)),最终将uid,sec,eskey2(h(uid||sec))发送给安全平台;

所述安全平台收到uid,sec,eskey2(h(uid||sec))后,调用sm2验签函数,输入参数安全模块公钥cert2、安全模块唯一序号uid、安全码sec、签名值eskey2(h(uid||sec)),用安全模块公钥cert2对签名值eskey2(h(uid||sec))进行验签,验签成功,则将该安全模块相关信息存储到数据库系统。

现有技术中安全模块的公钥和私钥不是由燃气表的安全模块自己生产的,而是由安全平台生产然后发行给燃气表的安全模块,在发行安全模块的公钥和私钥时存在终端私钥泄露的风险;本发明中安全模块的公钥和私钥均由燃气表的安全模块自己生成,然后进行安全平台与燃气表的安全模块之间的公钥等信息的安全交互,期间不存在私钥的转移以及终端私钥泄露的风险;本发明设计合理,值得大力推广。

以上对本发明及其实施方式进行了描述,这种描述没有限制性,实际的结构并不局限于此。总而言之如果本领域的普通技术人员受其启示,在不脱离本发明创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1