一种可并行执行的数据压缩与分组加密方法与流程

摘要: 本发明涉及数据压缩与加密领域,特别涉及一种可并行执行的数据压缩与分组加密方法。背景技术:1、随着数据存储、网络传输和云端处理规模不断增加,为降低数据传输量并保障...
一种可并行执行的数据压缩与分组加密方法与流程

本发明涉及数据压缩与加密领域,特别涉及一种可并行执行的数据压缩与分组加密方法。

背景技术:

1、随着数据存储、网络传输和云端处理规模不断增加,为降低数据传输量并保障数据安全,通常需要对待处理数据依次进行压缩和加密。现有技术一般先完成整段数据或整个数据块的压缩处理,再对获得的压缩数据执行加密处理,压缩过程与加密过程存在明显的前后依赖关系,导致加密处理单元在压缩完成前处于等待状态,难以充分利用多核处理器、专用压缩单元和密码运算单元的并行处理能力。部分现有方案虽然将待处理数据划分为多个数据块,并分别对不同数据块执行压缩和加密,但其主要是在不同数据块之间形成流水处理,并未解决同一数据组内部压缩处理和加密处理在时间上重叠执行的问题。

2、此外,压缩处理产生的压缩数据通常具有输出长度不固定的特点,不同压缩窗口的数据熵、重复数据比例和压缩字典匹配情况不同,使得压缩完成前难以准确确定后续所需的加密分组数量和密钥流长度。若待压缩数据全部处理完成后再生成加密参数,会增加整体处理延迟;若预先按照原始数据长度生成密钥流,则容易出现密钥流不足或者大量剩余的情况。与此同时,在压缩处理与加密处理并行执行时,还需要处理压缩数据缓存积压、加密计数区间重复使用、不同加密子组乱序完成以及异常中断后压缩状态与加密状态难以同步恢复等问题。

3、为此,提出一种可并行执行的数据压缩与分组加密方法。

技术实现思路

1、本发明的主要目的在于提供一种可并行执行的数据压缩与分组加密方法,可以有效解决背景技术中的问题。

2、为实现上述目的,本发明采取的技术方案为,

3、一种可并行执行的数据压缩与分组加密方法,包括以下步骤:

4、s1、获取待处理数据,将所述待处理数据划分为多个顺序排列的数据组,并将各数据组划分为多个压缩窗口,分别为各数据组和各压缩窗口配置数据组标识和窗口标识;

5、s2、提取当前压缩窗口的数据特征,根据所述数据特征预测所述当前压缩窗口的压缩输出长度,并根据所述预测压缩输出长度确定预计加密分组数量以及与所述预计加密分组数量对应的加密计数区间;

6、s3、根据主密钥、处理任务标识、当前数据组的数据组标识和会话随机量生成当前数据组对应的数据组密钥,并根据所述数据组密钥、当前压缩窗口的窗口标识和所述加密计数区间,确定候选密钥流生成参数;

7、s4、并行启动当前数据组的压缩处理任务和候选密钥流生成任务,通过所述压缩处理任务依次读取当前数据组中的原始数据,将生成的变长压缩数据连续写入压缩输出缓存,并通过所述候选密钥流生成任务根据所述候选密钥流生成参数生成候选密钥流,将所述候选密钥流写入密钥流缓存;

8、s5、根据所述压缩输出缓存中的压缩写入位置和加密读取位置,持续确定当前压缩窗口对应的未加密压缩数据;在当前数据组的全部原始数据完成压缩之前,当所述未加密压缩数据达到预设加密分组长度时,从中提取压缩数据形成加密子组;当当前数据组的全部原始数据完成压缩且存在不足所述预设加密分组长度的剩余未加密压缩数据时,将所述剩余未加密压缩数据形成尾部加密子组;为所述加密子组和尾部加密子组分别配置加密子组序号、压缩起始偏移和有效数据长度;

9、s6、根据各加密子组的压缩起始偏移确定对应的加密计数位置,在当前数据组的全部原始数据完成压缩之前,启动针对已形成加密子组的加密处理,并利用所述数据组密钥和对应加密计数位置的候选密钥流,对已形成以及后续形成的各加密子组执行基于分组密码的加密处理,获得加密压缩数据和认证标签;

10、s7、获取当前压缩窗口的实际压缩输出长度,根据所述实际压缩输出长度与所述预测压缩输出长度之间的差异调整候选密钥流,其中,在候选密钥流不足时分配扩展计数区间并生成扩展密钥流,在候选密钥流存在剩余时将未使用候选密钥流对应的加密计数位置标记为失效;

11、s8、根据各加密子组的数据组标识、窗口标识、加密子组序号和压缩起始偏移建立加密子组索引,并根据所述加密子组索引对各加密压缩数据进行有序封装,生成所述待处理数据对应的加密压缩结果。

12、进一步的,所述数据特征至少包括当前压缩窗口的归一化数据熵、压缩字典匹配率、字面量数据比例以及前一压缩窗口的实际压缩率;所述当前压缩窗口的预测压缩率按照下式确定:

13、

14、其中,为第个压缩窗口的预测压缩率,为前一压缩窗口的实际压缩率,为第个压缩窗口的归一化数据熵,为第个压缩窗口的压缩字典匹配率,为第个压缩窗口的字面量数据比例,、、和为预设权重且权重之和为1,和分别为预设压缩率下限和预设压缩率上限,表示将计算结果限制在所述预设压缩率下限与预设压缩率上限之间;

15、对于当前数据组中的首个压缩窗口,所述前一压缩窗口的实际压缩率取预设初始压缩率。

16、进一步的,根据当前压缩窗口之前的压缩窗口对应的预测压缩率与实际压缩率之间的差异,确定当前压缩窗口的预测误差;所述当前压缩窗口的预测压缩输出长度按照下式确定:

17、

18、其中,为第个压缩窗口的预测压缩输出长度,为第个压缩窗口的原始数据长度,为第个压缩窗口的预测误差,为预设误差放大系数,为预设加密分组长度,表示向上取整;根据所述预测压缩输出长度与所述预设加密分组长度的比值向上取整,确定所述预计加密分组数量;对于当前数据组中的首个压缩窗口,所述预测误差取预设初始预测误差。

19、进一步的,通过原子计数游标为各压缩窗口分配互不重叠的加密计数区间,将分配前的原子计数游标值作为当前压缩窗口对应的起始计数值,并在完成分配后按照所述预计加密分组数量更新所述原子计数游标;当前压缩窗口的预计加密分组数量以及第j个加密子组对应的起始加密计数位置按照下式确定:

20、,

21、其中,为第个压缩窗口的预计加密分组数量,为第个压缩窗口的预测压缩输出长度,为预设加密分组长度,为第个压缩窗口中第个加密子组对应的起始加密计数位置,为第个压缩窗口对应的起始计数值,为第个加密子组在第个压缩窗口对应的压缩输出中的压缩起始偏移,表示向下取整。

22、进一步的,所述压缩输出缓存为环形缓存,所述环形缓存设置有压缩写入指针、加密读取指针和已提交指针,根据所述压缩写入指针与所述加密读取指针之间的数据量确定缓存占用比例;当所述缓存占用比例大于预设高占用阈值时,通过调度控制器生成加密优先处理信号,并将所述加密优先处理信号发送至任务队列选择接口,以使加密处理单元在下一调度周期优先读取待加密的加密子组,或者向压缩处理单元发送压缩暂停信号,以暂停新的压缩窗口进入压缩处理;当所述缓存占用比例小于预设低占用阈值时,通过所述调度控制器生成压缩优先处理信号,并将所述压缩优先处理信号发送至所述任务队列选择接口,以使所述压缩处理单元在下一调度周期优先读取待压缩的压缩窗口,或者解除所述压缩暂停信号。

23、进一步的,对所述加密子组执行基于分组密码的加密处理,包括:根据所述加密子组的压缩起始偏移和预设加密分组长度,确定所述加密子组对应的起始加密计数位置;将所述数据组标识、窗口标识、加密子组序号、压缩起始偏移、有效数据长度和压缩参数信息中的至少一项设置为附加认证数据;采用具有计数器结构的认证加密模式,根据所述数据组密钥、所述起始加密计数位置和所述附加认证数据,对所述加密子组执行加密处理,生成所述加密压缩数据和认证标签;其中,同一数据组内的不同加密子组对应不同的加密计数位置。

