随着隐私泄露研究的深入开展,研究者们逐渐意识到传统上对隐私泄露的定义并不准确,也不完整,限制了隐私泄露检测技术的效率和效果。为了在隐私泄露检测和防护过程中获得更准确更全面的结果,相关研究从用户感知和敏感数据源两方面对隐私泄露的定义进行了修正。

1. 用户感知

基于敏感数据传播的隐私泄露检测技术认为:通过检测用户的隐私数据是否离开移动设备就可以判断应用是否存在隐私泄露。事实上,大量的手机应用都采用云计算,许多非恶意应用均利用云服务器为终端用户提供定制化服务。这些应用通常需要收集一些敏感数据(比如位置、联系人信息等),并将其发送到自身的服务器上。而一些恶意应用在窃取用户敏感数据后的表现也是如此。因此,仅仅依靠应用程序是否传输敏感数据还无法真正判别出应用软件是否存在隐私泄露。

意识到这一问题后,安全研究人员不断改进隐私泄露的判断标准,力图提高隐私泄露检测的精度。美国杜克大学的彼得·吉尔伯特(Peter Gilbert)等人提出的 Vision系统认为,如果应用程序将自身敏感数据传输行为加入最终用户许可协议(End-User License Agreements,EULA)并得到用户许可,或者应用程序在敏感数据传输行为发生时明确地告知用户,则认为该数据传输行为并非是隐私泄露。与之类似,佐治亚理工学院教授温克·李(Wenke Lee)所在团队提出的BLADE系统是通过识别应用程序是否得到了用户许可,来检测恶意软件。然而,手机应用一般不提供最终用户许可协议,即使在数据传输符合用户意图的时候(如转发短信),应用程序也很少向用户弹出显式的用户提示。加州大学伯克利分校教授宋晓东(Dawn Song)所在团队提出的Pegasus系统,以应用程序使用应用编程接口和权限的顺序为特点来检测软件的恶意行为。Pegasus也检测那些与图形界面操作不相符的恶意行为。然而,隐私泄露无法通过简单的权限或者应用编程接口的使用顺序来概括。因此应用程序的隐私泄露行为无法通过这种方法检测出来。此外,Pegasus需要分析人员根据应用程序的行为,手动指定用户程序行为验证的属性特征。在不了解应用程序代码的情况下,分析人员很难判定这些属性特征。上述方法通过归纳隐私泄露行为的外部表征,试图区分隐私泄露和应用软件的正常敏感数据传输行为,对隐私泄露的精确检测进行了有效尝试,但是这些方法仍然不能准确判断隐私是否泄露。当然,更好的隐私泄露判别方法应该根据敏感信息传输是否出于用户本身的意图。

符合用户意图:为了使用应用软件的一些功能,用户经常需要容忍自己的隐私数据经过特定渠道被发送到手机以外的地方。比如,当使用辅助管理短信的软件时,用户可以通过点击屏幕上的一些按钮将特定短信转发给其他用户;在使用一些基于用户地理位置的服务时,用户为了得到一些感兴趣的内容,往往允许软件将自己的位置信息发送给应用服务器。由于这类功能在使用敏感数据时,用户已经知情,所以不属于隐私泄露。

不符合用户意图:恶意应用软件在用户不知情且与用户使用的功能无关的情况下非法传输敏感数据,又称之为用户不知情的敏感数据传输,或者叫隐私泄露。在大部分情况下,恶意应用软件为了不让用户察觉到其恶意行为,通常都会秘密传输敏感数据。

综上所述,应用程序对敏感数据的传输是不是在泄露隐私,取决于它是否符合用户的意图。由于用户的意图非常繁杂,而且不同的应用实现方式不同,因此通过工具自动检测用户的意图基本不可能实现。相对而言,由人工分析人员提供敏感数据传输的上下文信息是一种可行的方法。通过分析数据传输对应的用户输入序列,分析人员可以更容易地判断数据传输是否出于用户意图。

