![设备ID的动态生成方法、系统、计算机设备及存储介质与流程](http://img.xjishu.com/img/zl/2021/3/26/fad2yxv1b.jpg)
设备id的动态生成方法、系统、计算机设备及存储介质
技术领域
1.本发明属于设备id的生成领域,具体涉及一种设备id的动态生成方法、系统、计算机设备及存储介质。
背景技术:2.无论出于精准营销还是虚假流量检测的需要,对于流量来源的设备唯一id都有很强烈的需求。传统的可用于精准定位设备的id包括idfa(ios),android_id(android),imei(android)等,随着数据安全相关法规的增强以及厂商的限制,此类id都接近不可获取或者很容易被用户重置等状态,重置前后的id也很难进行关联。另一方面,通过部分api可以获得设备的一些特征数据,此类数据虽不受用户重置影响,但直接采集也会受到数据安全相关法律的限制。现有的id生成方法:
3.(1)使用api获取设备上能获取的独立设备id,如idfa,imei,android_id等;
4.(2)在设备上生成一个随机字符串作为独立id,并存储在设备上;
5.(3)使用api获取设备信息,并利用某些算法将这些信息哈希后生成一个id,并存储在设备上。
6.现有技术的不足:
7.(1)api可获取的独立设备id朝着如下几个发展1)不可获取2)易失(用户可重置)3)同一设备可能对应多个id(比如不同应用调用api获取到的id不同);
8.(2)随机字符串的id,丢失后再生成,两个id无法关联;
9.(3)api获取的设备信息可能涉及用户隐私或受数据安全法保护因而不能回传,直接hash生成的id会同样有丢失后两个id无法关联的缺点。
技术实现要素:10.本申请实施例提供了一种设备id的动态生成方法、系统、计算机设备及存储介质,以至少解决相关技术中主观因素影响的问题。
11.本发明提供了一种设备id的动态生成方法,其中,包括:
12.初始id生成步骤:根据设备信息计算获得设备的初始id;
13.id更新步骤:根据所述初始id的版本位选择更新策略,根据所述更新策略对所述初始id进行更新获得更新id;
14.id验证步骤:通过服务器验证所述更新id,当所述验证结果为冲突时,返回id更新步骤,当验证结果为不冲突时设置所述更新id为设备id。
15.上述的动态生成方法,其中,所述初始id包括版本位、特征位、散列位、长度位及冲突位中的至少一者。
16.上述的动态生成方法,其中,所述初始id生成步骤包括:
17.版本位获得步骤:根据开发需求设置所述版本位;
18.特征位获得步骤:根据设备特征设置所述特征位,所述特征位包括低熵位特征及/
或高熵位特征;
19.散列位获得步骤:根据所述低熵位特征及/或所述高熵位特征计算获得所述散列位;
20.长度位获得步骤:根据所述低熵位特征及/或所述高熵位特征的长度值计算获得所述长度位;
21.冲突位获得步骤:默认设置所述冲突位。
22.上述的动态生成方法,其中,所述id更新步骤包括:
23.算法确定步骤:根据所述版本位选择对应地更新算法;
24.更新id获得步骤:根据所述更新算法生成部分所述特征位的散列值,并将所述冲突位设为1后,获得所述更新id。
25.所述初始id为定长id或为变长id,当所述初始id为所述变长id时,所述更新id获得步骤还包括所述更新算法根据所述长度位的默认值将所述散列值截断。
26.上述的动态生成方法,其中,所述id验证步骤包括:通过所述服务器对所述更新id进行验证,如无冲突,则将所述更新id的所述冲突位置为0后,设置所述更新id为所述设备id并保存。
27.上述的动态生成方法,其中,当存在冲突时,将所述冲突位置为1后返回所述更新id获得步骤;
28.其中,当冲突类型为不同设备的id冲突时,所述更新id获得步骤中,选取更多的特征进行计算获得所述更新id,或,将被截断的所述散列位重新计算,截取更长的所述散列位进行计算获得所述更新id;当冲突类型为相同设备id冲突时,所述更新id获得步骤中,选取更多的特征进行计算后获得所述更新id;
29.所述id验证步骤还包括,所述服务器通过阈值对所述更新id进行验证,满足所述阈值时,设置所述更新id为所述设备id。
30.本发明还提供一种设备id的动态生成系统,其中,包括:
31.初始id生成模块,根据设备信息计算获得设备的初始id;
32.id更新模块,根据所述初始id的版本位选择更新策略,根据所述更新策略对所述初始id进行更新获得更新id;
33.id验证模块,通过服务器验证所述更新id,当所述验证结果为冲突时,返回id更新模块,当验证结果为不冲突时设置所述更新id为设备id。
34.本发明还提供一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现如上述中任一项所述的设备id的动态生成方法。
35.本发明还提供一种存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现如上述中任一项所述的设备id的动态生成方法。
36.与现有技术相比,本发明的有益效果如下:
37.1.动态生成id,降低对设备的性能压力
38.高熵值特征通常需要较多的计算,本机制仅在id冲突时才进行对更多特征的计算;
39.2.不回传高熵值特征,保护隐私,易符合数据安全规范;
40.3.同一设备的id,丢失后再次计算可高度复原,id和设备的关联度较高;
41.4.id可在服务端直接进行相似度的计算和比较附图说明。
附图说明
42.此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
43.图1是设备id的动态生成方法的流程图;
44.图2是图1中步骤s1的分步骤流程图;
45.图3是图1中步骤s2的分步骤流程图;
46.图4是设备id的动态生成系统的结构示意图;
47.图5是根据本发明实施例的计算机设备的框架图。
具体实施方式
48.为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
49.显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
50.在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
51.除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对
象,不代表针对对象的特定排序。
52.下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。
53.在详细阐述本发明各个实施例之前,对本发明的核心发明思想予以概述,并通过下述若干实施例予以详细阐述。
54.请参照图1,图1是设备id的动态生成方法的流程图。如图1所示,本发明的设备id的动态生成方法包括:
55.初始id生成步骤s1:根据设备信息计算获得设备初始id;
56.id更新步骤s2:根据所述初始id的版本位选择更新策略,根据所述更新策略对所述初始id进行更新获得更新id;
57.id验证步骤s3:通过服务器验证所述更新id,当所述验证结果为冲突时,返回id更新步骤,当验证结果为不冲突时设置所述更新id为设备id。
58.其中,所述初始id包括版本位、特征位、散列位、长度位及冲突位中的至少一者。
59.请参照图2,图2是图1中步骤s1的分步骤流程图。如图2所示,所述初始id生成步骤s1包括:
60.版本位获得步骤s11:根据开发需求设置所述版本位;
61.特征位获得步骤s12:根据设备特征设置所述特征位,所述特征位包括低熵位特征及/或高熵位特征;
62.散列位获得步骤s13:根据所述低熵位特征及/或所述高熵位特征计算获得所述散列位;
63.长度位获得步骤s14:根据所述低熵位特征及/或所述高熵位特征的长度值计算获得所述长度位;
64.冲突位获得步骤s15:默认设置所述冲突位。
65.请参照图3,图3是图1中步骤s2的分步骤流程图。如图3所示,所述id更新步骤s2包括:
66.算法确定步骤s21:根据所述版本位选择对应地更新算法;
67.更新id获得步骤s22:根据所述更新算法生成部分所述特征位的散列值,并将所述冲突位设为1后,获得所述更新id。
68.其中,所述初始id为定长id或为变长id,当所述初始id为所述变长id时,所述更新id获得步骤还包括所述更新算法根据所述长度位的默认值将所述散列值截断。
69.进一步地,所述id验证步骤s3包括:通过所述服务器对所述更新id进行验证,如无冲突,则将所述更新id的所述冲突位置为0后,设置所述更新id为所述设备id并保存。
70.其中,当存在冲突时,将所述冲突位置为1后返回所述更新id获得步骤;
71.其中,当冲突类型为不同设备的id冲突时,所述更新id获得步骤中,选取更多的特征进行计算获得所述更新id,或,将被截断的所述散列位重新计算,截取更长的所述散列位进行计算获得所述更新id;当冲突类型为相同设备id冲突时,所述更新id获得步骤中,选取更多的特征进行计算后获得所述更新id;
72.所述id验证步骤s3还包括,所述服务器通过阈值对所述更新id进行验证,满足所
述阈值时,设置所述更新id为所述设备id。
73.以下,列举实施例具体说明本发明的设备id的动态生成方法如下。
74.实施例一:
75.一个id由多位连续的2进制数字组成,各位数的含义举例如下(位数仅为举例)
76.变长id
[0077][0078][0079]
下面举例,一个生成的id 0101010010000001010110111的具体含义为
[0080][0081]
定长id
[0082][0083][0084]
1.版本位:根据开发需求,估计线上的最大同时使用版本数,比如线上最多有8个版本,即可以使用3个比特位来轮转代表这八个版本。
[0085]
2.特征位:任何可程序化采集的设备特征,不同的版本可能会使用不同的特征或者加入新的特征,每个比特位代表一个特征,此处特征又可分为两种,低熵位和高熵位;
[0086]
2.1首先定义特征的熵值如下,信息论中,熵(entropy)代表了消息中所包含的信息的平均量,是不确定性的度量;
[0087]
熵h(x)=e[i(x)]=e[
‑
ln(p(x))]h(x)=e[i(x)]=e[
‑
ln(p(x))];
[0088]
其中p为随机变量x的概率质量函数,e为期望,i(x)代表x的信息量。
[0089]
当x为离散随机变量时,可以写成:h(x)=∑ip(xi)log2p(xi);
[0090]
2.2如果有一枚理想的硬币,其出现正面和反面的机会相等,则抛硬币事件的熵等于其能够达到的最大值。我们无法知道下一个硬币抛掷的结果是什么,因此每一次抛硬币都是不可预测的。因此,使用一枚正常硬币进行若干次抛掷,这个事件的熵是一比特,因为结果不外乎两个——正面或者反面,可以表示为0,1编码,而且两个结果彼此之间相互独立。若进行n次独立实验,则熵为n,因为可以用长度为n的比特流表示;
[0091]
2.3常见的低熵位(熵值<阈值s,此处为5)包括:屏幕分辨率,系统语言,系统是否启用do not track,设备的cpu个数,内存大小等;
[0092]
2.4高熵位包括(熵值)阈值s,此处为5),user agent,canvas指纹,autiocontex指纹,webgl指纹等,任何数据安全法规保护的特征也会被认定为高熵位;
[0093]
2.5熵值的计算来源于两种,一种是公开的论文研究,另一种是基于样本流量的计算,阈值s也可以按需调整;
[0094]
2.6熵。
[0095]
3.散列位和长度位,散列位的计算对低熵位和高熵位不同,长度位仅对变长id有效;
[0096]
3.1低熵位,低熵位的特征,对不同设备可能的值通常较少,通常允许采集和回传,因而可直接针对已有的样本流量进行统计,枚举所有的不同值,将不同值用一个l位的2进制字符串表示,为每个特征的散列值定义一个最大散列长度l,散列长度l可根据panel数据或者在后期采集过程中采集到的id的冲突的情况进行调整,l记录在长度位中;
[0097]
3.2高熵位,高熵位的特征,通常有较大的概率精准定位设备,因而回传和采集有较大的隐私风险,我们在这里使用一个散列函数,将这个特征转化成一个最长位l位的2进制字符串表示,l的调整方式同上;
[0098]
3.3对于定长id,所有的l值相同,因而不需要长度位;
[0099]
4.定长id的生成和更新策略;
[0100]
4.1版本位决定使用的更新算法;
[0101]
4.2设备使用更新算法,生成部分特征位的散列值,将冲突位设为1,生成最终id,使用哪些特征位应当在对panel数据的分析,以及版本迭代过程中得到一个较为稳定的选择;
[0102]
4.3设备将id发送至服务器,服务器验证id是否已存在(发生冲突);
[0103]
4.3.1如无冲突,则将id末位(冲突位)置为0并返回,设备保存此id,并在此后的通信过程中仍使用此id(有一个额外的session机制,确保验证每次通信为同一设备即可,例如浏览器cookie);
[0104]
4.3.2如有冲突,id末位置为1并返回,分为如下两种情况;
bus,简称为usb)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器82可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器82可在数据处理装置的内部或外部。在特定实施例中,存储器82是非易失性(non
‑
volatile)存储器。在特定实施例中,存储器82包括只读存储器(read
‑
only memory,简称为rom)和随机存取存储器(random access memory,简称为ram)。在合适的情况下,该rom可以是掩模编程的rom、可编程rom(programmable read
‑
only memory,简称为prom)、可擦除prom(erasable programmable read
‑
only memory,简称为eprom)、电可擦除prom(electrically erasable programmable read
‑
only memory,简称为eeprom)、电可改写rom(electrically alterable read
‑
only memory,简称为earom)或闪存(flash)或者两个或更多个以上这些的组合。在合适的情况下,该ram可以是静态随机存取存储器(static random
‑
access memory,简称为sram)或动态随机存取存储器(dynamic random access memory,简称为dram),其中,dram可以是快速页模式动态随机存取存储器(fast page mode dynamic random access memory,简称为fpmdram)、扩展数据输出动态随机存取存储器(extended date out dynamic random access memory,简称为edodram)、同步动态随机存取内存(synchronous dynamic random
‑
access memory,简称sdram)等。
[0124]
存储器82可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器81所执行的可能的计算机程序指令。
[0125]
处理器81通过读取并执行存储器82中存储的计算机程序指令,以实现上述实施例中的任意一种设备id的动态生成方法。
[0126]
在其中一些实施例中,计算机设备还可包括通信接口83和总线80。其中,如图1所示,处理器81、存储器82、通信接口83通过总线80连接并完成相互间的通信。
[0127]
通信接口83用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。通信端口83还可以实现与其他部件例如:外接设备、图像/数据采集设备、数据库、外部存储以及图像/数据处理工作站等之间进行数据通信。
[0128]
总线80包括硬件、软件或两者,将计算机设备的部件彼此耦接在一起。总线80包括但不限于以下至少之一:数据总线(data bus)、地址总线(address bus)、控制总线(control bus)、扩展总线(expansion bus)、局部总线(local bus)。举例来说而非限制,总线80可包括图形加速接口(accelerated graphics port,简称为agp)或其他图形总线、增强工业标准架构(extended industry standard architecture,简称为eisa)总线、前端总线(front side bus,简称为fsb)、超传输(hyper transport,简称为ht)互连、工业标准架构(industry standard architecture,简称为isa)总线、无线带宽(infiniband)互连、低引脚数(low pin count,简称为lpc)总线、存储器总线、微信道架构(micro channel architecture,简称为mca)总线、外围组件互连(peripheral component interconnect,简称为pci)总线、pci
‑
express(pci
‑
x)总线、串行高级技术附件(serial advanced technology attachment,简称为sata)总线、视频电子标准协会局部(video electronics standards association local bus,简称为vlb)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线80可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。
[0129]
该计算机设备可以基于设备id的动态生成设备id、进行动态生成id,从而实现结
合图1
‑
图3描述的方法。
[0130]
另外,结合上述实施例中设备id的动态生成方法,本申请实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种设备id的动态生成方法。
[0131]
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0132]
综上所述,基于本发明的有益效果在于
[0133]
1.动态生成id,降低对设备的性能压力高熵值特征通常需要较多的计算,本机制仅在id冲突时才进行对更多特征的计算;
[0134]
2.不回传高熵值特征,保护隐私,易符合数据安全规范;
[0135]
3.同一设备的id,丢失后再次计算可高度复原,id和设备的关联度较高;
[0136]
4.id可在服务端直接进行相似度的计算和比较附图说明。
[0137]
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。