您的位置 首页 FPGA

用于完成嵌入式安全的开源硬件

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

想像一下你正在排队等候参与一个重要活动。门票是通过网上购买的,存储在你的智能手机中。你需求将手机放到某个指定区域上,建立起NFC衔接,门票随之得到承认,大门敞开答应你进入。好消息是,一切这一切都是在匿名状况下发生的。

在这类运用中,你的匿名信息能够通过运用最近开发的匿名信赖协议(如IBM的Idemix或微软的U-Prove)得到维护。这些协议依据常识的零常识证明(ZKPK)。你能够证明你具有某个特点的常识而不必泄漏具体数值。这种特点与所谓的许诺中的公钥是绑缚在一同的。

图1给出了这种ZKPK——本例中的Schnorr协议的扼要示意图。其间y是x的许诺。在强壮的RSA假定下,是很难从y找出x的,即便你知道g和m。

仔细观察协议咱们会发现x依然是躲藏的。验证方只知道y是正确的许诺。咱们还能发现,协议首要由通讯和算法组成——这正是咱们研讨的目标。


图1: Schnorr ZKPK协议的简化版别。

———————————————————————————————————————————————-

在嵌入式渠道上核算并行求幂所需时刻的比方

在咱们的测验设备(后面会评论到)上,咱们比较了硬件加密内核和软件完结办法的履行时刻。

硬件和软件都核算:

在匿名信赖协议中常常运用的并行求幂。

咱们规则指数长度在32位和2048位之间改动。基数的长度是固定的,本例中是1024位。软件运转在嵌入式Linux操作体系上,并在多精度算法中运用了GMP库。

处理器和IP内核都以相同速度(100MHz)运转。咱们发现,两种办法的履行时刻都随指数长度成份额的添加。但是,选用硬件卸载办法的运算要快10至50倍。


图2:在嵌入式渠道上分别用硬件卸载和不必硬件卸载时的并行求幂履行时刻。

嵌入式安全性测验渠道

咱们很快发现,当这些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内核的框图。

模乘

现在咱们的作业将简化为规划一个乘法器,而且它能依据咱们的需求方便地进行定制。当操作数长度大于512位(对咱们的运用来说这是明显的状况)时,一种被称为脉动阵列蒙哥马利的乘法器(2)是最有用的完结。此外,它很简单转换成硬件,然后简化生成通用描绘的使命。

Mont(x,y)能够通过核算x的每一位的中心成果(a)进行运算。因而在通过n位后,乘法运算就完结了。a的每一位都能够用加法器和乘法器进行运算,终究一同构成脉动阵列单元(图5)。当很多单元级联时,为了中止进位链,咱们将它们组成级。这样咱们就能够操控规划的最大可到达频率,而这个频率首要受限于这个进位链。别的,还答应流水线运算。作为蒙哥马利算法一部分的右移操作能够保证a永久不会大于n+2位。


图5:一个脉动阵列单元核算中心成果a的一个位。

流水线操作见下图所示(图6)。每个圆代表一级。圆内的数字代表其时由那个级正在履行的过程(x的哪一位)。非活动级用虚线标明。咱们能够看到,一个级只能每2τc核算一步。这是右移操作的原因。τc标明一个级实践完结一个过程所花的时刻。在本例中,τc便是1个时钟周期。


图6:脉动流水线操作。

移位寄存器用于将x的位移进脉动流水线。两个额定加法器在必要时核算m+y(这是脉动阵列要求的)和a-m(保证成果小于m)。终究乘法器结构如下所示(图7)。


图7:蒙哥马利乘法器结构。

功用

乘法器资源运用率取决于操作数(n)的长度和流水线的级数(k)。

FPGA来说能够标明为:

关于大的n来说,整个IP内核只运用别的一小部分FF和LUT比方用于操控逻辑和总线接口。但是,它也需求多个RAM单元来存储操作数。

履行乘法的时钟周期数也取决于n和k:

不过如前所述,级数——因而这些级的长度——对乘法器的最大可达时钟频率也有影响。这能够从图7看出来(n=2048)。


图8:流水线级长度对最高时钟频率的影响。

在运用这个规划时,能够有几种办法:

1.咱们预先知道咱们的作业频率。然后就足以挑选级数以便让时钟频率至少能那么高。挑选更多的级数只会导致耗用更多的资源(触发器)。
2.尽量缩短运算时刻。这将由级数和最大时钟频率来确认。假如咱们以为规划将在这个频率运转(理论上),咱们能够取得下图所示的运算时刻(n=1536)。咱们能够看到,对咱们的器材(Virtex 6)来说,当级长为4位时能够取得最短运算时刻。


图9:流水线级长对最短履行时刻的影响。

咱们想要尽或许地减小时刻与面积乘积。事实上,咱们能够专心于最大极限地减小时刻与FF数量的乘积,由于LUT数量基本上是常数。下图显现了不同流水线级长下的时刻与FF数量乘积。当级长为8位时到达最小值。


图10:流水线级长对时刻与面积乘积的影响。

初次测验

依据NFC的ZKPK

作为第一次实践测验,咱们完结了依据NFC的简化Schnorr ZKPK,详见咱们的嵌入式测验渠道介绍。这种个嵌入式渠道是验证方,而PC(衔接有PN532电路板)用作证明方。

下表给出了不同操作数长度下的时序成果。很明显,当运用咱们的硬件IP内核时,操作数长度对总的协议时刻基本上没有影响。添加操作数长度会稍稍添加通讯时刻(这是预料中的)。但是,验证所需的时刻将大大添加。

咱们需求指出的是,通讯占总时刻的很大一部分。像发生随机数等一般数据操作也需求必定的时刻。但是,咱们的IP内核还无法战胜这些应战。

软件操控计划比照全主动操作

完结完好的并行求幂内核是一个英明的决议计划吗?为什么不只是乘法器和一些操控软件来完结算法1?由于咱们能够将咱们的IP内核用作乘法器,咱们能够十分简单的测验它。咱们能够在相同的体系上比较这两种办法。

即便咱们将操作数存储在IP内核的RAM中(因而没有额定的总线业务量),全主动操作的速度仍要比软件操控计划快一个数量级(见图2)。这是意料之中的。Linux不是一种实时操作体系。在操作体系处理中止之前,或许运用程序拜访它们需求的资源(本例中为咱们的存储器映射外设)之前,或许需求等候必定的时刻。假如你知道一次求幂要求大约(7/4)t乘法(见算法1),这种“丢失时刻”会很快累加起来。

假如你知道将乘法器转变成并行求幂内核所需的额定逻辑只由FIFO和一些计数器组成,那么咱们能够说额定的硬件是比较值得的。

小结和未来开展

咱们现已标明,这种用于模并行求幂运算的IP内核的可定制VHDL规划是十分合适匿名信赖加密体系的嵌入式完结的。咱们现已见证了怎么调整内核参数来满意用户的需求。

除了更为理论性的功用剖析外,咱们还在实践的嵌入式设备中运用了这个规划。作为咱们未来作业的一部分,咱们将持续为匿名信赖证书开发完好的嵌入式运用程序。

进一步开发目标还将导向内核自身。现在内核只供给PLB接口。供给对AXI和Wishbone接口的支撑“现已列在使命清单上”。

包含一切乘法与求幂技能文档和测验基准的完好VHDL规划现已在开源网站OpenCores上揭露上线。只需有GNU较宽松通用公共答应(LGPL)协议就能免费下载VHDL源代码。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/199821.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部