掌桥专利:专业的专利平台
掌桥专利
首页

一种基于分组密码的加密方法、解密方法以及产品

文献发布时间:2024-04-18 19:57:31


一种基于分组密码的加密方法、解密方法以及产品

技术领域

本申请实施例涉及信息安全的技术领域,具体而言,涉及一种基于分组密码的加密方法、解密方法以及产品。

背景技术

随着信息化的迅猛发展,信息安全方面的技术也得到了重视,如为了提高设备之间传输的数据安全性,应用密码算法对明文进行加密/解密,按照对明文的处理方式的不同,对称加密算法可以分为分组密码和序列密码两种,分组密码的数学模型是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组,每组分别在密钥的控制下变换成等长的输出数字序列。

分组密码典型的算法包括3DES(Triple Data Encryption Standard,三重数据加密标准)、AES(Advanced Encryption Standard,高级加密标准)以及SM4(国密局颁布的分组对称密钥算法)等,其中3DES的分组长度是64比特,即每次只能加密/解密64bit的明文,并生成64bit的密文/明文;AES和SM4算法的分组长度都是128bit,因此每次可以加密/解密128bit的明文/密文,并生成128bit的密文/明文。

因为分组密码算法只能加密固定长度的分组,但实际应用中需要加密的明文长度可能会超过分组密码的分组长度,这时就需要对分组密码算法进行迭代,以便将一段很长的明文全部加密,迭代的方法就是分组密码的模式,一般分组密码的模式包括ECB(Electronic CodeBook mode,分组密码算法的电子密码本模式)、CBC(Cipher BlockChaining mode,分组密码算法的密码分组链接模式)以及CFB(Cipher FeedBack mode,分组密码算法的密文反馈模式)等模式。

但是分组密码的模式通常存在被重放攻击的问题,重放攻击又称为重播、回放攻击,是指攻击者通过发送已经被目标系统接收过的正确数据,来达到欺骗系统的目的,示例地,盗取之前数据传输过程中的部分密文,对当前数据传输过程中的部分密文进行替代,进而使得当前数据传输过程的数据被篡改,导致传输的数据的安全性降低。

发明内容

本申请实施例提供一种基于分组密码的加密方法、解密方法以及产品,旨在提高传输的数据的安全性。

第一方面,本申请实施例提供一种基于分组密码的加密方法,应用于数据发送端,所述方法包括:

获取待加密明文的多个明文分组,并基于密钥分别对所述多个明文分组进行加密,得到多个密文分组;

确定当前数据传输过程的防重放因子,其中,相邻两次数据传输过程的防重放因子不同;

根据所述多个密文分组与所述防重放因子生成认证码;

将所述多个密文分组按照预设规则进行拆分与重组,生成多个重组密文分组,其中,所述预设规则是数据发送端与数据接收端预先确定的;

将所述多个重组密文分组、所述防重放因子以及所述认证码发送至数据接收端,其中,所述认证码用于与所述数据接收端生成的验证码进行比较,以识别数据是否被篡改,所述验证码是数据接收端根据所述多个重组密文分组确定的所述多个密文分组与所述防重放因子生成的。

可选地,基于密钥分别对所述多个明文分组进行加密,得到多个密文分组,包括:

应用ECB模式,基于密钥对所述多个明文分组中的每个明文分组进行加密,生成所述每个明文分组各自对应的密文分组。

可选地,基于密钥分别对所述多个明文分组进行加密,得到多个密文分组,包括:

应用CBC模式,基于密钥和初始向量生成第一个明文分组对应的第一密文分组;

对于后续的任一明文分组,基于密钥和上一个明文分组对应的密文分组,生成该明文分组对应的密文分组,直至生成最后一个明文分组对应的密文分组。

可选地,确定当前数据传输过程的防重放因子,包括:

按照预设的变换规则,对上一次数据传输过程对应的防重放因子进行数值变换,生成当前数据传输过程对应的防重放因子。

可选地,按照预设的变换规则,对上一次数据传输过程对应的防重放因子进行数值变换,生成当前数据传输过程对应的防重放因子,包括:

获取上一次数据传输过程对应的防重放因子;

对所述上一次数据传输过程对应的防重放因子的数值与标定数值进行求和,得到当前数据传输过程对应的防重放因子。

可选地,确定当前数据传输过程的防重放因子,包括:

获取当前时间戳,将所述当前时间戳作为当前数据传输过程对应的防重放因子。

可选地,确定当前数据传输过程的防重放因子,包括:

生成随机数作为当前数据传输过程对应的防重放因子。

可选地,确定当前数据传输过程的防重放因子,包括:

在预先建立的防重放因子列表中获取当前数据传输过程的防重放因子,其中,所述防重放因子列表中包括标定时间段内的所有数据传输过程各自对应的防重放因子。

可选地,确定当前数据传输过程的防重放因子,包括:

获取所述数据发送端在当前数据传输过程中的环境温度,根据所述环境温度生成所述当前数据传输过程的防重放因子。

可选地,确定当前数据传输过程的防重放因子,包括:

获取所述数据发送端在当前数据传输过程中的环境噪声,根据所述环境噪声生成所述当前数据传输过程的防重放因子。

可选地,根据所述多个密文分组与所述防重放因子,生成认证码,包括:

对所述多个密文分组与所述防重放因子进行哈希计算,将哈希计算的结果作为所述认证码。

可选地,根据所述多个密文分组与所述防重放因子,生成认证码,包括:

对所述多个密文分组、所述防重放因子以及所述密钥进行哈希计算,将哈希计算的结果作为所述认证码。

可选地,根据所述多个密文分组与所述防重放因子,生成认证码,包括:

将所述多个密文分组作为CBC模式的输入,将所述防重放因子作为CBC模式的初始向量;

基于所述密钥,通过CBC模式的迭代加密运算后,得到多个伪密文分组,将最后一个伪密文分组作为所述认证码。

可选地,确定当前数据传输过程的防重放因子,包括:

对所述多个密文分组中每个密文分组进行拆分;

根据拆分后的多个密文分组构建预设形式的阶梯矩阵;

将所述阶梯矩阵作为当前数据传输过程的防重放因子;

当将所述阶梯矩阵作为当前数据传输过程的防重放因子之后,所述方法还包括:

按照数据发送端和数据接收端预设的矩阵重组规则,根据所述阶梯矩阵生成重组后的多个密文分组;

将作为所述防重放因子的阶梯矩阵和所述重组后的多个密文分组发送至数据接收端。

可选地,获取待加密明文的多个明文分组之前,所述方法还包括:

根据所述数据发送端的私钥对所述密钥进行数字签名;

利用所述数据接收端的公钥对数字签名后的密钥进行加密运算,生成加密后的密钥;

将所述加密后的密钥发送至所述数据接收端。

第二方面,本申请实施例提供一种基于分组密码的解密方法,应用于数据接收端,所述方法包括:

获取数据发送端发送的多个重组密文分组、防重放因子以及认证码;

按照预设规则,根据所述多个重组密文分组得到多个密文分组,其中,所述预设规则是数据发送端与数据接收端预先确定的;

根据所述多个密文分组与所述防重放因子生成验证码,其中,所述验证码的生成过程与所述认证码的生成过程一致;

比较所述验证码与接收到的所述认证码是否一致,以确定传输的数据是否被篡改;

当所述验证码与接到的所述认证码一致时,表征传输的数据未被篡改,并利用密钥对所述多个密文分组进行解密。

可选地,所述方法还包括:

获取数据发送端发送的重组后的多个密文分组和防重放因子,所述防重放因子为阶梯矩阵;

