20199328 2019-2020-2 《网络攻防实践》期末大作业

20199328 2019-2020-2 《网络攻防实践》期末大作业

介绍

背景

安卓和iOS等移动平台为用户提供的主要防御手段是权限系统,以保护用户的私人数据免受应用程序的窥探。然而,由于可用性和控制之间的紧张关系,这样的系统有几个限制,经常迫使用户过度共享敏感数据

我们用SMARPER解决了其中的一些限制,这是一种针对Android的高级权限机制。为了解决当前权限系统的僵化和用户隐私偏好的不匹配问题,SMARPER依靠上下文信息和机器学习方法在运行时预测权限决策。具体通过为用户提供额外的决策类型,可以实现更好的权衡,在这些类型中,敏感信息仅部分地透露给应用程序,以换取一些实用工具,即数据混淆。对于站内,为了查看天气预报,用户可以显示她的大致位置,而不是精确位置。SmarPer模糊处理技术中实现了四种数据类型:位置、联系人、存储和摄像头。

别人相关工作

Cyanogenmod以及XPrivacy和LBEPrivacyGuard等权限工具为用户提供了一个"always-ask"选项,以指示在运行时应该始终提示什么请求。这种方法可以更好地匹配用户的隐私偏好,但需要用户付出巨大的努力。

一个单独的应用程序每天可以发送数十到数百个敏感请求,即使用户没有与它进行交互。由于用户平均拥有将近95个应用程序,每个应用程序需要大约5个权限,很明显,运行时的决策会压垮用户,或导致对提示的习惯性。

以前的工作使用机器学习来预测用户的每个任务的静态配置,而不是运行时的权限决策。

SmartPer的设计与部分实现

权限决策的唯一数据集。我们从41个参与者中收集了8521个运行时权限决策及其上下文。

权限决策自动预测技术的潜力评估。我们使用了一个改进的线性回归模型,并证明它在两个精心选择的基准上实现了显著的性能改进。结果证明上下文信息是准确预测权限决策的关键。

机器学习框架。我们提供了一个框架,用于仔细培训和比较预测权限决策的不同上下文感知模型。

数据混淆的实现与评价。我们在SmarPer中开发了四种数据类型的模糊处理技术,并在我们的数据收集活动中对它们进行评估。

决策依据来源

在运行时收集41个参与者的权限决策。每个参与者使用SmarPer(完全手动模式)至少10天。与之前的研究不同,我们的研究依赖于在真实条件下收集的决策数据,也就是说,参与者每天自己使用SmarPer或者借用他们自己的应用程序。我们总共收集了8521个独特的许可决策,以及每个决策的32个原始上下文特征(例如,时间、地点、应用程序名称等)。利用这个唯一的数据集,我们的模型得到了0.22(0.03)4的平均绝对误差(MAE)和0.20(0.03)的平均错误分类率(ICR),即80%(3%)的平均正确分类率(CCR)。相对于静态政策基线,这代表了一个平均相对提高55%的MAE和50%的ICR,在静态政策基线中,参与者手动定义权限决策,即当前权限系统使用的模型。

上下文感知权限、运行时自动决策

Smarper采用了与平台无关的设计,其中应用程序的敏感请求在运行时被拦截,用户被提示做出决定,即允许、混淆、拒绝。通过观察用户的反应,SmarPer逐步学会代表用户预测和做出决策。需要指出的是,SmarPer的目标是模仿用户的决策,而不是做出保护隐私的决策,或者在效用和隐私之间找到平衡。

Smarper依靠机器学习来预测用户的每次任务决策。我们使用一个一维的隐私偏好函数,输出每个请求的每个用户的隐私程度(允许模糊拒绝),而不是使用一个多类分类器ap-proach,作为这个区域的先前工作,我们将问题建模为一个线性回归问题。

模型

使用贝叶斯线性回归模型(BLR)来为每个用户的决策数据拟合一个线性回归

