一种轮密钥动态生成对称密码的电路及方法
【技术领域】
[0001] 本发明属于数字电路技术领域,尤其涉及一种轮密钥动态生成对称密码的电路及 方法。
【背景技术】
[0002] SMS4是中国国家商用密码局于2006年1月公布的用于无线局域网产品的分组对 称密码算法,它是国内官方公布的第一个商用密码算法,极大地推进了密码算法研宄的本 土化。
[0003] 高级加密标准(AES)是21世纪初公布的一种新型安全加密标准。由于AES是DES 的替代者,它自从被接纳为标准之日起就已经被银行业,行政部门和工业界作为事实上的 密码标准。
[0004] 传统的AES算法以及SMS4算法电路实现大多采用了轮密钥预计算方式,即先将每 轮操作所需要的轮密钥全部计算出来,存放在RAM里,当进行轮操作时再一一取出,这种方 法轮密钥占用了RAM的面积,而且加密过程需等待轮密钥全部生成完毕才可开始,数据的 吞吐率低。
【发明内容】
[0005] 本发明实施例提供了一种轮密钥动态生成对称密码的电路及方法,旨在解决现有 技术中轮密钥占用了RAM的面积,而且加密过程需等待轮密钥全部生成完毕才可开始,数 据的吞吐率低的问题。
[0006] 第一方面,提供一种轮密钥动态生成对称密码的电路,包括:轮密钥迭代寄存器 堆、数据迭代寄存器堆、第一轮操作单元和第二轮操作单元,所述轮密钥迭代寄存器堆、所 述数据迭代寄存器堆均包括至少一个32位的D触发器,轮密钥迭代寄存器堆的输出端连接 第一轮操作单元的输入端,第一轮操作单元的输出端连接轮密钥迭代寄存器堆的输入端; 数据迭代寄存器堆的输出端与轮密钥迭代寄存器堆的输出端连接第二轮操作单元的输入 端,第二轮操作单元的输出端连接数据迭代寄存器堆的输入端,所述第一轮操作单元用于 在每个时钟上升沿对轮密钥进行更新,所述第二轮操作单元用于在每个时钟上升沿对数据 迭代寄存器堆的数据进行更新。
[0007] 进一步地,所述对称密码具体为AES或SMS4。
[0008] 进一步地,所述轮密钥迭代寄存器堆包括8个32位的D触发器,所述数据迭代寄 存器堆包括4个32位的D触发器。
[0009] 进一步地,所述第一轮操作单元包括AES轮密钥扩展函数以及SMS4轮密钥扩展函 数。
[0010] 进一步地,所述第二轮操作单元包括AES轮操作函数以及SMS4轮操作函数。
[0011] 第二方面,提供一种轮密钥动态生成对称密码的方法,包括:
[0012] 实时检测时钟上升沿;
[0013] 在时钟上升沿,轮密钥迭代寄存器堆的输出端数据由第一轮操作单元进行轮密钥 更新,同时数据迭代寄存器堆的输出端数据与轮密钥迭代寄存器堆的输出端数据由第二轮 操作单元对数据进行更新从而完成了一次轮操作,直至完成最后一轮轮操作。
[0014] 进一步地,所述对称密码具体为AES或SMS4。
[0015] 进一步地,所述轮密钥迭代寄存器堆由8个32位的D触发器组成,所述数据迭代 寄存器堆由4个32位的D触发器组成。
[0016] 进一步地,所述第一轮操作单元包括AES轮密钥扩展函数以及SMS4轮密钥扩展函 数。
[0017] 进一步地,所述第二轮操作单元包括AES轮操作函数以及SMS4轮操作函数。
[0018] 在本发明实施例,包括轮密钥迭代寄存器堆、数据迭代寄存器堆、第一轮操作单元 和第二轮操作单元,轮密钥迭代寄存器堆的输出端连接第一轮操作单元的输入端,第一轮 操作单元的输出端连接轮密钥迭代寄存器堆的输入端;数据迭代寄存器堆的输出端与轮密 钥迭代寄存器堆的输出端连接第二轮操作单元的输入端,第二轮操作单元的输出端连接数 据迭代寄存器堆的输入端,所述第一轮操作单元和所述第二轮操作单元分别用于在每个时 钟上升沿对轮密钥和数据迭代寄存器堆的数据进行更新。本发明,加密过程无需等待所有 轮密钥生成结束即可开始,增加了对数据的吞吐率,节省了RAM。
【附图说明】
[0019] 图1是本发明实施例一提供的轮密钥动态生成对称密码的电路的结构框示意图;
[0020] 图2是本发明实施例二提供的轮密钥动态生成对称密码的方法的实现流程图;
[0021] 图3是AES密钥宽度128位时轮密钥动态生成结构示意图;
[0022] 图4是AES密钥宽度192位时轮密钥动态生成结构示意图;
[0023] 图5是AES密钥宽度256位时轮密钥动态生成结构示意图;
[0024] 图6是SMS4轮密钥动态生成结构示意图。
【具体实施方式】
[0025] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并 不用于限定本发明。
[0026] 以下结合具体实施例对本发明的实现进行详细描述:
[0027] 实施例一
[0028] 图1示出了本发明实施例一提供的轮密钥动态生成对称密码的电路的具体结构 框图,为了便于说明,仅示出了与本发明实施例相关的部分。在本实施例中,该电路包括:轮 密钥迭代寄存器堆1、数据迭代寄存器堆2、第一轮操作单元3和第二轮操作单元4,所述轮 密钥迭代寄存器堆1和数据迭代寄存器2堆由若干个32位的D触发器组成,轮密钥迭代寄 存器堆1的输出端Q连接第一轮操作单元3的输入端,第一轮操作单元3的输出端连接轮 密钥迭代寄存器堆1的输入端;数据迭代寄存器堆2的输出端与轮密钥迭代寄存器堆1的 输出端连接第二轮操作单元4的输入端,第二轮操作单元4的输出端连接数据迭代寄存器 堆2的输入端,所述第一轮操作单元3用于在每个时钟上升沿对轮密钥进行更新,所述第二 轮操作单元4用于在每个时钟上升沿对数据迭代寄存器堆的数据进行更新。具体的,所述 对称密码具体为AES或SMS4。优选的,所述轮密钥迭代寄存器堆由8个32位的D触发器组 成,所述数据迭代寄存器堆由4个32位的D触发器组成。
[0029] 在本实施例中,在时钟上升沿到来之前,数据迭代寄存器堆的输出端Q的数据与 轮密钥迭代寄存器堆的输出端Q的数据经过第二轮操作单元之后被接在数据迭代寄存器 堆的输入端D,当时钟上升沿到来时,数据迭代寄存器堆的数据被更新,从而完成了一次轮 操作,直至完成最后一轮轮操作。轮密钥迭代寄存器堆的输出端Q同时经过第二轮操作单 元后接在轮密钥迭代寄存器堆的输入端D,从而在每个时钟上升沿对轮密钥进行更新,保证 轮密钥的生成与轮操作同步,每次轮操作过程中只使用一组轮密钥的特性,使轮密钥的生 成能够与轮操作同步起来,从而为每次轮操作动态地生成当前轮操作所需轮密钥。使用这 种方式实现的AES/SMS4电路与轮密钥预计算方式相比,节省了RAM的使用面积,并且加密 过程无需等待所有轮密钥生成结束即可开始,从而增加了对数据的吞吐率。
[0030] 具体的,所述第一轮操作单元包括AES轮密钥扩展函数以及SMS4轮密钥扩展函 数。所述第二轮操作单元包括AES轮操作函数以及SMS4轮操作函数,当选择不同的密码算 法时,由数据选择器MUX来选择是何种密钥扩展函数以及轮操作函数。
[0031] 本实施例,在每个时钟上升沿对轮密钥和数据同步更新,节省了RAM,加密过程无 需等待所有轮密钥生成结束即可开始,增加了对数据的吞吐率。
[0032] 实施例二
[0033] 图2示出了本发明实施例二提供的轮密钥动态生成对称密码的方法的实现流程, 详述如下:
[0034] 在步骤S201中,实时检测时钟上升沿。
[0035] 在本实施例中,CLK为时钟信号,在时钟上升沿到来之前,数据迭代寄存器堆的输 出端Q的数据与轮密钥迭代寄存器堆的输出端Q的数据经过第二轮操作单元之后被接在数 据迭代寄存器堆的输入端D。
[0036] 在步骤S202中,在时钟上升沿,轮密钥迭代寄存器堆的输出端数据由第一轮操作 单元进行轮密钥更新,同时数据迭代寄存器堆的输出端数据与轮密钥迭代寄存器堆的输出 端数据由第二轮操作单元对数据进行更新从而完