针对sm4密码算法的可扩展流水线电路及其实现方法

文档序号:9813924阅读:760来源:国知局
针对sm4密码算法的可扩展流水线电路及其实现方法
【专利说明】
[0001 ]
技术领域: 本发明设及信息安全技术和集成电路设计领域,尤其设及一种针对SM4密码算法的可 扩展流水线电路及其实现方法。
[0002]
【背景技术】: SM4算法即原SMS4算法,是由国家商用密码管理办公室于2006年1月公布的用于无线局 域网产品的分组对称密码算法,在2012年3月被国家密码管理局批准为行业标准。
[0003] SM4算法是一种分组密码算法,其分组长度和密钥长度均为128比特。SM4算法标准 中将该算法划分为=部分:加密算法、解密算法和密钥扩展算法。加密算法由32次迭代运算 和1次反序变换组成,每次迭代运算需要载入一组轮密钥到轮函数中。解密算法与加密算法 结构相同,区别仅在于轮密钥的使用顺序。加密和解密算法在迭代运算中所需的轮密钥由 密钥扩展算法提供。
[0004] SM4算法的实现可概括为两类:软件实现和硬件实现。软件实现方式运行速度慢, 且安全性较差。硬件实现方式运行速度快,安全性高。现有的硬件电路结构多采用循环的方 式实现32次迭代,即一组128比特的数据在未完成32次迭代之前,不允许载入新数据,运就 导致吞吐率较低。然而,如果将32次迭代完全展开,虽然可W获得很高的吞吐率,但是又会 带来较大的面积开销。
[000引
【发明内容】
: 本发明的目的是针对上述存在的问题提供一种针对SM4密码算法的可扩展流水线电路 及其实现方法,既可W提供较高的吞吐率,又不会带来较大面积开销。
[0006] 上述的目的通过W下的技术方案实现: 一种针对SM4密码算法的可扩展流水线电路,其至少包括:数据分配与使能信号生成模 块(S102XSM4算法核阵列(S104)W及输出数据缓冲模块(S105); 所述的数据分配与使能信号生成模块(S102)将128比特数据轮流分配到各SM4算法核 阵列(S104)之中; 所述的SM4算法核阵列(S104)用于实现加解密迭代运算和密钥扩展算法,所述的SM4算 法核阵列(S104)包含N/4个SM4算法核,其中第1个核(S106)是密钥扩展与加解密的硬件电 路结构上的复用,用于实现密钥扩展或者实现加解密;第2~N/4个SM4算法核(S107)仅用于 实现加解密; 所述的输出数据缓冲模块(S105)用于将128比特的加解密结果输出。
[0007] 所述的针对SM4密码算法的可扩展流水线电路,还包括输入数据缓冲模块(S101), 所述的输入数据缓冲模块(SlOl)用于将连续输入的化k特数据经过128/N个周期之后拼接 为12化k特的数据,其中N等于8或者16或者32或者64。
[000引所述的针对SM4密码算法的可扩展流水线电路,还包括控制状态机(S103),所述的 控制状态机(S103)用于控制整个电路的工作状态并向电路外部输出状态信号。
[0009]所述的针对SM4密码算法的可扩展流水线电路,,所述的数据分配与使能信号生成 模块(S102)由一个移位寄存器和两个计数器A和计数器B组成:所述的移位寄存器用于生成 SM4算法核的使能信号,有N/4个输出,每个输出对应一个SM4算法核; 所述的计数器A位宽为IogsWSW比特,计数值从O到128/N - 1,用于控制化k特数据拼 接为128比特所需要的时钟周期数;所述的计数器B位宽为IogsfWW比特,计数值从0到N/4- Io
[0010] 上述的针对SM4密码算法的可扩展流水线电路的实现方法:该方法为:采用SM4算 法核阵列(S104)实现加解密迭代运算和密钥扩展算法,所述的SM4算法核阵列(S104)包含 N/4个SM4算法核,每个SM4算法核循环迭代32次完成128比特数据的加/解密,N/4个SM4算法 核并行执行,所述SM4算法核的数目根据I/O位宽进行调整,设I/O位宽为N,那么结构中包含 的算法核数为N/4,具体是:将位宽为N的输入数据经过128/N个周期之后,拼接成为12化k特 的数据,然后轮流依次分配到N/4个SM4算法核中,使得分配到每个算法核的数据均能保持 32个周期,并且分配到相邻两个算法核的128比特数据相互之间错开128/N个周期,使得输 入数据可W无需等待的连续传输,同样地,相邻两个算法核的计算结果错开128/N个周期, 每个计算结果正好需要128/N个周期完成输出,使得输出数据也可W无需等待的连续传输, 分配到每个算法核的数据所保持的32个周期正好是SM4算法核通过32次迭代完成128比特 数据加/解密所需的时间,数据传输和加/解密在时间上形成了交叠,使得无需等待的流水 线执行方式得W实现。
[0011]
【附图说明】: 图1本发明提供的SM4算法流水线结构示意图; 图2本发明提供的SM4算法流水线结构设计的控制状态转换图;
【具体实施方式】: 为使本发明的目的、技术方案和有点更加清楚明白,W下结合具体实施例,并参照附 图,对本发明进一步详细说明。
[001引本发明提供一种针对SM4密码算法的可扩展流水线电路,如图1所示,具体包括:输 入数据缓冲模块S101、数据分配与使能信号生成模块S102、控制状态机S103、SM4算法核阵 列S104W及输出数据缓冲S105。其中,输入数据缓冲模块S101将连续输入的N(N等于8,16, 32,64)比特数据经过128/N个周期之后拼接为128比特的数据;数据分配与使能信号生成模 块S102将输入缓冲器输出的128比特数据轮流分配到各个SM4算法核之中,并为各个SM4算 法核提供使能信号;控制状态机S103用于控制整个电路的工作状态并向电路外部输出状态 信号;SM4算法核阵列S104用于实现加解密迭代运算和密钥扩展算法;输出数据缓冲S105将 128比特的加解密结果经过128/N个周期分割成128/N个N比特的数据进行连续输出。
[0013] 如图2所示,控制状态机S103包括4个状态,具体包括:空闲S201、密钥扩展S202、 加 /解密S203和收尾S204。各个状态的描述如下: 空闲阶段S201:电路"使能"信号置高之后,进入空闲阶段,然后等待"开始工作"信号置 局。
[0014]密钥扩展阶段S202:"开始工作'信号置高之后,进入密钥扩展阶段,将"载入数据 请求"信号置高,等待"开始载入数据"信号置高,开始载入数据,经过128/N个周期之后,密 钥载入完毕,此时,外部信号"开始载入数据"信号应该拉低。外部信号"开始载入数据"信号 拉低的同时,进行密钥扩展,经过32个周期之后,密钥扩展完毕,拉高"密钥扩展完毕"信号。 [00 1引加密/解密阶段S203:拉高"密钥扩展完毕"信号之后,进入加解密阶段,等待"开始 载入数据"置高之后开始连续载入数据,经过128/N个周期之后开始加解密。所有数据载入 完毕之后,外部信号"开始载入数据"应该拉低。"载入数据请求"在外部信号"开始载入数 据"变低之后拉低。在"开始载入数据"置高之后的第128/N + 32个周期,加解密结果开始输 出,每个周期输出N比特,输出结果伴随着置高的"输出数据有效"信号。
[0016] 收尾阶段S204:"开始载入数据"信号拉低则表明所有数据载入完毕,此时状态机 进入收尾阶段。待所有数据加解密完成之后,拉高信号"工作完毕",状态机收到此信号之 后,返回空闲状态。此时,用户可W拉低研始工作"信号W及电路"使能"信号。
[0017] 数据分配与使能信号生成模块S102由一个移位寄存器和两个计数器A和B组成。移 位寄存器用于生成SM4算法核的使能信号,有N/4个输出,每个输出对应一个SM4算法核。移 位寄存器的第1个输出为"开始载入数据"信号寄存128/N个周期之后的输出;第2个输出为 "开始载入数据"信号寄存2X128/N个周期之后的输出;第3个输出为"开始载入数据"信号 寄存3X128/N个周期之后的输出;W此类推。移位寄存器的第1~N/4个输出经过或运算之 后,作为第1个SM4算法核的使能信号;移位寄存器的第2~N/4个输出经过或运算之后,作为 第2个SM4算法核的使能信号;移位寄存器的第3~N/4个输出经过或运算之后,作为第3个SM4 算法核的使能信号;W此类推。
[0018] 计数器A位宽为IogsWSW比特,计数值从0到128/N - 1,用于控制化k特数据拼接 为128比特所需要的时钟周期数。计数器B位宽为IogsfWW比特,计数值从0到N/4-1。数据分 配的具体方式为:当计数器A的计数值达到计数最大值时,表明128比特的数据已经准备好, 依据计数器B当前的计数值,将运12化k特的数据分配到对应编号的SM4算法核之中。W32比 特的I/O接口为例,计数器A位宽为化k特,计数器B位宽为3比特,若
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1