这是一个例子。假设存在这种罕见疾病,每10,000人中就有1人随机感染这种疾病。换句话说,您有0.01%的机会患上这种疾病。 幸运的是,有一项测试可以99%的正确识别出患有这种疾病的人,如果没有这种疾病,它也可以正确地说出您99%没有患这种疾病。您参加了测试,结果为阳性。你应该多担心?好吧,让我们从逻辑上考虑一下。我们知道,每10,000人中就有1人患此病。假设有10,000人。他们中的9,999人没有疾病,但其中1%的人会得到阳性结果。因此,即使只有1人实际患有这种疾病,也有约101人获得了阳性结果。这意味着即使结果为阳性,您也只有101分的几率实际患上该病(或大约1%的几率)。

它对于智能手机来说足够轻便,并且非常适合于有限数量的训练数据。此外,通过直接在智能手机中培训每个用户的模型,它保护了用户的隐私。

设计目标和体系结构

支持从用户行为推断出的动态和自动决策策略,并提供更细粒度的决策,即允许、模糊和拒绝。

Smarper提供了一个反馈循环,在这个循环中,用户最初会被提示做出权限决策,随着时间的推移,SmarPer会了解用户的决策模式,并代表用户做出决策。Smarper甚至可以适应用户隐私姿态的变化。

威胁模型及目标

我们关注的是侵犯隐私的应用程序,它们通过移动操作系统的专用api调用访问用户的私人数据(例如位置、摄像头)。我们没有解决来自操作系统本身或者使用本地代码或数字证书认证机构访问私人数据的应用程序的威胁

上下文感知权限,以支持根据用户上下文更改的动态权限策略;自动权限决策,以代表用户在运行时预测和做出权限决策,并减少用户负载;以及数据

模糊处理,以减少敏感信息透露给应用程序,同时保持一定程度的实用性。

可部署性目标:有效性,在硬件受限的移动设备中支持SmarPer;隐私性,保证用户的决策和收集的虚拟信息不会损害用户的隐私;灵活性,使用户能够配置不同的模糊技术、隐私偏好和学习速率,并纠正可能的预测错误。

系统流程

拦截对隐私敏感的应用程序请求->Api调用中的应用程序名称、请求类型和参数被发送进行处理->从设备收集有关当前上下文的信息->给定用户过去的决策和上下文数据->函数c()将预测的决策和估计的置信度,以及其他参数(如当前的MAE、及时率和以前的决策)作为输入,并确定是否应该使用预测的决策(即自动决策)或者是否应该提示用户->当SmarPer有一个决策(手动或自动),它预先削减响应请求应用程序->如果决策要求模糊处理,则在将请求的数据返回到应用程序之前对其执行模糊处理->SmarPer用请求的数据响应应用程序->SmarPer用请求的数据响应应用程序。最后,决策,上下文信息以及该决定是手动还是自动记录在SmarPer数据库中->用户可以查看最近的自动决策,并在决策错误时纠正它们->用户反馈包含在模型中,并进行更新模型。

实现

实现了部分版本的SmarPer,兼Android4.0.3到5.1.1,以评估模糊处理技术,并收集权限决策及其相关的伪文本信息

请求拦截

我们采用了根设备方法来动态拦截应用程序的请求,而不需要修改操作系统,为了拦截对隐私敏感的API调用,我们的实现基于开放源码权限工具XPrivacyv.3.6

Xprivacy是Xposed框架的一个模块,该框架允许用户安装模块来修改智能手机的外观和感觉。它需要root权限,以便更改应用程序进程可执行文件,以添加一个额外的库(Xposed)。这使得开发人员可以挂接AndroidAPI调用,并在API调用执行之前或之后执行代码,以修改操作系统或应用程序的功能(内存),但是有可能被(恶意的)应用程序绕过,以避免SmarPer。

数据混淆

在SmarPer中,用户可以允许、混淆或拒绝访问他们的私有数据。通过使用Xposed框架,我们能够在执行之前或之后修改敏感API调用的参数和返回值

模糊处理依赖于数据。因此,不同的数据类型必须使用不同的技术

每种模糊处理技术的效用取决于应用程序和用例的类型

模糊化的数据可能导致应用程序崩溃或意外的行为

在移动平台上没有对模糊处理的本地支持

