发明内容
针对上述技术问题,本发明提供了一种序列化数据安全通信方法及大数据平台,能够结合随机生成的随机数对序列化数据进行AES加密并传输,能够在不同时刻的数据传输过程中,将相同的明文块加密成不同的密文块,提高通信过程中序列化数据的机密性,同时避免重放攻击。
第一方面,本文发明实施例提出了一种序列化数据安全通信方法,包括:
将待传输的数据分组成各明文块,利用密钥对各明文块进行AES首轮加密获得各密文块。
根据第一随机数及第二随机数,分别将上一轮加密后的各密文块进行片段划分,将对各密文划分后得到的各片段按照预定顺序进行排列,并对排列后的各密文块进行新一轮加密,进行迭代直至加密次数达到密钥长度对应的加密次数,得到加密后的密文。所述第一随机数小于所述第二随机数,且所述第一随机数及所述第二随机数小于128。
根据所述第一随机数及所述第二随机数生成验证码,将验证码加入到加密后的密文,并分别对密钥以及验证码进行数字签名。
将所述密文、密钥的数字签名以及验证码的数字签名一并发送。
解压出密钥以及验证码并分别进行数字签名验证,当密钥以及验证码的签名验证均通过时,结合验证码对密文进行解密,当解压出的密文中验证码正确,则通讯成功。否则,提示重新进行发送。
在一个可行的实施例中,根据第一随机数及第二随机数,分别将上一轮加密后的各密文块进行片段划分,将对各密文划分后得到的各片段按照预定顺序进行排列,包括:
抽取各密文块中第一随机数的列至第二随机数的列并按顺序进行排列作为第一部分。
将各密文块中剩余部分按顺序进行排列作为第二部分。
依次将第一部分及第二部分进行排列,获得片段划分并排列后的密文。
在一个可行的实施例中,利用所述密钥对各明文块进行AES首轮加密获得各密文块,包括:
对明文块依次进行字节代替、行位移、列混淆及轮密钥加,获得加密后的密文块。
在一个可行的实施例中,所述密钥长度为128位、192位以及256位中的一种。
在一个可行的实施例中,密钥对应的加密次数,包括:
当密钥长度为128位时,加密次数为10。或者,
当密钥长度为192位时,加密次数为12。或者,
当密钥长度为256位时,加密次数为14。
在一个可行的实施例中,根据所述第一随机数及所述第二随机数生成验证码,包括:
按照第一随机数在前第二随机数在后的顺序进行排列,当第一随机数的位数小于第二随机数时,在排列后的数字前面补充相应数量的0,所述相应数量为第一随机数及第二随机数的在位数上的差值。
在一个可行的实施例中,将待传输的数据分组成各明文块,包括:
将待传输的数据按照顺序分割成128位的明文块,若明文块长度不足分128位,则在明文块末尾补充数值使得明文块长度为128位,补充的数值转化为字节,每个字节的值为缺少的位数。
在一个可行的实施例中,结合验证码对密文进行解密,包括:
根据验证码前半部分获得第一随机数,同时根据验证码的后半部分获得第二随机数。
对密文分组成长度为128的各密文块,根据第一随机数及第二随机数对密文进行密文块片段划分并排列的逆操作,以对密文块进行重组,对重组后得到的密文块依次进行轮密钥加、反列变换、反行变换以及反字节替换,进行迭代直至迭代次数达到密钥的长度对应的加密次数,得到解密后的明文。
在一个可行的实施例中,解压出密钥以及验证码并分别进行数字签名验证前,所述方法还包括:
对日期戳进行加密并进行数字签名。
将日期戳及日期戳的数字签名发送。
对所发送的日期戳进行数字签名验证,当验证通过时,解压出密钥以及验证码并分别进行数字签名验证,否则,提示重新进行发送。
第二方面,本发明实施例提出了一种大数据平台,包括处理引擎、网络模块和存储器,所述处理引擎和所述存储器通过所述网络模块通信,所述处理引擎从所述存储器中读取计算机程序并运行,以实现本发明实施例中序列化数据安全通信方法。
本发明提供了一种序列化数据安全通信方法及大数据平台,相比于现有技术,本发明实施例的有益效果至少包括:能够结合随机生成的随机数对序列化数据进行AES加密并传输,能够在不同时刻的数据传输过程中,将相同的明文块加密成不同的密文块,提高通信过程中序列化数据的机密性,同时避免重放攻击。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征;在本实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
序列化数据为数据结构或对象转换成的可通信传输可存储的二进制串。在通信过程中通常需要对二进制串进行加密防止数据泄露。目前常用的对称加密方法AES在通信传输过程中难以抵抗重放攻击;同时AES加密算法中EBC加密模式难以抵抗统计分析攻击;CBC、CFB、OFB加密模式不利于并行计算,时间效率不高;CTR加密模式高度依赖计数器,如果计数器被重用,可能会导致明文泄露。
本发明实施例提供了一种序列化数据安全通信方法,如图1所示,包括:
步骤S101、将待传输的数据分组成各明文块,利用密钥对各明文块进行AES首轮加密获得各密文块。
步骤S102、根据第一随机数及第二随机数,分别将上一轮加密后的各密文块进行片段划分,将对各密文划分后得到的各片段按照预定顺序进行排列,并对排列后的各密文块进行新一轮加密,进行迭代直至加密次数达到密钥长度对应的加密次数,得到加密后的密文。
第一随机数小于第二随机数,且第一随机数及第二随机数小于128。
步骤S103、根据第一随机数及第二随机数生成验证码,将验证码加入到加密后的密文,并分别对密钥以及验证码进行数字签名。
步骤S104、将密文、密钥的数字签名以及验证码的数字签名一并发送。
步骤S105、解压出密钥以及验证码并分别进行数字签名验证,当密钥以及验证码的签名验证均通过时,结合验证码对密文进行解密,当解压出的密文中验证码正确,则通讯成功。否则,提示重新进行发送。
首先对AES( Advanced Encryption Standard,高级加密标准)加密算法进行简单的介绍,AEC中分组密码加密方式主要有5种:ECB(Electronic Codebook,电码本),CBC(Cipher Block Chaining,密码分组链接),CFB(Cipher Feed Back,密码反馈),OFB(Output Feed Back输出反馈)和CTR(Counter,计算器)。
需要说明的是,ECB模式是分组密码的一种最基本的工作模式。在该模式下,待处理信息被分为大小合适的分组,然后分别对每一分组独立进行加密或解密处理。
CBC模式是先将明文切分成若干小段,然后每一小段与初始块或者上一段的密文段进行异或运算后,再与密钥进行加密;CTR模式中有一个自增的算子,这个算子用密钥加密之后的输出和明文异或的结果得到密文,相当于一次一密。这种加密方式简单快速,安全可靠,而且可以并行加密,但是在计算器不能维持很长的情况下,密钥只能使用一次。
在序列化数据通信传输过程中,目前常用的AES加密算法在通信传输过程中难以抵抗重放攻击;而AES加密算法中ECB加密模式难以抵抗统计分析攻击;CBC、CFB、OFB加密模式不利于并行计算,时间效率不高;CTR加密模式高度依赖计数器,如果计数器被重用,可能会导致明文泄露。
本发明的主要目的是:获取待传输的序列化数据,随机生成的第一随机数及第二随机数,结合AES加密算法对序列化数据进行加密传输,提高通信过程中序列化数据的机密性,同时避免重放攻击。
重放攻击(Replay Attacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。重放攻击可以由发起者,也可以由拦截并重发该数据的敌方进行。攻击者利用网络监听或者其他方式盗取认证凭据,之后再把它重新发给认证服务器。重放攻击在任何网络通过程中都可能发生,是计算机世界黑客常用的攻击方式之一。
进一步的,步骤S101、将待传输的数据分组成各明文块,利用密钥对各明文块进行AES首轮加密获得各密文块。具体包括:
大数据平台中的数据结构或对象要进行传输,需要将数据进行序列化。首先按照共同约定的序列化方法,将需要传输的数据结构或对象序列化,得到二进制的待传输的序列化数据。
需要说明的是,AES算法的ECB加密模式中将相同的明文加密成相同的密文,可被统计分析攻击,因此本发明实施例引入第一随机数及第二随机数,并结合第一随机数及第二随机数在加密过程中的对密文块进行重新组合,使得相同的明文被加密成不同的密文,能够防止统计分析攻击。
本发明实施例中,第一随机数小于第二随机数,且第一随机数及第二随机数小于128,如此,便于在后续过程中对加密后的密文块进行重组。
需要说明的是,AES为分组密码,分组密码也就是把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文。在AES标准规范中,分组长度只能是128位,也就是说,每个分组为16个字节,其中每个字节为8位。
密钥的长度可以使用128位、192位或256位。密钥的长度不同,推荐加密轮数也不同,具体的,当密钥的长度为128位时,加密次数为10;或者,当密钥的长度为192位时,加密次数为12;或者,当密钥的长度为256位时,加密次数为14。
AES加密为将全量明文分割成多个长度为128位的明文块,利用密钥对每个明文块进行多轮复杂加密处理得到多个独立的密文块,这些密文拼接在一起得到最终的加密结果。
首先,对待传输的序列化数据进行分组,将序列化数据按照顺序分割成长度为128位的各明文块,若明文块长度不足128位,则在明文块末尾补充数值使得明文块长度为128位,补充的数值转化为字节,每个字节的值为缺少的位数。128位的明文块为16字节大小,将其排列成
大小的状态矩阵。
其次,利用密钥对各明文块进行AES首轮加密获得各密文块,对每个明文块进行轮密钥操作加,得到的结果为该轮密文块,将该过程记为首轮加密。需要说明的是,在轮密钥加(Add Round Key)变换中,128位的状态(State)矩阵按位与128位子密钥异或,可以将这种操作看成是状态(State)矩阵的一列中的4个字节与轮密钥的一个字节进行异或,也可以看成是两者之间的字节异或。
进一步的,步骤S102、根据第一随机数及第二随机数,分别将上一轮加密后的各密文块进行片段划分,将对各密文划分后得到的各片段按照预定顺序进行排列,并对排列后的各密文块进行新一轮加密,进行迭代直至加密次数达到密钥长度对应的加密次数,得到加密后的密文。具体包括:
第一随机数小于第二随机数,且第一随机数及第二随机数小于128。
首先,根据第一随机数及第二随机数,分别将上一轮加密后的各密文块进行片段划分,将对各密文划分后得到的各片段按照预定顺序进行排列。
图2示出了本发明实施例中对加密后的密文块进行片段划分并排序的示意图,如图2所示,如图2所示,抽取各密文块中第一随机数的列至第二随机数的列并按顺序进行排列作为第一部分;将各密文块中剩余部分按顺序进行排列作为第二部分;依次将第一部分及第二部分进行排列,获得片段划分并排列后的密文。
可选的,可以继续对片段划分并排列后的密文进行位置混淆,将密文的前b-k-1个位移到密文的末端得到位置混淆后的密文。
其次,并对排列后的各密文块进行新一轮加密,进行迭代直至加密次数达到密钥的长度对应的加密次数,得到加密后的密文。
具体的,加密过程包括对明文块依次进行字节代替、行位移、列混淆及轮密钥加,获得加密后的密文块。
需要说明的是,字节代替(Sub Bytes)是对state矩阵中的每一个独立元素于置换盒(Substitution-box,S盒)中进行查找并以此替换输入状态的操作。字节代替是可逆的非线性变换,也是AES运算组中唯一的非线性变换。字节代替逆操作也是通过逆向置换盒的查找及替换来完成的。S盒是事先设计好的16x16的查询表,即256个元素。其是根据设计原则严格计算求得,以保证算法的安全性,同时通过S盒查表操作可以更方便快捷获得字节替换后的字节。
行位移是一个简单的左循环移位操作。当密钥长度为128位时,状态矩阵的第0行左移0字节,第1行左移1字节,第2行左移2字节,第3行左移3字节,并依此完成各行的行位移。列混合变换是通过矩阵相乘来实现的,经行移位后的状态矩阵与固定的矩阵相乘,得到混淆后的状态矩阵。
在轮密钥加(Add Round Key)变换中,128位的状态(State)矩阵按位与128位子密钥异或,可以将这种操作看成是状态(State)矩阵的一列中的4个字节与轮密钥的一个字节进行异或,也可以看成是两者之间的字节异或。
图3示出了本发明实施例中进行加密以及片段划分并排列的迭代过程的示意图,如图3所示,进行密文加密以及密文的片段划分并排列过程的迭代,直至迭代次数等于密钥长度相对应的加密次数,当密钥的长度为128位时,加密次数为10;或者,当密钥的长度为192位时,加密次数为12;或者,当密钥的长度为256位时,加密次数为14。
进一步的,步骤S103、根据第一随机数及第二随机数生成验证码,将验证码加入到加密后的密文,采用AES分别对密钥及验证码进行加密,获得加密密钥以及加密验证码,并分别对密钥以及验证码进行数字签名。具体包括:
首先,根据第一随机数及第二随机数生成验证码,包括:按照第一随机数在前第二随机数在后的顺序进行排列,当第一随机数的位数小于第二随机数时,在排列后的数字前面补充相应数量的0,相应数量为第一随机数及第二随机数的在位数上的差值。例如,第一随机数为12,第二随机数为110时,得到的验证码为012110。如此,便于后续根据收到的验证码进行第一随机数及第二随机数的获取。
其次,采用AES分别对密钥及验证码进行加密,获得加密密钥以及加密验证码,如此能够便于后续解压过程中获取到密钥以及验证码,进而便于后续的解压后的验证过程。
最后,分别对密钥以及验证码进行数字签名,数字签名算法基于非对称加密算法,可以给数据提供信息验证(签名可以简单验证)、完整性(可以验证数据是否被篡改)、不可否认性(签名方不可抵赖)。如此,便于后续的验证过程。
进一步的,步骤S104、将密文、密钥的数字签名以及验证码的数字签名一并发送。具体包括:
该步骤能够使得接收到用于判断是否需要解压的密钥以及验证码的数字签名,以便在签名通过时利用接收到的密文进行解压。
进一步的,步骤S105、解压出密钥以及验证码并分别进行数字签名验证,当密钥以及验证码的签名验证均通过时,结合验证码对密文进行解密,当解压出的密文中验证码正确,则通讯成功。否则,提示重新进行发送。具体包括:
首先,解压出密钥以及验证码并分别进行数字签名验证,当密钥以及验证码的签名验证均通过时,说明数据通信过程可信,并进一步解压出密文中包括的验证码,当密文中得到的验证码与验证码签名一致时,说明数据并未在传输过程中遭到篡改,可以保存解压得到的数据。
同时,结合验证码对密文进行解密的过程包括,根据验证码前半部分获得第一随机数,同时根据验证码的后半部分获得第二随机数;对密文分组成长度为128位的各密文块,根据第一随机数及第二随机数对密文进行密文块片段划分并排列的逆操作,以对密文块进行重组,对重组后得到的密文块依次进行轮密钥加、反列变换、反行变换以及反字节替换,进行迭代直至迭代次数达到密钥的长度对应的加密次数,得到解密后的明文。
最后,当解压出的密文中验证码正确,则进一步说明数据未被篡改,本次数据通讯过程成功。
基于与上述方法相同的发明构思,本实施例还提供了一种大数据平台,包括处理引擎、网络模块和存储器,所述处理引擎和所述存储器通过所述网络模块通信,所述处理引擎从所述存储器中读取计算机程序并运行,以实现本发明实施例中序列化数据安全通信方法。
由于序列化数据安全通信方法实施例中已经对序列化数据进行安全通信的方法进行了说明,此处不再赘述。
综上所述,本发明实施例提供了一种序列化数据安全通信方法及大数据平台,能够结合随机生成的随机数对序列化数据进行AES加密并传输,能够在不同时刻的数据传输过程中,将相同的明文块加密成不同的密文块,提高通信过程中序列化数据的机密性,同时避免重放攻击。
本发明中涉及诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
还需要指出的是,在本发明的方法和系统中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
上述实施例仅仅是为清楚地说明所做的举例,并不构成对本发明的保护范围的限制。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动,这里无需也无法对所有的实施方式予以穷举。凡是与本发明相同或相似的设计均属于本发明的保护范围之内。