AppIntent从敏感数据的传播路径中进一步分析用户数据输入和交互输入,再利用这两部分输入控制应用程序的执行。在控制应用程序执行的过程中,AppIntent将对应敏感信息传输的图形界面操作顺序呈现给软件分析人员。通过观察这些界面操作,软件分析人员可以快速做出判断。

即使是在热门的免费应用中,用户隐私泄露的现象依旧存在。这现象主要发生在一些社交网络服务或者含有内嵌式广告模块的应用中。泄露用户的短信和联系人信息的现象大多发生在社交网络服务中。为了躲避软件安全检查,恶意的数据泄露行为通常隐藏在正常的数据传输背后,因此恶意应用程序中可能既包含符合用户意图的数据传输,也包含不符合用户意图的数据传输。例如,一个将自己伪装成短信应用的程序,但实际上它偷偷地在未得到用户允许的情况下,将用户的联系人信息从手机上传送出去。

2. 敏感数据源

早在研究人员把敏感数据传播作为隐私泄露判断依据的同时,“何为敏感数据”这个问题就已经存在了。早期的检测方法把固定格式的应用编程接口函数作为定义敏感数据的标准,例如,在安卓隐私泄露检测方面,研究人员通常将安卓系统管控的隐私数据(国际移动电话设备识别码、地理位置、短信等)作为敏感数据源。随着用户越来越依赖移动终端管理其隐私数据,敏感数据的边界正在不断拓展,而传统的隐私泄露检测技术中对敏感数据源的定义已经无法覆盖新的敏感数据。

德国达姆施塔特工业大学的齐格弗里德·拉斯非(Siegfried Rasthofe)等人在2014年提出,现有方法在确定敏感数据源时采用的应用编程接口函数列表是不完整的,只有通过机器学习获取更详细的敏感数据访问应用编程接口,才能提高隐私泄露检测的覆盖率。

UIPicker系统和普渡大学的SUPOR系统认为,单纯检测系统定义的应用编程接口不足以覆盖所有的隐私泄露源,其问题主要来源于由应用程序管控的用户输入的隐私数据,其中包括但不限于用户的个人资料信息(如账户密码)、用户输入的地理位置信息以及银行卡等支付类信息。

如何保护这类隐私数据具有很大的挑战性。与系统管控的隐私数据不同,用户输入的隐私数据无法通过某些特定的应用编程接口函数标注,而是需要针对界面的语义信息以及上下文进行解析。在TaintDroid等系统中,将所有用户输入标记为隐私数据,这样做覆盖范围太广,并且将很多常规数据纳人了不必要的保护范畴,增加了系统分析的工作量,降低了性能。

为了保护用户输入的敏感数据免于各类情况的泄露,“自动标识”变得非常必要和紧迫。由于该类数据缺乏固定的结构,使得识别工作非常具有挑战性。为了解决这个问题,UIPicker和SUPOR系统发现,在应用程序中,很多与隐私输入相关的界面元素均在界面以及界面描述文件中,通过丰富的语义信息有较为明确的表述。这两个系统通过结合自然语言处理、机器学习以及程序分析等技术,利用界面语义信息可自动识别由用户输入的敏感信息源。Google Play上17425个应用的分析发现有6000多个应用使用了用户输入的隐私数据。在传统的使用系统管控隐私应用编程接口的应用中,受限于隐私数据的识别能力,无法对此类隐私进行有效保护。

在系统管控隐私数据、用户输入隐私数据之后,下一个敏感信息源是什么?事实上,能够推测用户隐私的敏感信息远不止上文提到的这些。在移动平台上,利用安卓应用的网络数据统计、应用程序声音开关等信息,利用旁道攻击的方式,获取了用户的身份、位置、身体状况等敏感信息。类似的工作揭露出用户的其他敏感信息也可以被恶意软件捕获。面对这一类型的攻击,目前尚没有成熟的方法可以进行有效检测利防御。

相关文章