按照数据发送端和数据接收端预设的矩阵重组规则,根据所述阶梯矩阵生成待检验的多个密文分组;

当所述待检验的多个密文分组与接收到的所述重组后的多个密文分组一致时,表征传输的数据未被篡改,按照所述矩阵重组规则根据所述阶梯矩阵生成多个密文分组,并利用密钥对所述多个密文分组进行解密。

可选地,所述方法还包括:

获取数据发送端发送的加密后的密钥;

根据数据接收端自身的私钥对所述加密后的密钥进行解密;

利用所述数据发送端的公钥,验证解密后的密钥的数字签名,得到所述密钥。

第三方面,本申请实施例提供一种基于分组密码的加密装置,应用于数据发送端,所述装置包括:

加密模块,用于获取待加密明文的多个明文分组,并基于密钥分别对所述多个明文分组进行加密,得到多个密文分组;

防重放因子生成模块,用于确定当前数据传输过程的防重放因子,其中,相邻两次数据传输过程的防重放因子不同;

认证码生成模块,用于根据所述多个密文分组与所述防重放因子,生成认证码;

拆分与重组模块,用于将所述多个密文分组按照预设规则进行拆分与重组,生成多个重组密文分组,其中,所述预设规则是数据发送端与数据接收端预先确定的;

发送模块,用于将所述多个重组密文分组、所述防重放因子以及所述认证码发送至数据接收端,其中,所述认证码用于与所述数据接收端生成的验证码进行比较,以识别数据是否被篡改,所述验证码是数据接收端根据所述多个重组密文分组确定的所述多个密文分组与所述防重放因子生成的。

第四方面,本申请实施例提供一种基于分组密码的解密装置,应用于数据接收端,所述装置包括:

获取模块,用于获取数据发送端发送的多个重组密文分组、防重放因子以及认证码;

密文分组确定模块,用于按照预设规则,根据所述多个重组密文分组得到多个密文分组,其中,所述预设规则是数据发送端与数据接收端预先确定的;

验证码生成模块,用于根据所述多个密文分组与所述防重放因子生成验证码,其中,所述验证码的生成过程与所述认证码的生成过程一致;

比较模块,用于比较所述验证码与接收到的所述认证码是否一致,以确定传输的数据是否被篡改;

解密模块,用于当所述验证码与接到的所述认证码一致时,表征传输的数据未被篡改,并利用密钥对所述多个密文分组进行解密。

第五方面,本申请实施例提供一种密码卡,应用于数据发送端或数据接收端的计算机,所述密码卡用于执行实施例第一方面所述的基于分组密码的加密方法,或执行实施例第二方面所述的基于分组密码的解密方法;所述密码卡包括随机存储器、寄存器组、算法状态控制机、加解密模块、认证码确定模块以及防重放因子确定模块,其中:

所述随机存储器,用于存储所述计算机的上位机软件发送的待执行任务中包括的待加密明文或待解密的密文分组,以及用于存储加密完成后的密文分组或解密完成后的明文分组;

所述寄存器组,用于响应于所述上位机软件发送的加密指令或解密指令,存储所述待执行任务对应的任务信息,所述任务信息包括加解密模式、算法类别、算法模式以及分组数据的长度;

所述算法状态控制机,用于读取所述寄存器组中存储的数据,确定所述待执行任务的任务信息,以及获取所述随机存储器中存储的待加密明文或待解密的密文分组,并控制所述加解密模块、所述认证码确定模块以及所述防重放因子确定模块的工作状态;

所述加解密模块,用于根据密钥对所述待加密明文进行加密运算生成多个密文分组,并按照预设规则将所述多个密文分组按照预设规则进行拆分与重组,生成多个重组密文分组;或用于按照预设规则,根据所述多个重组密文分组得到多个密文分组,并根据密钥对所述待解密的密文分组进行解密运算生成多个明文分组;

所述防重放因子确定模块,用于在所述待执行任务为加密任务时,确定放重放因子;

所述认证码确定模块,用于在所述待执行任务为加密任务时,根据所述防重放因子与所述多个密文分组,确定认证码。

可选地,所述加解密模块包括:

对称算法模块,用于执行任一种对称算法对所述待加密明文进行加密运算生成多个密文分组,或对所述待解密的密文分组进行解密运算生成多个明文分组;

算法模式模块,用于执行加密运算或解密运算的任一种算法模式,所述算法模式包括ECB模式、CFB模式以及CBC模式;

拆分重组模块,用于将所述多个密文分组按照预设规则进行拆分与重组,生成多个重组密文分组或多个密文分组。

可选地,所述防重放因子确定模块包括:

随机数生成器,用于生成真随机数作为防重放因子、密钥以及初始向量。

可选地,所述防重放因子确定模块包括第一电路,其中,所述第一电路用于根据环境温度生成防重放因子,所述第一电路包括热敏电阻与第一模数转换器。

可选地,所述防重放因子确定模块包括第二电路,其中,所述第二电路用于根据环境噪声生成所述当前数据传输过程的防重放因子,所述第二电路包括运算放大器与第二模数转换器。

可选地,所述认证码确定模块包括:

杂凑算法模块,用于在加密过程中,对所述防重放因子与所述多个密文分组进行哈希计算,生成认证码,或用于对所述防重放因子、所述多个密文分组以及所述密钥进行哈希计算,生成认证码。

可选地,所述密码卡上还设置有:

非对称算法模块,用于对密钥通过非对称算法进行加密或解密。

可选地,所述密码卡还包括FPGA模块,所述随机存储器、所述寄存器组、所述算法状态控制机、所述加解密模块、所述认证码确定模块以及所述防重放因子确定模块均设置在所述FPGA模块上;

所述FPGA模块还包括PCI-E协议IP核,所述PCI-E协议IP核用于与所述计算机的PCI-E总线进行协议转换,将物理PCI-E总线上的信号转换为所述密码卡的总线信号。

可选地,所述密码卡还包括:

时钟模块,用于为所述FPGA模块上设置的各个模块提供时钟频率;

电源模块,为所述密码卡上的各个模块提供工作电压。

第六方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如实施例第一方面所述的基于分组密码的加密方法,或实现如实施例第二方面所述的基于分组密码的解密方法。

有益效果:

本申请中数据发送端获取待加密明文的多个明文分组后,基于密钥分别对所述多个明文分组进行加密,得到多个密文分组;然后确定当前数据传输过程的防重放因子,并根据所述多个密文分组与所述防重放因子,生成认证码;并将多个密文分组按照预设规则拆分并重组为多个重组密文分组后,将多个重组密文分组、所述防重放因子以及所述认证码发送至数据接收端。

数据接收端接收到所述多个重组密文分组、所述防重放因子以及所述认证码后,首先按照预设规则将多个重组密文分组重新恢复为多个密文分组,然后根据多个密文分组与所述防重放因子生成验证码,比较验证码和认证码。

首先将多个密文分组拆分重组成多个重组密文分组后再发送,可以预防被人恶意获取到正确的密文分组,并且由于在相邻两次数据传输过程的防重放因子不同,可以防止攻击者恶意获取后生成假的认证码,如果攻击者篡改了发送的密文分组,则数据接收端根据篡改后的多个密文分组得到的验证码和认证码不相同,则表征数据被篡改了,如果验证码和认证码相同,则表征本次传输的数据未被篡改,数据接收端可以进一步对未篡改的数据进行处理,从而可以提高传输的数据的安全性。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本申请一实施例提出的基于分组密码的加密方法的步骤流程图;

图2是本申请一实施例提出的CBC模式的加密过程的示意图;

图3是本申请一实施例提出的第一电路的示意图;

