发明内容
本发明的目的在于提供一种基于身份认证的安全通讯方法及装置,通过强制认证双方的电子印章,可以在无需向CA机构申请数字证书的情况下灵活、高效的对通信双方身份的信息进行验证,进而确保通信数据的安全性。
为了实现上述目的,本发明的一方面提供一种基于身份认证的安全通讯方法,包括:
由请求节点和响应节点分别制作各自的电子印章,所述电子印章中包括由签名算法、签名信息、加密算法、指纹信息、摘要算法、公钥和加密私钥组成的校验区;
请求节点和响应节点互相报备对方电子印章中的指纹信息,用于在双方交换电子印章后,互相提取对方的指纹信息与报备的指纹信息比对以验证身份;
双方节点在身份验证通过后,由请求节点使用随机因子对明文数据加密生成密文数据,以及使用响应节点电子印章的公钥加密所述随机因子得到通讯密钥,之后将所述密文数据、所述通讯密钥和请求节点电子印章中的指纹信息打包发送至响应节点;
响应节点将文件包中的指纹信息与报备的指纹信息比对,比对成功后解密响应节点所属电子印章的加密私钥,通过私钥解密文件包中的通讯密钥还原所述随机因子,进而使用所述随机因子解析所述密文数据得到明文数据。
优选地,由请求节点和响应节点分别制作各自的电子印章的方法包括:
设计电子印章的分区,所述分区除校验区之外还包括头部区、印章信息区和尾部区;
请求节点和响应节点基于电子印章的分区结构,将开始标记符、识别码和版本号对应填充入头部区,将持章人编号、持章人名称、颁发机构编号、颁发机构名称和有效期对应填充入印章信息区、将描述信息和结束标记符对应填充入尾部区,将签名算法、签名信息、加密算法、指纹信息、摘要算法、公钥和加密私钥对应填充入校验区。
较佳地,所述公钥和所述加密私钥的生成方法包括:
根据电子印章中的签名算法随机生成一对公钥和私钥;
基于请求节点预设的印章密码PIN,加密所属私钥生成请求节点电子印章的加密私钥;以及,
基于响应节点预设的印章密码PIN,加密所属私钥生成响应节点电子印章的加密私钥。
可选地,所述指纹信息的生成方法包括:
将电子印章中的持章人编号和持章人名称进行字符串拼接,并使用对应的印章密码PIN对字符串的拼接结果加密形成密文;
采用摘要算法对所述密文进行摘要,得到摘要字符串;
通过签名算法对应的私钥对所述摘要字符串签名,得到电子印章的指纹信息。
可选地,所述签名信息的生成方法包括:
定义电子印章中的关键域字节,所述关键域字节为电子印章的特征字节;
将所述关键域字节通过摘要算法进行摘要,得到关键域字符串;
通过签名算法对应的私钥对所述关键域字符串签名,形成电子印章的签名信息。
优选地,双方交换电子印章后,互相提取对方的指纹信息与报备的指纹信息比对以验证身份的方法包括:
请求节点将所属电子印章发送至响应节点,以使响应节点读取请求节点所属电子印章的签名算法、公钥、摘要算法和签名信息;
由响应节点读取请求节点所属电子印章中的关键域字节,基于所述摘要算法进行摘要得到摘要字符串,并使用所述签名算法的公钥对所述关键域字节执行验签;
验签通过后,响应节点将请求节点所属电子印章的指纹信息与请求节点报备的指纹信息比对,比对结果一致时授权请求节点接入;
响应节点将所属电子印章发送至请求节点,以使请求节点读取响应节点所属电子印章的签名算法、公钥、摘要算法和签名信息;
由请求节点读取响应节点所属电子印章中的关键域字节,基于所述摘要算法进行摘要得到摘要字符串,并使用所述签名算法的公钥对所述关键域字节执行验签;
验签通过后,请求节点将响应节点所属电子印章的指纹信息与响应节点报备的指纹信息比对,比对结果一致时授权响应节点接入。
较佳地,由请求节点使用随机因子对明文数据加密生成密文数据,以及使用响应节点电子印章的公钥加密所述随机因子得到通讯密钥,之后将所述密文数据、所述通讯密钥和请求节点电子印章中的指纹信息打包发送至响应节点的方法包括:
请求节点生成随机因子,用于对所述明文数据加密得到密文数据;
请求节点使用响应节点所属电子印章的公钥对所述随机因子加密,生成通讯密钥;
请求节点将所述通讯密钥、所述密文数据和所属电子印章的指纹信息打包发送至响应节点。
进一步地,响应节点将文件包中的指纹信息与报备的指纹信息比对,比对成功后解密响应节点所属电子印章的加密私钥,通过私钥解密文件包中的通讯密钥还原所述随机因子,进而使用所述随机因子解析所述密文数据得到明文数据的方法包括:
响应节点读取文件包中的指纹信息,并与请求节点报备的指纹信息比对;
比对通过后,由响应节点读取所属电子印章的加密算法、签名算法、加密私钥以及预设的印章密码PIN,解密出响应节点所属电子印章的私钥;
通过所述私钥解析所述通讯密钥还原所述随机因子,最终利用所述随机因子解析所述密文数据得到明文数据。
与现有技术相比,本发明提供的基于身份认证的安全通讯方法具有以下有益效果:
本发明提供的基于身份认证的安全通讯方法中,首先由请求节点和响应节预先制作属于自己的电子印章,该电子印章中包括由签名算法、签名信息、加密算法、指纹信息、摘要算法、公钥和加密私钥组成的校验区,电子印章制作完成之后,请求节点和响应节点互相报备对方电子印章中的指纹信息,用于电子印章交换过程中的身份验证,只有通过了双方节点的身份验证,才可安全的进行数据通讯,具体过程如下:由请求节点使用随机因子对明文数据进行加密生成密文数据,接着使用响应节点电子印章的公钥加密随机因子得到通讯密钥,至此将密文数据、通讯密钥和用于识别请求节点身份的指纹信息打包发送至响应节点,响应节点在接收到文件包后,读取其中的指纹信息并与请求节点报备的指纹信息进行比对,仅在比对通过后方可授权请求节点接入响应节点,之后由响应节点调用所属的加密私钥,对加密私钥解密后使用明文私钥对通讯密钥进行解密从而还原随机因子,最终使用随机因子解析密文数据得到明文数据,完成请求节点对响应节点的密文传输。
综上,本发明相比较于现有技术中的方案,由双方协商自制电子印章,无需再向CA机构申请数字证书,增加了应用的灵活性,通过强制的电子印章交换认证策略,可以保证通信密文不会被第三人窃取,提升双方通信的安全性,另外,在数据发送之前取消了双方的密钥的协商过程,增加了应用的便捷性。
本发明的另一方面提供一种基于身份认证的安全通讯装置,应用有上述技术方案提到的基于身份认证的安全通讯方法,该装置包括:
印章制作单元,用于由请求节点和响应节点分别制作各自的电子印章,所述电子印章中包括由签名算法、签名信息、加密算法、指纹信息、摘要算法、公钥和加密私钥组成的校验区;
指纹登记单元,用于请求节点和响应节点互相报备对方电子印章中的指纹信息,用于在双方交换电子印章后,互相提取对方的指纹信息与报备的指纹信息比对以验证身份;
文件加密单元,用于双方节点在身份验证通过后,由请求节点使用随机因子对明文数据加密生成密文数据,以及使用响应节点电子印章的公钥加密所述随机因子得到通讯密钥,之后将所述密文数据、所述通讯密钥和请求节点电子印章中的指纹信息打包发送至响应节点;
文件解密单元,用于响应节点将文件包中的指纹信息与报备的指纹信息比对,比对成功后解密响应节点所属电子印章的加密私钥,通过私钥解密文件包中的通讯密钥还原所述随机因子,进而使用所述随机因子解析所述密文数据得到明文数据。
与现有技术相比,本发明提供的基于身份认证的安全通讯装置的有益效果与上述技术方案提供的基于身份认证的安全通讯方法的有益效果相同,在此不做赘述。
本发明的第三方面提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述基于身份认证的安全通讯方法的步骤。
与现有技术相比,本发明提供的计算机可读存储介质的有益效果与上述技术方案提供的基于身份认证的安全通讯方法的有益效果相同,在此不做赘述。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其它实施例,均属于本发明保护的范围。
实施例一
请参阅图1-图3,本实施例提供一种基于身份认证的安全通讯方法,包括:
由请求节点和响应节点分别制作各自的电子印章,电子印章中包括由签名算法、签名信息、加密算法、指纹信息、摘要算法、公钥和加密私钥组成的校验区;请求节点和响应节点互相报备对方电子印章中的指纹信息,用于在双方交换电子印章后,互相提取对方的指纹信息与报备的指纹信息比对以验证身份;双方节点在身份验证通过后,由请求节点使用随机因子对明文数据加密生成密文数据,以及使用响应节点电子印章的公钥加密随机因子得到通讯密钥,之后将密文数据、通讯密钥和请求节点电子印章中的指纹信息打包发送至响应节点;响应节点将文件包中的指纹信息与报备的指纹信息比对,比对成功后解密响应节点所属电子印章的加密私钥,通过私钥解密文件包中的通讯密钥还原随机因子,进而使用随机因子解析密文数据得到明文数据。
本实施例提供的基于身份认证的安全通讯方法中,首先由请求节点和响应节预先制作属于自己的电子印章,该电子印章中包括由签名算法、签名信息、加密算法、指纹信息、摘要算法、公钥和加密私钥组成的校验区,电子印章制作完成之后,请求节点和响应节点互相报备对方电子印章中的指纹信息,用于电子印章交换过程中的身份验证,只有通过了双方节点的身份验证,才可安全的进行数据通讯,具体过程如下:由请求节点使用随机因子对明文数据进行加密生成密文数据,接着使用响应节点电子印章的公钥加密随机因子得到通讯密钥,至此将密文数据、通讯密钥和用于识别请求节点身份的指纹信息打包发送至响应节点,响应节点在接收到文件包后,读取其中的指纹信息并与请求节点报备的指纹信息进行比对,仅在比对通过后方可授权请求节点接入响应节点,之后由响应节点调用所属的加密私钥,对加密私钥解密后使用明文私钥对通讯密钥进行解密从而还原随机因子,最终使用随机因子解析密文数据得到明文数据,完成请求节点对响应节点的密文传输。
综上,本实施例相比较于现有技术中的方案,由双方协商自制电子印章,无需再向CA机构申请数字证书,增加了应用的灵活性,通过强制的电子印章交换认证策略,可以保证通信密文不会被第三人窃取,提升双方通信的安全性,另外,在数据发送之前取消了双方的密钥的协商过程,提升了应用的便捷性。
请参阅图3,请求节点和响应节点分别制作各自的电子印章的方法包括:
设计电子印章的分区,分区除校验区之外还包括头部区、印章信息区和尾部区;请求节点和响应节点基于电子印章的分区结构,将开始标记符、识别码和版本号对应填充入头部区,将持章人编号、持章人名称、颁发机构编号、颁发机构名称和有效期对应填充入印章信息区、将描述信息和结束标记符对应填充入尾部区,将签名算法、签名信息、加密算法、指纹信息、摘要算法、公钥和加密私钥对应填充入校验区。
如图3所示,头部区的开始标记符为2字节、识别码为3字节、版本号为1字节,校验区的签名算法为8字节、签名信息为32字节、加密算法为8字节、指纹信息为32字节、摘要算法为8字节、公钥为32字节,加密私钥为32字节,印章信息区中的持章人编号为32字节、持章人名称为32字节、颁发机构编号为32字节、颁发机构名称为32字节、有效期信息为16字节,尾部区中的描述信息为62字节、结束标记符为2字节。可以理解的是,签名算法为对信息进行签名或验签的非对称性算法,如RSA、SM1,加密算法为对信息进行加密或解密的对称性算法,如AES、SM2,摘要算法为对信息进行摘要的算法,如MD5、SM3。
另外,本实施例将加密私钥放入电子印章中存储,能够妥善对私钥进行存储管理,降低了私钥持久化放在双方系统存储带来的管理风险。
上述实施例中的公钥和加密私钥的生成方法包括:根据电子印章中的签名算法随机生成一对公钥和私钥;基于请求节点预设的印章密码PIN,加密所属私钥生成请求节点电子印章的加密私钥;以及,基于响应节点预设的印章密码PIN,加密所属私钥生成响应节点电子印章的加密私钥。
具体实施时,假设请求节点的电子印章为A,对应的电子印章A的签名算法为SA,响应节点的电子印章为B,对应的电子印章B的签名算法为SB,请求节点根据签名算法SA生成公钥SA.PublicKey和私钥SA.PrivateKey,响应节点根据签名算法SB生成公钥SB.PublicKey和私钥SB.PrivateKey,之后将公钥SA.PublicKey对应填充入电子印章A的公钥区,将公钥SB.PublicKey对应填充入电子印章B的公钥区,紧接着对私钥SA.PrivateKey和私钥SB.PrivateKey加密,具体为采用请求节点预设的印章密码PIN对私钥SA.PrivateKey加密得到电子印章A的加密私钥,采用响应节点预设的印章密码PIN对私钥SB.PrivateKey加密得到电子印章B的加密私钥,可用公式表达为:私钥=EA.Encrypt(SA.PrivateKey,PIN),进而将SA.PrivateKey填充入电子印章A的私钥区,以及SB.PrivateKey对应填充入电子印章B的私钥区,完成对电子印章A和电子印章B校验区的填充。
进一步地,上述实施例中的指纹信息的生成方法包括:将电子印章中的持章人编号和持章人名称进行字符串拼接,并使用对应的印章密码PIN对字符串的拼接结果加密形成密文;采用摘要算法对密文进行摘要,得到摘要字符串;通过签名算法对应的私钥对摘要字符串签名,得到电子印章的指纹信息。
具体实施时,以电子印章A中指纹信息的生成为例,其可通过公式表达为:指纹信息=SA.Sign(DA(EA(ID+Name,PIN)),SA.PrivateKey),其中,ID表示持章人编号编号、Name表示持章人名称、EA表示加密算法、DA表示摘要算法,指纹信息是指对电子印章内关键域信息进行签名后得到的结果表示,上述公式可以理解为,将电子印章中的持章人编号和持章人名称进行字符串拼接,然后使用印章密码PIN作为加密算法(对称性算法)的密钥对字符串的拼接结果进行加密,形成密文,接着通过摘要算法对密文进行摘要得到摘要字符串,最后通过签名算法(非对称性算法)的私钥对摘要字符串进行签名,形成指纹信息。同理,电子印章B中指纹信息的生成与电子印章A相同,本实施例对此不做赘述。示例性地,持章人编号可以是身份证号、社会信用统一识别编号或组织机构编号。
进一步地,上述实施例中签名信息的生成方法包括:定义电子印章中的关键域字节,关键域字节为电子印章的特征字节;将关键域字节通过摘要算法进行摘要,得到关键域字符串;通过签名算法对应的私钥对关键域字符串签名,形成电子印章的签名信息。
具体实施时,以电子印章A中签名信息的生成为例,通过公式表达为:签名信息=SA.Sign(DA(content),SA.PrivateKey),其中,content表示关键域字节,如图3所示,也即电子印章中“加密算法”区域至“结束标记符”区域中的所有字段(电子印章中46字节后续的内容),将关键域字节通过摘要算法进行摘要,得到关键域字符串,然后通过签名算法对应的私钥对关键域字符串进行签名,形成电子印章A的签名信息。同理,电子印章B中签名信息的生成与电子印章A相同,本实施例对此不做赘述。
至此,签章构建阶段完成,生成了一个可用于身份识别、安全数据通讯的电子印章A和电子印章B,接下来开始签章的校验阶段。
具体地,上述实施例中双方交换电子印章后,互相提取对方的指纹信息与报备的指纹信息比对以验证身份的方法包括:
请求节点将所属电子印章发送至响应节点,以使响应节点读取请求节点所属电子印章的签名算法、公钥、摘要算法和签名信息;由响应节点读取请求节点所属电子印章中的关键域字节,基于摘要算法进行摘要得到摘要字符串,并使用签名算法的公钥对关键域字节执行验签;验签通过后,响应节点将请求节点所属电子印章的指纹信息与请求节点报备的指纹信息比对,比对结果一致时授权请求节点接入;响应节点将所属电子印章发送至请求节点,以使请求节点读取响应节点所属电子印章的签名算法、公钥、摘要算法和签名信息;由请求节点读取响应节点所属电子印章中的关键域字节,基于摘要算法进行摘要得到摘要字符串,并使用签名算法的公钥对关键域字节执行验签;验签通过后,请求节点将响应节点所属电子印章的指纹信息与响应节点报备的指纹信息比对,比对结果一致时授权响应节点接入。
请参阅图3,上述实施例可以理解为双方节点交换电子印章以及身份验证的过程,首先由请求节点将电子印章A发送至响应节点,响应节点接收到电子印章A后对其进行验签操作,之后读取电子印章A中的指纹信息并与电子印章A在响应节点中报备的指纹信息比对,当比对结果一致时认为电子印章A的身份合法,此时授权请求节点接入响应节点,响应节点验证完请求节点的身份之后,请求节点还得继续验证响应节点的身份,也即响应节点将电子印章B发送至请求节点,请求节点接收到电子印章B后对其进行验签操作,之后读取电子印章B中的指纹信息并与电子印章B在请求节点中报备的指纹信息比对,当比对结果一致时认为电子印章B的身份合法,此时授权响应节点接入请求节点。
以响应节点对电子印章A验签操作为例说明,其可通过公式表达为:□验签=SA.Verify(DA(content),SA.PublicKey,SI),SI表示电子印章A中的签名信息,上述公式理解为:通过签名算法(非对称性算法)的公钥和电子印章A签章文件结构的签名信息(SI)进行验签操作,如果验签成功代表签章文件未被篡改,如果验签不成功则代表签章文件被篡改。
以响应节点对电子印章A身份合法性验证为例说明,其可通过公式表达为:身份=If(Equal(A.DS.指纹信息,登记电子印章A.指纹信息)),上述公式理解为:从电子印章A的签章文件内取出,指纹信息并与响应节点中报备的指纹信息进行比对,比对结果一致则授权请求节点的接入。
另外,请求节点对电子印章B的验签操作和身份合法性验证操作,与上述响应节点对电子印章A的验签操作和身份合法性验证操作相同,本实施例对此不做赘述。
至此,双方的签章校验阶段完成,接下来开始双方的加解密通讯阶段。
上述实施例中由请求节点使用随机因子对明文数据加密生成密文数据,以及使用响应节点电子印章的公钥加密随机因子得到通讯密钥,之后将密文数据、通讯密钥和请求节点电子印章中的指纹信息打包发送至响应节点的方法包括:
请求节点生成随机因子,用于对明文数据加密得到密文数据;请求节点使用响应节点所属电子印章的公钥对随机因子加密,生成通讯密钥;请求节点将通讯密钥、密文数据和所属电子印章的指纹信息打包发送至响应节点。
具体实施时,请求节点加密明文数据得到密文数据的方案可通过公式表达为:密文数据=B.EA(A.plainText,Key),其中,plainText为明文数据,Key为随机生成的加密因子,且Key既可以选用固定的字符串,也可以为每次加密时生成的随机数,上述公式可以理解为使用加密因子Key作为加密算法(对称性算法)的密钥,并使用对方签章内所要求的加密算法(对称性算法)对明文数据(plainText)进行加密,生成密文数据。请求节点加密随机因子生成通讯密钥的方案可通过公式表达为:通讯密钥=B.SA.Encrypt(Key,B.SA.PublicKey),可以理解为通过对方签章内所要求的签名算法(非对称性算法)的公钥对我方生成的加密因子(Key)进行加密,形成通讯密钥。
进一步地,上述实施例中响应节点将文件包中的指纹信息与报备的指纹信息比对,比对成功后解密响应节点所属电子印章的加密私钥,通过私钥解密文件包中的通讯密钥还原随机因子,进而使用随机因子解析密文数据得到明文数据的方法包括:
响应节点读取文件包中的指纹信息,并与请求节点报备的指纹信息比对;比对通过后,由响应节点读取所属电子印章的加密算法、签名算法、加密私钥以及预设的印章密码PIN,解密出响应节点所属电子印章的私钥;通过私钥解析通讯密钥还原随机因子,最终利用随机因子解析密文数据得到明文数据。
具体实施时,响应节点在接收到文件包之后,首先读取文件包中的指纹信息,并与请求节点报备的指纹信息比对,做到一次一校保证确保数据传输的安全性,比对通过后,从电子印章B中读取加密私钥(SB.PrivateKey)。
若要使用明文私钥还需对加密私钥解密,解密公式为:B.SA.PrivateKey=B.EA.Decrypt(B.SecureKey,PIN),也即首选读出签章内的加密算法,并使用PIN作为加密算法(对称性算法)的密钥对加密私钥进行解密,解密后的明文即是明文私钥。
若要得到随机因子还需继续对通讯密钥解密,解密公式为:A.Key=B.SA.Decrypt(通讯密钥,B.SA.PrivateKey),也即首先读出签章内的签名算法,并使用已解出的签名算法(非对称性算法)的明文私钥对文件包中的通讯密钥进行解密,解密后得到请求节点的随机因子(Key)。
若要得到明文数据还需对密文数据解密,解密公式为:A.plainText=B.EA.Decrypt(密文,A.Key),也即首选读出签章内的加密算法,并使用已解出的随机因子作为加密算法(对称性算法)的密钥对密文数据进行解密,解密后明文数据。
至此,响应节点完成了对请求节点的数据加密通信,同理,请求节点对请求节点的数据加密通信为上述实施过程的逆过程,请参阅图2,当响应节点向请求节点发送密文数据时,相应节点负责生成加密因子,并使用请求节点的电子印章A进行通讯密钥和密文数据的生成,请求节点接收到密文数据、通讯密钥和电子印章B的指纹信息后,用自己的电子印章A进行解密获得明文数据。
需要说明的是,本实施例设计了电子印章的校验区,持章者通过制定对称性和非对称性的加密算法,可尽量降低已知算法的安全缺陷并提高总体的算法强度。同时,本实施例提供的是业务数据(非协议)层面安全通讯方案,实现通讯双方数据安全的自主可控。
实施例二
本实施例提供一种基于身份认证的安全通讯装置,包括:
印章制作单元,用于由请求节点和响应节点分别制作各自的电子印章,所述电子印章中包括由签名算法、签名信息、加密算法、指纹信息、摘要算法、公钥和加密私钥组成的校验区;
指纹登记单元,用于请求节点和响应节点互相报备对方电子印章中的指纹信息,用于在双方交换电子印章后,互相提取对方的指纹信息与报备的指纹信息比对以验证身份;
文件加密单元,用于双方节点在身份验证通过后,由请求节点使用随机因子对明文数据加密生成密文数据,以及使用响应节点电子印章的公钥加密所述随机因子得到通讯密钥,之后将所述密文数据、所述通讯密钥和请求节点电子印章中的指纹信息打包发送至响应节点;
文件解密单元,用于响应节点将文件包中的指纹信息与报备的指纹信息比对,比对成功后解密响应节点所属电子印章的加密私钥,通过私钥解密文件包中的通讯密钥还原所述随机因子,进而使用所述随机因子解析所述密文数据得到明文数据。
与现有技术相比,本实施例提供的基于身份认证的安全通讯装置的有益效果与上述实施例提供的基于身份认证的安全通讯方法的有益效果相同,在此不做赘述。
实施例三
本实施例提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述基于身份认证的安全通讯方法的步骤。
与现有技术相比,本实施例提供的计算机可读存储介质的有益效果与上述技术方案提供的基于身份认证的安全通讯方法的有益效果相同,在此不做赘述。
本领域普通技术人员可以理解,实现上述发明方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,上述程序可以存储于计算机可读取存储介质中,该程序在执行时,包括上述实施例方法的各步骤,上述的存储介质可以是:ROM/RAM、磁碟、光盘、存储卡等。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。