商用设备中的运行时可访问DRAM PUF
1 引言
处理器和片上系统设计的持续微型化与成本降低,使得几乎无处不在的智能设备得以诞生,从智能恒温器和冰箱到智能手机以及嵌入式车载娱乐系统。尽管这类智能设备的普及带来了诸多优势,但也引发了新的安全漏洞[1,6,8,12]。一个主要问题是,这些设备往往缺乏足够的安全机制实现[34,46]。保护这些设备的关键挑战在于提供可靠的设备认证与识别机制,以及以安全方式存储长期加密密钥,最大限度地减少密钥被非法提取或访问的风险。
设备识别的一种经典方法是在制造时将加密密钥烧录到每个设备中。然而,这种解决方案存在潜在缺陷,例如会增加生产复杂性,并且对密钥提取尝试的防护能力相当有限[2]为了解决这些问题,研究人员提出了物理不可克隆函数(PUF)。物理不可克隆函数利用设备因制造差异而产生的独特行为作为基于硬件的指纹。一个PUF实例即使对于制造商也极难复制。因此,物理不可克隆函数已被提议作为安全性原语和协议中的密码学构建模块,用于:认证和识别[18,40,43],软硬件绑定[9,10,19,31,33],远程证明[20,37],以及密钥存储[44,45]
迄今为止,数字电子系统中的大多数PUF类型(例如仲裁器PUF[7,40])需要在设备中添加专用电路,从而增加了制造成本和硬件复杂性。因此,人们高度关注所谓的内在PUF[9],即已经内置于设备中的PUF。
内在PUF被认为是一种有吸引力的低成本安全锚点,因为它们在标准硬件中提供PUF实例,这些硬件可在现成商用设备[26,42],中找到,且无需任何硬件修改。最突出的内在PUF示例是基于静态随机存取存储器(SRAM)的PUF [19,25,31,35,38],,其特性来源于双稳态SRAM存储单元的启动值。SRAM PUF以其良好的PUF特性而闻名[14]。然而,PUF测量必须在非常早的启动阶段(在SRAM被使用之前)提取。因此,所生成的密钥只能在此时使用,或者必须保存到另一个内存区域,这可能会引发安全性问题。最近,提出了一种新的可在运行时访问的基于错误的SRAM PUF[3]。但是,为了查询该PUF,需要降低供电电压以在SRAM单元中诱发错误,这要求处理器具备特殊硬件。
最近,研究人员在动态随机存取存储器(DRAM)[28]中发现了类似物理不可克隆函数的行为。一种提取由制造差异引起的唯一DRAM行为的方法依赖于DRAM单元的上电倾向[41]。另一种提取DRAM PUF的方法是利用DRAM单元独特的衰减特性。在[16],中,作者利用了这样一个事实:如果不对单个DRAM单元进行刷新,其电荷会以独特的方式随时间衰减。通过将DRAM单元初始化为特定值,禁用DRAM刷新周期,并让单元衰减一段定义的衰减时间,可以生成PUF响应1。由于这种衰减,DRAM芯片会在唯一位置表现出唯一的位翻转,这些位翻转整体上可作为PUF响应,在衰减时间结束后通过读取DRAM内容获得。然而,目前最先进的方法需要定制硬件或基于FPGA的平台 [16,41],,以便修改DRAM刷新机制,从而实现DRAM PUF的提取。
本文首次从商用系统中提取DRAM PUF,无需特殊硬件修改或FPGA设置,并提供了在Linux系统上运行时查询DRAM PUF的实用解决方案。我们的基于衰减的DRAM PUF支持重复访问,克服了以往仅在设备启动时可用的基于内存的内在PUF的局限性。此外,DRAM的容量远大于SRAM,能够提取更多的比特位,从而生成更大的加密密钥材料,或可将DRAM划分为多个逻辑PUF。此外,DRAM是内在PUF的理想候选者,因为DRAM是当今商用平台的重要组成部分,并广泛存在于许多“智能”设备中,如智能手机或智能恒温器。近年来,低成本微处理器中嵌入式DRAM[4,29]的应用将进一步提升DRAM在移动和嵌入式计算平台中的可用性。
1.1 DRAM PUF相关工作
最早利用DRAM单元制造差异进行识别和随机数生成的方法在[28,29],中被报道,其中设计了一种嵌入式DRAM芯片以生成指纹,从而缓解硬件伪造问题。
在后续的研究[16,22,27],中,通过FPGA中的内存控制器评估了外部DDR3模块的衰减特性,并将其用于识别与密钥存储。其他研究则专注于设计电路,利用DRAM单元写入可靠性的差异[11],,并提出了一种基于此类差异生成的签名的认证方案。与我们的工作不同,所有先前的研究都需要设计专用电路或使用FPGA。据我们所知,这是首次提出一种方法,可在运行时启用商用设备上固有的DRAM PUF实例。此外,我们提供了一种系统级解决方案,可在Linux操作系统在同一硬件上运行并主动使用包含PUF的DRAM芯片的同时,实现对DRAM PUF的查询。
1.2 贡献
– 我们从未经修改的商用设备(包括PandaBoard和Intel Galileo平台)中提取基于衰减的DRAM PUF实例。提出了两种方法:(i) 使用定制固件在设备启动时访问PUF;(ii) 在Linux操作系统运行于同一硬件并主动使用包含PUF的DRAM芯片的同时,通过内核模块查询PUF。
– 通过大量实验,我们证明了DRAM PUF具有鲁棒性和可靠性,特别是允许将衰减时间作为PUF挑战的一部分。 – 我们引入了基于杰卡德指数的新度量方法来评估DRAM PUF,并表明与传统的基于汉明距离的度量相比,这些新度量方法在基于衰减的DRAM PUF评估中显著更为适用。
– 最后,我们在PUF增强协议的设计中利用了DRAM单元的时间依赖性衰减特性。具体而言,我们展示了用于设备识别和认证的协议,这些协议的安全性源于DRAM单元的时间依赖性衰减。
1.3 论文结构
本文的其余部分组织如下。第2节介绍了动态随机存取存储器的背景,并引入了我们的DRAM PUF。第3节描述了我们的实验设置以及实现DRAM PUF所需的软件。第4节包含对DRAM PUF特性的评估。第5节描述了用于设备认证和安全信道建立的轻量级协议。第6节提出了开放性研究问题。第7节总结了全文。
2 从商用设备中提取DRAMPUF
在DRAM单元中,单个数据位存储在电容器中,并可通过晶体管进行访问,如图1所示。DRAM单元被分组为阵列,其中阵列的每一行连接到一条水平的字线。同一列中的单元连接到位线。所有位线都耦合到感应放大器,该放大器将位线上微弱的电压放大至可被解释为逻辑零或一的电平。为了访问某一行,所有位线将被预充电至供电电压VDD的一半;随后字线被启用,将该行中的每个电容器与其位线连接。感应放大器随后将位线驱动至VDD或0伏特,具体取决于电容器上的电荷。放大器通常由两条位线共享[15],,但同一时间只能访问其中一条。这种结构使得两条位线互补,从而产生两种类型的单元:真单元和反单元。
真单元将值1存储为电容器中的VDD,将0存储为0伏特,而反单元将值0存储为VDD,将1存储为0伏特。
DRAM单元需要定期刷新所存储的电荷,否则电容器会随时间逐渐失去电荷,这被称为DRAM单元衰减或泄漏。硬件内存控制器负责执行周期性刷新,其间隔由厂商定义,通常为32毫秒或64毫秒。如果没有这种周期性刷新,部分单元将缓慢衰减至0,而另一些则衰减至1,具体取决于它们是真单元还是反单元。由于DRAM单元之间存在制造差异,某些单元比其他单元衰减得更快,这一特性可被用作物理不可克隆函数。
2.1 基于衰减的DRAM物理不可克隆函数
利用DRAM单元独特的衰减行为来提取PUF测量值的过程如图2所示。起始点(a)包括将DRAM模块配置为正常使用状态,此时内存控制器会定期刷新所有单元的内容。第一步(b)中,通过起始地址(addr)和大小(size)定义的内存区域被保留,例如使用第2.2节介绍的内存气球技术。此外,PUF区域的刷新被禁用,并向该区域写入初始化值(initval)。接下来(c),在给定的衰减时间(t)内,不访问包含PUF的内存区域,以使单元发生衰减。(d)在衰减时间结束后,读取内存内容以提取PUF测量值。最后(e),恢复内存的正常运行状态,并将该内存区域重新交还给操作系统(OS)使用。
–(d)期间,与PUF相关的内存无法供其他进程使用。)
本文介绍了逻辑DRAM物理不可克隆函数的概念,即在DRAM模块内用于获取PUF测量值的内存区域。对于特定的DRAM,每个逻辑PUF由以下两个因素确定:(i) addr,逻辑PUF的起始地址;(ii) size,其大小。典型的DRAM内存可以被划分为数千个或更多的逻辑PUF。
为了获得挑战/响应,需要两个额外的参数。第一,初始值(initval),在任何衰减发生之前将其写入DRAM区域的单元中;第二,期望的衰减时间(t),该时间会导致部分单元中的电荷泄漏足够多,从而使其存储的逻辑位发生翻转。由于衰减时间以及翻转位的位置对于单个DRAM区域是唯一的,因此在给定衰减时间 t下的翻转位“模式”可以作为PUF响应。
为了使用最少数量的DRAM单元从PUF响应中派生出加密密钥,需要最大化逻辑DRAM PUF响应中的熵。DRAM单元在衰减前存储的值initval起着重要作用,因为一些DRAM单元衰减为0,而另一些则衰减为1。因此,例如,如果一个单元衰减为0,但其初始值被设置为0,则无法观察到衰减效应。如果已知DRAM模块的物理布局(即真单元和反单元的分布,以及各自的衰减方向),则可以构造一种初始化模式,以最大化PUF响应中可观测的位翻转数量。然而,物理布局很少是已知的。此外,最优初始化值需要作为挑战的一部分,或者必须存储在设备上。
在我们的评估中,我们对所有单元使用固定的初始化值 initval= 0。因此,我们的测量的熵可以进一步提高。
总体而言,DRAM PUF的挑战可定义为一个元组(id, t),其中 id表示逻辑PUF实例(addr和 size), t表示读取内存内容前的衰减时间。我们不会指定initval,因为我们假设它是固定的。
尽管SRAM和DRAM PUF都被视为弱PUF [30],,但本文提出的DRAM PUF由于能够改变衰减时间 t,因而提供了多种挑战。给定在相应衰减时间 tx和 tx+1(tx+1 ≥ tx)下获取的两次PUF测量 mx和 mx+1, mx+1和 mx均可作为PUF响应。随着衰减时间 t的增加,发生翻转的DRAM单元数量单调递增。因此, mx+1包含一定数量的新翻转位以及在 mx中已经翻转的大部分2位。通常情况下,如果 tx ≤ tx+1且 addrx= addrx+1, sizex= sizex+1,我们观察到 mx ⊆ mx+1,直至噪声影响。然而需要注意的是,无法同时对多个衰减时间t0、 t1、…、 tn进行响应测量。特别是,在某一衰减时间读取PUF响应会导致内存被刷新(在数据从DRAM单元读取到行缓冲区时,单元会被重新充电)。因此,以不同衰减时间查询PUF响应需要重新启动实验。
2.2 运行时DRAM PUF访问
在设备操作期间停用DRAM刷新以访问PUF是一项复杂的任务:当DRAM刷新周期被禁用时,关键数据(例如属于操作系统或用户空间程序的数据)将开始衰减,系统将崩溃。在我们的实验中,搭载Yocto Linux的英特尔Galileo开发板在DRAM刷新被禁用约一分钟后就会崩溃。因此,我们提出了一种定制化解决方案,能够在保留关键代码刷新的同时,使PUF区域保持不受刷新影响。该方案基于两种技术,分别称为选择性DRAM刷新和内存气球技术。前者可选择性地刷新由操作系统和其他关键应用程序占用的内存区域,使其正常运行而不崩溃;而内存气球技术则能安全地保留对应于逻辑PUF的内存区域,避免破坏关键数据,同时防止操作系统和用户空间程序的访问,从而在PUF测量期间允许单元发生衰减。
选择性DRAM刷新 。在某些设备(如PandaBoard)上,动态随机存取存储器由多个物理模块或逻辑段组成,每个模块/段的刷新可以独立控制。在这种情况 下,PUF可以分配在与操作系统和用户空间程序不同的内存段中。在查询 PUF时,仅停用存放PUF的内存段的刷新,而其他内存段仍保持正常运行。
在其他设备上,例如英特尔Galileo,刷新速率只能以整个动态随机存取存储器为粒度进行控制3。无法实现段粒度的刷新。然而,当某内存行因读或写操作被访问时,该内存行可以被隐式刷新。当由于内存访问而选中一条字线时,感应放大器会将位线驱动至全供电电压 VDD或降至0V,具体取决于存储单元中的值。通过这种方式,电容器电荷被恢复到电荷泄漏前的原始值。利用上述原理,即使禁用了整个内存的刷新功能,仍可通过向每个选定内存行中的某个字发起读取操作来选择性地刷新这些内存行。此功能可在内核模块中通过读取每个待刷新内存行中的一个字来实现(第3节)。
内存气球系统 。为了查询选定的逻辑PUF,由 addr和 size指定的DRAM部分将被相应的初始化值(initval)覆盖,并且刷新已停用。为了禁止应用程序访问PUF从而隐式地刷新它们,我们使用了为虚拟机开发的内存气球技术 [47]。内存气球是一种保留部分内存的机制,以防止内核或任何应用程序使用该内存区域。此方法允许指定将要保留的内存区域的物理地址(addr)和大小(size),即PUF。一旦PUF内存被“气球化”,就可以禁用DRAM刷新,并为非PUF内存区域启用选择性刷新。在完成PUF访问后,可以放气气球并将内存恢复到正常使用状态。
2.3 安全假设
DRAM PUF与传统基于内存的物理不可克隆函数不同,因为它们可以在运行时进行评估。攻击者若想评估PUF,则由于禁用和启用DRAM刷新需要写入硬件寄存器,而该任务只能由内核执行,因此其能力受到限制。因此,攻击者需要具备root权限。此外,对专用于PUF的内存的访问也仅限于内核。因此,一个关键的安全假设是固件和操作系统是可信的,并且攻击者永远不会获得root权限。
攻击者可能会尝试改变环境温度以影响位翻转特性,但合法用户可以通过调整衰减时间来补偿温度的影响(如第4节所述)。攻击者还可能尝试采用[17],中提出的“Rowhammer攻击”方法,即通过反复访问相邻行,在DRAM单元中诱导随机的位翻转。然而,他或她不会成功,因为DRAM PUF会分配一段连续的内存区域。Rowhammer攻击仅适用于PUF区域的边界。至于通过电压变化来操控PUF行为的方法(如[11,28],中所述),不在本文讨论范围内,因为我们关注的是在无法进行此类电压控制的商用硬件上的内在PUF。
3 实现与性能
我们在两个流行的平台上实现并测试了我们的DRAM PUF构造,分别是PandaBoard ES B3版和英特尔Galileo Gen 2。PandaBoard采用德州仪器OMAP 4460系统级芯片(SoC)模块,该模块通过封装堆叠(PoP)配置集成了尔必达提供的1GB DDR2内存,工作电压为1.2伏特。英特尔Galileo则搭载了英特尔Quark SoC X1000 SoC,配备两片美光生产的128 MB DDR3内存,工作电压为1.5伏特。这两片物理上的DRAM模块以并行方式访问,并与处理器位于同一印刷电路板上。
我们实现了两种不同的方法来查询PUF。第一种方法使用修改后的固件,以便在启动阶段获取PUF测量。第二种方法实现了一种基于内核模块的解决方案,可在Linux操作系统运行时进行PUF查询。固件方案易于实现,被用于从英特尔Galileo获取大部分测量数据。基于内核模块的方案则用于在 PandaBoard平台上获取测量数据,以及在Galileo上进行温度稳定性测量。因此,该内核模块也作为提出的DRAM PUF运行时可访问性的一个通用概念验证。我们将在下文介绍这两种方法的具体实现细节。
3.1 基于固件的物理不可克隆函数访问
固件是设备启动时首先执行的代码。在DRAM初始化阶段,固件本身不需要使用DRAM,这使其非常适合收集PUF测量。
在Galileo平台的情况下,我们修改了Quark EDKII固件。为了访问物理不可克隆函数(PUF),在启用DRAM刷新之前插入了PUF测量代码,该过程包括以下步骤:将初始值(initval)写入特定的逻辑PUF(由 addr和 size定义),等待衰减时间 t结束,然后通过控制台读取PUF响应。在获取PUF响应后,固件的正常执行以及操作系统的最终启动可以继续进行。该固件补丁包含大约60行C代码,其中大部分代码用于实现PUF参数的初始化和对PUF内存区域的访问。PUF响应被读取并打印到控制台以供后续分析。
在PandaBoard上,实现方式类似:使用initval初始化动态随机存取存储器,禁用内存控制器的自动刷新,并在衰减时间 t后通过通用异步收发传输器将内存内容发送到工作站。我们为PandaBoard编写的固件补丁大约包含50行C代码。
3.2 基于Linux内核模块的PUF访问
为了能够在运行时访问DRAM PUF,我们为每个平台实现了一个内核模块,该模块可在运行时插入。该内核模块设计为分三个阶段工作:(1)加载时,内核模块使用 initval覆盖所需逻辑PUF区域中的单元。(2)然后,内核模块通过向配置寄存器写入来修改内存控制器,以禁用DRAM刷新,同时对保存操作系统和应用程序的内存进行选择性刷新。(3)在经过 t秒的衰减时间后,重新启用内存刷新,并读取PUF响应。
在PandaBoard上,DRAM可以通过两个独立的外部内存接口(EMIF)进行访问,每个EMIF覆盖512MB。因此,由第一个EMIF连接的内存可用于内核和用户空间应用程序,而由第二个EMIF覆盖的内存则可专门用作DRAM PUF。对于PandaBoard,为了实现此配置,必须首先在引导加载程序中禁用交错机制,该机制会将连续的逻辑地址交替映射到两个模块的物理地址。接下来,可通过关闭实现逻辑PUF的模块的刷新速率,并在衰减时间 t后读取内存内容来获取测量结果,同时内核和用户空间应用程序仍在另一个DRAM模块上正常运行。该内核模块总共约需100行C代码。
在英特尔Galileo上,必须禁用整个动态随机存取存储器的刷新,因为无法以比DRAM模块更细的粒度控制刷新。因此,内核模块必须对内核和应用程序所使用的内存执行选择性刷新。内核模块会调度选择性刷新任务4每 N毫秒一次,其中 N是期望的刷新速率。对于选择性刷新,该模块会遍历所有需要刷新的内存地址,对每个DRAM行中的一个内存字发起读取操作。该内核模块总共约包含300行C代码。
在进行物理不可克隆函数查询时,操作系统和其他应用程序可以正常运行,但必须消耗部分CPU资源用于选择性内存刷新。如果内存区域的大小过大,CPU核心将花费大部分时间刷新指定的内存区域,导致留给用户空间应用程序的资源很少。此外,如果刷新整个内存区域所需的时间远长于所需的刷新周期,则关键的代码和数据部分可能在内核模块能够访问之前就已经发生衰减。
表1显示了对从 32 MB 到 128 MB 不同大小的内存区域执行选择性刷新所需的时间。我们看到,单次选择性刷新耗时在 7.6 毫秒到 21.2 毫秒之间。表1最后两列显示了假设刷新速率为 64 毫秒和 200 毫秒时,用于选择性刷新的 CPU 时间。当活动内存大小为 128 MB 且目标刷新周期为 64 毫秒时,系统将花费 33 % 的 CPU 时间在选择性刷新上。
| 内存大小 | 选择性刷新 time | %CPU时间(64毫秒刷新周期) | %CPU时间(200毫秒刷新周期) |
|---|---|---|---|
| 32 MB | 7.6 毫秒 | 12% | 4% |
| 64兆字节 | 12.1 毫秒 | 19% | 6% |
| 128 MB | 21.2 毫秒 | 33% | 10% |
然而,在室温下,大多数厂商采用的64毫秒刷新周期是非常保守的,我们的实验表明,即使将刷新速率设为200毫秒,我们的设置仍然稳定。先前关于动态随机存取存储器数据保持时间的研究支持我们的结果[21]因此,根据运行条件和所需稳定性保证,可以选择性地延长选择性刷新周期,从而允许刷新更大容量的动态随机存取存储器,或为计算保留更多的CPU资源。在我们的设置中,我们能够将常用于英特尔Quark设备上的Yocto Linux的内存占用减少到 32 MB,且无需任何特殊修改。5在32 MB时,在64毫秒内仅需7.6 毫秒进行选择性刷新,使得超过87 %的CPU 时间可用于其他应用程序。这些数据表明,选择性刷新对于实际代码大小是可行的。
4 DRAM PUF特性评估
我们在英特尔Galileo和PandaBoard上测量了PUF实例,如第3节所述。我们使用了四块不同的PandaBoard和五台英特尔Galileo设备进行测量。此外,鉴于内存容量较大,我们在每台设备上测量了两个32KB的逻辑PUF,从而得到PandaBoard上的八个不同逻辑PUF以及英特尔Galileo上的十个逻辑PUF。每个逻辑PUF在五种不同的衰减时间 t下进行了测量,每次测量50次。基于这些测量结果,我们评估了DRAM PUF的鲁棒性、唯一性、随机性,以及时间和温度依赖关系和稳定性。
与SRAM PUF相比,DRAMPUF的特性有所不同。DRAM PUF响应主要由内存区域中翻转位的位置组成,而不是被视为一个比特数组。因此,用于评估基于内存的物理不可克隆函数的经典指标(通常基于分数汉明距离)并不能准确反映DRAM PUF的特性。这种影响在评估PUF实例的唯一性时尤为明显。对于SRAM PUF而言,其唯一性体现在不同设备之间所有SRAM单元启动值的差异。因此,唯一性通过不同PUF实例的启动值之间的分数汉明距离(互汉明距离,inter‐HD)来衡量。然而,对于DRAM PUF而言,真正导致唯一性的根源是翻转的单元的位置,即其索引。如果应用fractional inter‐Hamming Distance,则会考虑整个32KB的测量数据,包括在观察时间范围内未发生翻转的单元,从而导致数值非常低,无法充分反映唯一性。
因此,我们提出了基于杰卡德指数的新度量方法来评估DRAM PUF的鲁棒性和唯一性[13]。杰卡德指数是一种用于量化两个不同大小集合相似性的知名度量:如果两个集合没有共同元素,则该指数结果为零;如果两个集合完全相同,则结果为一。我们的结果摘要见表2。仅为了与SRAM PUF的情况进行比较,我们也给出了经典的分数汉明距离度量的数值。
唯一性
。为了评估PUF的唯一性,我们考虑在不同PUF之间由于衰减而导致翻转的DRAM单元的索引集合。具体而言,基于从两个不同的逻辑PUF在相同衰减时间 t下获得的两次测量 m1, m2,我们构建两个相应的集合 v1和 v2,用于存储翻转单元的索引。唯一性通过杰卡德指数 Jinter(v1, v2)来衡量:
$$
J_{\text{inter}}(v_1, v_2) = \frac{|v_1 \cap v_2|}{|v_1 \cup v_2|}. \tag{1}
$$
对于理想PUF,$ J_{\text{inter}}(v_1, v_2) $的值应接近于零,表明两个逻辑PUF很少共享翻转位。事实上,如表2所示,我们的DRAM PUF表现出几乎理想的行为,其中英特尔Galileo的测量对之间的杰卡德指数在 $ t = 360 $秒时最大值为 $ J_{\text{inter}} = 0.0072 $。PandaBoard显示的数值较大,在 $ t = 300 $秒时最大值为0.0405,但仍然接近于最优值零。
鲁棒性 。为了量化PUF测量中的固有噪声以及相应的PUF鲁棒性,我们计算了在相同衰减时间下对同一逻辑PUF进行两次测量时,两次测量中翻转位索引集合之间的杰卡德指数 $ J_{\text{intra}}(v_1, v_2) $。理想PUF的值应接近于1,表明响应是稳定的。
图3显示了两种设备类型在相同衰减时间下所有测量的 $ J_{\text{intra}}(v_1, v_2) $ 和 $ J_{\text{inter}}(v_1, v_2) $ 的分布。两个分布之间明显的区分表明可以完美地区分不同设备,同时PUF响应在后续测量中保持稳定。
同样,为了进行比较,我们在表2中提供了分数型内部汉明距离(intra‐HD)的数据,即连续测量之间的汉明距离。与SRAM PUF相比,由于DRAM PUF中的位翻转数量较少,其汉明距离值要小得多。然而,除了一种情况外,最小外部汉明距离(inter‐HD)也远大于最大内部汉明距离(intra‐HD),表明具有接近完美的可分性。
熵
。为了从PUF响应中生成加密密钥,PUF测量必须具有足够的熵。我们按如下方式估算DRAM PUF响应的香农熵。我们再次考虑在时间 t后发生翻转的DRAM单元的索引集合 v 。用 k表示 v的基数,用 N表示DRAM单元的总数。假设翻转位是均匀分布的,这已由我们的实验所证实,则观察到某一集合 v的概率为: $ P(v) = 1/\binom{N}{k} $ 。因此,对于给定衰减时间的DRAM PUF的香农熵可使用以下方法计算
$$
H_t = \log_2\left(\binom{N}{k}\right). \tag{2}
$$
需要注意的是,仅仅观察经过时间 t后发生衰减的比特数量,并不足以确定 k,因为比特衰减由两种效应引起:(i) 必须校正的短期噪声;(ii) 稳定的长期衰减特性。为了近似表示 k,即稳定的物理不可克隆函数特性,可以通过对单个物理不可克隆函数进行多次测量并取平均值,以消除噪声成分。表2列出了以此方式计算出的分数熵 $ H_t/N $。我们观察到PandaBoard上的熵显著大于英特尔Galileo,表明其位翻转现象更多。这很可能是由于实现DRAM单元所采用的不同技术所致。
值得注意的是,可以比较从不同PUF实现中提取的熵。虽然SRAM PUF通常表现出每单元0.7–0.9比特的最小熵值,但所提出的DRAM PUF的熵值低一个数量级。这可以解释如下:在SRAM中,大多数单元具有唯一的启动模式,而在DRAM中,仅有一部分单元在观察到的衰减时间内会发生翻转。然而,由于可用的DRAM单元数量通常高出几个数量级(通常是上千倍),因此这种较低的熵可以轻松得到补偿。
衰减对时间和温度的依赖关系 。图4显示了PandaBoard和英特尔Galileo上衰减速率随衰减时间的变化情况。所有测量均在室温环境下进行,动态随机存取存储器芯片的工作温度约为 40 °C。每个数据点表示所有逻辑PUF的平均值。我们可以看到,在Galileo上,衰减速率随着时间显著增加。PandaBoard则表现出S型衰减,起始阶段陡峭,并在接近t= 360秒时趋于饱和。
该图使我们能够估算逻辑PUF可提供的与时间相关的挑战数量。为了在任意给定的衰减时间实现唯一标识,必须选择一组衰减时间 $ t_1, t_2, …, t_n $,使得相应的测量结果显示出大于固有噪声的、被称为 $ \varepsilon_{\text{bits}} $的新翻转位的最小数量。给定 $ \varepsilon_{\text{bits}} $,可行的衰减时间集合(从而也确定了逻辑PUF的挑战)可以被相应地选择。我们使用了之前观察到的每个衰减时间的最大噪声水平 t以获得每个逻辑PUF最大挑战次数的保守估计。我们通过实验确定了英特尔Galileo的最大衰减时间为 n= 7,PandaBoard的最大衰减时间为 n= 2。该数值假设最大衰减时间为 $ t_n \leq 360 $秒,可能的挑战在图4中用垂直红线表示。PandaBoard 的数值较小,主要是由于更高噪声。特别是,我们观察到对于PandaBoard, $ J_{\text{intra}} $的值可能相对较低,即在$ J_{\text{intra}} = 0.3484 $时为 $ t = 360 $。然而,考虑到 $ J_{\text{inter}} $与$ J_{\text{intra}} $相差一个数量级,其唯一识别能力仍然得以保持。
影响DRAM单元衰减速率的第二个因素是温度。在图5中,我们展示了英特尔Galileo和PandaBoard上DRAM模块的温度与衰减速率之间的依赖关系。为了控制温度,我们使用金属陶瓷加热器将DRAM模块表面加热至目标温度,并进行了测量。
尽管温度对衰减速率有显著影响,但它对衰减特性的影响不大,而是主要影响衰减时间:我们观察到,在较高温度$ T’ > T $下选择一个精心设定的较短衰减时间 $ t’ < t $,可以获得与在温度 T下使用衰减时间 t相同的PUF响应。在我们的实验中,我们得出了英特尔Galileo开发板的以下依赖关系:
$$
t’ = t \cdot e^{-0.0662 \cdot (T’ - T)}. \tag{3}
$$
因此,如果物理不可克隆函数在与注册时不同的温度下进行评估,则可以通过根据公式(3)调整衰减时间来实现补偿。为了支持这一结论,我们通过调整衰减时间,计算了在室温(40°C)下进行的注册测量与在不同温度下进行的测量之间的噪声。为此,我们在室温下创建了衰减时间为 $ t_x = {120\,\text{s}, 180\,\text{s}, 240\,\text{s}, 300\,\text{s}, 360\,\text{s}} $的参考测量。下一步,我们使用了对应于温度 $ T’ $的等效衰减时间,并相应地测量了物理不可克隆函数。如图6所示,对于所有测量,$ J_{\text{intra}} $均在通常的噪声水平范围内。因此,可以通过相应调整衰减时间来适应温度差异。
随时间的稳定性 。在设备的长期使用过程中,DRAM老化效应将开始显现。现有针对SRAM PUF的研究已探索了老化效应[23,25,32,38]。我们了解到目前关于DRAM单元中与安全性相关的老化效应的研究较为有限[36]。图7展示了对英特尔Galileo进行两次相隔4个月的测量所得到的 $ J_{\text{intra}} $值的直方图。测量了三个逻辑PUF,并将结果合并。请注意,这些测量还包含了实验室温度变化引入的噪声。 $ J_{\text{intra}} $的计算基于每对包含一次注册和一次重构测量的测量数据。这些值与表2中所示的结果相似,表明DRAM PUF在长期使用时间段内具有足够的稳定性。
5 轻量级协议用于设备认证和安全信道建立
在本节中,我们提出了两种新颖的基于PUF的协议,其安全性源于DRAM PUF实例在不同衰减时间下查询时所表现出的时间依赖性衰减特性。这两个协议均涉及两个参与方:客户端C和服务器 S。第一个协议用于向诚实的 S验证 C的身份,而第二个协议则在 C和 S之间建立安全信道。这些协议利用从DRAM模块中提取的PUF实例,因此要求 C在协议执行过程中拥有一个实现DRAM PUF的设备 D。为了表述清晰,我们将客户端设备上的PUF实例直接称为 C本身。此外,我们省略了待查询的逻辑PUF实例的完整规格参数,不再在每个协议中重复列出所有参数(addr, size),而是将一个逻辑PUF实例简称为 id。
对手与威胁模型
我们针对协议的对手模型考虑了一位被动攻击者,该攻击者能够观察客户端与服务器之间的网络流量,并可捕获传输的消息,特别是客户端发送的先前PUF测量值。此外,我们认为模糊提取器构造、特别是ECC参数以及辅助数据均为公开信息,因此攻击者已知这些内容。
注册
在两种协议之前均需进行注册阶段,该阶段假设由可信方 SYS执行,例如制造商或系统集成商。对于每个逻辑PUF实例,在注册阶段 SYS对PUF进行n次查询,以在一组预定义的衰减时间 $ T = {t_0, t_1, …, t_n} $上获得测量集合 $ M = {m_{id,0}, m_{id,1}, …, m_{id,n}} $,即$ m_{id,x} = \text{PUF}(id, t_x) $。衰减时间 $ t_0, t_1, …, t_n $经过精心选择,使得 $ t_0 < t_1 < … < t_n $,并且对于每一对连续的衰减时间,PUF测量中新引入的位翻转数量始终大于安全参数 $ \varepsilon_{\text{bits}} $。可通过调整参数 $ \varepsilon_{\text{bits}} $来平衡协议的安全性与可用性(参见本节末尾)。
为了为安全信道建立协议生成密钥,SYS选择一个包含均匀分布的密钥的集合 $ K = {k_{id,0}, k_{id,1}, …, k_{id,n}} $,并使用模糊提取器创建一组辅助数据 $ W = {w_{id,0}, w_{id,1}, …, w_{id,n}} $,使得 $ (k_{id,x}, w_{id,x}) = \text{GEN}(m_{id,x}) $,其中 GEN(·)表示模糊提取器的生成函数。尽管当前的模糊提取器构造在存在有偏PUF的情况下可能从辅助数据中泄露熵,但我们假设存在一种针对DRAM PUF的专用构造。最终,T、M、W和K将被提供给S,而设备将以安全的方式交予C。
设备认证
为了向诚实的服务器S认证客户端C,服务器选择此前在逻辑PUF的认证协议运行中未使用过的最小衰减时间t。接着,S将t和id发送给C,C将其作为输入提供给自己的物理不可克隆函数(PUF),以获取测量结果$ m’ {id,x} $,并将该结果回传给S。S检查$ m’ {id,x} $是否与已存储的测量结果$ m_{id,x} $足够接近。这一过程通过验证$ m’ {id,x} $与$ m {id,x} $之间的杰卡德指数是否大于基于测量噪声所定义的给定阈值 $ \varepsilon_{\text{auth}} $来实现。该认证协议如图8左侧所示。注意,在后续的认证尝试中,衰减时间单调递增。
该认证在计算开销和内存占用方面对客户端设计得较为轻量。它不需要C存储任何长期辅助数据,也不需要执行昂贵的解码操作,而这些操作通常是经典模糊提取器在密钥重建过程中所必需的。这对于必须反复向服务器进行认证的资源严重受限的低成本设备而言尤其有用。
安全信道建立
采用类似的思想,可以在 C和 S之间建立一个安全信道,参见图8(右侧)。同样,S发送逻辑PUF id的最小且之前未使用的衰减时间 $ t_x $,这次同时附上对应的辅助数据$ w_{id,x} $。客户端使用其PUF实例 id进行评估$ t_x $以检索$ m’ {id,x} $,该值与$ w {id,x} $结合使用来重构$ k’ {id,x} = \text{REC}(m’ {id,x}, w_{id,x}) $。如果测量值 $ m’ x $是使用正确的逻辑PUF获得的,则生成的密钥$ k’ {id,x} $将与服务器K中存储的密钥$ k_{id,x} $完全相同。因此,双方C和S将共享相同的密钥。与上述认证协议相比,安全信道的建立过程较重,因为它需要在客户端执行模糊提取器的评估。
安全参数的选择
根据我们的威胁模型,攻击者可以通过窃听认证协议获取所有先前使用的PUF测量值 $ m_x $,该协议的安全性本质上取决于在后续衰减时间 $ t_x, t_{x+1} $之间新出现的翻转位 $ \varepsilon_{\text{bits}} $的数量。$ \varepsilon_{\text{bits}} $的取值以及相应的衰减时间必须合理选择,以确保即使攻击者知晓之前的测量结果,新的PUF测量仍具有足够的新熵。
为了伪造认证或推导出会话密钥,攻击者必须猜测与下一个未使用的衰减时间相对应的PUF测量。在不了解物理PUF特性的情况下,最佳策略是基于已知的前一次测量 $ m_x $,随机猜测下一次测量中位翻转发生的位置。假设攻击者猜测了 M个新的位翻转,则他可以将这些 M个翻转与旧响应中的位翻转 $ m_x $结合起来,作为对新PUF测量 $ m_{x+1} $的猜测。在接下来的段落中,我们将估算此类策略的成功概率,从而确定安全参数 $ \varepsilon_{\text{bits}} $,使得成功猜测的概率足够小。
我们按如下方式估计成功概率。潜在的新位翻转空间大小为 N,即在 $ m_x $中未发生翻转的位数。在剩余的 N位中,攻击者可以猜测 M位,并将其与$ m_x $结合起来以生成 $ m’ {x+1} $。注意,攻击者无需准确猜测模式 $ m {x+1} $。只要猜测的测量值 $ m’ {x+1} $是真实测量值的一个含噪版本,即 $ m’ {x+1} $位于模糊提取器的纠错边界内,攻击者即可成功。
攻击者猜中 M个随机位,并且其中 l个恰好是后续测量中的真实新位翻转的概率为 $ \binom{\varepsilon_{\text{bits}}}{l} \binom{N - \varepsilon_{\text{bits}}}{M - l} / \binom{N}{M} $。注意,在此情况下,攻击者的猜测与真实测量之间的杰卡德指数为 $ J(m’
{x+1}, m
{x+1}) = \frac{l + |m_x|}{\varepsilon_{\text{bits}} + M - l + |m_x|} $,其中 $ |m_x| $表示前一次测量中的位翻转数量。假设当 $ J(m’
{x+1}, m
{x+1}) > \Delta $时认证和密钥生成成功,则仅当 l大于$ (\varepsilon_{\text{bits}} + M) \cdot \frac{\Delta}{1 + \Delta} - |m_x| \cdot \frac{1 - \Delta}{1 + \Delta} $时,攻击者才会成功。因此,攻击者成功猜测的概率为:
$$
P_M = \sum_{l=\left\lceil (\varepsilon_{\text{bits}} + M) \cdot \frac{\Delta}{1 + \Delta} - |m_x| \cdot \frac{1 - \Delta}{1 + \Delta} \right\rceil}^{\varepsilon_{\text{bits}}} \frac{\binom{\varepsilon_{\text{bits}}}{l} \binom{N - \varepsilon_{\text{bits}}}{M - l}}{\binom{N}{M}}. \tag{4}
$$
攻击者可以选择任意 M,以最大化成功概率 $ P_M $。如果 N较大且M介于 $ M_{\text{min}} = \varepsilon_{\text{bits}} \cdot \frac{\Delta}{1 - \Delta} - |m_x| \cdot \frac{1 - \Delta}{1 + \Delta} $和 $ M_{\text{max}} = \varepsilon_{\text{bits}} + |m_x| \cdot \frac{1 - \Delta}{\Delta} $之间,则 $ P_M $随 M单调递减。因此,攻击者可以选择 $ M = M_{\text{min}} $以最大化成功概率。
为了实现128位安全,$ P = \max_M {P_M} $必须小于 $ 2^{-128} $。根据公式4和PUF特性,可以固定 N和 Δ,然后推导出不同 $ |m_x| $对应的 $ \varepsilon_{\text{bits}} $,并进而估算可行的衰减时间。对于英特尔Galileo,保守估计,潜在新位翻转的空间大小为 N= 30KB(假设在一个32 KB的逻辑PUF中,在 $ m_x $内发生翻转的位少于2 KB),且阈值为 Δ= 0.6。为了设定 $ |m_0| $,应找到一个衰减大于噪声的点。为保守起见,使用最小最大内部汉明距离作为 $ |m_0| $的参考。因此,我们设定 $ |m_0| = 80 $,然后可得到 $ \varepsilon_{\text{bits1}} = 73 $,和 $ |m_1| = |m_0| + \varepsilon_{\text{bits2}} = 153 $。接着通过 $ |m_1| $,可得到 $ \varepsilon_{\text{bits2}} = 122 $,从而得到 $ |m_2| = 275 $等。因此,在Galileo中,一个32 KB的逻辑PUF可以提供7个挑战,每个挑战的衰减时间均短于360 秒。
6 开放研究课题
这项关于可运行时访问的DRAMPUF的开创性工作仍留下了许多需要解决的开放性研究问题和疑问。这为学术界提供了机会,以进一步完善和提升DRAM PUF的概念。
Temperature dependency 的DRAM单元衰减允许物理攻击者通过调节环境温度来控制衰减速率。例如,加热DRAM芯片可能会“加快”衰减速率,缩短攻击者观察到某些位翻转所需的时间。需要进一步研究温度依赖关系,并且需要开发相应的对策以阻止此类攻击。
电压依赖性 在本文中未考虑DRAM单元衰减的电压依赖性,因为商用设备通常无法对DRAM电压进行控制。然而,如果未来的商用设备提供允许细粒度控制DRAM电压的接口,电压依赖性可能会成为运行时可访问的DRAM PUF 的另一个可行特征。
读出时间 DRAM PUF的读出时间在分钟级别。这可能被视为一种劣势,但在许多情况下,由于能够在运行时访问DRAM PUF,这一劣势可以得到补偿。需要更深入地理解允许此类相对较长读出时间的使用场景。同时,改善读出时间对于拓宽DRAM PUF的应用范围至关重要。
安全假设 ,例如可信固件和操作系统,可能被认为过于严格。尽管商用设备中的其他物理不可克隆函数同样需要这些条件,但人们可能会寻求需要更小可信计算基的解决方案。
模糊提取器 需要构建专门针对基于衰减的DRAM PUF中发现的严重偏置的PUF响应,或使用所引入的杰卡德距离的方法。经典的模糊提取器基于汉明距离相关度量,对于偏置PUF而言并不安全。因此,应开发用于偏置PUF的新构造方法,例如 [24,39],。
7 结论
在本研究中,我们提出了一种可从商用设备中的动态随机存取存储器(DRAM)提取的内在PUF。通过对未经修改的商用设备(特别是PandaBoard和Intel Gallileo)上的DRAM PUF进行评估,结果表明其具有良好的鲁棒性、唯一性、随机性,并且在至少数月的时间内保持稳定。此外,与现有的DRAM和SRAM PUF不同,我们展示了一种系统模型,该模型基于选择性DRAM刷新selective DRAM refresh和内存气球技术memory ballooning的思想,能够通过Linux内核模块在运行时直接查询PUF实例。我们还提出了基于DRAM PUF时间依赖性衰减特性的设备认证与识别协议,以增强安全性。我们的内在DRAM PUF克服了广泛使用的内在SRAM物理不可克隆函数的两个局限性:其一,能够在运行时被访问;其二,由于将衰减时间 t作为挑战的一部分,从而扩展了挑战‐响应空间。因此,本工作通过利用商用设备中的动态随机存取存储器,为设备认证提供了一种新的替代方案。
21

被折叠的 条评论
为什么被折叠?



