设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客

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

2013-10-9 15:36| 发布者: joejoe0332| 查看: 2933| 评论: 0|原作者: EDNChina|来自: EDNChina

摘要:   想像一下你正在排队等待参加一个重要活动。门票是通过网上购买的,存储在你的智能手机中。你需要将手机放到某个指定区域上,建立起NFC连接,门票随之得到确认,大门开启允许你进入。好消息是,所有这一切都是在 ...

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


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


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



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


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

  

  开源硬件


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


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


  这份希望清单促成了开源IP内核的设计,并符合以下规范:


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


  然而,这不是一个(完美的)商用产品。我们知道可以实现更快或更小的设计。但每个人都可以自由使用并用这个设计做试验。这是我们设计的最初目的,也是我们做得尽可能可定制的原因。


  目前这个内核还没有任何JTAG接口或自检功能。然而,可以对某些测试矢量执行求幂并比较结果来验证操作是否正确。


  一些背景


  并行求幂


  最直接也是高效的模幂运算方法是通过重复平方和乘法运算获得最终结果。这种方法很容易扩展到并行求幂运算。下面就是这种算法的描述,其中Mont()表示蒙哥马利乘法。这是一种用硬件执行模乘运算的有效方法,我们对此还将进一步讨论。我们假设R2 (= 22n ,n是m的长度)可以通过控制软件提供甚至计算。



  仔细观察这个算法可以发现,采用要么运行单次乘法(用于预运算和最终乘法)要么自动运行主环的方式只实现一个乘法器并实现控制逻辑是合理的设计选择。


  遵循标准的设计思路,我们将IP内核实现为存储器映射的外设。内核行为可以通过驱动软件使用控制寄存器改变(图4)。由于主环要求4个操作数,因此需要提供内存进行存储。中断线允许硬件就某些事件提醒处理器


  普通32位总线接口可以很容易扩展到多种流行的总线标准,如AXI或Wishbone。下面给出了最终设计的框图(n代表操作数的宽度)。



图4:我们开发的并行求幂IP内核的框图。



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部