图4是本申请一实施例提出的第二电路的示意图;

图5是本申请一实施例提出的生成认证码的示意图;

图6是本申请一实施例提出的基于分组密码的解密方法的步骤流程图;

图7是本申请一实施例提出的密钥的共享方法的步骤流程图;

图8是本申请一实施例提出的基于分组密码的加密装置的功能模块图;

图9是本申请一实施例提供的基于分组密码的解密装置的功能模块图;

图10是本申请一实施例提出的密码卡的结构示意图;

图11是本申请一实施例提供的数据传输过程的通信示意图;

图12是本申请一实施例提出的密码卡的工作流程图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

ECB:Electronic CodeBook mode,电子密码本模式

CBC:Cipher Block Chaining mode,密码分组链接模式

CFB:Cipher FeedBack mode,密文反馈模式

PCBC:Propagating Cipher Block Chaining mode,填充密码块链接模式/明文密码块链接

OFB:Output Feedback,输出反馈模式

CTR:Counter mode,计数器模式

为了数据的安全性,通常应用密码算法对明文进行加密,对称加密算法中常见包括分组密码的形式,分组密码通常将明文划分为多个明文分组,每个明文分组分别在密钥的控制下变换成等长的输出数字序列,即密文分组;因为分组密码算法只能加密固定长度的分组,但实际应用中需要加密的明文长度可能会超过分组密码的分组长度,这时就需要对分组密码算法进行迭代,因此分组密码中还包括多种模式,如ECB模式、CBC模式以及CFB模式。

其中,由于分组密码采用分块进行加密,加密后也是得到多个密码分组,因此分组密码的模式存在不能抵御重放攻击的问题,重放攻击又称为重播或回放攻击,是指攻击者通过发送已经被目标系统接收过的正确数据,来达到欺骗系统的目的。

示例地,在第N次数据传输过程中传输了密文分组C1-Cn,攻击者通过网络监听窃取了其中的密文分组C2、C3和C4,在第N+1次数据传输过程中传输了密文分组C1’-Cn’,但是攻击者用窃取到的密文分组C2、C3和C4替换了新的密文分组C2’、C3’和C4’,使得第N+1次数据传输过程的密文分组为:C1’、C2、C3、C4、C5’……Cn’,导致接收端接收到篡改后的数据,对重放后的旧数据进行处理,不能抵御重放攻击会严重影响传输的数据安全性,因此本申请实施例提供一种基于分组密码的加密方法,以提高传输的数据的安全性。

参照图1,示出了本申请实施例中的一种基于分组密码的加密方法的步骤流程图,所述方法应用于数据发送端,所述方法具体可以包括以下步骤:

S101:获取待加密明文的多个明文分组,并基于密钥分别对所述多个明文分组进行加密,得到多个密文分组。

数据发送端对需要加密的待加密明文进行加密,在分组密码算法中将待加密明文分成多个明文分组,然后生成每个明文分组对应的密文分组,分组密码算法属于对称加密算法,因此密钥是对称密钥,即数据发送端和数据接收端使用相同的密钥。

在实际应用中,生成密文分组的分组密码算法可以包括多种模式,示例地,可以是ECB模式、CBC模式、CFB模式、PCBC模式、OFB模式和CTR模式中的任一种模式。

在一种可行的实施方式中,可以应用ECB模式,基于密钥对多个明文分组中的每个明文分组进行加密,生成每个明文分组各自对应的密文分组;ECB模式中加密过程为:Ci=E(Pi),i=1,2,3,…,n,其中,Pi为第i个明文分组,Ci为第i个密文分组,E为加密算法;ECB模式中每个明文分组与每个密文分组之间是一一对应关系,示例地,明文分组1基于密钥进行加密后得到密文分组1,明文分组2基于密钥进行加密后得到密文分组2。

在另一种可行的实施方式中,还可以应用CBC模式生成多个密文分组,具体地,应用CBC模式,基于密钥和初始向量生成第一个明文分组对应的第一密文分组;对于后续的任一明文分组,基于密钥和上一个明文分组对应的密文分组,生成该明文分组对应的密文分组,直至生成最后一个明文分组对应的密文分组。

参照图2,示出了本申请实施例提供的CBC模式的加密过程的示意图,CBC模式的加密过程为Ci=E(Pi⊕Ci-1),i=1,2,3,…,n,C0=初始向量IV,⊕为异或运算;示例地,明文分组1首先与初始向量IV进行异或运算,然后用密钥K进行加密运算得到密文分组1;明文分组2先与密文分组1进行异或运算,然后用密钥K进行加密运算得到密文分组2,直至生成密文分组n。

生成密文分组时还可以应用CFB模式,CFB模式的加密过程与CBC类似,但是在CBC模式中,明文分组首先与密文进行异或运算后再进行加密,而在CFB模式中,是对前一个密文分组先进行加密后再与当前明文分组进行异或运算,得到当前明文分组对应的密文分组。

S102:确定当前数据传输过程的防重放因子。

数据发送端可以自定义防重放因子,但是相邻两次数据传输过程的防重放因子应该不同,生成防重放因子的过程可以选择执行以下任一步骤:

A1:按照预设的变换规则,对上一次数据传输过程对应的防重放因子进行数值变换,生成当前数据传输过程对应的防重放因子。

数据发送端可以设置一个初始的防重放因子,并预设一个变换规则,在后续的每次数据传输过程中,可以在上一次数据传输过程的防重放因子的基础上,执行变换规则,生成当前数据传输过程对应的防重放因子。

示例地,确定当前数据传输过程对应的防重放因子时,可以获取上一次数据传输过程对应的防重放因子,然后对所述上一次数据传输过程对应的防重放因子的数值与标定数值进行求和,得到当前数据传输过程对应的防重放因子,例如,第1次数据传输过程的防重放因子为1,标定数值为2,则第二数据传输过程的防重放因子可以是3。

在实际实施的过程中,变换规则可以是对上一次数据传输过程对应的防重放因子的数值进行加减乘除等多种数值运算规则,本申请实施例不做限制。

A2:获取当前时间戳,将所述当前时间戳作为当前数据传输过程对应的防重放因子。

在实际实施时,还可以在生成防重放因子时,获取当前的时间戳,将当前时间戳作为当前数据传输过程对应的防重放因子,进而可以使得每次数据传输过程的防重放因子都不同。

A3:生成随机数作为当前数据传输过程对应的防重放因子。

在实际实施时,可以在每次数据传输时,直接利用随机数生成器生成一个随机数作为防重放因子。

A4:在预先建立的防重放因子列表中获取当前数据传输过程的防重放因子,其中,所述防重放因子列表中包括标定时间段内的所有数据传输过程各自对应的防重放因子。

在实际实施时,数据发送端还可以预先建立一个防重放因子列表,防重放因子列表中包括标定时间内的数据传输过程各自对应的防重放因子,示例地,为一周内的所有数据传输过程设置一个防重放因子列表,一周内的所有数据传输过程可以按顺序轮询该防重放因子列表,以获取对应的防重放因子。

A5:获取所述数据发送端在当前数据传输过程中的环境温度,根据所述环境温度生成所述当前数据传输过程的防重放因子。

在实际实施的过程中,可以在数据发送端设置第一电路,第一电路包括热敏电阻与第一模数转换器,热敏电阻灵对温度的敏度高,当数据发送端的环境温度发生细微变化时,热敏电阻的电阻率会随之发生变化,即使温度变化0.01℃电阻值也会发生变化,因此可以基于热敏电阻,根据环境温度生成防重放因子。

