首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

用于实现嵌入式安全的开源硬件

用于实现嵌入式安全的开源硬件

想像一下你正在排队等待参加一个重要活动。门票是通过网上购买的,存储在你的智能手机中。你需要将手机放到某个指定区域上,建立起NFC连接,门票随之得到确认,大门开启允许你进入。好消息是,所有这一切都是在匿名情况下发生的。
在这类应用中,你的匿名信息可以通过使用最近开发的匿名信任协议(IBMIdemix或微软的U-Prove)得到保护。这些协议基于知识的零知识证明(ZKPK)。你可以证明你拥有某个属性的知识而不用透露具体数值。这种属性与所谓的承诺中的公钥是捆绑在一起的。

1给出了这种ZKPK——本例中的Schnorr协议的简要示意图。其中yx的承诺。在强大的RSA假设下,是很难从y找出x的,即使你知道gm

仔细观察协议我们会发现x仍然是隐藏的。验证方只知道y是正确的承诺。我们还能发现,协议主要由通信和算法组成——这正是我们研究的对象。

1 SchnorrZKPK协议的简化版本。
----------------------------------------------------------------------------------------------------------------------------------------------

在嵌入式平台上计算并行求幂所需时间的例子

在我们的测试装置(后面会讨论到)上,我们比较了硬件加密内核和软件实现方法的执行时间。

硬件和软件都计算:


在匿名信任协议中经常使用的并行求幂。

我们规定指数长度在32位和2048位之间变化。基数的长度是固定的,本例中是1024位。软件运行在嵌入式Linux操作系统上,并在多精度算法中使用了GMP库。

处理器和IP内核都以相同速度(100MHz)运行。我们发现,两种方法的执行时间都随指数长度成比例的增加。然而,采用硬件卸载方式的运算要快1050倍。

2:在嵌入式平台上分别用硬件卸载和不用硬件卸载时的并行求幂执行时间。
嵌入式安全性测试平台

我们很快发现,当这些ZKPK在嵌入式系统上实现时,通信和算法都会引起瓶颈(见例子)。我们不希望用户保持NFC连接超过比方说5秒钟,不然会与通过接触交换数据的NFC概念发生冲突。

为了详细研究这个问题,我们构建了一个测试平台(见图3),以便我们能够方便地改变协议的不同方面。例如,如果我们将算法卸载到硬件加速器来提升算法速度会怎么样?或者操作数的长度对通信和算法的速度有何影响?

我们开发的平台如图3所示,它基于的是赛灵思的ML605评估板。我们增加了恩智浦的PN532开发套件用于NFC通信。运行嵌入式LinuxMicroBlaze用于控制整个系统。使用Linux(本例中用的是PetaLinux发行版)有很大的优势,即在嵌入式系统中可以用标准库,比如用于算法的GMP和用于NFC通信的libnfc

3:用于测试和评估匿名信任协议的嵌入式平台。

使用FPGA可以很方便地增加和开发加密硬件加速器。本文余下部分将讨论我们开发用于测试目的的这种IP内核设计。
开源硬件

因此我们想要一个可以用作硬件加速器的加密内核。可能的话,它可以计算:


市场上有多种IP内核可以用来执行单次模幂运算。然而,像DAAIdemix等协议要求至少两次这种求幂的产品。这意味着我们仍然必须执行大操作数的多次()乘法,这将进一步增长总的执行时间。另外,我们希望能够改变所有操作数的长度,但不显著降低性能。也许我们还希望在其它平台上测试硬件。

这份希望清单促成了开源IP内核的设计,并符合以下规范:
针对嵌入式平台的开源IP内核(控制要求的软件)
● VHDL
代码独立于器件和制造商,并得到良好归档
基数g0g1和模数m的长度可以在综合前自由选取
为指数准备了一个FIFO,因此e0e1的长度可以完全取决于控制软件
将流水线式蒙哥马利乘法器作为IP内核的核心,并具有自由选择的级长,从而允许调整内核获得想要的速度/面积
操作数RAM专门针对并行求幂进行了优化
返回列表