位置:我们通过将地球分成10公里乘以10公里的区域来实现位置混淆。不是返回用户的确切位置,而是返回用户所在的当前区域的中心坐标。

联系人:在SQLite数据库中存储联系人信息。应用程序可以查询这个数据库来请求它们需要的任何信息,只要它们拥有READCONTACTS权限。使用SmarPer,我们可以访问应用程序对联系人数据库进行的实际查询,以及一个带有返回数据的Cursor对象,我们可以在返回到应用程序之前对其进行修改。为了实现模糊处理,我们从这个游标中筛选出不是姓名、电话号码、邮政地址或电子邮件地址的行。然而,由于应用程序在查询这个数据库时具有很大的灵活性,因此在Cursor中并不总是存在标识返回信息类型的列。这意味着我们可能不知道要在结果中过滤掉哪种类型的私有数据。如果我们有类型信息,我们将过滤掉不是姓名、电话号码、邮政地址或电子邮件的行。否则,我们将使用这四种允许的类型的正则表达式检查返回的Cursor中包含数据的所有列。对于电话号码和电子邮件,我们使用标准的AndroidAPI调用PhoneNumberUtils.isReallyDialable()和Patterns.EMAIL地址。与姓名、电话号码、邮政地址或电子邮件的正则表达式不匹配的行将在返回到应用程序之前从结果中丢弃。对于拒绝决策,SmarPer通过返回一个空的Cursor模拟一个空的地址簿。

存储:为了实现存储的模糊处理,我们限制了对AndroidPublic目录(具有READEXTERNALStorage权限的所有应用程序都可以访问)的访问——图片、音乐、电影和DCIM(CameraPictures),但是这些目录实际上包含私有数据。为此,SmarPer返回一个"filename/foundexception";这是一个应用程序应该准备处理的内容:这些文件可能真的不存在。我们还从MediaScanner的查询中筛选出这些uri,MediaScanner是一个跟踪设备上所有用户文件的服务。对于deny情况,SmarPer模拟卸载外部存储器。为了在外部存储器上创建缓存,一些应用程序请求WRITEEXTERNALSTORAGE权限(其中非法包括READEXTERNALSTORAGEpermission)。我们的模糊处理技术保留了这个功能,但是应用程序筛选用户照片无法做到,此时需要用户允许。

相机:我们模糊了相机的两个方面:相机预览(即,当用户打开相机,但还没有拍照)和拍照。对于这两种情况,我们通过缩小尺寸和再缩小到原始尺寸来降低返回图像的分辨率。可以配置伸缩因子。对于拒绝的情况,我们返回一个黑色图像。

上下文信息

对于每个权限决策,使用标准的AndroidAPI调用,SmarPer收集相关的上下文信息。利用这些信息,我们选择了原始的上下文特征。

应用程序信息(6):UID、GID、包名称、名称、版本和GooglePlayStore类别。

前台应用程序信息(3):包名称、名称和活动。

请求信息:XPrivacy类别,方法名称,参数,是否危险(例如,否认它可能破坏应用程序)。

请求信息(4):XPrivacy类别,方法名称,参数,是否危险(例如,否认它可能破坏应用程序)。

决策信息(4):类型、当前时间、做决策的时间,以及决策是否被用户修改。

设备状态(14):屏幕处于交互模式,屏幕锁定,振铃状态,耳机插入,耳机类型,带麦克风的耳机,电池百分比,充电状态,充电类型,网络连接类型,基站状态,纬度,经度和位置提供商。

语义位置(1):要求用户根据当前的地理位置选择一个la-bel。

数据收集注意事项

收集尽可能多的用户决策,但不要让用户感到不知所措,也不要让用户对提示习以为常。否则,我们可能最终得到的是噪音大、不可靠的数据。

提示速率限制:如果用户正在使用应用程序(即,前台应用程序),SmarPer不限制与此应用程序相关的提示数量。如果用户是不与应用程序(即,后台应用程序)一起使用,SmarPer只允许每10至20分钟提示一次,从该间隔均匀采样。如果超过了速率限制,SmarPer将对同一类型的请求采用最新的决策。如果之前没有决策,SmarPer会提示用户。另外,SmarPer将每个决策缓存一个小时,以避免对同一类型的请求反复提示。如果用户没有使用智能手机,SmarPer将应用先前的决定;否则,SmarPer将允许请求。请求与应用程序和数据类型不在我们的列表总是被接受。

