GPU硬件指纹的获取方法、装置及可读存储介质与流程

文档序号:29614733发布日期:2022-04-13 11:04阅读:218来源:国知局
GPU硬件指纹的获取方法、装置及可读存储介质与流程
gpu硬件指纹的获取方法、装置及可读存储介质
技术领域
1.本技术涉及设备识别技术领域,特别是涉及gpu硬件指纹的获取方法、装置及可读存储介质。


背景技术:

2.近年来,随着互联网、物联网以及各种终端设备的快速发展,硬件指纹或者设备指纹是标识硬件或者设备的特征/标识,硬件指纹对于网络安全、硬件安全或者设备安全等具有较大的意义。
3.本技术的发明人经过长期研究发现,目前的硬件指纹主要是在制造时通过人为配置或赋予的数字指纹,但这种硬件指纹存在被篡改风险。


技术实现要素:

4.本技术提供的gpu硬件指纹的获取方法、装置及可读存储介质,以快速且有效地获取gpu的硬件指纹,不易被篡改。
5.为解决上述技术问题,本技术采用的一个技术方案是:提供一种gpu硬件指纹的获取方法,包括:确定gpu中的多个流处理器;获取多个流处理器在运行时各自的实际运行频率;按预设转换规则将多个流处理器各自的实际运行频率分别转换成对应的编码值;将多个流处理器各自对应的编码值组合形成用于表征gpu硬件指纹的特征数组。
6.为解决上述技术问题,本技术采用的另一个技术方案是:一种gpu硬件指纹的获取装置,包括:处理器、存储器,处理器耦合存储器,处理器在工作时执行指令以实现上述任一项所述的方法。
7.为解决上述技术问题,本技术采用的另一个技术方案是:一种gpu硬件指纹的获取装置,包括:确定模块,用于确定gpu中的多个流处理器;获取模块,用于获取多个流处理器在运行时各自的实际运行频率;转换模块,用于按预设转换规则将多个流处理器各自的实际运行频率分别转换成对应的编码值;组合模块,用于将多个流处理器各自对应的编码值组合形成用于表征gpu硬件指纹的特征数组。
8.为解决上述技术问题,本技术采用的又一个技术方案是:一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述任一项所述的方法。
9.本技术的有益效果是:通过将gpu中多个流处理器的实际运行频率转换成对应的编码值,并将多个流处理器对应的编码值组合形成用于表征gpu硬件指纹的特征数组,从而利用gpu的流处理器的运行频率实现gpu硬件指纹的获取,如此可以快速且有效地获取gpu硬件指纹。而且gpu的流处理器由于工艺和硬件制造等原因,即使相同主频的gpu,其流处理器对应的运行频率也各不相同,成为一种不可克隆的物理变化,因而本技术利用gpu本身的硬件特征标识,不同于在制造时人为配置的数字指纹,无法被篡改且能够唯一标识gpu,安全性更好。
附图说明
10.图1是本技术gpu硬件指纹的获取方法实施例的流程示意图;
11.图2是本技术gpu硬件指纹的获取方法实施例中gpu结构示意框图;
12.图3是图1中步骤s11一实施方式的流程示意图;
13.图4是图1中步骤s12一实施方式的流程示意图;
14.图5是图1中步骤s13一实施方式的流程示意图;
15.图6是图5中步骤s131一实施方式的流程示意图;
16.图7是本技术gpu硬件指纹的获取装置一实施例的电路结构示意框图;
17.图8是本技术gpu硬件指纹的获取装置又一实施例的电路结构示意框图;
18.图9是本技术可读存储介质一实施例的结构示意框图。
具体实施方式
19.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
20.gpu全称为“graphics processing unit”,也即图形处理器,又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作的微处理器。gpgpu全称为“general-purpose computing on graphics processing units”,也即通用图形处理器,是一种利用处理图形任务的图形处理器来计算原本由中央处理器处理的通用计算任务的技术。由于现代图形处理器强大的并行处理能力和可编程流水线,指令流处理器可以处理非图形数据。已有的gpgpu编程语言包括opengl,cuda和opencl等。
21.本技术gpu硬件指纹的获取方法实施例能够应用于各类gpu,例如上述的gpgpu等,通过本技术的获取方法所获取的gpu硬件指纹,不易篡改,安全性更高,而且获取过程快速且有效。
22.请参阅图1,图1是本技术gpu硬件指纹的获取方法实施例的流程示意图,具体包括如下步骤:
23.s11:确定gpu中的多个流处理器。
24.如图2所示,gpu中可以包含一定数量的流处理器10。例如gpu包含的流处理器10的数量可以为20-10000个。通常流处理器10的数量越多,gpu的处理能力就越强。gpu中的每个流处理器10中都有专门高速单元负责解码和执行流数据。这些流处理器10均可独立运行。因此,当需要获取gpu的硬件指纹时,可在gpu的全部流处理器10中随机或者不随机地选择其中多个流处理器10来执行相应任务。
25.以pascal架构的gp100 gpu为例,该型号的gpu的流处理器10的数量大致为3584个,可以从该3584个流处理器10中确定多个流处理器10,便于后续步骤的进行。
26.请参阅图3,图3示出的是本技术步骤s11的一具体实施方式。对于确定gpu中的多个流处理器10而言,具体确定的流处理器数量可以通过s11包括的如下步骤实现:
27.s111a:确定特征数组所需的第一比特位数,以及预设转换规则中所对应的编码值
的第二比特位数。
28.在本实施例中,特征数组是用来表征不同gpu的一组字符串。本技术通过预设转换规则将gpu中多个流处理器10的实际运行频率转换成对应的编码值,进而将这些对应的编码值组合形成了上述的特征数组。其中,预设转换规则是可以是映射、赋值等方式,只要能够将gpu中多个流处理器10的实际运行频率按照一定规律转变成一组具有识别度的字符串即可。为便于识别和使用,编码值可以是二进制数、八进制数、十进制数或十六进制数等随机或不随机数,如“00”、“01”等。
29.s111b:以第一比特位数和第二比特位数的比值确定流处理器数量。
30.具体地,可以直接以第一比特位数和第二比特位数的比值作为流处理器10的数量。第一比特位数和第二比特位数的比值为第一比特位数除以第二比特位数所得的值。
31.s111c:在gpu中确定数量为流处理器数量的多个流处理器。
32.在本实施例中,比特是信息量的度量单位,由于转换成二进制后长度会发生变化,不同数制下一位的信息量并不总是一个二进位,其对应关系为对数关系,例如八进制、十进制和十六进制等。第一比特位数和第二比特位数是可以根据gpu的型号和用户需求来自行设定的。一个比特位对应一个二进制数,例如,“1100”为4比特位数,对应4个二进制数。“11”为2比特位数,对应2个二进制数。
33.在本实施例的一个应用场景中,如果需要从英伟达pascal架构的gp100 gpu提取256比特硬件指纹数据r,每个流处理器10运行频率需要转换为2比特数据ri(i=0,1

127)。其中,r为第一比特位数,ri为第二比特位数。因为r/ri=256/2=128,那么就需要在gpu中确定数量为128的多个流处理器10。
34.通过上述方式,可以根据实际需要预先确定要选择的流处理器10的数量,以便于gpu进行流处理器10的选择以及后续编码值的获取和组合。
35.具体地,对于确定流处理器10的方式,可以通过步骤s11可以包括如下步骤实现:
36.s112:按gpu中各流处理器的预设排列顺序选定彼此不相邻的多个流处理器。
37.gpu在确定多个流处理器10时,可根据gpu中各流处理器10原本的排列顺序随机或者不随机地选择彼此不相邻的多个流处理器10。一般而言,gpu流处理器10越多,不同流处理器10之间的运行频率可能差别越大。同时,流处理器10在实际运行的时候,其运行频率相对于稳定运行频率会发生上下波动,且不相邻的流处理器10之间的实际运行频率可能相差更大,所以选择彼此不相邻的流处理器10更容易实现编码值的区分,也更能够标识gpu,唯一性更好,进而有利于本技术gpu硬件指纹的获取。
38.如图2所示,gpu包含
①-⑨
九个流处理器10,假设定义预设排列顺序为
①-⑨
的编号顺序,其中