参照图3,示出了本申请实施例提供的第一电路的示意图,第一模数转换器的输入端IN和接地端GND之间连接有热敏电阻,采用负温度系数的热敏电阻,如型号为MF73T的热敏电阻,其阻值变化范围为0.2~400Ω,热敏电阻的电阻值随着外界温度的上升而变小:

其中,T为环境温度,R(T)为热敏电阻在当前环境温度下的电阻值,T

再根据当前的环境温度下流过热敏电阻R的电流I(T),确定热敏电阻R两端的模拟电压Ua,Ua=I(T)×R(T),然后将Ua输入到第一模数转换器中,与参考电压Ur进行比对、进行模数转换,最终输出数字电压信号Ud,Ud的计算公式为:

其中,Ur为参考电压,n为第一模数转换器输出的二进制位数,n越大转换的精度越高。

例如,热敏电阻两端的模拟电压Ua=3.52V,第一模数转换器的参考电压Ur=5.00V,转换的二进制位数n=10,则数字电压信号Ud=(3.52/5)×210=(721)D=(1011010001)B。

最后将第一模数转换器输出的数字电压信号Ud的二进制数值1011010001作为防重放因子,热敏电阻成本低且精度高,可以根据环境温度生成防重放因子。

A6:获取所述数据发送端在当前数据传输过程中的环境噪声,根据所述环境噪声生成所述当前数据传输过程的防重放因子。

数据发送端在当前数据传输过程中的环境噪声也是不断变化的,可以通过采集环境噪声信号进行量化作为防重放因子,在实际实施的过程中,可以在数据发送端设置第二电路,第二电路包括运算放大器与第二模数转换器。

参照图4,示出了本申请实施例提供的第二电路的示意图,运算放大器LM的正输入端连接第二模数转换器的接地端GND,运算放大器LM的负输入端为采集环境噪声信号的输入端,负输入端连接有信号源内阻Rs,运算放大器LM的输出端连接有负载R

外界的环境噪声信号比较微弱,需要经过运算放大器LM对信号进行放大,然后输入第二模数转换器对模拟的环境噪声信号转换为数字信号后进行输出。

具体地,Rs为信号源内阻,Us是输入的原始信号电压,包括有效信号和噪声信号,Un是噪声源信号电压,R

负载R

则进一步可计算出R

将模拟噪声电压U

通过采集外界的环境噪声信号并进行数字信号转换后作为防重放因子,生成的防重放因子为真随机数,并且防重放因子是随机无规律的,不容易被破解。

此外,还允许数据接收端确定数据发送端在每次数据传输过程的防重放因子,但数据接收端需要在每次数据传输之前将防重放因子发送至数据发送端。

在实际实施的时候,防重放因子还可以采用其他方法进行确定,本申请实施例不作限制,因为防重放因子在不断地产生变化,因此不易被攻击者识别,攻击者难以预测下一次数据传输过程对应的防重放因子。

S103:根据所述多个密文分组与所述防重放因子,生成认证码。

在每次数据传输过程中,在确定防重放因子后,结合多个密文分组生成一个认证码。

在一种可行的实施方式中,生成认证码时,可以对所述多个密文分组与所述防重放因子进行哈希计算,将哈希计算的结果作为所述认证码,示例地,认证码Auth_Code=Hash(C1,C2,…,Cn,Y),其中,Y为当前数据传输过程的防重放因子。

在一种可行的实施方式中,生成认证码时,还可以对所述多个密文分组、所述防重放因子以及所述密钥进行哈希计算,将哈希计算的结果作为所述认证码,示例地,认证码Auth_Code=Hash(K,C1,C2,…,Cn,Y),其中,Y为当前数据传输过程的防重放因子,K为密钥。

在实际实施的过程中,可以利用杂凑算法进行哈希计算,如利用SHA256(SecureHash Algorithm,安全散列算法)或SM3算法(中国商用密码杂凑算法标准)可以执行哈希计算。

在一种可行的实施方式中,为了不增加需要执行哈希计算的额外硬件,还可以根据分组密码已有的硬件设备生成认证码,示例地,可以采用CBC模式或CFB模式生成认证码。

以利用CBC模式为例,将所述多个密文分组作为CBC模式的输入,将所述防重放因子作为CBC模式的初始向量;基于所述密钥,通过CBC模式的迭代加密运算后,得到多个伪密文分组,将最后一个伪密文分组作为所述认证码。

参照图5,示出了本申请实施例提供的生成认证码的示意图,多个明文分组的加密过程采用ECB模式,即对每个明文分组分别用密钥K进行加密后生成密文分组,明文分组1对应密文分组1,明文分组2对应密文分组2,……,明文分组n对应密文分组n;然后基于CBC模式生成认证码,将密文分组1、密文分组2,……,密文分组n作为CBC模式的输入,即代替CBC模式在加密过程中的明文分组,然后将防重放因子作为初始向量IV。

首先将密文分组1与防重放因子进行异或运算后,用密钥K执行加密算法,得到伪密文分组1;将伪密文分组1与密文分组2进行异或运算后,用密钥K执行加密算法,得到伪密文分组2,如此往复,直到得到密文分组n对应的伪密文分组n,丢弃伪密文分组1-伪密文分组n-1,仅保留伪密文分组n作为认证码。

在实际实施中,还可以用CFB模式代替CBC模式生成认证码,利用已有的分组密码算法的CFB模式或CBC模式生成认证码,可以节省硬件逻辑资源,不用为了执行哈希计算而引入新的硬件逻辑单元,从而节省成本,并且在实际实施的过程中,可以对生成密文分组和认证码的过程进行组合,例如ECB模式生成密文分组-CBC模式生成认证码、CBC模式生成密文分组-CBC模式生成认证码以及CBC模式生成密文分组-CFB模式生成认证码等多种组合方式可供灵活选择。

S104:将所述多个密文分组按照预设规则进行拆分与重组,生成多个重组密文分组。

为了避免数据传输过程中,多个密文分组被恶意获取,本实施例中还将多个密文分组进行拆分和重组,数据发送端拆分与重组的预设规则与数据接收端是预先约定好的。

在一种可行的实施方式中,可以将每个密文分组分为多个部分,然后不同密文分组之间的多个部分进行组合,得到多个重组密文分组。

示例地,预设规则假设为:将每个密文分组拆分为前后长度相同的两部分,然后相邻的两个密文分组之间交叉重组,示例地,密文分组C1=C11+C12,密文分组C2=C21+C22,然后得到的重组密文分组C1’=C11+C21,重组密文分组C2’=C12+C22。

在其他实施方式中,还可以采用其他的分组以及重组的预设规则,本实施例中不做限制。

S105:将所述多个重组密文分组、所述防重放因子以及所述认证码发送至数据接收端。

在一种可行的实施方式中,当数据发送端生成多个密文分组后,确定当前数据传输过程的防重放因子时,还可以采用将多个密文分组中每个密文分组进行拆分;然后根据拆分后的多个密文分组构建预设形式的阶梯矩阵;将所述阶梯矩阵作为当前数据传输过程的防重放因子。

当采用所述阶梯矩阵作为当前数据传输过程的防重放因子时,可以不用生成认证,而是按照数据发送端和数据接收端预设的矩阵重组规则,根据所述阶梯矩阵生成重组后的多个密文分组;将作为所述防重放因子的阶梯矩阵和所述重组后的多个密文分组发送至数据接收端。

具体地,将每个密文分组进行拆分,即将加密后的多组密文分组C1,C2,…,Cn依次拆分为Ci=Cii+Ci(i+1)(i=1,2,…,n-1),Cn=Cn1+Cnn,示例地,可以将每个密文分组拆分为前后长度相同的两个部分,如对于一个128位的密文分组,分解为前64位分组+后64位分组的形式。