无中断策略:对于某些活动(例如,打字、打电话、拍照),最好不要用提示打断用户,因为这可能会带来问题,并导致噪音数据。因此,在这种情况下,SmarPer不会中断用户;相反,它对同一类型的请求使用先前的决策。如果没有事先决定,则允许请求。Smarper检查用户是否使用TelephonyManagerAPI进行调用,或者用户是否通过截取API调用(如InputMethodMan-ager)进行键入或拍照。Showsoftinput()、Camera.open()和Camera.release()。

收集许可决定

我们从美国GooglePlayStore中选择了一组流行的应用程序,这些应用程序属于不同的类别,并请求至少以下一种数据类型:位置、联系人和存储。通过使用流行的应用程序,我们增加了(1)在研究期间从每个应用程序收集更多的决策数据(也就是说,流行的应用程序使用更频繁)和有多个参与者的机会

结果总共有29个应用程序:Accuweather,Amazon,CandyCrushSodaSaga,ClashofClans,Dropbox,Evernote,Facebook,Fitbit,iHeartRadio,Instagram,Kik,Lyft,Runtastic,Shazam,Skype,Snapchat,Soundcloud,StarWars:GalaxyofHeroes,SubwaySurfers,TheWeatherChannel,TripAdvisor,Twitter,Uber,Viber,Walmart,Waze,WhatsApp,Wish,andYelp。

数据收集活动的步骤

招聘:我们通过在线论坛上的帖子和校园里的传单招募远程和本地参与者。参与者必须至少18岁,经常使用安卓系统,经常使用为我们研究选择的至少两个应用程序,并且拥有可靠的蜂窝和WiFi网络连接。我们提供了50美元的礼品卡作为奖励。

设置、培训和入门调查:本地和远程参与者都可以访问我们服务器上的SmarPer培训材料(例如,书面说明和视频教程)。在开始研究之前,参与者必须同意我们的同意书,并完成一个参加调查。在这项调查中,我们向参与者询问了一些人口统计学问题和一些问题,以估计他们对隐私的普遍关注程度。我们利用了iipc规模,以及我们自己设计的一些问题,以适应智能手机的环境。远程参与者使用他们个人的、与smarper兼容的智能手机(例如,根植的Android4.0.3-5.x设备)。本地参与者可选择使用他们的个人设备或使用我们提供的智能手机, 数据收集:参与者同意在他们的个人或借用智能手机上运行SmarPer至少10天。在此期间,SmarPer提示参与者做出与我们选择的应用程序和数据类型相关的权限决策(图2)。目标是收集每个参与者至少75个决策以及与每个决策相关的背景信息。如果在10天后没有达到这个目标数量的决定,鼓励参与者继续研究一段时间,直到达成(为了避免偏见,我们没有明确要求参与者作出更多的决定)。每天,决策数据通过加密连接自动上传到我们的服务器。因此,我们也能够监控SmarPer的问题,或者用户是否没有积极使用智能手机。在后一种情况下,我们联系了参与者,提醒他们有关规则。

静态政策和退出调查:在数据收集结束时,所有参与者都必须完成另外两项调查。在静态策略调查中,对于研究期间监控的每个应用程序,我们要求参与者定义他们将授权访问每个监控数据类型(例如,位置、联系人、存储)的静态决策(例如,allow、obfuscated、deny)。这个调查的目的是了解参与者如何通过使用当前权限系统(例如,Android6+)提供的界面来配置他们个人智能手机上的权限。这项调查的数据被用作我们分析的基线

在退出调查中,我们向参与者询问他们对SmarPer的经验,以及他们在移动许可中使用自动决策、数据混淆和上下文信息的能力。我们对被选中的参与者进行了补充访谈,以更好地了解他们在研究期间做出决定的原因。在完成两项调查并通过数据一致性检查(下面将描述)之后,参与者将获得一张礼品卡。

