CN113364731B - 一种针对移动应用地理位置访问行为的细粒度分析方法 - Google Patents
一种针对移动应用地理位置访问行为的细粒度分析方法 Download PDFInfo
- Publication number
- CN113364731B CN113364731B CN202110392292.8A CN202110392292A CN113364731B CN 113364731 B CN113364731 B CN 113364731B CN 202110392292 A CN202110392292 A CN 202110392292A CN 113364731 B CN113364731 B CN 113364731B
- Authority
- CN
- China
- Prior art keywords
- lbf
- text
- location
- application
- classification
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 34
- 238000012549 training Methods 0.000 claims abstract description 30
- 238000013145 classification model Methods 0.000 claims abstract description 17
- 238000005516 engineering process Methods 0.000 claims abstract description 17
- 230000006399 behavior Effects 0.000 claims abstract description 14
- 238000000034 method Methods 0.000 claims description 75
- 230000000694 effects Effects 0.000 claims description 56
- 230000003068 static effect Effects 0.000 claims description 29
- 238000004422 calculation algorithm Methods 0.000 claims description 17
- 238000010801 machine learning Methods 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 15
- 238000012706 support-vector machine Methods 0.000 claims description 10
- 238000007477 logistic regression Methods 0.000 claims description 7
- 238000007781 pre-processing Methods 0.000 claims description 7
- 230000010354 integration Effects 0.000 claims description 6
- 238000013136 deep learning model Methods 0.000 claims description 5
- 230000001419 dependent effect Effects 0.000 claims description 3
- 238000001914 filtration Methods 0.000 claims description 3
- 230000004807 localization Effects 0.000 claims description 3
- 238000010845 search algorithm Methods 0.000 claims description 3
- 230000011218 segmentation Effects 0.000 claims description 3
- 238000007636 ensemble learning method Methods 0.000 claims 1
- 230000002452 interceptive effect Effects 0.000 claims 1
- 238000000926 separation method Methods 0.000 claims 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 8
- 238000012360 testing method Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000011160 research Methods 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000007613 environmental effect Effects 0.000 description 3
- 238000002372 labelling Methods 0.000 description 3
- 239000008358 core component Substances 0.000 description 2
- 238000003066 decision tree Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 239000000306 component Substances 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/20—Network architectures or network communication protocols for network security for managing network security; network security policies in general
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0407—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the identity of one or more communicating identities is hidden
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/52—Network services specially adapted for the location of the user terminal
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种针对移动应用地理位置访问行为的细粒度分析方法,可以自动从应用中hook位置请求并确定其细粒度的精度要求,无需应用开发者的支持,以便我们在进行个性化位置隐私保护时平衡用户可用性与安全性。其关键点是识别应用中调用了位置的下游功能,即基于位置的功能,简写为LBF。首先找到与位置请求相关联的L‑UI,然后抓取其呈现的LBF文本。接下来,定义了LBF的类型,并对样本进行了打标。最后改进现有的NLP技术,通过分析文本的语义对相应的服务类型进行分类。为了保证基于文本的LBF分类模型的精确度,构建了第一个专用的大型训练数据集,包含3000多个可手动标记的LBF样本,其平均细粒度分类准确率超过了90%。
Description
技术领域
本发明涉及一种针对移动应用地理位置访问行为的细粒度分析方法,属于网络安全技术领域。
背景技术
近年来,以智能手机为代表的智能移动设备得到了迅猛发展,凭借它们的便捷性,以及无所不在的网络,已经成为人们生活甚至是身体的一部分。在国内,据国际数据公司(IDC)最新发布的手机季度跟踪报告显示,2018年仅第三季度中国的智能手机零售量就达到约1.03亿部。另据工信部的数据显示,2018年1-7月全国移动互联网用户总数保持在13.7亿户,预计2018年***互联网市场规模有望突破8万亿元。世界范围内,据全球智库GSMA估算,到2025年全球移动互联网用户将达37亿,占全球网民的70%。
移动设备与传统PC相比存在的一个重要区别是移动设备(例如智能手机)通常装备有GPS等定位模块,可以实时获得设备精准的地理位置。同时,由于这些设备是由用户随身携带的,也就意味着这些设备上的应用软件一旦获得访问定位模块的权限,就可以实时获得用户的地理位置。这从根本上提高了移动应用给用户提供更为个性化服务的能力。事实上,LuK的文章对GooglePlay市场上的40456个免费应用进行了静态分析,结果显示超26.15%的应用都会访问用户的地理位置。
不同于一般的数据,无论是对于用户还是对于服务提供者而言,对于地理位置的安全性都是异常敏感的。对于用户而言,地理位置是人的核心隐私之一,如果不加保护,一旦被攻击者或者是恶意服务提供者获得,将会对用户的隐私造成极大的破坏,甚至威胁用户的人生与财产安全。事实上,近年来,已经出现了大量与手机用户地理位置泄露相关的事件。
另一方面,对于很多服务提供者而言,其核心利益是与用户提供的地理位置的准确性休戚相关的,一旦恶意用户提供虚假的位置(篡改应用获得的定位结果),很可能给其利益带来不可估量的损失,而恶意用户可能得到非法的收益。例如,很多打车软件会给司机接单完成后给予一定比例的现金补贴,为此,有些恶意的司机用户便使用某些所谓的扫街软件,通过修改GPS定位的结果,来模拟行车,从而骗取补贴。又例如,微信等社交软件,恶意用户可能通过修改自己的地理位置冒充附近的人来实施诈骗等行为。导航应用可以伪造位置上报虚假事故,干扰其他正常用户的导航服务。
事实上,对于上述的位置隐私和安全,相关研究已经存在十多年,两个方面都取得了大量成果。然而到目前为止,我们鲜有看到大规模实际应用的方案,一方面用户精确的地理位置信息仍然源源不断在被各类移动应用显式或者隐式的获取,滥用之势没有得到任何改观;另一方面,地理位置篡改软件、框架在网络上层出不穷,大部分可以有效的欺骗Top级别的移动应用。究其原因,主要是这两方面的保护方案都面临着严重的安全性与可用性的矛盾。对于前者,现有高安全方案要么过于复杂,会带来较大的计算及通信开销,从而影响原有服务质量;要么需要服务提供者配合,假设其是半诚实的,而在该场景中服务提供者恰恰就是不可信的。对于后者,现有的方案通常依赖于额外的环境信息比对来判断位置的准确性,然而这需要提前搜集大规模的环境指纹信息,建立并维护庞大的数据库,这需要投入巨大的人力和财力才能办到,不是一般应用开发者可以承担。而且环境信息也可以伪造,同时匹配的过程反过来会泄露用户的地理位置信息,造成新的隐私泄露。
综上所述,虽然关于移动应用中地理位置隐私保护和准确性校验的研究由来已久,但目前为止方案的实用性仍然面临着巨大的挑战。因此,如何设计真正安全并且能够大规模应用的面向移动应用的地理位置安全与隐私保护方案在很长一段时间能仍将是一个研究热点,并且对个人、企业乃至整个国家的信息安全都有着十分重大的意义。
相关知识:面向智能移动应用的地理位置隐私保护研究已经由来已久,其中最为重要的一类工作是为各种基于位置服务设计隐私保护方案。基于位置的服务需要访问用户的地理位置从而为用户提供个性化的服务,例如导航、周边生活搜索等。然而,很多情况下用户可能并不信任服务提供者,不希望向其泄露自己的位置,因此需要设计针对这些服务的隐私保护方案,使得用户可以在不暴露自己地理位置的同时还能享用到这些服务。目前,国内外的相关技术大致可以分为如下几类。
(1)密码学技术:对用户的地理位置信息进行加密,然后通过可加密计算、保密信息检索、不经意传输等密码学工具及其衍生协议来保证服务原有计算仍然能够正确完成的同时,防止包括服务提供者在内的任何未授权方获得关于用户地理位置的任何信息。举例来说,可计算加密是一类加密算法,它们支持将明文的计算转移到密文空间。因此,用户只需上传加密后的地理位置数据,服务器上的所有运算都是基于密文的,并且只有用户端可以解密得到计算结果,从而保护数据安全,典型的代表包括ElGamal、Paillier在内的各种同态加密算法。保密信息检索是一类密码学协议,它们试图让用户从服务器端数据库中获得某个信息,但又不向服务器暴露查询内容和查询结果,从而保护用户隐私。不经意传输协议在保密信息检索的基础上更进一步,在保护用户隐私的同时,不向用户泄露服务器上与其无关的数据,从而也保护了服务器上数据的安全性。
此类方案可以在一些密码学假设条件下保证用户地理位置数据的绝对安全性,即包括服务提供商在内的未授权者无法获得关于用户地理位置的任何信息。然而,它们的缺点也很明显。首先,这些密码协议将引入巨大的计算及通信开销,这将极大的限制***的规模,增加服务延迟,破坏服务的用户体验。其次,一旦数据被加密,数据的可用性就遭到了破坏,服务提供者原有的***通常不再能工作,需要利用相关密码学技术重新设计开发,这通常是服务提供者不能接受的。另外,由于这些隐私保护方案通常需要假设服务提供者是半诚实(Semi-Honest)的,而在隐私保护场景里,攻击者就是服务提供者,很多时候是完全不可信的,所以这也很大程度上阻碍了相关技术方案的实际应用。
(2)基于k-匿名及其衍化模型的位置模糊化技术:k-匿名是在隐私保护领域最为有名的一种隐私保护度量指标。它最早是在数据库领域被用来衡量记录匿名化效果的,具体定义为:对于准标识符属性(通常指生日、家庭住址、邮政编码等可以被攻击者与背景知识相结合以唯一确定个人身份的属性),任意一条记录与其它至少k-1条记录无法区分。后续针对k-匿名的一些弱点,又衍化出了很多加强的隐私保护度量指标,例如l-多样性,t-邻近性等。
这些k-匿名及其衍化模型也被应用到了基于位置服务隐私保护中,其实现技术主要分为两大类:第一类是基于用户身份匿名性的,基本思想是将用户的真实位置替换成一个包含有至少其他k-1个无法区分用户的区域来进行查询,使得服务提供商无法准确识别用户的身份。另一类是基于位置不确定性的,主要通过提供虚假地址(dummylocations),或者对地址模糊化(locationcloaking)来将用户的真实位置隐藏在k个服务提供者无法区分的位置中,使得攻击者无法确定用户的准确位置,从而达到隐私保护的目的。其中虚假地址法在每次用户需要请求服务时,精心挑选k-1个虚假地址连同真实地址一起发给服务提供者,然后在k个返回结果中过滤出真实地址对应的准确结果。这里的关键是要确保服务提供者无法区分这k个位置。地址模糊化技术在用户每次请求服务时,创建一个包含k个属性相同的位置(包含真实位置)的区域,然后以该区域而不是一个点来请求服务,从而保护用户的真实位置不被泄露。另外,为了进一步提高安全性,除了单个位置点的k-匿名化,一些学者也提出了针对连续位置序列的k-匿名化技术,即除了保证用户单次请求中的地理位置与k-1个位置(或者用户)不可区分,其连续n次请求中的位置序列要与另外k-1个虚拟或者真实用户不可区分。与密码学技术相比,k-匿名化的效率要高很多,因为不涉及密码学操作,其带来的计算及通信开销不是很大。然而,这种方法的缺点是其安全性存在巨大问题。k-匿名通常需要对攻击者掌握的背景知识做出假设,但是攻击者掌握哪些信息并不好确定,一旦假设失效,k-匿名也就无法满足了。例如,虚假位置技术需要从攻击者的角度保证k个位置不可区分,但如果攻击者掌握了额外的辅助信息可以过滤掉一部分虚假位置,k-匿名就不再满足。为此,有很多学者对攻击者的背景知识做了进一步加强,例如考虑地理位置背后的语义信息等,但这只起到了缓解作用,而且也会使得方案变得更为复杂从而破坏实用性。另外,对于伪造地址法,需要发送k-1个傀儡请求,这也需要服务提供者配合,这在现实中也是不现实的,因为服务提供者就是要获得用户精准的地理位置,使攻击者,没有动机来配合修改自己的应用。
(3)差分隐私保护技术:根据上面介绍,密码学技术安全性高但可用性差,基于k-匿名的各种位置模糊技术可用性好但是安全性存在问题。针对这种情况,近几年又出现了一种新的隐私保护技术,即差分隐私保护技术,可以在一定程度上兼顾前面两种技术的优点,而很大程度上避免两者的缺点。差分隐私的概念最早出现在统计数据库领域,其目的是在发布数据库统计结果时保护个人的数据不被泄露。对于一个数据库查询算法来说,我们说其满足差分隐私模型,当且仅当对于任意两个相邻数据库D,D′(这里D,D′相邻指它们仅在一个用户的数据上存在不同),在D上返回结果为v的概率与在D′上返回结果为v的概率之比限制在eε之内。其中(ε≥0)的值用来定量衡量隐私泄露的大小:ε越趋近于0说明改变任何一用户的数据对结果的影响越小,也就意味着攻击者能从结果反推得到的单个用户的信息越少,因此隐私泄露越少;反之,ε越大,隐私泄漏越大。一种典型的实现差分隐私模型的手段是在查询结果中添加有控制的随机噪声(例如Laplace噪声)。
与k-匿名化技术相比,差分隐私并不需要假设攻击者的背景知识,并且可以定量证明或者衡量隐私保护的程度,因此安全性可以得到有效保障,同时与密码学技术相比,实现差分隐私的方法通常是基于数据扰动的,不需要复杂的加解密操作,因此效率更高,可用性更强。由于以上优点,最近有学者将差分隐私技术拓展到了基于位置服务中,用于保护移动用户的位置隐私。由于在基于位置服务中只有单个用户的数据,没有相邻数据库的概念,差分隐私模型需要重新定义。其基本思想是为用户的地理位置设计一种客户端的随机扰动算法,使得对于在用户真实位置半径为r的范围内的任意两个点x,x′,经过扰动后分别得到同一个发布点s的概率之比限制在erε之内。该模型背后的含义是,试图通过特殊的随机扰动算法使得攻击者在看到扰动过的发布点后,无法有效的将用户的真实位置和半径为r的圆内的其它点区分开来,也就是说用户的地理位置隐藏在了以其为圆心,半径为r的圆形区域内。隐私泄露的大小仍然由ε的值来定量衡量。文献中给出了实现这种差分隐私模型的随机扰动算法,其主要通过在原始位置上添加服从二维Laplace分布的噪声来实现。这种基于差分隐私保护技术的地理位置保护方案继承了传统差分隐私模型的优点,不需要对攻击者的背景知识做任何假设,可以提供可证明的安全性。在可用性上,因为只需要在真实位置上加一个特殊分布的噪声,引入的计算及通信开销比k-匿名化方案更少,保护方案几乎可以独立于原***,可用性强,因此具有非常好的应用前景。
然而,此类基于差分隐私的位置隐私保护模型也存在很多问题。例如,一些学者认为该模型不考虑攻击者的先验知识(背景知识),认为半径为r的邻居区域内的所有点的先验概率是等价的。但事实上,由于受到地理环境、路网、用户移动模式的限制以及攻击者掌握的背景知识,这些点的先验分布并不是均衡的,这就导致该隐私保护模型在绝大部分显示环境中并不满足。例如,如果此圆周内只有一栋建筑物,那攻击者很容易推断出用户的真实位置。很多学者针对这个问题对该模型进行了扩展,将地理位置限制及其它攻击者可能的先验知识考虑了进去,改进了原有的临近集的构造方法。但是,这再一次需要依赖攻击者的背景知识,也就面临着和k-匿名化同样的安全问题。
除此之外该模型面临的一个更严重的问题是,当前的模型都是针对保护单次位置请求设计的。但实际用户通常会频繁使用基于位置服务,也就意味着需要保护的不仅仅是单次请求,而是连续的位置请求。如果简单的重复使用现有方案,隐私消耗将会线性累积,因此随着使用次数的增加,为了避免用户隐私预算的耗尽,需要大幅降低每一轮请求中的隐私消耗ε,也就意味着需要给用户的真实位置添加更大的噪声,这会极大的破坏用户获得服务的质量。虽然存在很对针对用户轨迹数据的差分隐私匿名方案,但这些工作针对的都是多用户的轨迹数据集发布场景,而且是离线算法,并不能运用到对单用户连续位置请求的实时保护中去。
发明内容
发明目的:针对现有技术中存在的问题与不足,本发明提供一种针对移动应用地理位置访问行为的细粒度分析方法,解决当前面向移动应用的用户地理位置安全保护研究面临的最大问题——安全性与实用性的矛盾。
基于以上分析提出了一个***级的隐私保护工具,其架构如图1所示。利用现有的hook框架,例如Frida和Xposed,以将应用程序的所有位置请求hook到Android OS,hook的调用信息将被传入到第一核心组件,该组件负责确定应用程序确实需求的精确度。之后,我们的第二个核心组件将根据第一个组件确定的精度要求,为从OS返回最精确的定位结果添加噪音,最后再将扰动后的位置返回给应用程序,达成自动隐私保护的目的。
如前所述,要想很好的解决移动应用存在的泄露用户地理位置隐私问题,首先需要对这些移动应用访问用户地理位置的行为进行深入的分析,从而能够为不同的行为部署差异化的保护手段。
技术方案:一种针对移动应用地理位置访问行为的细粒度分析方法,可以自动从应用中hook位置请求并确定其细粒度的精度要求,无需应用开发者的支持,以便我们在进行个性化位置隐私保护时平衡用户可用性与安全性。其关键点是识别应用中调用了位置的下游功能(其被称为基于位置的功能,简写为LBF),包括如下五个步骤:
步骤一,定位L-UIs;
步骤二,提取LBF文本;
步骤三,定义LBF类型;
步骤四,标记LBF样本标签;
步骤五,训练基于集成学习的LBF文本分类模型。
细粒度分析方法使用的应用程序中,一个合法的基于位置的功能(LBF)提供一个与用户交互的UI,并且人们可以利用UI上的文本来精确地识别服务类型。
所述定位L-UIs的实现包括静态L-UIs定位和动态L-UI搜索;分别制定静态L-UIs的定位方法和动态L-UI搜索方法;用于获得训练样本以及在预测阶段用于进行应用程序预处理。
(1)静态L-UIs定位:
在Android中,UI对应于activity类,静态方法旨在搜索那些使用位置数据的活动类,使用位置数据意味着访问被定位结果污染的某个变量,包括如下实现步骤:
步骤1:通过进行污点分析找到访问位置相关变量的所有方法;在分析中,源点是那些请求位置的API,定义一个关键字列表,通过匹配模糊字符串的方法来识别请求位置的API。
步骤2:为了将找出的受污染的方法与Activity类关联起来,分析APK中的清单文件,以查找应用程序声明的所有Activity;然后,收集在Activity类中声明的每个Lifecycle Callback Method,并将这个Method作为入口点。
步骤3:使用深度搜索算法从Android的Activity类的入口点开始,遍历应用程序的方法调用图,直到找到之前污染的任何方法,并同时记录相关的Activity类;这样即检测到所有直接或间接调用任何受污染的方法的Activity类。
(2)动态L-UI搜索:
动态L-UI搜索方法用于确定位置请求被hook时正在运行时的LBF相关的UI类,通过钩子函数同时记录前台Activity和应用程序正在运行的服务。
①应用程序在前台运行,没有运行后台服务;在这种情况下,前台Activity显然就是要找的L-UI。
②应用程序在后台运行,即捕获的运行后台服务调用位置请求;要处理此情况,需要在预处理步骤中确定的不仅是L-UI的类型,还要确定与位置相关的后台服务类型。具体来说,首先使用类似静态定位L-UI的方法来查找所有与位置相关的后台服务,然后利用静态分析来进一步确定这些位置相关后台服务的Activity类。
③应用程序在前台运行,同时运行后台服务;此情况需要确定位置请求是否由Activity或某些服务调用的。因此,需要获取hook的API的调用栈,并将调用栈与应用程序的静态提取的调用图进行比较,以做出是否需要记录Activity类的决定。
提取LBF文本的实现内容如下:
①提取布局文件上下文中的文本;Android应用程序中对于包括窗口小部件的静态文本,从Activity类中找到相应的布局资源并从相应的XML文件中提取文本信息。
②提取Activity类中的文本;除了在布局文件中的静态定义外,一些Activity类还有动态调用窗口小部件的方法设置要使用字符串参数显示的文本。所以还在Activity类中搜索此类方法并收集可以静态确定的参数字符串。此外,由于开发人员通常将语义信息引入函数名称使代码更具有可读性,Activity类中的自定义函数的名称也可以被记录下来。
③提取资源文件的名称。
定义LBF类型的实现步骤如下:
通过两个方向来定义LBF分类。一方面,根据中国国家标准《信息安全技术移动互联网应用(App)收集个人信息基本规范》定义LBF分类。另一方面,审查L-UIs样本,以定义服务的分类。
确定LBF对应位置精度。在定义了LBF类型后,确定对于每个LBF类型其可以接受的位置精度要求的界限。每个定义的LBF类都会要求分为8个粒度选项(范围为5米到100千米(5米,2千米,5千米,10千米,30千米,50千米,100千米),并且还包括不需要的选项),以便从8个选项中选择可接受提供的位置粒度。
标记LBF样本标签的实现内容如下:
一旦确定服务类别,需要人工标记文本样本。对于下载的多个应用程序,标记其中的一半作为训练数据集。
训练基于集成学习的LBF文本分类模型的具体实现内容如下:
构建训练数据集后,下一个问题是训练可以准确分类LBFs的NLP模型。采用集成学习方法,该方法使用了不同模型,并结合了他们的结果,以使预测更准确。选择的底层基础分类器可分为两类:传统机器学习分类模型和深度学习模型,最后用投票算法将结果集成。
类型1传统机器学习模型:
分类器的第一种类型是传统机器学习模型,例如支持向量机(SVM)和逻辑回归等。利用机器学习模型进行特征选择,选择的一组关键字。首先使用NLTK中的文本分段工具将文本样本划分为有意义的短语。然后,将具有最高TF-IDF值的这些短语或每个LBF类中的信息增益识别,并对它们执行进一步的相关性过滤以确定最终的关键词组。为每个训练样本形成了一个特征向量,其中每个元素的值是关键字的频率。将文本转换成向量数据后,训练一个常见的模型,如朴素贝叶斯,KNN和决策树等。在模型选择阶段,将四种分类器进行实例化,其中支持向量机和逻辑回归具有最佳性能,固我们选择他们作为传统机器学习的基础模型。
类型2深度模型:
基于Word Embedding选择了四个深度模型:(1)Fast-Text,(2)TextCNN,(3)TextRNN,(4)TextRCNN。
集成结果的投票算法:使用权重调整的投票算法作为分类集成方法,对于含有k个基础分类器的模型,应该首先为每个基础分类器Ci学习一个投票权重wi。然后,输入文本样本x的最终预测结果Censemble是:
这里,基本分类器的权重迭代地从一组测试实例中学到。它们的初始值全部设置为1。除了分类器权重之外,此方法还定义了实例权重。在每次迭代中,使用当前分类器权重基于上述集成方法来预测测试实例。被错误分类的实例将获得更高的权重。然后,更新的实例权重反过来用于更新分类器的权重。直观地,在更高权重的情况下表现更好的那些分类器也将增加其权重,重复迭代,直到分类器权重收敛。
附图说明
图1是移动端地理位置隐私保护工具架构图;
图2是精度分析工具工作流程图;
图3是基于集成学习的LBF分类方法的架构图;
图4是LBF类型百分比柱状图。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
一种针对移动应用地理位置访问行为的细粒度分析方法,包括如下五个步骤:
步骤一,定位L-UIs;
步骤二,提取LBF文本;
步骤三,定义LBF类型;
步骤四,标记LBF样本标签;
步骤五,训练基于集成学习的LBF文本分类模型。
使用上述五个步骤的思路:
想到要确定位置请求所需的精度水平,最关键的问题是位置信息在确定下游服务中被用于做什么?因为位置精度取决于服务类型,例如,导航服务需要实时路线计划最准确的位置,而天气服务只需要知道您的城市。其次,确定常见服务类型的最小位置精度水平。
因此,最初的问题现在变成了如何识别位置请求背后的服务类型(LBF)。直接解决方案是分析LBF代码的语义。但是,这项任务非常具有挑战性,因为LBF代码所在之处是不明显的,形成LBF的代码可能遍布函数、类甚至机器(即客户端和服务器),并且不必与位置请求的API相邻。本发明的解决方案是基于一个基本的假设:一个合法的基于位置的功能(LBF)必须被用户注意到,也就是说,它应该提供一个与用户交互的UI,并且人们可以利用UI上的文本来精确地识别服务类型。例如,导航服务必须包含UI以在地图上显示导航信息。即使对于一个有背景的LBF(例如一个孩子跟踪服务),也应该包括一个设置UI,以使用户能够控制服务。用户完全无感知的LBF是非常可疑的,应该被阻止。综上所述,我们认为搜索LBF相关的UI类是更容易的,分析UI上的文本语义也比分析代码语义更加容易,因为文本将显示给用户,是清晰并且非混淆的。所以我们首先找到与位置请求相关联的UI(L-UI),然后抓取其呈现的文本。最后改进现有的NLP技术,通过分析文本的语义对相应的服务类型进行分类。
所以,我们提出的细粒度分析方法整体流程图如图2所示,主要分为训练和预测两个阶段:
1)训练阶段:由于LBF服务分类没有标记好的文本数据集,首先下载122个app,建立一个包含3000+条LBF文本的数据集。这些LBF文本样本是通过静态分析应用程序的代码,从L-UI中提取出来的,并经过人工打标映射到14类服务上。然后,训练了一个基于集成学习的深度学习和传统机器学习融合的文本分类模型,并设计了投票策略来预测结果。
2)预测阶段:这一阶段的重点是在位置请求被hook时实现LBF类型的在线预测。首先需要获取相应的L-UI的文本并应用上述的文本分类模型进行训练。为了时效性,为每一个要保护的App都引入了额外的预处理步骤,在这个步骤中,使用与训练阶段相同的静态分析方法来查找所有的L-UI,并提取其中的LBF文本,然后使用训练好的文本分类模型离线识别LBF的服务类型,结果保存在本地数据库中。在运行时,本发明方法只需在动态确定与位置请求关联的L-UI后查询该数据库的服务类型预测结果,进而通过配对获取位置请求所需的精度水平。
接下来,依次介绍如何定位L-UIs、提取LBF的文本用于分类、定义LBF类型、打标LBF样本标签以及训练基于集成学习的LBF文本分类模型的过程。
步骤一:定位L-UIs的实现步骤为:
(1)静态L-UIs定位;
(2)动态L-UI搜索。
根据上文的分析,需要分别制定静态L-UIs的定位方法和动态L-UI搜索方法。用于获得训练样本以及在预测阶段用于进行应用程序预处理。
(1)静态L-UIs定位:
首先介绍静态L-UIs的定位方法。在Android中,UI对应于activity类。因此,静态方法旨在搜索那些使用位置数据的活动类。在这里,使用位置数据意味着访问被定位结果污染的某个变量。
步骤1:使用Flowdroid来进行污点分析,以找到访问位置相关变量的所有方法(即那些被Flowdroid污染的方法)。执行污点分析的一个关键问题是定义源点。在我们的分析中,源点是那些请求位置的API。然而,这样的API非常多样化,可能来自Android框架和第三方SDK。因此,定义了一个关键字列表,通过匹配模糊字符串的方法来识别请求位置的API,即源点。
步骤2:为了将找出的受Flowdroid污染的方法与Activity类关联起来,分析APK中的清单文件,以查找应用程序声明的所有Activity。然后,收集在Activity类中声明的每个Lifecycle Callback Method,并将这个Method作为入口点。
步骤3:使用深度搜索算法从Android的Activity类的入口点开始,遍历应用程序的方法调用图,直到找到之前污染的任何方法,并同时记录相关的Activity类。这样即检测到所有直接或间接调用任何受污染的方法的Activity类。
(2)动态L-UI搜索:
接下来,考虑动态L-UI搜索方法,该方法用于确定位置请求被hook时正在运行时的LBF相关的UI类。对于这个方法,需要钩子函数同时记录前台Activity和应用程序正在运行的服务。由于位置保护服务被假定在***级别运行,因此,不难跟踪应用程序的Activity和服务的生命周期。下面分三种情况讨论:
①应用程序在前台运行,没有运行后台服务。在这种情况下,前台Activity显然就是要找的L-UI,因为后台Activity无法触发新的位置请求。
②应用程序在后台运行,即捕获的运行后台服务(直接或间接)调用该位置请求。要处理此情况,需要在预处理步骤中确定的不仅是L-UI的类型,还要确定与位置相关的后台服务类型。具体来说,首先使用类似静态定位L-UI的方法来查找所有与位置相关的后台服务,然后利用静态分析来进一步确定这些位置相关后台服务的Activity类。
③应用程序在前台运行,同时运行后台服务。此情况需要确定位置请求是否由Activity或某些服务调用的。因此,需要获取hook的API的调用栈,并将调用栈与应用程序的静态提取的调用图进行比较,以做出是否需要记录Activity类的决定。
步骤二:提取LBF文本的实现内容如下:
除了在训练和预处理步骤中定位L-UI类外,还有一个关键问题是如何从这些UI类中提取文本用于训练和预测。根据对部分应用的分析,最终决定从L-UI中提取以下文本:
①布局文件上下文中的文本。布局文件决定了Android应用程序中的窗口小部件,其中包含文本,按钮,文本编辑框等。可视属性,包括窗口小部件的静态文本(例如,按钮名称和编辑文本)也在布局上下文中被定义。这些静态文本对于帮助理解服务类型显然很有用。因此,从Activity类中找到相应的布局资源并从相应的XML文件中提取服务提供者给出的文本信息。
②Activity类中的文本。除了在布局文件中的静态定义外,一些Activity类还有动态调用窗口小部件的方法(例如,TextView的setTexts方法)设置要使用字符串参数显示的文本。所以还在Activity类中搜索此类方法并收集可以静态确定的参数字符串。此外,由于开发人员通常将语义信息引入函数名称使代码更具有可读性,Activity类中的自定义函数的名称也可以被记录下来。
③资源文件的名称。资源是存储代码使用的静态内容的其他文件,例如bitmaps,布局定义,用户界面字符串,动画指令等。我们发现他们的文件名通常包含丰富的服务类型识别语义,可以被提取出来。
步骤三:定义LBF类型的实现步骤如下:
通过两个方向来定义LBF分类。一方面,根据中国国家标准《信息安全技术移动互联网应用(App)收集个人信息基本规范》定义LBF分类,如表1中的2-6行中显示。根据我们的手动回顾静态挖掘的L-UI,这些服务实际上是最常见的LBF。另一方面,审查L-UIs样本,以定义涵盖最常见的服务的分类,如表1的第7-13行中。
总共定义了14个LBF类,如表1所示。
表1 LBF类型的位置使用要求描述及其精确要求表
确定LBF对应位置精度。在定义了LBF类型后,确定对于每个LBF类型其可以接受的位置精度要求的界限。每个定义的LBF类都会要求分为8个粒度选项(范围为5米到100千米(5米,2千米,5千米,10千米,30千米,50千米,100千米),并且还包括不需要的选项),以便从8个选项中选择可接受提供的位置粒度。只需采用每个LBF的最热门选项作为其默认位置精度要求,如表1所示。为了更具用户友好性,真正在我们的工具中用户可根据位置隐私的个人需求修改此类默认值。
步骤四:标记LBF样本标签的实现内容如下:
一旦定义了LBF的分类,下一个挑战就是标记训练样本。尽管在应用商城中应用程序可以被清楚分类打上标签,但对于更精细的服务没有公认的分类,特别是从位置隐私的角度来看。一旦确定服务类别,需要准确地人工标记文本样本。对于下载的122个应用程序,静态分析工具为每个应用程序搜查了平均约50个LBF的文本样本,这意味着总共获得了大约6000个文本样本。标记其中的一半(超过3000个样本,包含超过500,000个单词)作为训练数据集。
步骤五:训练基于集成学习的LBF文本分类模型的具体实现内容如下:
构建训练数据集后,下一个问题是训练可以准确分类LBFs的NLP模型。对于此任务,最大的挑战是,此数据集虽然消耗大量的时间和人力来构建,但与NLP任务中的典型数据集相比,其数量与典型数据集相比仍然有很大差异。此外,我们的数据库中的文本样本主要是连接的短文本或短语,而不是与丰富语义的长句。由于这些事实,单个分类器的泛化性可能不是那么好,并且不同类型的性能可能会急剧变化。因此,采用集成学习方法,该方法使用了不同模型,并结合了他们的结果,以使预测更准确。图3说明了所提出的方案的架构。
在该方案中,选择的底层基础分类器可分为两类:传统机器学习分类模型和深度学习模型,最后用投票算法将结果集成。
类型1传统机器学习模型:
分类器的第一种类型是传统机器学习模型,例如支持向量机(SVM)和逻辑回归等。此类模型的最关键问题是特征选择。在该方案中,功能简单地对应于预先选择的一组关键字。这里,关键字可以是单个单词或短语。要获得它们,首先使用NLTK中的文本分段工具将文本样本划分为有意义的短语。然后,将具有最高TF-IDF值的这些短语或每个LBF类中的信息增益识别,并对它们执行进一步的相关性过滤以确定最终的关键词组。在此过程中也考虑了许多其他详细问题,例如同义词、去词性的效果。最终获得了362个关键词,为每个训练样本形成了尺寸为362的一个特征向量。每个元素的值是此示例中特定关键字的频率。将文本转换成向量数据后,训练一个常见的模型,如朴素贝叶斯,KNN和决策树等。在模型选择阶段,将四种分类器进行实例化,其中支持向量机和逻辑回归具有最佳性能,固我们选择他们作为传统机器学习的基础模型。
类型2深度模型:
除了上面介绍的传统文本分类方法外,还采用了几种深度学习模型,这些模型在本发明中已被证明非常有效。考虑到训练样本是串联的短文本而不是长句子,基于WordEmbedding选择了四个深度模型:(1)Fast-Text,(2)TextCNN,(3)TextRNN,(4)TextRCNN。请注意,我们还基于更复杂的语言嵌入模型(例如Bert)尝试了许多其他模型,但结果却不那么令人印象深刻。
集成结果的投票算法:
在所有基础模型被充分训练以实现满意的精度和召回目标之后,发现它们的性能有很大的变化。例如,SVM模型在识别地图服务方面更准确,而TextCNN更准确地对帐户服务进行分类。在这种情况下,集成学习的想法变得非常有前景。所以,复用了一个基于基础分类器聚合结果的算法。
使用权重调整的投票算法作为分类集成方法,对于含有k个基础分类器的模型,应该首先为每个基础分类器Ci学习一个投票权重wi。然后,输入文本样本x的最终预测结果Censemble是:
这里,基本分类器的权重迭代地从一组测试实例中学到。它们的初始值全部设置为1。除了分类器权重之外,此方法还定义了实例权重。在每次迭代中,使用当前分类器权重基于上述集成方法来预测测试实例。被错误分类的实例将获得更高的权重。然后,更新的实例权重反过来用于更新分类器的权重。直观地,在更高权重的情况下表现更好的那些分类器也将增加其权重,重复迭代,直到分类器权重收敛。
实验结果
通过实验来测试本发明方法的实现效果。
在一个自建的真实世界数据集上评估本发明提出的针对移动应用地理位置访问行为的细粒度分析方法。
从Google Play下载了18个最常见类别中的每一个大约5-8个应用程序的122个应用程序。对于每个应用程序,使用本发明中的静态代码分析方法找到所有的L-UI,并进一步提取文本。特别是,单个L-UI的所有文本都在我们的数据集中形成了一个样本。每一个应用平均收集约50个样本(L-UIs),而数据集中完整包含6000多个文本样本,可以映射到不同类型的LBF。选择通过审查其源代码和UI文本来手动标记大约一半的样本(总共3134个样本)。然后将该数据集作为ground truth涵盖了表1中列出的14个LBF类别中的每一个约150-260个样本。这个数据集被充当为基础事实(ground truth),其中共计14个LBF类别(见表1)每个约150-260样本。
然后,按照以下步骤训练可以自动分析服务位置粒度的模型。首先,将标记的数据集分成训练和测试子集的比例为7:3。其次,使用之前介绍的方法基于训练子集训练了NLP模型。接下来,验证了在测试子集上的模型的性能。重复了这些步骤20次,平均的精确率,召回率和F1分数如表2所示。实际结果表明,我们的模型可实现90.18%的LBF分类和93.01%召回的精度。
表2基于集成学习的文本分类模型统计结果表
最后,还应用了我们的模型来对剩余的未标记数据集进行分类。为了其评估准确性,随机选择了100个样本并手动检查结果。结果准确率类似于测试子集中的统计数据。整个样本库中6000个样本分到每个LBF类的总份数见图4。可以发现广告服务和地图导航服务是使用位置信息占比最大的两个类型。其中有些意外的是,LBF类被认为不必要地使用地理位置达到约27%。
Claims (5)
1.一种针对移动应用地理位置访问行为的细粒度分析方法,其特征在于,一个合法的基于位置的功能LBF提供一个与用户交互的UI,并且利用UI上的文本来识别服务类型;具体包括如下五个步骤:
步骤一,定位L-UIs;所述定位L-UIs的实现包括静态L-UIs定位和动态L-UI搜索;分别制定静态L-UIs的定位方法和动态L-UI搜索方法;用于获得训练样本以及在预测阶段用于进行应用程序预处理;
步骤二,提取LBF文本;所述提取LBF文本包括:①提取布局文件上下文中的文本;②提取Activity类中的文本;③提取资源文件的名称;
步骤三,定义LBF类型;根据规范以及服务来定义LBF类型;
步骤四,标记LBF样本标签;对于下载的多个应用程序,标记其中的一半作为训练数据集;
步骤五,训练基于集成学习方法的LBF文本分类模型;选择机器学习分类模型和深度学习模型作为底层基础分类器,用投票算法将分类器结果集成;使用权重调整的投票算法作为分类集成方法,对于含有k个底层基础分类器的模型,应该首先为每个基础分类器Ci学习一个投票权重wi;然后,输入文本样本x的最终预测结果Censemble是:
(1)静态L-UIs定位:
在Android中,UI对应于activity类,静态方法旨在搜索那些使用位置数据的活动类,使用位置数据意味着访问被定位结果污染的某个变量,包括如下实现步骤:
步骤1:通过进行污点分析找到访问位置相关变量的所有方法;在分析中,源点是请求位置的API,定义一个关键字列表,通过匹配模糊字符串的方法来识别请求位置的API;
步骤2:为了将找出的受污染的方法与Activity类关联起来,分析APK中的清单文件,以查找应用程序声明的所有Activity;然后,收集在Activity类中声明的每个LifecycleCallback Method,并将这个Method作为入口点;
步骤3:使用深度搜索算法从Android的Activity类的入口点开始,遍历应用程序的方法调用图,直到找到之前污染的任何方法,并同时记录相关的Activity类;这样即检测到所有直接或间接调用任何受污染的方法的Activity类;
(2)动态L-UI搜索:
动态L-UI搜索方法用于确定位置请求被hook时正在运行时的LBF相关的UI类,通过钩子函数同时记录前台Activity和应用程序正在运行的服务;
①应用程序在前台运行,没有运行后台服务;在这种情况下,前台Activity就是要找的L-UI;
②应用程序在后台运行,即捕获的运行后台服务调用位置请求;首先使用类似静态定位L-UI的方法来查找所有与位置相关的后台服务,然后利用静态分析来进一步确定这些位置相关后台服务的Activity类;
③应用程序在前台运行,同时运行后台服务;此情况获取hook的API的调用栈,并将调用栈与应用程序的静态提取的调用图进行比较,以做出是否需要记录Activity类的决定。
2.根据权利要求1所述的针对移动应用地理位置访问行为的细粒度分析方法,其特征在于,提取Activity类中的文本时,需将Activity类中的自定义函数的名称记录下来。
3.根据权利要求1所述的针对移动应用地理位置访问行为的细粒度分析方法,其特征在于,通过两个方向来定义LBF分类:一方面,根据中国国家标准《信息安全技术移动互联网应用(App)收集个人信息基本规范》定义LBF分类;另一方面,审查L-UIs样本,以定义服务的分类。
4.根据权利要求1所述的针对移动应用地理位置访问行为的细粒度分析方法,其特征在于,在定义了LBF类型后,确定对于每个LBF类型其可以接受的位置精度要求的界限;每个定义的LBF类都会要求分为8个粒度选项,范围为5米到100千米,8个粒度选项为5米,2千米,5千米,10千米,30千米,50千米,100千米,以及不需要的选项,从8个选项中选择可接受提供的位置精度。
5.根据权利要求1所述的针对移动应用地理位置访问行为的细粒度分析方法,其特征在于,训练基于集成学习的LBF文本分类模型中,选择机器学习分类模型和深度学习模型作为底层基础分类器,用投票算法将分类器结果集成;
类型1机器学习模型:
分类器的第一种类型是机器学习模型,利用机器学习模型进行特征选择,选择一组关键字;首先使用NLTK中的文本分段工具将文本样本划分为短语;然后,将具有最高TF-IDF值的这些短语或每个LBF类中的信息增益识别,并对它们执行相关性过滤以确定最终的关键词组;为每个训练样本形成了一个特征向量,其中每个元素的值是关键字的频率;将文本转换成向量数据后,训练一个模型,在模型选择阶段,选择支持向量机和逻辑回归作为机器学习的分类模型;
类型2深度模型:
基于Word Embedding选择了四个深度模型:(1)Fast-Text,(2)TextCNN,(3)TextRNN,(4)TextRCNN。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110392292.8A CN113364731B (zh) | 2021-04-13 | 2021-04-13 | 一种针对移动应用地理位置访问行为的细粒度分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110392292.8A CN113364731B (zh) | 2021-04-13 | 2021-04-13 | 一种针对移动应用地理位置访问行为的细粒度分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113364731A CN113364731A (zh) | 2021-09-07 |
CN113364731B true CN113364731B (zh) | 2023-01-06 |
Family
ID=77525168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110392292.8A Active CN113364731B (zh) | 2021-04-13 | 2021-04-13 | 一种针对移动应用地理位置访问行为的细粒度分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113364731B (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108446572B (zh) * | 2018-03-26 | 2021-09-24 | 南京邮电大学 | 一种基于服务粒度的隐私权限管理方法 |
CN112068844B (zh) * | 2020-09-09 | 2021-09-07 | 西安交通大学 | 面向隐私保护政策的app隐私数据一致性行为分析方法 |
CN112118531B (zh) * | 2020-09-12 | 2021-06-29 | 上海大学 | 一种基于位置的群智感知应用的隐私保护方法 |
-
2021
- 2021-04-13 CN CN202110392292.8A patent/CN113364731B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113364731A (zh) | 2021-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Jin et al. | Why are they collecting my data? inferring the purposes of network traffic in mobile apps | |
Ceschin et al. | The need for speed: An analysis of brazilian malware classifiers | |
CN107515915B (zh) | 基于用户行为数据的用户标识关联方法 | |
CN108229158B (zh) | 一种Android中存储的用户隐私信息的保护方法 | |
CN111539021A (zh) | 一种数据隐私类型识别方法、装置及设备 | |
Wang et al. | LSCDroid: Malware detection based on local sensitive API invocation sequences | |
CN108681671A (zh) | 一种Android移动攻击溯源方法 | |
Abbasi et al. | Particle swarm optimization: A wrapper-based feature selection method for ransomware detection and classification | |
Wang et al. | From fingerprint to footprint: Revealing physical world privacy leakage by cyberspace cookie logs | |
KR20190040343A (ko) | 검증 방법 및 디바이스 | |
Hu et al. | Champ: Characterizing undesired app behaviors from user comments based on market policies | |
CN114595689A (zh) | 数据处理方法、装置、存储介质和计算机设备 | |
CN116340989A (zh) | 一种数据脱敏方法、装置、电子设备及存储介质 | |
Chang et al. | A framework for estimating privacy risk scores of mobile apps | |
Brandão et al. | Prediction of mobile app privacy preferences with user profiles via federated learning | |
Castell-Uroz et al. | URL-based Web tracking detection using deep learning | |
Sun et al. | Android malware detection based on feature selection and weight measurement | |
Fu et al. | Flowintent: Detecting privacy leakage from user intention to network traffic mapping | |
CN113364731B (zh) | 一种针对移动应用地理位置访问行为的细粒度分析方法 | |
Zhang et al. | A local differential privacy trajectory protection method based on temporal and spatial restrictions for staying detection | |
Pan et al. | Detection of dummy trajectories using convolutional neural networks | |
Carragher et al. | Detection and discovery of misinformation sources using attributed webgraphs | |
Korkmaz et al. | Deep neural network based phishing classification on a high-risk url dataset | |
Di et al. | Influencing user’s behavior concerning android privacy policy: an overview | |
Auliya et al. | A review on smartphone usage data for user identification and user profiling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |