法律状态公告日
法律状态信息
法律状态
2019-11-22
授权
授权
2017-10-20
实质审查的生效 IPC(主分类):G06F21/62 申请日:20170510
实质审查的生效
2017-09-19
公开
公开
技术领域
本发明属于互联网安全领域,更具体地,涉及一种基于信息流标签的Web用户隐私保护系统和方法。
背景技术
为了向用户提供丰富的服务,包括地图导航、在线支付等,当下的Web应用整合大量第三方代码。但是由于这些服务时常要求接触用户的私密信息,所以开发者和用户必须完全信任它们不会将私密信息泄露出去。最近很多研究显示,这些第三方代码会引发一系列严重的危害,比如追踪用户浏览记录,获得用户表单输入数据,窃取cookie和私密数据,甚至劫持会话信息,伪造用户请求。
现今浏览器依赖同源策略(SOP),跨域资源共享(CORS),内容安全策略(CSP)等安全机制防范第三方代码窃取隐私。但是需要注意的是,所有的这些机制在应用运行时维持静态的不变的访问控制策略,要么授予某组件完全的访问权限,要么完全阻止,所以并不能防止已经收到信息的组件将获得私密信息泄露出去。
现有的基于信息流控制的防范方法中,一般有细粒度和粗粒度两种方法。细粒度方法一般向对象粒度的用户私密信息加上高敏感级别标签,追踪JavaScript每一条命令,确保关联高敏感级别标签的数据不会泄露出浏览器,从而保护用户隐私。粗粒度方法和本方法有相似性,每一个同源的组件都会明确地关联一个信息流标签,这个标签严格定义这个组件的访问控制权限,每当发生跨越组件边界的信息传递时,系统检查相关的标签,按照规则决定这次传递是否成功。
然而,上述两种方法都存在一定的不足和局限性。细粒度方法由于需要追踪JavaScript每一条命令,所以它们通常需要对JavaScript引擎进行大量的改动,或者直接实现一个安全性提高的JavaScript解释器,从而造成性能太差和兼容性不好。此外细粒度方法也不能支持比同源策略灵活的策略。而现存的粗粒度方法没有对可能造成隐私泄露的降密特权进行限制。此外由于缺乏对第三方代码库有效的隔离机制,对导入第三方代码库的Web应用的防范支持不够。
综上所述,现有的基于信息流控制保护用户隐私的系统方案存在如下不足:
一方面细粒度方法运行在对象级别,有效的支持导入第三方代码库的Web应用的防范,但是由于需要对现在的JavaScript引擎大量修改,导致其性能和兼容性差。另一方面,粗粒度方法由于没有提供对危险的降密特权限制的有效机制,导致其可能造成隐私泄露,并且对导入第三方代码库的Web应用的防范支持不够。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于信息流标签的Web用户隐私保护系统和方法,其目的在于提出了一种应用于Web浏览器环境的新型访问控制标签模型,确保Web应用数据的完整性和私密性;提出了基于信息流标签的追踪用户私密信息消息传递规则,提供灵活实用的信息流控制策略,防止用户隐私泄露,确保用户信息的安全性;由此解决现有针对第三方代码保护web用户隐私方法中出现的局限和不足,保证用户信息的私密性和完整性,以及系统的动态性和高效性。
为实现上述目的,按照本发明的一个方面,提供了一种基于信息流标签的Web用户隐私保护系统,该系统包括:
标签添加模块,用于为Web组件和Web组件之间的通信消息按照标签模型添加标签;所述标签模型包括组件标签和消息标签,所述组件标签用于关联组件,包括:
私密性标签,用于表示本组件包含的私密性信息;
完整性标签,用于表示本组件拥有的资源访问权限信息;
特权标签,用于对私密性标签和完整性标签进行更新,包括信息授权、信息降密和信息转换;
所述消息标签用于关联组件间传递的消息,表示关联的消息包含私密性信息;
标签检测模块,用于当消息传递时,检测Web组件标签或通信消息标签是否满足消息传递规则,是则消息传递成功,否则保护消息禁止传递。
进一步地,所述标签检测模块中消息传递规则为,
信息流成功传递必须满足:发送组件标签中的私密性标签小于等于接受组件标签中的私密性标签;发送组件标签中的完整性标签大于等于接受组件标签中的完整性标签;发送消息标签必须小于等于接受组件标签中的私密性标签,且接受组件接收到消息后,无法使用其特权标签影响其私密性标签中等于消息标签的子集。
进一步地,所述标签添加模块包括:
基于API的标签添加单元,用于通过系统提供的DOM级别API,按标签模型预先为非静态组件或通信消息添加标签;
基于安全策略的标签添加单元,用于当非静态组件或通信消息若没有预先添加的标签时,根据安全策略和标签模型为非静态组件或通信消息自动添加标签;
自动模拟标签单元,用于按照标签模型为静态组件自动模拟组件标签,私密性标签为静态组件所属的源,完整性标签为静态组件的权限,特权标签为空。
进一步地,当所述组件引入了第三方代码时,创建轻量级进程,该进程和父进程运行在同一线程,并共享一样的事件循环,该进程能直接访问父进程页面的DOM,放置组件中可信代码到轻量级进程,隔离第三方代码。
进一步地,所述标签检测模块包括:
浏览器内部通道检测单元,用于当Web组件之间进行消息传递时,根据消息传递规则检测消息传递是否成功;
网络通道检测单元,用于当Web组件发出网络请求时,根据组件标签自动定制新的安全策略,由安全策略检测消息传递是否成功;
浏览器存储通道检测单元,用于当Web组件存取浏览器存储时,根据消息传递规则检测消息传递是否成功。
按照本发明的另一方面,提供了一种基于信息流标签的Web用户隐私保护方法,该方法包括以下步骤:
(1)为Web组件和Web组件之间的通信消息按照标签模型添加标签;所述标签模型包括组件标签和消息标签,所述组件标签关联组件,包括:
私密性标签,表示本组件包含的私密性信息;
完整性标签,表示本组件拥有的资源访问权限信息;
特权标签,对私密性标签和完整性标签进行更新,包括信息授权、信息降密和信息转换;
所述消息标签关联组件间传递的消息,表示关联的消息包含私密性信息;
(2)当消息传递时,检测Web组件标签或通信消息标签是否满足消息传递规则,是则消息传递成功,否则保护消息禁止传递。
进一步地,所述步骤(2)中消息传递规则为,信息流成功传递必须满足:发送组件标签中的私密性标签小于等于接受组件标签中的私密性标签;发送组件标签中的完整性标签大于等于接受组件标签中的完整性标签;发送消息标签必须小于等于接受组件标签中的私密性标签,且接受组件接收到消息后,无法使用其特权标签影响其私密性标签中等于消息标签的子集。
进一步地,所述步骤(1)包括:
(11)基于API的标签添加:通过系统提供的DOM级别API,按标签模型预先为非静态组件或通信消息添加标签;
(12)基于安全策略的标签添加:当非静态组件或通信消息若没有预先添加的标签时,根据安全策略和标签模型为非静态组件或通信消息自动添加标签;
(13)自动模拟标签:按照标签模型为静态组件自动模拟组件标签,私密性标签为静态组件所属的源,完整性标签为静态组件的权限,特权标签为空。
进一步地,当所述组件引入了第三方代码时,创建轻量级进程,该进程和父进程运行在同一线程,并共享一样的事件循环,该进程能直接访问父进程页面的DOM,放置组件中可信代码到轻量级进程,隔离第三方代码。
进一步地,所述步骤(2)包括:
浏览器内部通道检测:当Web组件之间进行消息传递时,根据消息传递规则检测消息传递是否成功;
网络通道检测:当Web组件发出网络请求时,根据组件标签自动定制新的安全策略,由安全策略检测消息传递是否成功;
浏览器存储通道检测:当Web组件存取浏览器存储时,根据消息传递规则检测消息传递是否成功。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下技术特征及有益效果:
(1)本发明技术方案针对Web组件和组件之间传递的消息提出了一种应用于Web浏览器环境的新型访问控制标签模型,不需要对现存浏览器内JavaScript引擎做任何改变,也没有禁用JavaScript的部分功能,保证了其兼容性和完整性;
(2)本发明技术方案针对标签模型引入了消息传递规则,只对跨越组件边界的信息传递实施相关标签的检测,并且引入有效的,轻量级的消息标签用来追踪用户的私密信息,并且限制危险的降密特权,保证了系统的安全性;
(3)本发明技术方案引入性能优越的轻量级进程隔离第三方陌生代码,提高了对导入第三方代码库的Web应用的防范力度,不影响浏览器扩展,集成第三方服务的应用。
附图说明
图1是采用本发明技术方案防范浏览器扩展应用(云笔记)的结构流程示意图;
图2是采用本发明技术方案防范包含第三方代码库应用的结构流程示意图;
图3是本发明系统的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1所示,采用本发明技术方案防范浏览器扩展应用云笔记窃取用户密码包括以下步骤:
在这个示例中,组件用矩形表示,通信操作用箭头表示,事件的执行顺序依次编号,由于消息标签被锁定的标识用符号“锁”表示;
第三方扩展应用云笔记(cloudnote.com)可以获取页面a.com的文档并上传至云端,此外云笔记包含的恶意代码试图获取页面a.com的用户密码,并泄露出去。初始开发者调用系统提供的API为各个组件分发标签,其中第三方扩展应用云笔记(cloudnote.com)的初始组件标签为:
私密标签Sevil={cloudnote.com};
完整性标签Ievil={};
特权标签Oevil={network+,a.com+,a.com-};
页面a.com的初始组件标签为:
私密标签Sa={a.com};
完整性标签Ia={};
特权标签Oa={};
同时页面a.com中的私密性信息,即用户密码关联了消息标签Sm={a.com}。
S1:云笔记使用a.com+标识扩展其私密性标签Sevil,Sevil={cloudnote.com,a.com};使Sevil≧Sa从而可以获取a.com的文档。
S2:云笔记试图将获得的文档传至云端,系统自动模拟此网络通道的标签为Snet={cloudnote.com},Inet={network};
云笔记使用a.com-标识和network+标识使Sevil={cloudnote.com};Ievil={network};从而Sevil≦Snet,Ievil≧Inet,将获得的文档上传云端;
S3:在云笔记中的恶意代码试图获得a.com的密码数据;云笔记再次使用a.com+标识扩展其私密性标签Sevil={cloudnote.com,a.com},使Sevil≧Sa从而可以获取密码数据,于是关联了消息标签Sm的密码数据被传送至云笔记;
S4:云笔记试图将获得的用户密码泄露出浏览器,因为包含密码数据的a.com是由消息标签传送至云笔记的,所以即使云笔记拥有a.com-标识,也不能将标识a.com从Sevil中除去,从而是标签检测失败,也就无法通过网络将用户密码泄露出去。
如图2所示,采用本发明技术方案防范包括第三方代码的应用包括以下步骤:
在这个示例中,组件用矩形表示,通信操作用箭头表示,事件的执行顺序依次编号,由于消息标签被锁定的标识用符号“锁”表示;
主页面a.com导入不可信的第三方代码库jQuery,初始开发者调用系统提供的API为各个组件分发标签,在主页面a.com加载时,需要从jquery.com下载jQuery代码,所以其初始组件标签为:
私密标签Sa={a.com};
完整性标签Ia={};
特权标签Oa={network+,a.com→jquery.com,a.com+,jquery.com-};
S1:主页面a.com将可信代码放入新创建的轻量级进程LWorker,并让LWorker的初始组件标签(Sworker,Iworker,Oworker)与主页面a.com的组件标签一致;
S2:LWorker使用Oworker中的a.com→jquery.com标识和network+标识使Sworker={jquery.com},Iworker={network},并通过网络请求jquery.com下载jQuery代码,由于网络通道的组件标签被模拟Snet={jquery.com},Inet={network},所以Sworker≦Snet,Iworker≧Inet,所以此次网络请求被允许;
S3:LWorker使用a.com+标识和jquery.com-标识使Sworker={a.com},Iworker={network},Sworker≦Sa,Iworker≧Ia,从而将jQuery代码发送至主页面a.com;同时包含jQuery代码的通信消息关联了消息标签Sm={a.com};
S4:主页面a.com由于不被信任的第三方jQuery代码,变为不安全的。但是即使主页面a.com拥有a.com→jquery.com标识,也不能将a.com从Sa中除去,也就不能通过网络通道向不被信任的第三方远端服务器泄露信息;与此同时可信任的LWorker可以自由访问主页面DOM,发送网络请求。
如图3所示,本发明一种基于信息流标签的Web用户隐私保护系统包括:
标签添加模块,用于为Web组件和Web组件之间的通信消息按照标签模型添加标签;所述标签模型包括组件标签和消息标签,所述组件标签用于关联组件,包括:私密性标签,用于表示本组件包含的私密性信息;完整性标签,用于表示本组件拥有的资源访问权限信息;特权标签,用于对私密性标签和完整性标签进行更新,包括信息授权、信息降密和信息转换;所述消息标签用于关联组件间传递的消息,表示关联的消息包含私密性信息;
标签检测模块,用于当消息传递时,检测Web组件标签或通信消息标签是否满足消息传递规则,是则消息传递成功,否则保护消息禁止传递;其中所述标签检测模块中消息传递规则为,信息流成功传递必须满足:发送组件标签中的私密性标签小于等于接受组件标签中的私密性标签;发送组件标签中的完整性标签大于等于接受组件标签中的完整性标签;发送消息标签必须小于等于接受组件标签中的私密性标签,且接受组件接收到消息后,无法使用其特权标签影响其私密性标签中等于消息标签的子集。
所述标签添加模块包括:
基于API的标签添加单元,用于通过系统提供的DOM级别API,按标签模型预先为非静态组件或通信消息添加标签;
基于安全策略的标签添加单元,用于当非静态组件或通信消息若没有预先添加的标签时,根据安全策略和标签模型为非静态组件或通信消息自动添加标签;
自动模拟标签单元,用于按照标签模型为静态组件自动模拟组件标签,私密性标签为静态组件所属的源,完整性标签为静态组件的权限,特权标签为空。
当所述组件引入了第三方代码时,创建轻量级进程,该进程和父进程运行在同一线程,并共享一样的事件循环,该进程能直接访问父进程页面的DOM,放置组件中可信代码到轻量级进程,隔离第三方代码。
所述标签检测模块包括:
浏览器内部通道检测单元,用于当Web组件之间进行消息传递时,根据消息传递规则检测消息传递是否成功;
网络通道检测单元,用于当Web组件发出网络请求时,根据组件标签自动定制新的安全策略,由安全策略检测消息传递是否成功;
浏览器存储通道检测单元,用于当Web组件存取浏览器存储时,根据消息传递规则检测消息传递是否成功。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
机译: 基于WEB应用的用户能力评价方法,基于WEB应用的用户能力管理方法和基于WEB应用的用户能力评价系统
机译: 基于WEB的用户能力评价方法,基于WEB的用户能力管理方法和基于WEB的用户能力评价系统
机译: 一种基于Web的方法和系统,用于使用户能够从其他用户那里获取意见并向其他用户提供意见。