数据质量:我们进行了不同的检查,以验证参与者提交的数据的质量。首先,我们检查了参与者对提示的反应是否过于迅速,也就是说,在他们选择回应之前至少过了两秒钟。实际上,参与者每次提示都必须触摸屏幕两次,这降低了快速随机决定的几率。其次,我们通过比较语义标签和决策时记录的实际坐标,检查参与者报告的语义位置的一致性。例如,如果一个参与者在两个或两个以上的地理位置重新移植"家",那么这个参与者很可能提供了错误的信息。没有使用者严重违反上述条件,足以保证被从研究中移除。第三,对于每个参与者,我们从数据集中删除了前五个和后五个决定,因为这些决定是在熟悉SmarPer和参与者返回借来的设备时做出的,即噪音数据。

实现截图:

数据分析:预测决策

我们用u对用户进行索引,用i和j对权限请求进行索引。我们用 ∈{"Allow","Obfuscate","Deny"}表示用户在第i次权限请求时的决策。我们用特征向量 表示权限请求的上下文

我们用 表示时间t之前用户的过去数据,t是时间 生成的所有决策对的集合。我们的目标如下:给定用户过去的决定

,预测用户未来某个时间的决定

我们关注两个重要的方面:(1)我们可以学习预测许可决定,(2)环境帮助我们这样做。

基线

我们使用以下两个基线。第一个基线称为基于所有参与者完成的调查的静态策略方法。本次调查中收集的决策被用作许可请求的固定预测。随着时间的推移,这种方法不会学习用户的偏好,只是将上下文信息的一部分考虑进去(例如,应用程序的名称和目标数据类型)。我们期望这种方法比从用户行为中学习的动态方法执行得更差。这个方法近似于Android6+和iOS中的当前权限系统。

我们的第二个基线忽略上下文信息,但是从过去的数据中学习偏好函数。我们只是预测用户做出的最频繁的决定,直到 为所有新的决定。这种方法虽然是动态的,但可能会错过与某些决策相关的上下文信息,并且可能比考虑上下文的方法执行得更糟。

上下文感知方法

我们将基准线与一种从用户行为中学习并使用上下文信息进行预测的方法相比较。我们使用一维隐私偏好函数fU:x→r来模拟用户u的隐私偏好。给定一个特征向量x∈x,函数fU(x)的值表示一定程度的隐私性:较高的值表示较高的隐私需求

我们使用贝叶斯线性回归(BLR)来建模偏好函数给定的背景信息。最简单的模型是使用线性函数:

上下文感知方法及误差测量

上下文感知方法

使用贝叶斯规则,我们可以计算后验分布与预测之间的关系。然而,(1)的非线性函数使计算复杂化,因为它不是高斯函数。为了简化计算,我们将下面的松弛方法改为(1):固定阈值610.5和2-0.5,并将决策{"允许"、"混淆"和"否定"}重新编码为{-1、0、+1}。这使得决策yUIGaussian,然后我们可以计算后验概率在封闭形式使用贝叶斯规则。Blr模型输出一个实值y,我们根据(1)的阈值在1和2处得到离散值决策。在(1)和(2)提出的公式使我们能够使用高斯过程模型(GP)的非线性模型。通过简单地改变使用的核矩阵,我们可以得到各种非线性模型。这种方法类似于支持向量机算法,在以前的工作中使用,但有一个重要的区别:GP模型为我们的预测提供了后验概率,不像支持向量机,我们需要一个两阶段的过程,需要大量的数据来避免过拟合。

我们注意到,我们的方法BLR不同于以前只使用两个类"allow"和"deny"的工作。对于两类问题,排序并不重要,但对于我们的问题,很明显,"混淆"比"否认"需要更少的隐私,但比"允许"需要更多的隐私。因此,选择一维函数是合理的,尽管这种方法可以很容易地扩展到多维函数。另一种选择是使用多类别分类(例如,支持向量机,分类树),以及对成本敏感的成本函数。尽管如此,鉴于BLR的简单性,它仍然是小型数据集合合理的首选。