24、进一步的,还包括按照预设检查点间隔生成联合状态检查点,所述联合状态检查点至少记录数据组标识、原始数据已读取位置、当前压缩窗口的窗口标识、压缩状态信息、压缩写入位置、加密读取位置、已提交加密子组序号、原子计数游标和已完成加密数据长度;在压缩处理任务或者加密处理任务发生异常时,恢复最近一个验证通过的联合状态检查点,删除所述联合状态检查点之后尚未确认提交的压缩数据、加密压缩数据以及对应的候选密钥流,将所述联合状态检查点之后已经分配的加密计数区间标记为失效;确定所述已经分配的加密计数区间中的最大结束计数位置,将所述原子计数游标更新至所述最大结束计数位置之后的计数位置,并从更新后的原子计数游标重新分配加密计数区间和生成候选密钥流,以继续执行压缩处理任务和加密处理任务。

25、进一步的,所述加密子组索引至少记录各加密子组的数据组标识、窗口标识、加密子组序号、压缩起始偏移、有效数据长度、加密计数位置、认证标签和处理状态;允许属于同一数据组的多个加密子组按照不同于所述加密子组序号的顺序完成加密处理,并根据所述窗口标识、加密子组序号和压缩起始偏移,对完成加密处理的加密压缩数据进行排序和封装;根据排序后的各加密子组的加密子组序号、压缩起始偏移、有效数据长度和认证标签生成组级认证信息。

26、一种可并行执行的数据压缩与分组加密系统,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时,实现以下功能模块:

27、数据划分模块,用于获取待处理数据,将所述待处理数据划分为多个顺序排列的数据组,并将各数据组划分为多个压缩窗口;

28、压缩输出预测模块,用于根据当前压缩窗口的数据特征预测压缩输出长度,并根据所述预测压缩输出长度确定预计加密分组数量和加密计数区间;

29、密钥流参数确定模块,用于生成当前数据组对应的数据组密钥,并根据所述数据组密钥、窗口标识和加密计数区间确定候选密钥流生成参数;

30、并行处理模块,用于并行启动压缩处理任务和候选密钥流生成任务,将生成的变长压缩数据写入压缩输出缓存,并将生成的候选密钥流写入密钥流缓存;

31、加密子组生成模块,用于在当前数据组的全部原始数据完成压缩之前,根据所述压缩输出缓存中的未加密压缩数据形成加密子组;

32、分组加密模块,用于在当前数据组的全部原始数据完成压缩之前,根据所述加密子组的压缩起始偏移确定对应的加密计数位置,并利用所述数据组密钥和所述加密计数位置对应的候选密钥流,对所述加密子组执行基于分组密码的加密处理;

33、密钥流调整模块,用于根据实际压缩输出长度与预测压缩输出长度之间的差异生成扩展密钥流,或者将未使用候选密钥流对应的加密计数位置标记为失效;

34、结果封装模块,用于根据各加密子组的数据组标识、窗口标识、加密子组序号和压缩起始偏移建立加密子组索引,并根据所述加密子组索引对各加密压缩数据进行有序封装。

35、一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现上述的方法步骤。

36、与现有技术相比,本发明具有如下有益效果,

37、1、本发明通过针对同一数据组并行启动压缩处理任务和候选密钥流生成任务,并在当前数据组全部原始数据完成压缩之前,对已经形成的加密子组启动加密处理,使压缩处理、密钥流生成和分组加密在时间上相互重叠,减少加密处理单元等待压缩完成的时间,提高数据压缩与加密的整体处理效率。

38、2、本发明根据压缩窗口的数据特征预测压缩输出长度,并据此预先确定预计加密分组数量和加密计数区间,同时根据实际压缩输出长度对候选密钥流进行扩展或者失效处理,使预生成的密钥流能够适应压缩数据长度不确定的情况,避免因密钥流不足导致加密处理中断,并降低未使用密钥流被重复分配的安全风险。

39、3、本发明根据压缩输出缓存中的压缩写入位置和加密读取位置动态形成加密子组,并通过加密子组序号、压缩起始偏移和有效数据长度建立加密子组索引,使多个加密子组能够并行、乱序完成加密处理,同时仍可按照原始压缩数据顺序进行有序封装,兼顾并行处理效率和数据恢复的准确性。

40、4、本发明通过设置联合状态检查点,对压缩状态、缓存位置、已提交加密子组以及加密计数位置进行关联记录,在压缩处理或者加密处理发生异常时,将检查点之后已经分配的加密计数区间标记为失效,并从新的加密计数位置重新执行处理,能够避免异常恢复过程中重复使用候选密钥流,提高并行压缩与分组加密过程的连续性和安全性。