然后,根据拆分后的多个密文分组,构建预设形式的阶梯矩阵如下:

接着,可以按照阶梯矩阵的列对拆分后的多个密文分组进行重组,得到重组后的多个密文分组。

示例地,5个密文分组C1~C5,分别将其拆分为C1=C11+C12,C2=C22+C23,C3=C33+C34,C4=C44+C45,C5=C51+C55,然后根据拆分后的多个密文分组构建阶梯矩阵为:

重组后的多个密文分组为:C1’=C11+C51,C2’=C12+C22,C3’=C23+C33,C4’=C34+C44,C5’=C45+C55,然后将重组后的多个密文分组发送至数据接收端,可以提高密文分组的安全性,并且将构建的阶梯矩阵作为防重放因子也发送至数据接收端。

当数据接收端只收到重组后的多个密文分组和阶梯矩阵形式的防重放因子时,按照数据发送端和数据接收端预设的矩阵重组规则,根据所述阶梯矩阵生成待检验的多个密文分组;仍按照阶梯矩阵的列生成待检验的多个密文分组,然后判断待检验的多个密文分组与接收的重组后的多个密文分组是否一致。

当所述待检验的多个密文分组与接收到的所述重组后的多个密文分组不一致时,则表征阶梯矩阵或者重组后的多个密文分组中至少有一个已经被篡改,可以不再对密文分组进行解密。

当所述待检验的多个密文分组与接收到的所述重组后的多个密文分组一致时,表征传输的数据未被篡改,按照所述矩阵重组规则根据所述阶梯矩阵生成多个密文分组,并利用密钥对所述多个密文分组进行解密。

示例地,数据接收端收到多个重组密文分组C1’~C5’,按照阶梯矩阵对每个分组进行折半拆分,即C1’=C11+C51,C2’=C12+C22,C3’=C23+C33,C4’=C34+C44,C5’=C45+C55,之后按照预设规则进行密文的重组C1=C11+C12,C2=C22+C23,C3=C33+C34,C4=C44+C45,C5=C51+C55,从而得到正确的多个密文分组。

通过利用阶梯矩阵对多组密文进行乱序重组,接收端对乱序后的密文分组按照阶梯矩阵再次进行拆分、重组后恢复为正确的密文分组,由于密文分组经过了乱序重组,即使攻击者能够获取密文分组也不能恢复正确的明文,因此安全性高,同时由于每次传输的密文分组不同,因此作为阶梯矩阵也不同,将阶梯矩阵作为防重放因子也可以防止重放攻击;此外,将阶梯矩阵作为防重放因子的过程不需要额外引入硬件资源,在提高密文安全性以及防止重放攻击的同时,还可以节省成本。

参照图6,示出了本申请实施例提供的一种基于分组密码的解密方法的步骤流程图,所述方法应用于数据接收端,所述方法具体包括以下步骤:

S201:获取数据发送端发送的多个重组密文分组、防重放因子以及认证码。

数据接收端接收发送端发送的多个重组密文分组、防重放因子以及认证码,数据接收端在对多个密文分组进行解密之前,首先得确定当前数据传输过程中的数据是否被篡改了,可以只是对未被篡改的多个密文分组进行解密,对基于被篡改了的数据进行进一步处理意义不大。

S202:按照预设规则,根据所述多个重组密文分组得到多个密文分组。

按照数据发送端和数据接收端之间预先约定的拆分和重组的预设规则,数据接收端可以根据多个重组密文分组,恢复正确的多个密文分组。

S203:根据所述多个密文分组与所述防重放因子生成验证码。

数据接收端根据接收到的密文分组与防重放因子需要生成一个验证码,验证码的生成过程与认证码的生成过程一致。

在实际实施过程中,数据发送端A和数据接收端B之间的数据交互可以采用固定的认证码和验证码的生成方式,可以预先确定两端进行数据交互时认证码和验证码的生成方式,例如是执行哈希计算生成认证码和验证码,还是基于分组密码算法的任一种模式生成认证码和验证码。

数据发送端A和数据接收端B之间的每次数据交互还可以采用不同的认证码和验证码的生成方式,数据发送端A在发送认证码时,可以携带生成认证码的方式的标识,示例地,标识为1时表征采用对多组密文分组和防重放因子进行哈希计算的方式;标识为2时表征采用对多组密文分组、密钥和防重放因子进行哈希计算的方式;标识为3时表征采用CBC模式;标识为4时表征采用CFB方式。

S204:比较所述验证码与接收到的所述认证码是否一致,以确定传输的数据是否被篡改。

在一种可行的实施方式中,数据发送端采用杂凑算法对多个密文分组、防重放因子以及密钥进行哈希运算,生成认证码Auth_Code=Hash(K,C1,C2,…,Cn,Y);数据接收端也根据接收到多个密文分组、防重放因子以及密钥进行哈希计算,生成验证码,验证码为Hash’(K,C1,C2,…,Cn,Y)。

然后比较认证码与验证码是否一致,即比较Hash(K,C1,C2,…,Cn,Y)与Hash’(K,C1,C2,…,Cn,Y)是否相同。

S205:当所述验证码与接到的所述认证码一致时,表征传输的数据未被篡改,并利用密钥对所述多个密文分组进行解密。

若认证码和验证码相同,则表征多个密文分组没有被篡改,可以对多个密文分组利用密钥进行解密,得到解密后的多个明文分组,数据接收端可以根据解密后的多个明文分组进行进一步的数据处理过程。

若是认证码和验证码不同,则表征多个密文分组可能被篡改,可以对多个密文分组进行丢弃,在实际实施的过程中,数据接收端在丢弃被篡改的多个密文分组后,还可以向数据发送端发送提醒数据包,数据发送端接收到提醒数据包后,可以重新对该部分明文进行加密,生成新的防重放因子,然后生成新的认证码后再次发送给数据接收端。

示例地,数据发送端采用ECB模式生成多个明文分组对应的多个密文分组,然后对多个密文分组C1-Cn、防重放因子Y以及密钥K进行哈希计算,得到认证码Auth_Code=Hash(K,C1,C2,…,Cn,Y),然后将多个重组密文分组、防重放因子Y以及认证码Auth_Code发送至数据接收端。

数据接收端根据接收到的多个重组密文分组后生成正确的多个密文分组C1-Cn,在根据防重放因子Y以及密钥K生成验证码Hash’(K,C1,C2,…,Cn,Y),比较Hash(K,C1,C2,…,Cn,Y)与Hash’(K,C1,C2,…,Cn,Y)是否一致,若一致,则对多个密文分组C1-Cn进行解密,得到多个明文分组。

数据发送端通过设置每次数据传输过程中的防重放因子,并基于多个密文分组和防重放因子生成认证码,由数据接收端基于接收到的多个密文分组和防重放因子生成验证码,比较认证码和验证码是否一致可以有效地预防重放攻击,及时获知数据是否被篡改,从而提高传输的数据的安全性。

首先,可以防止密文分组的重放攻击,示例地,第n次数据传输过程中,数据发送端向数据接收端发送的内容包括:密文分组C1,C2,C3,C4,……,Cn,防重放因子Y以及第n次数据传输过程的认证码Auth_Code_n=Hash(K,C1,C2,C3,C4,……,Cn,Y),假设攻击者恶意窃取了密文分组C2、C3、C4。

在第n+1次数据传输过程中,数据发送端向数据接收端发送的内容为:密文分组C1’,C2’,C3’,C4’,…,Cn’,防重放因子Y’以及第n+1次传输过程对应的认证码Auth_Code_n+1=Hash(K,C1’,C2’,C3’,C4’,…,Cn’,Y’)。