即为彼此不相邻的多个流处理器10,







也为彼此不相邻的多个流处理器10。gpu可以从中任意选择多个彼此不相邻的流处理器10,比如选择











等。
39.基于上述内容,在gpu中确定了多个流处理器10之后,可以获取流处理器10的实际运行频率,具体如下:
40.s12:获取多个流处理器在运行时各自的实际运行频率。
41.由于工艺和硬件制造等原因,即使相同主频的gpu,其流处理器10的实际运行频率也各不相同。这些不同的运行频率可以看作一种puf(physical unclonable function),进
而被提取为gpu的硬件指纹,可用于硬件的身份认证等。puf是一种硬件安全技术,即物理不可克隆函数,是半导体制造过程中自然发生的不可克隆的物理变化,具有唯一性、不可预测性等特点。
42.在本技术的一个应用场景中,gpu根据要求随机确定多个流处理器10,并通过记录这多个流处理器10完成任务的情况,以获得他们在运行时各自的实际运行频率。
43.请参阅图4,图4示出的是本技术步骤s12的一具体实施方式。对于如何获取实际运行频率,可以通过s12包括的如下步骤实现:
44.s121:启动gpu运行预定计时任务。
45.例如,启动gpu在固定时间执行计数器累加计算,也即预定计时任务为固定时间内的计数器累加计算。
46.s122:记录多个流处理器在预定计时任务对应的预定时间内运行预定计任务时各自的实际运行频率。
47.为获得gpu中已经确定的多个流处理器10的实际运行频率,就需要使这多个流处理器10运行预定计时任务,记录这些流处理器10在预定时间内执行预定计时任务的过程中所对应的实际运行频率。
48.如图2所示,例如,为获得gpu中确定的





