一种基于 RAM 共享技术的可重构 S 盒电路结构 技术领域 本发明涉及信息安全技术和集成电路技术领域, 具体地, 涉及一种基于 RAM 共享 技术的可重构 S 盒电路结构, 用于实现分组密码算法中的 S 盒替换操作。
背景技术 随着现代社会的日益信息化、 数字化与网络化, 人们对信息安全技术的需求越来 越广泛和深入。信息安全技术的应用领域, 已从传统的军事、 政治部门, 逐步扩展到社会经 济生活的各个角落 ; 信息安全产品成为整个社会良性运转的重要保障, 保护信息的安全也 已经成为科学技术领域的重要课题。信息安全体系中, 密码算法是信息安全的基础和核心 技术, 在密码算法中分组密码占有重要的地位, 并广泛的被应用于各个领域。
通过对大量的分组密码算法进行分析和研究, 发现分组密码算法具有一个显著的 特征 : 很多不同的分组密码算法具有相同或相近的基本操作, 对 DES、 AES、 RC6 等 27 种典型 的分组密码算法的基本操作及其使用频度做了统计, 发现 S 盒变换的使用频度达到 50%。 S 盒是许多分组密码算法的核心组成部分, 提供分组密码算法所必需的混淆作用。在不同的 分组密码算法中, S 盒的内部结构和构建方式也有所不同。S 盒是许多分组密码算法中的唯 一非线性模块, 因此它的密码强度对整个分组密码算法的安全强度产生直接影响。
现有技术中的密码处理器中, S 盒的实现方式主要有 2 种 : (1) 基于逻辑电路的实 现方式, 即用硬件逻辑电路来实现 S 盒操作所包含的布尔函数, 其占用资源较少, 但运算速 度较慢, 而对于多种不同类型的 S 盒操作来说, 不具可配置性, 不能并行处理数据 ; (2) 基于 查找表 (Look Up Table, LUT) 的实现方式, 将 S 盒替换表存储在存储器 ( 如 RAM 或 ROM) 中, S 盒的输入作为存储器的地址输入, 对应的地址空间中存放的数据就是 S 盒的输出值, 这种 方法占用较多存储单元, 电路实现面积大, 但运算速度快, 并且具有可配置性, 能实现多种 分组密码运算的 S 盒操作, 并且当处理器不工作时, 存储器不带有任何算法信息, 使得处理 器具有更好的安全性。
另一方面, 目前许多的密码处理器中采用流水线技术, 可以大幅提升处理器的运 行速度。 但由于通用 S 盒模块不具备并行处理数据的能力, 所以在 n 级流水线结构的密码 处理器中, 每 1 级的运算模块中都需要包含一个通用 S 盒和其他相应运算单元, 此时处理器 速度增加 n 倍, 同时面积也增加 n 倍, 处理器的效率并没有得到改善。
综上所述, 现有技术中, 基于逻辑电路实现的 S 盒存在运算速度慢, 不具有可配置 性的缺陷 ; 基于查找表实现的 S 盒存在占用存储单元多, 电路实现面积大, 不具备并行处理 数据能力的缺陷。
发明内容 本发明的目的在于, 针对上述问题, 提出一种基于 RAM 共享技术的可重构 S 盒电路 结构, 以实现运算速度快, 配置灵活, 可并行处理数据, 占用存储单元少, 电路实现面积小的 优点。
为实现上述目的, 本发明采用的技术方案如下 :
一种基于 RAM 共享技术的可重构 S 盒电路结构, 包括配置单元和替换单元, 其特征 是所述替换单元包括 n 个替换基元和一块 RAM, 各个替换基元并行工作共享一个 RAM ;
本 S 盒的工作模式包括配置模式和运算模式两种 :
在配置模式下, 配置单元首先接收输入的控制信号, 存储配置信息, 然后根据配置 信息对 RAM 进行初始化配置 ; 替换单元不工作, RAM 在配置单元的控制下进行初始化 ;
在运算模式下, 根据存储的配置信息控制替换单元的运算状态 ; 替换单元接收输 入数据, 完成 S 盒的替换操作, 输出处理后数据 ;
所述替换单元采用基于查找表的方法实现 S 盒 ;
替换单元有对应 n 组输入数据, 分别对应 n 个替换基元 ; 每个替换基元和 RAM 组合 都实现 S 盒的替换功能, 并行实现 n 个 S 盒的流水线操作 ; RAM 包括 m 个相同的单元 RAMm ;
每个替换基元包括输入数据控制电路和输出数据选择电路 ;
输入信号 DATA_INm 输入给输入数据控制电路, 输入信号处理电路处理得到内部 信号 Ainm, Ainm 输出给 RAM 作为 RAM 的输入地址信号, 分别对应输出给相应的单元 RAMm, 由单元 RAMm 把相应的输出数据信号 Aoutm 返回输入到替换基元中, 输出数据选择电路对返 回的数据信号进行处理, 输出最终的数据信号, 即完成 S 盒替换的数据信号。 由运算状态控制信号 MODE_IN 控制替换基元的运算状态, 由配置状态控制信号 CONFIG_IN 对替换基元的配置状态进行控制, MODE_IN 和 CONFIG_IN 来控制由输入数据控制 电路以及输出数据选择电路的工作状态。
所述的替换单元, 由 16 个替换基元和一块 RAM 构成, 用于接收输入数据信号, 完成 S 盒 的替换操作, 输出处理后数据信号。替换单元采用 RAM 共享技术, 使 16 个替换基元共 享一个 RAM, 能够并行工作, 实现 16 个 S 盒的流水线操作。 所述的替换基元包括输入数据控 制电路和输出数据选择电路构成。
替换基元有三种运算状态 : (1)4×4 替换 (2)6×4 替换 (3)8×8 替换。替换基元 和 RAM 组合使用可以实现 S 盒的功能, 配置单元中存储的配置信息控制替换基元的工作状 态, 输入数据控制电路对输入替换基元的数据信号做相应的处理, 输出到 RAM, 作为 RAM 的 输入地址信号。 RAM 输出对应地址的数据信号返回到替换基元, 输出数据选择电路对返回的 数据信号进行处理, 输出最终的数据信号, 即完成 S 盒替换的数据信号。
在配置模式下, 替换单元不工作, RAM 在配置单元的控制下进行初始化。在运算模 式下, 替换单元接收输入数据信号, 完成 S 盒的替换操作, 输出处理后数据信号。替换单元 采用基于查找表的方法实现 S 盒。根据配置的不同, 能够实现多种分组密码算法中的 S 盒 替换操作。
所述的 RAM 由 8 个大小为 64×4 位的 RAM0, RAM1,……, RAM7 组成。输入为 6 位 的地址信号, 输出为 4 位的数据信号。RAM 能同时被 16 个替换基元驱动, 实现 16 个替换基 元的并行工作。
本发明的原理说明如下 :
S 盒本质上可以被看做映射 : S(X) = (f1(X),…, fm(X)) :n 为 S 盒输入 X 的位数, m 为 S 盒输出的 S(X) 位数, f1(X), f2(X), ..., fm(X) 为输出 S(X) 的第 1, 2,… m 位。f1, f2, ..., fm 为输入 X 对应的输出 S(X) 各个位的映射函数, 通常简称 S 是一个 n×m的 S 盒。S 盒通常采用查找表的方式实现, 表的存储量为 m×2n 位。本发明的 S 盒在 4×4 替换、 6×4 替换、 8×8 替换三种运算状态中, 最多需要 8×28 位的 RAM, 所以本发明中采用由 8 8 个 64×4 位的 RAM0, RAM1,……, RAM7 组成的总大小为 8×2 位的 RAM。
本发明的有益效果是 : 本发明具有运算速度快, 配置灵活, 可并行处理数据, 占用 存储单元少, 电路实现面积小的优点。 附图说明
图 1 为本发明的基于 RAM 共享技术的可重构 S 盒电路结构示意图 ;
图 2 为本发明的基于 RAM 共享技术的可重构 S 盒电路结构的替换单元的结构示意 图;
图 3 为本发明的基于 RAM 共享技术的可重构 S 盒电路结构的替换单元的替换基元 的结构示意图 ;
图 4(a) 为本发明的基于 RAM 共享技术的可重构 S 盒电路结构在流水线结构的 DES 密码 处理器中的使用说明图 ;
图 4(b) 为流水线结构的 DES 密码处理器中轮运算的结构图。
表 1 为本发明的基于 RAM 共享技术的可重构 S 盒电路结构的替换单元的替换基元 的信号定义 :
表1具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
如图 1 所示, 本例的基于 RAM 共享技术的可重构 S 盒电路结构由配置单元电路和 替换单元电路构成, 有两种工作模式 : (1) 配置模式 (2) 运算模式。其中 : 配置单元, 用于接 收输入的控制信号, 进行存储, 配置并控制替换单元的运算状态。在配置模式下, 配置单元 首先接收输入的控制信号, 存储配置信息, 然后根据配置信息对 RAM 进行初始化配置 ; 在运 算模式下, 根据存储的配置信息控制替换单元的运算状态。替换单元, 用于接收输入数据,完成 S 盒的替换操作, 输出处理后数据, 由 16 个替换基元和一块 RAM 构成。替换单元采用 基于查找表的方法实现 S 盒。16 个替换基元可以并行工作, 共享一个 RAM。在配置模式下, 替换单元不工作, RAM 在配置单元的控制下进行初始化。在运算模式下, 替换单元接收输入 数据, 完成 S 盒的替换操作, 输出处理后数据。
如图 2 所示, 替换单元由 16 个替换基元和一块 RAM 构成。替换单元采用基于查找 表的方法实现 S 盒。替换单元有 16 组输入数据, 分别对应 16 个替换基元。替换单元采用 RAM 共享技术, 16 个替换基元共享一个 RAM, 每一个替换基元和 RAM 组合都可以实现 S 盒的 替换功能, 最终能够实现 16 个 S 盒的流水线操作。配置单元输入的配置信号控制替换单 元的运算状态, 实现适应不同分组密码算法的 S 盒。RAM 由 8 个大小为 64×4 位的 RAM0, RAM1,……, RAM7 组成, 由配置单元在配置模式下, 通过 RAM 初始化信号, 对 RAM 进行初始 化, 存入数据。
如图 3 和表 1 所示, 替换基元, 由输入数据控制电路和输出数据选择电路构成, 包含 8 个 8 位输入信号 DATA_IN0, DATA_IN1, DATA_IN2, DATA_IN3, DATA_IN4, DATA_IN5, DATA_IN6, DATA_IN7, 1 个时钟信号 CLK, 1 个 1 位的控制信号 CONFIG_IN, 1 个 2 位的控制信 号 MODE_IN, 控制替换基元的运算状态。8 个 6 位的内部信号 Ain0, Ain1, Ain2, Ain3, Ain4, Ain5, Ain6, Ain7, 8 个 4 位输出信号 Aout0, Aout1, Aout2, Aout3, Aout4, Aout5, Aout6, Aout7, 1 个 8 位输出信号 Bout。 CLK 为替换基元提供时钟信号。
CONFIG_IN 对替换基元的配置状态进行控制 :
1: 配置状态 ; 0: 模块工作状态
替换基元在配置模式下不工作, 在运算模式下有三种运算状态 :
(1)4×4 替换 (2)6×4 替换 (3)8×8 替换 ;
(1) 当 MODE_IN = 00 时, 替换基元执行 4×4 替换, 输入信号 DATA_IN0, DATA_IN1, DATA_IN2, DATA_IN3, DATA_IN4, DATA_IN5, DATA_IN6, DATA_IN7 经过输入信号处理电路处 理, 得:
Ain0[5:0] = {2’ b00, DATA IN0[3:0]} ;
( 即 Ain0 的高 2 位为 00, 低 4 位为 DATA_IN0 的低 4 位 )
Ain1[5:0] = {2’ b00, DATA_IN1[3:0]} ;
Ain2[5:0] = {2’ b00, DATA_IN2[3:0]} ;
Ain3[5:0] = {2’ b00, DATA_IN3[3:0]} ;
Ain4[5:0] = {2’ b00, DATA_IN4[3:0]} ;
Ain5[5:0] = {2’ b00, DATA_IN5[3:0]} ;
Ain6[5:0] = {2’ b00, DATA_IN6[3:0]} ;
Ain7[5:0] = {2’ b00, DATA_IN7[3:0]} ;
则: RAM0, RAM1, RAM2, RAM3, RAM4, RAM5, RAM6, RAM7 的输入地址分别为 Ain0, Ain1, Ain2, Ain3, Ain4, Ain5, Ain6, Ain7 ;
RAM0, RAM1, RAM2, RAM3, RAM4, RAM5, RAM6, RAM7 的 输 出 分 别 为 Aout0, Aout1, Aout2, Aout3, Aout4, Aout5, Aout6, Aout7 ;
将 Aout0, Aout1, Aout2, Aout3, Aout4, Aout5, Aout6, Aout7 返回输入到替换基元
中, 再输出就得到经过 32×32( 即 8*4×4) 的 S 盒变换的数据。此模式下 Bout 输出为 0。
(2) 当 MODE_IN = 01 时, 替换基元执行 6×4 替换, 输入信号 DATA_IN0, DATA_IN1, DATA_IN2, DATA_IN3, DATA_IN4, DATA_IN5, DATA_IN6, DATA_IN7 经过输入信号处理电路处 理, 得:
Ain0[5:0] = DATA_IN0[5:0] ; ( 即 Ain0 为 DATA_IN0 的低 6 位 )
Ain1[5:0] = DATA_IN1[5:0] ;
Ain2[5:0] = DATA_IN2[5:0] ;
Ain3[5:0] = DATA_IN3[5:0] ;
Ain4[5:0] = DATA_IN4[5:0] ;
Ain5[5:0] = DATA_IN5[5:0] ;
Ain6[5:0] = DATA_IN6[5:0] ;
Ain7[5:0] = DATA_IN7[5:0] ;
则: RAM0, RAM1, RAM2, RAM3, RAM4, RAM5, RAM6, RAM7 的输入地址分别为 Ain0, Ain1, Ain2, Ain3, Ain4, Ain5, Ain6, Ain7 ;
RAM0, RAM1, RAM2, RAM3, RAM4, RAM5, RAM6, RAM7 的 输 出 分 别 为 Aout0, Aout1, Aout2, Aout3, Aout4, Aout5, Aout6, Aout7 ; 将 Aout0, Aout1, Aout2, Aout3, Aout4, Aout5, Aout6, Aout7 返回输入到替换基元 中,再输出就得到经过 48×32( 即 8*6×4) 的 S 盒替换的数据, 此模式下 Bout 输出为 0。
(3) 当 MODE_IN = 10 时, 替换基元执行 8×8 替换, 在此运算状态下, 输入信号 DATA_IN0 = DATA_IN1 = DATA_IN2 = DATA_IN3 = DATA_IN4 = DATA_IN5 = DATA_IN6 = DATA_IN7,
经过输入信号处理电路处理, 得:
Ain0[5:0] = DATA_IN0[5:0] ; ( 即 Ain0 为 DATA_IN0 的低 6 位 )
Ain1[5:0] = DATA_IN0[5:0] ;
Ain2[5:0] = DATA_IN0[5:0] ;
Ain3[5:0] = DATA_IN0[5:0] ;
Ain4[5:0] = DATA_IN0[5:0] ;
Ain5[5:0] = DATA_IN0[5:0] ;
Ain6[5:0] = DATA_IN0[5:0] ;
Ain7[5:0] = DATA_IN0[5:0] ;
则: RAM0, RAM1, RAM2, RAM3, RAM4, RAM5, RAM6, RAM7 的输入地址分别为 Ain0, Ain1, Ain2, Ain3, Ain4, Ain5, Ain6, Ain7 ;
RAM0, RAM1, RAM2, RAM3, RAM4, RAM5, RAM6, RAM7 的 输 出 分 别 为 Aout0, Aout1, Aout2, Aout3, Aout4, Aout5, Aout6, Aout7 ;
将 Aout0, Aout1, Aout2, Aout3, Aout4, Aout5, Aout6, Aout7 返回输入到替换基元 中, 将它们分为四组 : {Aout0, Aout1}, {Aout2, Aout3}, {Aout4, Aout5}, {Aout6, Aout7}, 将 这四组信号输入 4 选 1 数据选择器 ( 输出数据选择电路 ), DATA_IN0[7 : 6] 为控制信号 :
DATA_IN0[7:6] = 00 时, Bout = {Aout0, Aout1} ;
DATA_IN0[7:6] = 01 时, Bout = {Aout2, Aout3} ;
DATA_IN0[7:6] = 10 时, Bout = {Aout4, Aout5} ;
DATA_IN0[7:6] = 11 时, Bout = {Aout6, Aout7} ;
输出 Bout, 即为经过 8×8 的 S 盒替换的数据。
如图 4(a) 和图 4(b) 所示, 采用流水线结构的 DES 密码处理器, 需要执行 16 轮的 加密运算, 即需要 16 级的轮运算模块, 每 1 级的轮运算模块中都包含扩展置换, 异或, S盒 替换, P 盒置换等操作。如果使用通用设计的 S 盒, 需要 16 个通用 S 盒才能完成 DES 算法 流水线操作, 每一个通用 S 盒都包含一 512×4 位的 RAM。但是使用所述的基于 RAM 共享技 术的可 重构 S 盒, 如图 4(a) 所示, 只需要一个 S 盒就可以实现 16 条流水线的 S 盒替换操 作, 每 1 级轮运算模块中都包含一个替换基元, 16 个替换基元共享一块 512×4 位的 RAM, 实 现 16 个 S 盒的并行替换操作, 节省了 15 个 512×4 位的 RAM 的面积。