图1: Schnorr ZKPK协议的简化版本。
在匿名信任协议中经常使用的并行求幂。 我们规定指数长度在32位和2048位之间变化。基数的长度是固定的,本例中是1024位。软件运行在嵌入式Linux操作系统上,并在多精度算法中使用了GMP库。 处理器和IP内核都以相同速度(100MHz)运行。我们发现,两种方法的执行时间都随指数长度成比例的增加。然而,采用硬件卸载方式的运算要快10至50倍。
图2:在嵌入式平台上分别用硬件卸载和不用硬件卸载时的并行求幂执行时间。
【分页导航】
• 第1页:匿名信息通过匿名信任协议保护 | • 第2页:嵌入式安全性测试平台 |
• 第3页:开源硬件 | • 第4页:一些背景 |
• 第5页:性能 | • 第6页:首次测试 |
• 第7页:小结和未来发展 | |
图3:用于测试和评估匿名信任协议的嵌入式平台。
【分页导航】
• 第1页:匿名信息通过匿名信任协议保护 | • 第2页:嵌入式安全性测试平台 |
• 第3页:开源硬件 | • 第4页:一些背景 |
• 第5页:性能 | • 第6页:首次测试 |
• 第7页:小结和未来发展 | |
市场上有多种IP内核可以用来执行单次模幂运算。然而,像DAA或Idemix等协议要求至少两次这种求幂的产品。这意味着我们仍然必须执行大操作数的多次(模)乘法,这将进一步增长总的执行时间。另外,我们希望能够改变所有操作数的长度,但不显著降低性能。也许我们还希望在其它平台上测试硬件。 这份希望清单促成了开源IP内核的设计,并符合以下规范:
● 针对嵌入式平台的开源IP内核(控制要求的软件)
● VHDL代码独立于器件和制造商,并得到良好归档
● 基数g0、g1和模数m的长度可以在综合前自由选取
● 为指数准备了一个FIFO,因此e0和e1的长度可以完全取决于控制软件
● 将流水线式蒙哥马利乘法器作为IP内核的核心,并具有自由选择的级长,从而允许调整内核获得想要的速度/面积
● 操作数RAM专门针对并行求幂进行了优化
【分页导航】
• 第1页:匿名信息通过匿名信任协议保护 | • 第2页:嵌入式安全性测试平台 |
• 第3页:开源硬件 | • 第4页:一些背景 |
• 第5页:性能 | • 第6页:首次测试 |
• 第7页:小结和未来发展 | |
仔细观察这个算法可以发现,采用要么运行单次乘法(用于预运算和最终乘法)要么自动运行主环的方式只实现一个乘法器并实现控制逻辑是合理的设计选择。 遵循标准的设计思路,我们将IP内核实现为存储器映射的外设。内核行为可以通过驱动软件使用控制寄存器改变(图4)。由于主环要求4个操作数,因此需要提供内存进行存储。中断线允许硬件就某些事件提醒处理器。 普通32位总线接口可以很容易扩展到多种流行的总线标准,如AXI或Wishbone。下面给出了最终设计的框图(n代表操作数的宽度)。
图4:我们开发的并行求幂IP内核的框图。
Mont(x,y)可以通过计算x的每一位的中间结果(a)进行运算。因此在经过n位后,乘法运算就完成了。a的每一位都可以用加法器和乘法器进行运算,最后一起形成脉动阵列单元(图5)。当大量单元级联时,为了中断进位链,我们将它们组成级。这样我们就可以控制设计的最大可达到频率,而这个频率主要受限于这个进位链。另外,还允许流水线运算。作为蒙哥马利算法一部分的右移操作可以确保a永远不会大于n+2位。
图5:一个脉动阵列单元计算中间结果a的一个位。
图6:脉动流水线操作。
图7:蒙哥马利乘法器结构。
【分页导航】
• 第1页:匿名信息通过匿名信任协议保护 | • 第2页:嵌入式安全性测试平台 |
• 第3页:开源硬件 | • 第4页:一些背景 |
• 第5页:性能 | • 第6页:首次测试 |
• 第7页:小结和未来发展 | |
对于大的n来说,整个IP内核只使用另外一小部分FF和LUT比如用于控制逻辑和总线接口。然而,它也需要多个RAM单元来存储操作数。 执行乘法的时钟周期数也取决于n和k:
不过如前所述,级数——因此这些级的长度——对乘法器的最大可达时钟频率也有影响。这可以从图7看出来(n=2048)。
图8:流水线级长度对最高时钟频率的影响。
1.我们预先知道我们的工作频率。然后就足以选择级数以便让时钟频率至少能那么高。选择更多的级数只会导致耗用更多的资源(触发器)。
2.尽量缩短运算时间。这将由级数和最大时钟频率来确定。如果我们认为设计将在这个频率运行(理论上),我们可以获得下图所示的运算时间(n=1536)。我们可以看到,对我们的器件(Virtex 6)来说,当级长为4位时可以获得最短运算时间。
图9:流水线级长对最短执行时间的影响。
图10:流水线级长对时间与面积乘积的影响。
【分页导航】
• 第1页:匿名信息通过匿名信任协议保护 | • 第2页:嵌入式安全性测试平台 |
• 第3页:开源硬件 | • 第4页:一些背景 |
• 第5页:性能 | • 第6页:首次测试 |
• 第7页:小结和未来发展 | |
软件控制方案对比全自动操作 实现完整的并行求幂内核是一个英明的决策吗?为什么不只是乘法器和一些控制软件来实现算法1?因为我们可以将我们的IP内核用作乘法器,我们能够非常容易的测试它。我们可以在相同的系统上比较这两种方法。 即使我们将操作数存储在IP内核的RAM中(因此没有额外的总线业务量),全自动操作的速度仍要比软件控制方案快一个数量级(见图2)。这是意料之中的。Linux不是一种实时操作系统。在操作系统处理中断之前,或者应用程序访问它们需要的资源(本例中为我们的存储器映射外设)之前,可能需要等待一定的时间。如果你知道一次求幂要求大约(7/4)t乘法(见算法1),这种“损失时间”会很快累加起来。 如果你知道将乘法器转变成并行求幂内核所需的额外逻辑只由FIFO和一些计数器组成,那么我们可以说额外的硬件是比较值得的。
【分页导航】
• 第1页:匿名信息通过匿名信任协议保护 | • 第2页:嵌入式安全性测试平台 |
• 第3页:开源硬件 | • 第4页:一些背景 |
• 第5页:性能 | • 第6页:首次测试 |
• 第7页:小结和未来发展 | |
【分页导航】
• 第1页:匿名信息通过匿名信任协议保护 | • 第2页:嵌入式安全性测试平台 |
• 第3页:开源硬件 | • 第4页:一些背景 |
• 第5页:性能 | • 第6页:首次测试 |
• 第7页:小结和未来发展 | |