在第n+1次数据传输过程中,攻击者根据第n次数据传输过程中窃取的密文分组C2、C3、C4发起重放攻击,使得数据接收端实际收到的密文分组变为C1’,C2,C3,C4,…,Cn’,因此数据接收端进一步根据接收到的数据确定的验证码为:Hash’(K,C1’,C2,C3,C4,…,Cn’,Y’)。

显然,Hash(K,C1’,C2’,C3’,C4’,…,Cn’,Y’)与Hash’(K,C1’,C2,C3,C4,…,Cn’,Y’)是不相同的,即Hash’≠Auth_Code_n+1,因此可以防止攻击者的重放攻击,数据接收端可以及时获知数据是否被篡改。

其次,可以防止防重放因子的重放攻击,防重放因子是在不断变化的,攻击者即使窃取了第n次数据传输过程的防重放因子,也无法确定第n+1次数据传输过程中的防重放因子Y’,即使攻击者截获第n次数据传输过程中防重放因子Y进行重放,由于第n+1次数据传输过程中的防重放因子已经变了,数据接收端也可以识别出该非法操作。

同时,还可以防止认证码的重放攻击,如果攻击者对认证码Auth_Code进行重放,同样因为防重放因子的变化,使得数据接收端基于新的防重放因子计算得到的认证码也产生了变化,所以数据接收端也可以识别出该非法操作。

本实施例提供的加密方法和解密方法增强分组密码算法中的多种模式的防重放攻击的能力,防止在数据传输过程中对数据进行篡改和重放攻击,提高了传输数据的安全性和分组密码模式的可靠性。

此外,数据发送端和数据接收端的密钥的安全性十分重要,是对数据进行加密与解密的关键,如果密钥泄露或被窃取,会造成严重的损失,因此本实施例还提供一种密钥的共享方法,基于非对称密码算法对密钥进行数字签名和加密。

参照图7,示出了本申请实施例提供的密钥的共享方法的步骤流程图,应用于数据发送端和数据接收端,具体包括以下步骤:

S301:数据发送端根据自身的私钥对密钥进行数字签名。

数据发送端具有一对公钥-私钥对,记为(pub_kA,pri_kA),其中公钥pub_kA是分享给其他设备端的,私钥pri_kA是数据发送端自己保存的。

数据接收端也具有一对公钥-私钥对,记为(pub_kB,pri_kB),其中公钥pub_kB是分享给其他设备端的,私钥pri_kB是数据接收端自己保存的。

在需要分享密钥时,数据发送端首先根据自身的私钥pri_kA对密钥K进行数字签名,即进行解密运算Dpri_kA(K)。

S302:数据发送端利用数据接收端的公钥对数字签名后的密钥进行加密运算,生成加密后的密钥。

进行数字签名后,数据发送端利用接收端公开的公钥pub_kB对数字签名后的密钥进行加密运算,生成经过数字签名和加密后的密钥Pac_K,即Pac_K=Epub_kB[Dpri_kA(K)]。

S303:数据发送端将所述加密后的密钥发送至所述数据接收端。

数据发送端将经过数字签名和加密后的密钥Pac_K发送至数据接收端。

S304:数据接收端获取数据发送端发送的加密后的密钥。

S305:数据接收端根据自身的私钥对所述加密后的密钥进行解密。

数据接收端接收到经过数字签名和加密后的密钥Pac_K后,利用自身的私钥pri_kB进行解密运算,即Dpri_kB(Pac_K)。

S306:数据接收端利用数据发送端的公钥,验证解密后的密钥的数字签名,得到密钥。

数据接收端利用数据发送端的公钥pub_kA验证解密后的密钥Dpri_kB(Pac_K)的数字签名,即进行加密运算Epub_kA[Dpri_kB(Pac_K)],从而获取共享密钥K,K=Epub_kA[Dpri_kB(Pac_K)]。

通过本申请实施例提供的密钥的共享方法,可以保证密钥分发过程的安全性,攻击者即使窃取经过数字签名和加密后的密钥Pac_K,由于没有数据接收端的私钥pri_kB,因此不能对Pac_K进行解密。

同时,该密钥的共享方法也能防止数据发送端的抵赖行为,由于私钥pri_kA只存在于数据发送端,任何人不能冒充数据发送端发送密钥,从而实现了不可否认性。

基于本密钥的共享方法,采用数字签名和加密的方式对密钥进行分发过程的保护,保证了数据发送端和数据接收端双方所使用的密钥的安全性,因此在生成认证码时,哈希计算可以不用再基于密钥K,可以减少数据发送端的数据处理成本。

参照图8,示出了本申请实施例提供的一种基于分组密码的加密装置的功能模块图,所述加密装置应用于数据发送端,所述加密装置包括:

加密模块101,用于获取待加密明文的多个明文分组,并基于密钥分别对所述多个明文分组进行加密,得到多个密文分组;

防重放因子生成模块102,用于确定当前数据传输过程的防重放因子,其中,相邻两次数据传输过程的防重放因子不同;

认证码生成模块103,用于根据所述多个密文分组与所述防重放因子,生成认证码;

拆分与重组模块104,用于将所述多个密文分组按照预设规则进行拆分与重组,生成多个重组密文分组,其中,所述预设规则是数据发送端与数据接收端预先确定的;

发送模块105,用于将所述多个重组密文分组、所述防重放因子以及所述认证码发送至数据接收端,其中,所述认证码用于与所述数据接收端生成的验证码进行比较,以识别数据是否被篡改,所述验证码是数据接收端根据所述多个重组密文分组确定的所述多个密文分组与所述防重放因子生成的。

可选地,所述加密模块包括:

第一加密单元,用于应用ECB模式,基于密钥对所述多个明文分组中的每个明文分组进行加密,生成所述每个明文分组各自对应的密文分组。

可选地,所述加密模块包括:

第二加密单元,用于应用CBC模式,基于密钥和初始向量生成第一个明文分组对应的第一密文分组;

对于后续的任一明文分组,基于密钥和上一个明文分组对应的密文分组,生成该明文分组对应的密文分组,直至生成最后一个明文分组对应的密文分组。

可选地,所述防重放因子生成模块包括:

第一防重放因子生成单元,用于按照预设的变换规则,对上一次数据传输过程对应的防重放因子进行数值变换,生成当前数据传输过程对应的防重放因子。

可选地,所述第一防重放因子生成单元包括:

求和单元,用于获取上一次数据传输过程对应的防重放因子,并对所述上一次数据传输过程对应的防重放因子的数值与标定数值进行求和,得到当前数据传输过程对应的防重放因子。

可选地,所述防重放因子生成模块包括:

第二防重放因子生成单元,用于获取当前时间戳,将所述当前时间戳作为当前数据传输过程对应的防重放因子。

可选地,所述防重放因子生成模块包括:

第三防重放因子生成单元,用于生成随机数作为当前数据传输过程对应的防重放因子。

可选地,所述防重放因子生成模块包括:

第四防重放因子生成单元,用于在预先建立的防重放因子列表中获取当前数据传输过程的防重放因子,其中,所述防重放因子列表中包括标定时间段内的所有数据传输过程各自对应的防重放因子。

可选地,所述防重放因子生成模块包括:

第五防重放因子生成单元,用于获取所述数据发送端在当前数据传输过程中的环境温度,根据所述环境温度生成所述当前数据传输过程的防重放因子。

可选地,所述防重放因子生成模块包括:

第六防重放因子生成单元,用于获取所述数据发送端在当前数据传输过程中的环境噪声,根据所述环境噪声生成所述当前数据传输过程的防重放因子。

可选地,所述认证码生成模块包括:

第一认证码生成单元,用于对所述多个密文分组与所述防重放因子进行哈希计算,将哈希计算的结果作为所述认证码。

可选地,所述认证码生成模块包括:

第二认证码生成单元,用于对所述多个密文分组、所述防重放因子以及所述密钥进行哈希计算,将哈希计算的结果作为所述认证码。

可选地,所述认证码生成模块包括:

第三认证码生成单元,用于将所述多个密文分组作为CBC模式的输入,将所述防重放因子作为CBC模式的初始向量;基于所述密钥,通过CBC模式的迭代加密运算后,得到多个伪密文分组,将最后一个伪密文分组作为所述认证码。

可选地,所述防重放因子生成模块包括:

第七重放因子生成单元,用于对所述多个密文分组中每个密文分组进行拆分;根据拆分后的多个密文分组构建预设形式的阶梯矩阵;将所述阶梯矩阵作为当前数据传输过程的防重放因子;

所述装置还包括:

发送单元,用于按照数据发送端和数据接收端预设的矩阵重组规则,根据所述阶梯矩阵生成重组后的多个密文分组;将作为所述防重放因子的阶梯矩阵和所述重组后的多个密文分组发送至数据接收端。

可选地,所述装置还包括:

密钥加密模块,用于根据所述数据发送端的私钥对所述密钥进行数字签名;利用所述数据接收端的公钥对数字签名后的密钥进行加密运算,生成加密后的密钥;将所述加密后的密钥发送至所述数据接收端。

参照图9,示出了本申请实施例提供的一种基于分组密码的解密装置的功能模块图,所述解密装置应用于数据接收端,所述解密装置包括:

获取模块201,用于获取数据发送端发送的多个重组密文分组、防重放因子以及认证码;

密文分组确定模块202,用于按照预设规则,根据所述多个重组密文分组得到多个密文分组,其中,所述预设规则是数据发送端与数据接收端预先确定的;

验证码生成模块203,用于根据所述多个密文分组与所述防重放因子生成验证码,其中,所述验证码的生成过程与所述认证码的生成过程一致;

比较模块204,用于比较所述验证码与接收到的所述认证码是否一致,以确定传输的数据是否被篡改;

解密模块205,用于当所述验证码与接到的所述认证码一致时,表征传输的数据未被篡改,并利用密钥对所述多个密文分组进行解密。

可选地,所述装置还包括:

获取单元,用于获取数据发送端发送的重组后的多个密文分组和防重放因子,所述防重放因子为阶梯矩阵;

重组单元,用于按照数据发送端和数据接收端预设的矩阵重组规则,根据所述阶梯矩阵生成待检验的多个密文分组;

解密单元,用于当所述待检验的多个密文分组与接收到的所述重组后的多个密文分组一致时,表征传输的数据未被篡改,按照所述矩阵重组规则根据所述阶梯矩阵生成多个密文分组,并利用密钥对所述多个密文分组进行解密。

可选地,所述装置还包括:

密钥解密模块,用于获取数据发送端发送的加密后的密钥;根据数据接收端自身的私钥对所述加密后的密钥进行解密;利用所述数据发送端的公钥,验证解密后的密钥的数字签名,得到所述密钥。

本申请实施例还提供的一种密码卡,密码卡应用在计算机中,应用密码卡可以执行本实施所述的基于分组密码的加密方法,或执行本实施例所述的基于分组密码的解密方法,实际使用时在数据发送端的计算机和数据接收端的计算机中各内置一个密码卡,当一个计算机上设置密码卡后,该计算机既可以作为数据发送端,也可以作为数据接收端,所述密码卡包括随机存储器、寄存器组、算法状态控制机、加解密模块、认证码确定模块以及防重放因子确定模块。

所述随机存储器用于存储计算机的上位机软件发送的待执行任务中包括的待加密明文或待解密的密文分组,以及用于存储加密完成后的密文分组或解密完成后的明文分组。

所述寄存器组用于响应于所述上位机软件发送的加密指令或解密指令,存储待执行任务对应的任务信息,所述任务信息包括加解密模式、算法类别、算法模式以及分组数据的长度。

所述算法状态控制机用于读取所述寄存器组中存储的数据,确定所述待执行的任务的任务信息,以及获取所述随机存储器中存储的待加密明文或待解密的密文分组,并控制所述加解密模块、认证码确定模块以及防重放因子确定模块的工作状态。

所述加解密模块,用于根据密钥对所述待加密明文进行加密运算生成多个密文分组,并按照预设规则将所述多个密文分组按照预设规则进行拆分与重组,生成多个重组密文分组;或用于按照预设规则,根据所述多个重组密文分组得到多个密文分组,并根据密钥对所述待解密的密文分组进行解密运算生成多个明文分组;

所述防重放因子确定模块,用于在所述待执行任务为加密任务时,确定放重放因子;

所述认证码确定模块,用于在所述待执行任务为加密任务时,根据所述防重放因子与所述多个密文分组,确定认证码。

参照图10,示出了本申请实施例提供的一种密码卡的结构示意图,在一种可行的实施方式中,密码卡上设置有FPGA模块(Field Programmable Gate Array,现场可编程逻辑门阵列),FPGA是在PAL(programmable array logic,可编程阵列逻辑)与GAL(genericarray logic,通用阵列逻辑)等可编程器件的基础上进一步发展的产物,它解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

在本实施例中,密码卡上的随机存储器、寄存器组、算法状态控制机、加解密模块、认证码确定模块以及防重放因子确定模块都可以设置在FPGA模块上。

FPGA模块还包括PCI-E协议IP核,PCI-E协议IP核用于与所述计算机的PCI-E总线进行协议转换,将物理PCI-E总线上的信号转换为密码卡的总线信号。

所述加解密模块包括对称算法模块、算法模式模块以及拆分与重组模块,对称算法模块用于执行任一种对称算法对所述待加密明文进行加密运算生成多个密文分组,或对所述待解密的密文分组进行解密运算生成多个明文分组,对称算法模块可以提供多种对称加密算法,例如3DES、AES和SM4;算法模式模块用于执行加密运算或解密运算的任一种算法模式,所述算法模式包括ECB模式、CFB模式以及CBC模式,在其他实施方式中,算法模式模块还可以包括其他的分组密码算法的模式,拆分与重组模块,用于将所述多个密文分组按照预设规则进行拆分与重组,生成多个重组密文分组或多个密文分组。

随机存储器可以采用是RAM(Random Access Memory,随机存取存储器)或FIFO(First Input First Output,先进先出)存储器。

寄存器组存储着对称加密算法的具体操作类型,包括寄存器1、寄存器2、寄存器3以及寄存器4,其中,寄存器1用于存储对称加密算法的类别,例如用数值01代表3DES算法,02代表AES算法,03代表SM4算法;寄存器2用于存储对称加密算法模式,例如01代表ECB模式,02代表CFB模式,03代表CFB模式;寄存器3用于存储明文分组或密码分组的数据长度,例如对于SM4算法,100代表100个明文分组数据,每个分组128bit;寄存器4用于存储本次待执行任务的加解密模式,例如01代表加密运算,02代表解密运算。

所述防重放因子确定模块可以采用随机数生成器,用于生成真随机数作为防重放因子,以及生成真随机数作为密钥以及CFB模式以及CBC模式的初始向量。