这三个流处理器10的实际运行频率,使





同时运行预先设定的计算任务,记录





在一分钟内完成该任务的实际情况,根据





在一分钟内任务完成的实际情况计算得出





这三个流处理器10对应的运行频率。
49.通过完成特定计时任务的方式可以快速、简便地获得gpu中各个流处理器10的实际运行频率,并且这种方式获得的流处理器10实际运行频率更为准确和真实。
50.通过上述方式获取了多个流处理器10的实际运行频率之后,可以对实际运行频率进行编码,具体可以如下:
51.s13:按预设转换规则将多个流处理器各自的实际运行频率分别转换成对应的编码值。
52.在本实施例中,预设转换规则可以是将多个流处理器10各自的实际运行频率按照一定规则或者对应关系转换成编码值的任何方法,包括但不限于映射、赋值等方式。预设转换规则是建立流处理器10的实际运行频率跟编码值之间的对应关系,进而能够将实际运行频率转换成编码值。
53.对于预设转换规则对应的编码值的第二比特位数可以根据gpu的实际情况确定,而且不同的第二比特位数的编码值对应的预设转换规则可以不同。
54.请参阅图5,图5示出的是本技术步骤s13的一具体实施方式。对于如何获取实际运行频率所对应的编码值,可以通过s13包括的如下步骤实现:
55.s131:将预设频率范围划分为多个频率区间,并设定多个频率区间各自对应的所述编码值;其中,预设频率范围为第一预设频率值至第二预设频率值,第一预设频率值小于或者等于每个流处理器的最小理论频率,第二预设频率值大于或者等于每个流处理器的最大理论频率。
56.最小理论频率是理论上该gpu的流处理器10所能够达到的最小值。可选地,第一预设频率值为0。最大理论频率是理论上该gpu的流处理器10所能够达到的最大值。可选地,上
述第二预设频率值为无穷大值。
57.s132:将多个流处理器各自的实际运行频率分别映射到多个频率区间中,以确定多个流处理器各自的实际运行频率所处的频率区间对应的编码值。
58.为实现对多个流处理器10各自的实际运行频率进行编码,可以通过划分频率区间的方式将多个流处理器10各自的实际运行频率映射到不同的频率区间中,也即判断流处理器10的频率处于哪个频率区间,每个频率区间在划分时就已经预设了该频率区间所对应的编码值,进而运用这种方式将多个流处理器10各自的实际运行频率分别对应上相应的编码值。因为每个流处理器10的实际运行频率不尽相同,而每个gpu又包含有多个流处理器10,所以每个gpu通过上述方法获得的编码值数组都是不同的。故本技术通过上述方式可以获得每个gpu所对应的独一无二的编码值所组成的数组,从而利用这些独一无二的编码值所组成的数组起到识别不同gpu的作用。
59.在本技术的一个应用场景中,以英伟达gpu为例,其流处理器10运行频率满足正态分布,若要将频率转换为n比特数据,需要设计2
n-1个阈值,将预设频率范围分割成2n个频率区间。通过预设转换规则可以将gpu流处理器10的运行频率转换为稳定的编码值作为密钥,提取出来的数据表征硬件指纹,对gpu是唯一的。
60.请参阅图6,图6示出的是本技术步骤s131的一具体实施方式。对于上述频率区间的划分方式有多种。以下举出一种,具体可以参见s131包括的如下步骤:
61.s131a:获取gpu的流处理器的设计频率和与设计频率相对应的分布偏差。
62.频率是单位时间内完成周期性变化的次数,是描述周期运动频繁程度的量。分布偏差又称标准偏差,是总体各单位标准值与其平均数离差平方的算术平均数的平方根,用来反映一个数据集的离散程度。在本实施例中,流处理器10的设计频率就是流处理器10在运行任务时的目标工作频率。分布偏差则是各流处理器10的实际运行频率与其平均数离差平方的算术平均数的平方根。通常,gpu的生产厂家会在制造gpu的时候就确定gpu中流处理器10的设计频率,而分布偏差则可以通过概率统计的方式计算得出。
63.s131b:将设计频率和分布偏差通过数学运算转换成多个阈值,进而通过多个阈值将预设频率范围划分为多个频率区间;其中,多个阈值的数量比多个频率区间的数量少一个。
64.本实施例中,gpu流处理器10的运行频率满足正态分布,通过gpu流处理器10的设计频率和分布偏差将预设频率范围划分为面积尽量均等的多个区域,可以实现gpu流处理器10在各个区间的均匀分布,以使得各个流处理器10所对应的编码值均匀分布,从而获得更具有识别度的指纹数据。
65.在本技术的一个应用场景中,根据gpu的型号和制造工艺查找流处理器10的设计频率μ和分布偏差σ。因为根据正态分布表,当x=μ
±
0.674σ时,gpu实际运行频率落入各个区间的概率大致相等,所以将流处理器10的实际运行频率映射到四个区间[0,μ-0.674σ],[μ-0.674σ,μ],[μ,μ+0.674σ],[μ+0.674σ,+∞]中,并分别对应编码“00”、“01”、“10”、“11”,可以得到多个流处理器10各自的对应的编码值。
[0066]
当然,对于划分预设频率范围的阈值可以有其他方式,例如人为计算确定,或者根据实际情况进行确定。
[0067]
s14:将多个流处理器各自对应的编码值组合形成用于表征gpu硬件指纹的特征数
组。
[0068]
在本实施例中,为获得可以表征gpu的硬件指纹数据,将s13中形成的多个流处理器10各自对应的编码值通过一定的方式(包括但不限于级联等)组合起来,构成一组易识别、易表述的数组,这一数组可以作为硬件指纹数据进行使用。
[0069]
具体地,可以根据流处理器10的预设排列顺序,对编码值进行组合,具体可以通过步骤s14包括的如下步骤实现:
[0070]
s141:将多个流处理器各自对应的编码值按预设排列顺序中多个流处理器的顺序级联组合,以形成特征数组。
[0071]
在本实施例中,通过级联方式将多个流处理器10各自对应的编码值组合形成的特征数组可以用于身份验证、安全存储秘钥等。
[0072]
如图2所示,从
①-⑨
九个流处理器10中按照步骤s112选择彼此不相邻的多个流处理器10后,将选出的多个流处理器10各自对应的编码值组合起来,就可以形成一组表征gpu的特征数组。例如,选择







