一种安全性适应速度变化的加密系统
技术领域
本发明涉及信息传输中的高速加密技术,加密电路设计以及加密控制电路设计技术,属于信息安全领域。
背景技术
随着计算机技术,通信技术的飞速发展,信息安全问题越来越受到人们的重视,各种新型加密技术和分析技术不断涌现。与传统的软件加密技术相比,硬件加密技术具有占用主机资源少、加密速度快等优点,无疑具有更大的发展潜力。
但是当前硬件加密技术普遍存在以下不足:
由于数据传输的方式和应用背景多种多样,数据传输的速度并不统一。以互联网通信为例,速度从几兆,几十兆直到工程应用的千兆不等。如果数据流的传输速度较慢,大量加密操作时钟将被闲置,无法得到充分利用。在低速数据传输中,加密速度要高于数据传输速度,在加密操作结束后,下一步数据传输到位之前,大量的可用时钟会被闲置。而在密码学中,加密的安全性和使用的加密算法的轮数密切相关,目前比较典型的分组密码分析方法如线性分析、差分分析、代数分析、Square分析等,都只能攻击到某一个固定的轮数,超过该轮数就无法破解密码算法,因此算法的轮数越多,加密的安全性越高,而尚未有硬件加密技术利用闲置的时钟来增加算法轮数,提高加密的安全性。
本发明的先进性体现在:首创性的利用了速度可变硬件平台下,加密时钟与数传时钟差异的空闲时钟来增加加密的安全性。
发明内容
针对上述存在的问题,本发明提出了一种安全性适应速度变化的加密方法及装置。
本发明所述的安全性适应速度变化的加密系统,其特征在与,该系统包括以下十个部分:
1.一种安全性适应速度变化的加密系统,其特征在于,该系统包括速度选择模块、系数计算模块、晶振、锁相环PLL1、锁相环PLL2、明文输入模块、加密模块、密钥扩展模块、密文输出模块;
模块1.速度选择模块的方式多种多样,任意可以发送出表征加密速度的参数spi的方法或装置(比如多路器或者速度自适应装置)都在允许之列。在这里,不妨假设使用多路器来作为速度选择模块。该模块由一路选择信号sel_sp通过一个多路器将预设的可选加密速度sp1、sp2……spn选择其中一个,并将该信号作为一个系数发送给系数计算模块用于计算锁相环PLL1的分频系数para_sp1以及加密模块可以使用的轮数r_max;该模块通过调节按钮来改变sel_sp输入信号,从而达到速度选择的目的;
模块2.系数计算模块接受速度选择模块发来的速度信号spi,并依据选择的加密速度spi、预设的明文输入(密文输出)分组长度data_io_blc以及明文输入(密文输出)时钟数rd_io计算出锁相环PLL1的分频系数para_sp1=(data_io_blc*rd_io*clk_pri)/spi;依据选择的加密速度spi、加密模块加载的加密算法分组长度crypt_blc以及加密模块加载的加密算法的最大钟频crypt_clk计算出加密模块可以使用的轮数r_max=spi/(crypt_blc*crypt_clk);
模块3.轮数计数器接受来自系数计算模块的参数r_max,并将其作为计数器的上限值,通过在0和r_max之间的计数操作,达到算法的轮数控制的目的,实现了根据速度的变化自动变更轮数来改变其安全性能。
模块4.晶振产生一个10MHz的原始时钟clk_pri,并将其发送到锁相环PLL1用于生成明文输入和密文输出钟频clk_io;发送到锁相环PLL2用于生成加密时钟clk_rd;
模块5.锁相环PLL1根据晶振产生的原始时钟clk_pri和系数计算模块计算出的分频系数para_sp1,生成用于明文输入和密文输出的钟频clk_io,并将clk_io发送到明文输入模块和密文输出模块;
模块6.锁相环PLL2根据晶振产生的原始时钟clk_pri和预先依据加密模块加载的加密算法的最大钟频crypt_clk,计算出的锁相环PLL2的分频系数para_sp2=(clk_pri)/(crypt_clk),生成用于加密和密钥扩展的时钟clk_rd,并将clk_rd发送到加密模块;
模块7.明文输入模块采用预设的明文输入分组长度data_io_blc和明文输入轮数rd_io,以及锁相环PLL1生成的分频时钟clk_io,将明文输入到加密模块;
模块8.加密模块加载一种加密算法,接受系数计算模块计算出来的轮数r_max对自身轮数进行调节,使用时钟clk_rd,从明文输入模块输入明文,并对其进行加密,并将密文输出到密文输出模块进行输出;
模块9.密钥扩展模块可以通过手动输入种子密钥,也可以通过外接伪随机序列生成模块(如图4)的方式自动生成种子密钥,接受到种子密钥后,使用时钟clk_rd,依据加密模块加载的加密算法配套的密钥扩展方案,接受系数计算模块计算出来的轮数r_max对自身产生轮密钥数进行调节,生成轮密钥,并发送给加密模块;
模块10.密钥输出模块采用预设的密文输出分组长度data_io_blc和密文输出轮数rd_io,以及锁相环PLL1生成的分频时钟clk_io,接受加密模块传来的密文,并输出出去。
附图说明
图1为本发明的整体结构示意图;
图2为速度选择模块示意图;
图3为伪随机序列生成模块示意图;
图4为系数计算模块示意图;
图5为本发明提供方法的流程图。
具体实施方法
具体实施步骤如图1总体结构示意图和图5方法流程图所示:
步骤1:获取数据传输的速度。触发速度选择模块,通过调节按钮来改变sel_sp输入信号,从而达到速度选择的目的,并将选择的加密速度spi传到系数计算模块,转至步骤2。
步骤2:计算得出锁相环PLL1的分频系数para_sp1和加密模块可以使用的加密轮数r_max,实现轮数控制。触发系数计算模块,依据选择的加密速度spi、预设的明文输入(密文输出)分组长度data_io_blc以及明文输入(密文输出)时钟数rd_io计算出锁相环PLL1的分频系数para_sp1=(data_io_blc*rd_io*clk_pri)/spi,并将其传到锁相环PLL1;依据选择的加密速度spi、加密模块加载的加密算法分组长度crypt_blc以及加密模块加载的加密算法的最大钟频crypt_clk计算出加密模块可以使用的轮数r_max=spi/(crypt_blc*crypt_clk),其中data_io_blc为明文输入和密钥输出预设的分组长度,为常值;rd_io为明文输入和密钥输出预设的时钟数,为已知预设值;clk_pri为晶振生成的原始时钟;crypt_clk为加密模块加载的加密算法的最大钟频,对特定的加密算法而言,为已知预设值;crypt_blc为加密模块加载的加密算法的分组长度,对特定的加密算法而言,为常值;因此相对特定的spi,生成para_sp1为常值,r_max为常值。将计算出的r_max值传送到轮数计数器,作为计数器的上限值,从而实现轮数控制。转到步骤3。
步骤3:输入种子密钥。种子密钥的输入有两种方式,可以手动输入,也可以外接物理噪声源自动生成。
步骤4:明文输入模块读取明文,并输入到加密模块中。锁相环PLL1接受来自系数计算模块的分频系数para_sp1,并进行分频处理,生成钟频clk_io,明文输入模块按照钟频clk_io,每个时钟读入data_io_blc个比特数据,总计使用rd_io个时钟完成明文输入过程,并将输入的明文转到加密模块,转到步骤5。
步骤5:进行密钥扩展,并将扩展密钥roundkey输入到加密模块中,加密模块进行加密。锁相环PLL2接受来自系数计算模块的分频系数para_sp2,并进行分频处理,生成钟频clk_rd;加密模块和密钥扩展模块按照钟频clk_rd进行操作,同时接受轮数计数器的计数信号para_r的调节。转到步骤6。
步骤6:密文输出模块输出密文。密文输出模块按照钟频clk_io,每个时钟输出data_io_blc个比特数据,总计使用rd_io个时钟完成密文输出过程。加密结束。
本发明的有益效果:
本发明首次提供了一种安全性适应速度变化的加密方法,适用于速度可变的硬件平台中,适应速度更改加密算法的轮数,使得空闲操作时钟得到充分利用来增加系统的安全性,在不增加加密装置资源,不影响加密装置速度变化的条件下,成功的更加了加密的安全性,实现了装置性能的提高。本发明可以应用在保密的硬件存储设备的静态加密、微波或光通信链路、计算机终端的接受或者发射端口等工业和技术生产中。