在另一种可行的实施方式中,所述防重放因子确定模块还可以设置所述第一电路或所述第二电路,第一电路根据环境温度生成防重放因子,第二电路根据环境噪声生成所述当前数据传输过程的防重放因子,并且第一电路和第二电路中包括的模数转换器都可以应用FPGA模块自身携带的A/D转换器,可以节省硬件成本。

在其他实施方式中,防重放因子确定模块可以根据数值变换,当前时间戳,以及轮询预设的防重放因子列表等方式确定防重放因子。

在一种可行的实施方式中,防重放因子确定模块还可以将多个密文分组中每个密文分组进行拆分;然后根据拆分后的多个密文分组构建预设形式的阶梯矩阵;将所述阶梯矩阵作为当前数据传输过程的防重放因子,在将阶梯矩阵作为防重放因子的情况下,密码卡可以根据阶梯矩阵按照数据发送端和数据接收端预设的矩阵重组规则,生成重组后的多个密文分组;将作为所述防重放因子的阶梯矩阵和所述重组后的多个密文分组发送至数据接收端。

所述认证码确定模块采用杂凑算法模块,杂凑算法模块用于在加密过程中对所述防重放因子与所述多个密文分组进行哈希计算生成认证码,或用于对所述防重放因子、所述多个密文分组以及所述密钥进行哈希计算,生成认证码,杂凑算法模块提供多种哈希算法,例如SHA256和SM3算法。

所述密码卡的FPGA模块上还设置有非对称算法模块,非对称算法模块用于对密钥通过非对称算法进行加密或解密,使得上位机可以和其他上位机之间安全的分享对称算法的密钥,非对称算法模块提供的非对称算法包括RSA加密算法(RSA algorithm)以及SM2(国家密码管理局发布的椭圆曲线公钥密码算法)。

密码卡上还设置有时钟模块、电源模块以及调试/下载口,即JTAG(Joint TestAction Group,联合测试行为组织)/AS(active serial configuration mode,主动串行加载模式)接口,其中时钟模块用于为所述FPGA模块上的各个模块提供时钟频率,时钟模块可以采用晶体振荡器;电源模块用于为所述密码卡上的各个模块提供工作电压;JATG/AS接口是程序的调试/下载接口,用于FPGA程序的调试和下载。

参照图11,示出了本申请实施例提供的数据传输过程的通信示意图,作为数据发送端的计算机A上设置了密码卡A,作为数据接收端的计算机B上设置了密码卡B。

计算机A的上位机软件将待加密明文传输至密码卡A,密码卡A对待加密明文进行加密,生成多个重组密文分组、防重放因子以及认证码后,将生成的数据传输至上位机软件。

计算机A的上位机软件将多个重组密文分组、防重放因子、认证码发送至作为数据接收端的计算机B。

计算机B的上位机软件将接收到的多个重组密文分组、防重放因子、认证码数据发送给密码卡B。

密码卡B根据多个重组密文分组确定多个密文分组,并根据多个密文分组和防重放因子生成验证码,在验证码以及认证码一致的情况下,对多个密文分组进行解密,恢复明文,并将明文发送至计算机B的上位机软件。

图11中的虚线表示可选事件流,即可以在有需要的情况下执行,若要对密钥K进行保护,在执行数据传输过程之前,计算机B将自身的公钥发送给计算机A;此外,还允许作为数据接收端的计算机B定义数据发送端的计算机A每次发送数据时的防重放因子,若选择一次性随机数的方式作为防重放因子,则计算机B需要在每次数据通信之前向作为数据发送端的计算机A发送一个一次性的随机数。

参照图12,示出了本申请实施例提供的密码卡的工作流程图,在一种可行的实施方式中,数据发送端的计算机A上的密码卡A和数据接收端的计算机B上的密码卡B工作过程包括以下步骤:

B1:计算机A的上位机软件设置密码卡A的寄存器组和随机存储器,即在待执行任务为加密任务时,对加密任务的任务信息在寄存器组进行配置,示例地,若采用SM4对称算法的CFB模式对100个数据分组进行加密时,需要设置寄存器1~4的数值分别为03、02、100、01,并在随机存储器录入待加密明文;本实施方式中,防重放因子时数据接收端定义的,因此计算机A的上位机软件还在随机存储器中存储了防重放因子。

B2:密码卡A的算法控制状态机读取寄存器组与随机存储器中的数据,确定加密过程的对称加密算法、算法模式以及待加密明文。

B3:密码卡A的算法控制状态机调用随机数生成器生成密钥K,将待加密明文、密钥K发送至对称算法模块进行数据加密运算,生成多组密文分组。

B4:密码卡A的算法控制状态机调用杂凑算法模块或对称算法模块,基于多组密文分组与防重放因子生成认证码,示例地,例如调用对称算法模块中的CBC模式,生成认证码Auth_Code。

B5:密码卡A的算法控制状态机调用非对称算法模块,用计算机A的私钥pri_kA对密钥K进行数字签名,用作为数据接收端的计算机B的公钥pub_kB再进行加密生成Pac_K,Pac_K=Epub_kB[Dpri_kA(K)]。

B6:密码卡A的算法控制状态机将根据多个密文分组生成的多个重组密文分组、认证码Auth_Code、Pac_K传回至上位机软件,上位机软件再将多个重组密文分组、认证码Auth_Code、Pac_K、防重放因子以及寄存器组的设定值等数据传输至数据接收端的计算机B。

B7:计算机B的上位机软件接收到多个重组密文分组、认证码Auth_Code、Pac_K以及防重放因子存储在设置的密码卡B的随机存储器中,并根据密码卡A的寄存器组的设定值配置自身的密码卡B中的寄存器组的值,例如采用SM4对称算法的CFB模式对100个数据分组进行解密,需要设置寄存器1~4的数值分别为03、02、100、02,从而使得解密过程和加密过程对应。

B8:密码卡B的算法控制状态机调用非对称算法模块,用自身的私钥pri_kB对Pac_K解密,再利用计算机A的公钥pub_kA验证数字签名,从而获取密钥K,即K=Epub_kA[Dpri_kB(Pac_K)]。

B9:密码卡B的算法控制状态机调用杂凑算法模块或对称算法模块,根据多个重放密文分组生成的多个密文分组与防重放因子生成哈希值Hash’作为验证码,再与接收到的认证码Auth_Code进行比对,生成验证码的方式与生成认证码的方式相同。

示例地,计算机A的上位机软件还向计算机B发送了生成认证码的方式的标识,以便于计算机B获知生成验证码的方式。

B10:当Hash’=Auth_Code时,表征数据没有经过篡改或重放攻击,密码卡B的算法控制状态机将多个密文分组以及密钥K发送至对称算法模块进行解密;当Hash’≠Auth_Code时,说明数据已经过篡改或重放攻击,丢弃本次数据传输的数据。

B11:多个密文分组解密完成后恢复明文分组,密码卡B的算法控制状态机将明文分组传输至作为数据接收端的计算机B的上位机软件。

至此完成了一次计算机A到计算机B的数据传输过程,若要进行后续的数据传输重复进行步骤B1~B11即可。

本实施例提供的密码卡可以增强分组密码模式的防重放攻击能力和保护密钥,可以提高设备之间传输的数据的安全性。

本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如实施例所述的基于分组密码的加密方法,或实现如实施例所述的基于分组密码的解密方法。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

相关技术
  • 一种基于非对称加密的数据加密方法、解密方法及系统
  • 一种基于加密和摘要算法的可逆防篡改加解密数据的方法
  • 一种基于PCI总线的硬件加解密实现方法及硬件加密板卡
  • 一种基于位片技术的动态S盒分组密码的加密及解密方法
  • 基于轻量级分组密码榫式算法的加密解密方法
技术分类

06120116459085