这四个流处理器10,按照上述预设转换规则对这四个流处理器10的实际运行频率进行转换后,得到

对应的编码为“00”、

对应的编码为“01”、

对应的编码为“10”、

对应的编码为“11”。对这些编码值进行组合就可以得到一组特征数组,如“00011011”,该特征数组可作为gpu的硬件指纹被用于身份验证、安全存储秘钥等。
[0073]
在本技术的一个应用场景中,例如,如果需要从英伟达pascal架构的gp100 gpu提取256比特硬件指纹数据r,每个流处理器10的运行频率需要转换为2比特数据ri(i=0,1

127)。则按照本技术技术方案来获取该gpu的硬件指纹数据r大致可以分为以下几个步骤:
[0074]
步骤一:gpu随机确定128个流处理器10;
[0075]
步骤二:调用步骤一中确定的128个流处理器10运行已编写好的计时任务,如固定时间计数器累加值等,得到这128个流处理器10的实际运行频率fi(i=0,1,

127);
[0076]
步骤三:根据gpu的型号和制造工艺查找流处理器10的设计频率μ和分布偏差σ,将流处理器10的实际运行频率fi(i=0,

,127)映射到四个区间[0,μ-0.674σ],[μ-0.674σ,μ],[μ,μ+0.674σ],[μ+0.674σ,+∞],并分别对应编码“00”、“01”、“10”、“11”,得到2比特数据ri(i=0,1,

127);
[0077]
步骤四:将2比特数据ri(i=0,1,

127)级联起来得到256比特数据r,r即为gpu的硬件指纹数据,可用于身份验证,安全存储秘钥等。
[0078]
基于上述方法步骤,本技术通过将gpu中部分流处理器10的实际运行频率按照预设转换规则直接转换成与每个gpu唯一对应的硬件指纹。实现了在不使用额外安全专用硬件的情况下就能获取gpu硬件指纹的技术效果,且本技术所获取的硬件指纹是直接由gpu内部流处理器10的相关数据转换所得,不存在中间存储介质,不存在被篡改的风险。
[0079]
请参阅图7,图7为本技术gpu硬件指纹的获取装置一实施例的结构示意框图。
[0080]
本实施例中,gpu硬件指纹的获取装置包括处理器20、存储器21,处理器20耦合存储器21,处理器20在工作时执行指令以实现上述任一项所述的方法。
[0081]
其中,处理器20还可以称为cpu(central processing unit,中央处理单元)。处理器20可能是一种集成电路芯片,具有信号的处理能力。处理器20还可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器
20也可以是任何常规的处理器等。
[0082]
请参阅图8,图8为本技术gpu硬件指纹的获取装置又一实施例的结构示意框图,具体包括以下模块:
[0083]
确定模块30,用于确定gpu中的多个流处理器10;
[0084]
获取模块31,用于获取多个流处理器10在运行时各自的实际运行频率;
[0085]
转换模块32,用于按预设转换规则将多个流处理器10各自的实际运行频率分别转换成对应的编码值;
[0086]
组合模块33,用于将多个流处理器10各自对应的编码值组合形成用于表征gpu硬件指纹的特征数组。
[0087]
上述装置中的各个模块终端可分别执行上述方法实施例中对应的步骤,故在此不对各模块进行赘述,详细请参阅以上对应步骤的说明。
[0088]
请参阅图9,图9为本技术可读存储介质一实施例的结构示意框图。
[0089]
本实施例中,可读存储介质上存储有计算机程序40,计算机程序40被处理器20执行时实现如上所述任一项所述的方法。
[0090]
其中,可读存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。
[0091]
在本技术所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0092]
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
[0093]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0094]
以上所述仅为本技术的实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1