《一种支持双域的快速RSA密码协处理器.pdf》由会员分享,可在线阅读,更多相关《一种支持双域的快速RSA密码协处理器.pdf(12页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103793199 A (43)申请公布日 2014.05.14 CN 103793199 A (21)申请号 201410035727.3 (22)申请日 2014.01.24 G06F 7/72(2006.01) H04L 9/06(2006.01) (71)申请人 天津大学 地址 300072 天津市南开区卫津路 92 号 (72)发明人 郭炜 刘绪隆 魏继增 (74)专利代理机构 天津市北洋有限责任专利代 理事务所 12201 代理人 杜文茹 (54) 发明名称 一种支持双域的快速 RSA 密码协处理器 (57) 摘要 一种支持双域的快速 RSA 密码协处理器。
2、, 包 括 : 域控制寄存器, 用于接收外部输入的控制信 号 ; 控制寄存器, 用于接收外部输入的控制信号 ; RAM 存储单元, 用于存储外部输入的操作数以及 运算结果 ; 二元扩域, 连接域控制寄存器的输出 端, 接收域控制寄存器的控制信号 ; 素数域, 连 接域控制寄存器的输出端, 接收域控制寄存器的 控制信号 ; 双域模乘单元, 分别连接控制寄存器、 RAM 存储单元、 二元扩域和素数域, 用于根据域控 制寄存器的控制信号对 RAM 存储单元存储的外部 操作数进行计算, 并将计算结果存回到 RAM 存储 单元内。本发明有效地避免了大量的冗余数据写 回过程, 提高了 RSA 的加解密性能。
3、, 实现了不同有 限域之间切换的功能, 面积增加不到 20%, 效果非 常明显。 (51)Int.Cl. 权利要求书 2 页 说明书 6 页 附图 3 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书6页 附图3页 (10)申请公布号 CN 103793199 A CN 103793199 A 1/2 页 2 1. 一种支持双域的快速 RSA 密码协处理器, 其特征在于, 包括 : 域控制寄存器 (1) , 用于接收外部输入的控制信号 ; 控制寄存器 (2) , 用于接收外部输入的控制信号 ; RAM 存储单元 (3) , 用于存储外部输入的操作数以及运算。
4、结果 ; 二元扩域 (5) , 连接域控制寄存器 (1) 的输出端, 接收域控制寄存器 (1) 的控制信号 ; 素数域 (6) , 连接域控制寄存器 (1) 的输出端, 接收域控制寄存器 (1) 的控制信号 ; 双域模乘单元 (4) , 分别连接控制寄存器 (2) 、 RAM 存储单元 (3) 、 二元扩域 (5) 和素数域 (6) , 用于根据域控制寄存器 (1) 的控制信号对 RAM 存储单元 (3) 存储的外部操作数进行计 算, 并将计算结果存回到 RAM 存储单元 (3) 内。 2.根据权利要求1所述的一种支持双域的快速RSA密码协处理器, 其特征在于, 所述的 RAM 存储单元 (3。
5、) 包括有第一单口 RAM 存储单元 (31) 、 第二单口 RAM 存储单元 (32) 和第三 单口 RAM 存储单元 (33) 。 3.根据权利要求1所述的一种支持双域的快速RSA密码协处理器, 其特征在于, 所述的 双域模乘单元 (4) 包括有用于模拟算法执行的状态机单元 (41) 和用于通过融合两种不同 有限域的算法结构, 将模乘运算统一为 a+x*y+b 的乘累加器单元 (42) 。 4. 根据权利要求 3 所述的一种支持双域的快速 RSA 密码协处理器, 其特征在于, 所述 的状态机单元 (41) 包括有分别对应接收从 RAM 存储单元 (3) 输出的操作数 Xi 的第四多路 选择。
6、器 (415) 、 操作数 Yi 的第七多路选择器 (418) 、 操作数 Xi, Tj 的第一多路选择器 (412) 、 操作数 Ti, Nj 的异或门 (413) 、 操作数 Zi 的第三多路选择器 (414) , 以及设置有分别连接所 述乘累加器单元 (42) 的二元扩域输出端并存储不同时间的进位累加数的 Ca 存储器 (419) 和Cb存储器 (4120) 、 分别对应连接所述的第一多路选择器 (412) 、 第二多路选择器 (413) 和 第三多路选择器 (414) 的输出端的用于存储操作数的 X 存储器 (421) 、 Y 存储器 (4122) 和 Z 存储器 (4123) , 其。
7、中, 所述或门 (413) 的另一输入端接收外部的 Inv 信号输出端连接第二多 路选择器 (413) 的输入端, 所述的第一多路选择器 (412) 、 第二多路选择器 (413) 和第三多 路选择器 (414) 的输入端还分别连接所述乘累加器单元 (42) 的素数域输出端, 所述的第三 多路选择器 (414) 和第四多路选择器 (415) 的输入端还连接 Ca 存储器 (419) 的输出端, 所 述 Cb 存储器 (4120) 的输出端分别连接第四多路选择器 (415) 和第五多路选择器 (416) 的 输入端, 所述 X 存储器 (421) 、 Y 存储器 (4122) 和 Z 存储器 (。
8、4123) 的输出端分别对应连接第 五多路选择器 (416) 、 第六多路选择器 (417) 和第七多路选择器 (418) 的输入端, 所述第五 多路选择器 (416) 的另一个输入端接收数字 1, 所述的第四多路选择器 (415) 、 第五多路选 择器 (416) 、 第六多路选择器 (417) 和第七多路选择器 (418) 的输出端分别构成状态机单元 (41) 的输出端连接所述的乘累加器单元 (42) 。 5. 根据权利要求 3 所述的一种支持双域的快速 RSA 密码协处理器, 其特征在于, 所述 的乘累加器单元 (42) 由输入端分别接收 RAM 存储器单元 (3) 输入的 64bit 。
9、的二进制的加数 a、 加数 b、 乘数 X 和乘数 Y, 输出端分别输出素数域结果 c 和二元扩域结果 d 的乘累加器构 成, 所述的乘累加器包括有第一加法器 (421) 、 第二加法器 (422) 、 第三加法器 (423) 和对接 收的乘数 X 和乘数 Y 相乘后分别输出给第二加法器 (422) 的双域乘法器 (424) , 所述的第一 加法器 (421) 的输入端分别接收二进制的加数 a、 加数 b, 输出端分别连接第二加法器 (422) 和第三加法器 (423) 的输入端, 所述第二加法器 (422) 的输出端输出素数域结果 c, 所述第 权 利 要 求 书 CN 103793199 。
10、A 2 2/2 页 3 三加法器 (423) 的输出端输出二元扩域结果 d。 6. 根据权利要求 3 所述的一种支持双域的快速 RSA 密码协处理器, 其特征在于, 所述 的双域乘法器 (424) 包括有依次串接的 64 个半加 / 全加阵列 (4241) , 连接所述 64 个半加 / 全加阵列 (4241) 的进位输出端的 wzllace(4242) , 分别连接所述华莱士树 (4242) 的进位 输出端和求和输出端的进位传播加法器 (4243) , 其中, 所述的 64 个半加 / 全加阵列 (4241) 的第一个半加 / 全加阵列的输入端接收 RAM 存储器单元 (3) 输入的乘数 X。
11、 和乘数 Y, 最后一 个半加 / 全加阵列的输出端分别连接所述的进位传播加法器 (4243) 的输入端和所述的第 二加法器 (422) , 所述的进位传播加法器 (4243) 的输出端连接所述的第三加法器 (423) 。 权 利 要 求 书 CN 103793199 A 3 1/6 页 4 一种支持双域的快速 RSA 密码协处理器 技术领域 0001 本发明涉及一种 RSA 密码协处理器。特别是涉及一种支持双域的快速 RSA 密码协 处理器。 背景技术 0002 随着计算机网络和信息技术的发展, 信息安全在各领域发挥着越来越重要的作 用, 其中密码学已经成为信息安全技术的核心。RSA 是目前。
12、公认的在理论和实际应用中最 为成熟和完善的一种公钥密码体制, 它是基于大整数因子分解的困难性来确保算法的安全 性。目前大多数使用公钥密码进行加密和数字签名都是使用 RSA 算法。 0003 大数模幂运算是 RSA 算法的核心运算, 它是由一系列大数模乘运算构成, 大数的 位数需要在数百 bit 到上千 bit, 因此运算量非常大, 模乘运算是制约其计算速度的瓶颈, 解决模乘的速度问题是提高其运算效率的最根本方法。公钥密码是基于有限域的算法, 素 数域和二元扩域是RSA最常使用的有限域, 为了实现快速可配置的RSA算法, 设计了系统的 运算、 存储和控制三大模块以及三个模块间的互联方式。 发明内。
13、容 0004 本发明所要解决的技术问题是, 提供一种利用各功能单元之间的级联, 有效的提 高了 RSA 的加解密性能, 并实现了不同有限域之间切换的功能, 充分复用了硬件资源的支 持双域的快速 RSA 密码协处理器。 0005 本发明所采用的技术方案是 : 一种支持双域的快速 RSA 密码协处理器, 包括 : 0006 域控制寄存器, 用于接收外部输入的控制信号 ; 0007 控制寄存器, 用于接收外部输入的控制信号 ; 0008 RAM 存储单元, 用于存储外部输入的操作数以及运算结果 ; 0009 二元扩域, 连接域控制寄存器的输出端, 接收域控制寄存器的控制信号 ; 0010 素数域, 。
14、连接域控制寄存器的输出端, 接收域控制寄存器的控制信号 ; 0011 双域模乘单元, 分别连接控制寄存器、 RAM 存储单元、 二元扩域和素数域, 用于根据 域控制寄存器的控制信号对 RAM 存储单元存储的外部操作数进行计算, 并将计算结果存回 到 RAM 存储单元内。 0012 所述的 RAM 存储单元包括有第一单口 RAM 存储单元、 第二单口 RAM 存储单元和第 三单口 RAM 存储单元。 0013 所述的双域模乘单元包括有用于模拟算法执行的状态机单元和用于通过融合两 种不同有限域的算法结构, 将模乘运算统一为 a+x*y+b 的乘累加器单元。 0014 所述的状态机单元包括有分别对应。
15、接收从 RAM 存储单元输出的操作数 Xi 的第四 多路选择器、 操作数 Yi 的第七多路选择器、 操作数 Xi, Tj 的第一多路选择器、 操作数 Ti, Nj 的异或门、 操作数 Zi 的第三多路选择器, 以及设置有分别连接所述乘累加器单元的二元 扩域输出端并存储不同时间的进位累加数的 Ca 存储器和 Cb 存储器、 分别对应连接所述的 说 明 书 CN 103793199 A 4 2/6 页 5 第一多路选择器、 第二多路选择器和第三多路选择器的输出端的用于存储操作数的 X 存储 器、 Y 存储器和 Z 存储器, 其中, 所述或门的另一输入端接收外部的 Inv 信号输出端连接第 二多路选。
16、择器的输入端, 所述的第一多路选择器、 第二多路选择器和第三多路选择器的输 入端还分别连接所述乘累加器单元的素数域输出端, 所述的第三多路选择器和第四多路选 择器的输入端还连接 Ca 存储器的输出端, 所述 Cb 存储器的输出端分别连接第四多路选择 器和第五多路选择器的输入端, 所述 X 存储器、 Y 存储器和 Z 存储器的输出端分别对应连接 第五多路选择器、 第六多路选择器和第七多路选择器的输入端, 所述第五多路选择器的另 一个输入端接收数字 1, 所述的第四多路选择器、 第五多路选择器、 第六多路选择器和第七 多路选择器) 的输出端分别构成状态机单元的输出端连接所述的乘累加器单元。 001。
17、5 所述的乘累加器单元由输入端分别接收RAM存储器单元输入的64bit的二进制的 加数 a、 加数 b、 乘数 X 和乘数 Y, 输出端分别输出素数域结果 c 和二元扩域结果 d 的乘累加 器构成, 所述的乘累加器包括有第一加法器、 第二加法器、 第三加法器和对接收的乘数 X 和 乘数 Y 相乘后分别输出给第二加法器的双域乘法器, 所述的第一加法器的输入端分别接收 二进制的加数 a、 加数 b, 输出端分别连接第二加法器和第三加法器的输入端, 所述第二加 法器的输出端输出素数域结果 c, 所述第三加法器的输出端输出二元扩域结果 d。 0016 所述的双域乘法器包括有依次串接的64个半加/全加阵。
18、列, 连接所述64个半加/ 全加阵列的进位输出端的华莱士树, 分别连接所述 wzllace 树的进位输出端和求和输出端 的进位传播加法器, 其中, 所述的 64 个半加 / 全加阵列的第一个半加 / 全加阵列的输入端 接收RAM存储器单元输入的乘数X和乘数Y, 最后一个半加/全加阵列的输出端分别连接所 述的进位传播加法器的输入端和所述的第二加法器, 所述的进位传播加法器的输出端连接 所述的第三加法器。 0017 本发明的一种支持双域的快速 RSA 密码协处理器, 基于前人对 RSA 模幂算法以及 蒙哥马利模乘算法的研究基础之上, 与抗侧信道攻击方法相结合, 实现了具有一定的抗侧 信道攻击的专用。
19、硬件密码加速模块。相比于通用处理器、 专用集成电路以及 FPGA 等实现方 式, 本发明在性能及安全性上都有一定的优势。相比于其他 RSA 加密硬件, 本发明添加了支 持双域的功能, 扩展额外的数据通路, 利用各功能单元之间的级联, 有效地避免了大量的冗 余数据写回过程, 提高了 RSA 的加解密性能, 实现了不同有限域之间切换的功能, 并充分复 用了硬件资源, 与仅支持单域运算的密码模块, 面积增加不到 20%, 效果非常明显。 附图说明 0018 图 1 是本发明的整体构成框图 ; 0019 图 2 是本发明中双域模乘单元逻辑结构图 ; 0020 图 3 是本发明中双域乘累加器逻辑结构图 。
20、; 0021 图 4 是本发明中双域乘法器的原理图。 0022 图中 0023 1 : 域控制寄存器 2 : 控制寄存器 0024 3 : RAM 存储单元 4 : 双域模乘单元 0025 5 : 二元扩域 6 : 素数域 说 明 书 CN 103793199 A 5 3/6 页 6 具体实施方式 0026 下面结合实施例和附图对本发明的一种支持双域的快速 RSA 密码协处理器做出 详细说明。 0027 本发明的一种支持双域的快速 RSA 密码协处理器, 在模幂层采用了蒙哥马利阶梯 算法, 在模乘层使用 FIOS 算法。并通过对模乘、 模幂算法进行综合研究与整体考虑, 对运算 中相似运算进行硬。
21、件复用以减小面积 ; 对架构中 RAM 进行特殊连接以减少模幂过程中数据 的多次搬运, 节省数据传输时间 ; 对硬件实现过程中进行可配置设计, 使得加解密支持不同 有限域的运算, 从而可以满足不同用户的需求, 同时为了支持两种最长使用的有限域, 设计 了一种高效 64bit*64bit 双域乘法器。其次通过对侧信道攻击的研究, 从最初的算法研究 到后期的硬件设计过程中, 将抗攻击特性贯穿于整个设计之中, 使得硬件设计可以有效的 防止功耗攻击和故障攻击, 在此基础之上, 对硬件模乘模块设计进行了改进, 从而防止了模 乘泄露功耗的隐患。 0028 本发明的一种支持双域的快速 RSA 密码协处理器设。
22、计了特殊的指令集, 用户通过 访问预留的接口, 传输特定的指令, 可以动态的调整运算的有限域。 为了系统能够方便的集 成于 SoC(System on Chip) 之上, 本发明采用的是单口 RAM 接口信号与外部互联, 系统所 有主要数据以及 RAM 均为 64bit 位宽。 0029 如图 1 所示, 本发明的一种支持双域的快速 RSA 密码协处理器, 包括 : 域控制寄存 器 1, 用于接收外部输入的控制信号 ; 控制寄存器 2, 用于接收外部输入的控制信号 ; RAM 存 储单元3, 用于存储外部输入的操作数功输出运算结果 ; 二元扩域5, 连接域控制寄存器1的 输出端, 接收域控制寄。
23、存器 1 的控制信号 ; 素数域 6, 连接域控制寄存器 1 的输出端, 接收域 控制寄存器1的控制信号 ; 双域模乘单元4, 分别连接控制寄存器2、 RAM存储单元3、 二元扩 域5和素数域6, 用于根据域控制寄存器1的控制信号对RAM存储单元3存储的外部操作数 进行计算, 并将计算结果存回到 RAM 存储单元 3 内。其中, 0030 所述的 RAM 存储单元 3 包括有第一单口 RAM 存储单元 31、 第二单口 RAM 存储单元 32 和第三单口 RAM 存储单元 33。所述的双域模乘单元 4 包括有用于模拟算法执行的状态 机单元41和用于通过融合两种不同有限域的算法结构, 将模乘运算。
24、统一为a+x*y+b的乘累 加器单元 42。 0031 本发明所述的状态机单元 41 是采用了蒙哥马利优化算法 FIOS(finely integrated operand scanning method) 进行设计的。蒙哥马利优化算法中将乘数 X、 Y、 N 分成 r bit 的数进行运算, 这样对硬件实现非常有好处, 可以高效利用寄存器。而且算法中 所有操作均可变化为一种操作, 这样将有利于节省硬件资源。蒙哥马利优化算法包括有素 域下的模乘算法和二元扩域下的模乘算法。其中, 0032 1、 素域下的模乘算法 0033 表 1 给出的算法是一种高基的蒙哥马利模乘算法, 将大数的操作数划分为一。
25、块块 小 bit 的字参与运算, 本专利设计的是 64bit 位宽的高基模乘器。 0034 表 1、 素域的 FIOS 算法 0035 说 明 书 CN 103793199 A 6 4/6 页 7 0036 2、 二元扩域下的模乘算法 0037 在二元扩域下, 所有的数据均可视为多项式的系数, 因此他们的运算也转换为多 项式系数的运算法则, 如加法演变为按位模二加法。 对应的, 乘法中的部分积相加时也按照 一样的规则。表 2 给出了支持二元扩域的 FIOS 算法。 0038 表 2、 二元扩域的 FIOS 算法 说 明 书 CN 103793199 A 7 5/6 页 8 0039 0040 。
26、0041 3、 不同域的算法比较 0042 素域和二元域下 FIOS 算法的结构基本上相同, 除了素域和二元域下基本的加法、 乘法运算法则的区别, 还有两点区别 : 0043 3.1、 二元扩域下模数 N 的位数通常超出乘数的位数, 且通常超出 2bit, 如 256bit 的模乘模数为 258bit, 且超出的最高位为 1, 则模数 N 相较素域下多出 2bit( 值为 0x2), 因 此在算法第二层内循环的最后一次迭代时需将这多出的 2bit 加入计算 (如表 2 中第 6 步) 。 0044 3.2、 二元扩域下运算不会产生进位, 因此最后一步的减法一定不会被执行, 可直 接去掉。 00。
27、45 4、 双域的模乘器的架构 0046 通过融合两种不同有限域的算法结构, 将模乘运算统一为 a+x*y+b, 这样有助于运 算资源的高效可复用, 极大的节省了硬件资源, 优化了硬件面积。如图 2 为双域模乘器逻辑 结构图。 0047 如图 2 所示, 本发明所述的状态机单元 41 包括有分别对应接收从 RAM 存储单元 3 输出的操作数Xi的第四多路选择器415、 操作数Yi的第七多路选择器418、 操作数Xi, Tj的 第一多路选择器412、 操作数Ti, Nj的或门413、 操作数Zi的第三多路选择器414, 以及设置 有分别连接所述乘累加器单元42的二元扩域输出端并存储不同时间的进位。
28、累加数的Ca存 储器419和Cb存储器4120、 分别对应连接所述的第一多路选择器412、 第二多路选择器413 和第三多路选择器 414 的输出端的用于存储操作数的 X 存储器 421、 Y 存储器 422 和 Z 存储 说 明 书 CN 103793199 A 8 6/6 页 9 器4123, 其中, 所述或门413的另一输入端接收外部的Inv信号输出端连接第二多路选择器 413 的输入端, 所述的第一多路选择器 412、 第二多路选择器 413 和第三多路选择器 414 的 输入端还分别连接所述乘累加器单元42的素数域输出端, 所述的第三多路选择器414和第 四多路选择器 415 的输入。
29、端还连接 Ca 存储器 419 的输出端, 所述 Cb 存储器 4120 的输出端 分别连接第四多路选择器 415 和第五多路选择器 416 的输入端, 所述 X 存储器 421、 Y 存储 器 4122 和 Z 存储器 4123 的输出端分别对应连接第五多路选择器 416、 第六多路选择器 417 和第七多路选择器 418 的输入端, 所述第五多路选择器 416 的另一个输入端接收数字 1, 所 述的第四多路选择器415、 第五多路选择器416、 第六多路选择器417和第七多路选择器418 的输出端分别构成状态机单元 41 的输出端连接所述的乘累加器单元 42。 0048 减少除法在运算中出。
30、现的次数, 是提高运算速度的有效途径。 1985年, Montgomery 提出的模乘算法很快替换了经典模约减算法, 蒙哥马利算法不依赖于长整数的比较和除 法, 而是把数都用 N 模的余数来表示, 把对 N 的取模运算转化为对 2 指数的除法运算, 在硬 件实现过程中就是移位操作, 是一种十分便于硬件实现的算法, 所以应用最为广泛。 0049 素域和二元扩域下基本的加法、 乘法具有显著的区别, 关键在于二元扩域下的运 算是多项式运算, 与传统的运算相比有不会产生进位的特性。二元扩域下数据可以看成是 对应多项式的系数, 因此加法可看成多项式相加, 按照多项式运算中同次项相加的法则, 只 有相同位。
31、置的数才会相加, 不会有进位的问题, 而且是模 2 加法, 这样就可以将二元扩域加 法表示为数据在二进制形式下的按位异或操作。由于乘法可分解成部分积之和来进行运 算, 因此可以通过在部分积相加的过程中分离出异或操作的结果来得到二元扩域下的乘法 结果, 然后再将加法过程中产生的进位加回, 即可得到普通乘法结果。支持 64bit 乘累加器 结构如图 3, 双域乘法器原理如图 4。 0050 如图 3 所示, 所述的乘累加器单元 42 由输入端分别接收存储器单元 3 输入的 64bit 的二进制的加数 a、 加数 b、 乘数 X 和乘数 Y, 输出端分别输出素数域结果 c 和二元扩 域结果d的乘累加。
32、器构成, 所述的乘累加器包括有第一加法器421、 第二加法器422、 第三加 法器423和对接收的乘数X和乘数Y相乘后分别输出给第二加法器422的双域乘法器424, 所述的第一加法器 421 的输入端分别接收二进制的加数 a、 加数 b, 输出端分别连接第二加 法器 422 和第三加法器 423 的输入端, 所述第二加法器 422 的输出端输出素数域结果 c, 所 述第三加法器 423 的输出端输出二元扩域结果 d。 0051 如图4所示, 所述的双域乘法器424包括有依次串接的64个半加/全加阵列4241, 连接所述 64 个半加 / 全加阵列 4241 的进位输出端的华莱士树 4242, 。
33、分别连接所述华莱士 树4242的进位输出端和求和输出端的进位传播加法器4243, 其中, 所述的64个半加/全加 阵列 4241 的第一个半加 / 全加阵列的输入端接收存储器单元 3 输入的乘数 X 和乘数 Y, 最 后一个半加 / 全加阵列的输出端分别连接所述的进位传播加法器 4243 的输入端和所述的 第二加法器 422, 所述的进位传播加法器 4243 的输出端连接所述的第三加法器 423。 说 明 书 CN 103793199 A 9 1/3 页 10 图 1 说 明 书 附 图 CN 103793199 A 10 2/3 页 11 图 2 说 明 书 附 图 CN 103793199 A 11 3/3 页 12 图 3 图 4 说 明 书 附 图 CN 103793199 A 12 。