误差测量

为了可靠地比较方法,我们提出性能误差度量来评估方法的性能

表现评估方法及表现评估结果

表现评估方法

我们开发了一个机器学习框架来可靠地估计不同方法的误差度量。我们的框架工作使用将数据标准分割成训练集和测试集。我们随机选择50%的参与者进行测试(u20)来计算误差估计,剩下的21名参与者进行训练,通过最大化对数似然来学习BLR模型的参数。注意,对于基线和其他被评估的方法,没有需要学习的参数。

在我们的评估中,我们使用所有参与者的数据,但仅限于与流行应用程序相关的决策,例如,有超过200个决策的应用程序:Facebook、Twitter、Instagram、WhatsApp、Viber、Skype、Snapchat、TheWeatherChannel和AccuWeather。我们这样做是因为我们没有足够的数据来让其余的应用程序可靠地执行我们的分析。

表现评估结果

在评估过程中,我们考虑了以下几种模型:静态策略模型、ZeroRT模型、BLR模型、GP-SE模型、决策树模型和线性核模型。目的是比较上下文无关模型和不同的模型上下文感知模型。我们还评估了"一刀切"模型(即BLR-all和SVM-all)的培训,即为所有用户培训单一模型。

我们可以看到,上下文感知模型获得了比基线低得多的错误率,这清楚地显示了增加上下文后所获得的增益。还要注意,与静态策略方法不同,所有其他的每用户模型都是动态的,并且随着数据量的增加学会更好地预测。另外,请注意BLR、SVM、GP-SE和d树具有大致相似的性能。尽管如此,BLR仍然可以被认为是一个更安全的选择,因为它简单,也就是说,过拟合和计算开销的风险较低。

计算性能

我们选择的机器学习模型BLR非常简单,可以在智能手机上运行。为了评估它的计算能力,我们使用了摩托罗拉一代智能手机,它有Android5.1.1,7个上下文功能,5倍的交叉验证,以及来自单个参与者的大约200个决定。我们使用高效Java矩阵库(EJML)[55]将BLR算法移植到Android上。在这种设置下,训练时间约为1.320.31秒,预测时间为506秒,CPU使用率不高于50%。这些结果表明,我们的方法在智能手机上是可行的,特别是如果我们考虑到培训不需要经常发生(例如,一天几次)。此外,培训可以在智能手机无所事事充电时进行,以避免耗尽电池或干扰应用程序。在未来的工作中,我们还计划通过顺序更新(即在线学习)来评估BLR,使用Cholesky因子或随机梯度下降的一级更新。这种方法可以显著减少训练时间。此外,我们估计了对SmarPer原型性能的影响,特别是收集上下文信息和拦截应用程序请求的服务。使用操作系统和第三方工具,我们没有测量我们的服务对CPU使用的重大影响。在电池寿命方面,我们使用Android的电池监视器API来测量使用SmarPer是否会更快地耗尽电池,但是我们没有测量智能手机使用SmarPer和不使用SmarPer时电池寿命的显著差异。此外,没有参与者报告电池寿命有问题。

学习总结:

课程具有一定的难度,但是很怀念做作业的日子,对网络攻防的实践的内容的内容有了一定的了解,对于动手能力的要求非常高,还记得从刚刚开始配置蜜网环境配置到深夜到完成最后的大作业,在这一个过程中,锻炼了我们的能力,收获很多,很喜欢老师对我们的严格要求。

课程建议:

整个学习过程感觉挺吃力的,感觉需要一定的基础,作业很具有挑战性,但是整个过程完成下来确实能够有所收获,回想起整个完成作业的过程,但是有些本质原理之类的,理解的可能还不是很到位,感觉需要一定的基础,希望老师能够进一步在课程中有所渗透,有些东西看别人的总结学习也要花很长的时间,自己做的话感觉会花更多时间,不过真的是有所收获。十分恐惧老师的上课提问,很刺激,希望老师继续。

posted @ 2020-07-05 09:58  刘琳杰20199328  阅读(228)  评论(0编辑  收藏  举报
返回顶部