面向云计算应用层演化的隐私保护方法研究
2020-06-09柯昌博吴嘉余
柯昌博,吴嘉余,曹 彦
1.南京邮电大学 计算机学院,南京210023
2.南京航空航天大学 计算机科学与技术学院,南京210016
1 引言
隐私是评估软件可信性的主要因素之一,也是度量用户敏感数据安全的主要非功能属性[1-2]。随着物联网、云计算、移动支付和电子商务的快速发展,隐私泄露问题日趋严重。如,2018 年,Facebook 由于泄露用户的个人隐私的信息,其股价下跌28%;2018年8月,谷歌被发现,即使用户已经在隐私设置中关闭了位置记录,智能手机的谷歌服务会存储用户的位置信息,谷歌仍会记录,造成用户的位置信息被暴露[3-4]。隐私最初作为人权保护的部分被提出[5],在服务计算或云计算的软件体系结构下,隐私保护是指用户控制其个人敏感数据被服务收集、暴露和维持的能力[6]。而在大数据和人工智能的快速发展下,在用户不知情的情况下,服务通过数据挖掘、知识推理和机器学习等技术能够获取用户偏好、个人身份信息、身体健康数据等敏感隐私数据,使得用户的隐私数据非法泄露,给用户带来经济损失甚至会影响到用户的人身安全[7-8]。
演化分为用户的需求演化和组合服务演化[9]。而组合服务演化又分为服务参与者演化和服务组合流程演化[10]。演化作为云计算的主要属性之一,它增强了SaaS服务的自适应自恢复的能力,并且可以根据用户需求的改变,动态地组合服务,为满足用户的功能需求提供了理论和技术支持[11-12]。但是当SaaS服务发生演化时,使得用户的隐私数据被退出服务组合的服务所收集,造成了用户的隐私数据泄露;或者当服务流程发生演化时,使得服务参与者获取了额外的用户隐私信息,造成了用户个人敏感隐私信息的泄露[13]。而SaaS 服务组合是一种协同计算,并且对交互各方来说,数据是透明的,即,很难通过加密的手段来保证用户的隐私安全。因此,很容易使得用户失去对自身隐私数据的控制权,由于明文传达所带来的问题,使得采用传统的信息安全方法来解决比较困难[14]。
通过以上的分析,由于用户的隐私数据在SaaS 服务组合中必须为明文,因此,当SaaS层的服务组合流程发生演化时会出现如下两种情况,如图1所示。
图1 服务发现演化
在图1中,假若服务组合流程中的服务B由于某种原因退出了服务组合流程,服务F替换服务B,当服务组合流程没有事前检测与事中监督机制,在事中发生演化,使得用户的隐私信息已经发送给服务B,这就会发生由于服务B退出组合流程而泄露用户的隐私;假若服务B是骗取用户信息的伪功能服务,那么服务B将会收集大量的用户隐私信息,本文主要是针对服务组合流程进行事前检测和事中监控,以确保服务组合流程发生演化时,不会造成用户隐私信息的泄露。
面向SaaS服务组合的敏感隐私信息安全增强方法研究还处在概念模型层面,例如Cleveland State University的Krupp B利用本体定义了安全与隐私策略,并在操作系统与应用层之间构建安全隐私层来保证应用软件使用隐私数据是按照事前所定义的隐私策略执行的,从而确保用户敏感信息的安全[15];Purdue University的Ni Q 提出了一种基于角色的隐私感知模型,根据角色分配相应的隐私访问策略,通过对策略的匹配来限定用户对隐私数据的访问权限,从而达到保护敏感隐私数据的目的[16]。
本文的主要贡献为:首先提出了一种隐私协议的描述方法;其次,给出了隐私协议的获取方法;最后,阐述了基于隐私协议的服务组合隐私暴露监督方法。
2 隐私协议的生成与监督
2.1 隐私协议的生成
定义1(隐私协议规约)隐私协议规约由4 元组描述,即PS=。其中,I 记录隐私数据在本体树中的位置;O 表示SaaS 服务,也是隐私数据的Owner;S 为隐私项的标识,对应隐私本体中的概念。P 为隐私暴露约束,是对Owner 使用隐私数据的约束,形式表示如下:
隐私暴露约束P由对隐私数据本身的约束SC和对Owner的约束OC组成;SC表示Owner是否有权限拥有该隐私项,和Owner对此隐私项持有的有效时间进行约束;C 表示隐私数据在本体中的类,约束Owner 与用户进行隐私数据交互时,只能对其所对应的类或子类进行交换;opi是类的实例,{ }ow1,ow2,…,own表示实例所对应的Owner;opi:{ }ow1,ow2,…,own表示隐私数据类的实例可以被那些Owner持有;opi:owi(vti)表示Owner对隐私数据实例持有时间。
OC是对Owner的约束,包括官方Official和SaaS组合者serviceComp 的约束。SC 表示官方或者SaaS 组合者对Owner在隐私法上的约束。
定义2(隐私暴露集PDC(Privacy Disclosure Collection)用户隐私暴露集PDC表示为:
PDC=Tableau(Ciopi,φ) ,φ=∀Ci(opi)⊓¬∃Ck(opk)Tableau()是隐私暴露探测算法,φ 为描述用户隐私需求的实例断言公理,{ }Ci(opi),Ck(opk) 为隐私暴露对。由于Tableau()是描述逻辑中对概念的满足性检测算法,因此,利用Tableau(Ciopi,φ) 探测隐私数据集subject:name 对用户需求的可满足性。
定义3(隐私增强集PEC(Privacy Enhancement Collection)假若某个隐私数据集满足:
(1)是非隐私暴露集N-PDC;(2)与服务的输入与前置条件语义等价,换句话说,就是服务能够正确运行,PDC ≡(service(input)⋃service(pre )_condition) ;(3)无冗余的隐私数据,即:则满足条件(1)和(2)的称为极小隐私增强集,满足条件(1)、(2)和(3)的称为最小隐私增强集。
隐私合约的隐私增强集协商是由用户端与组合者之间的协商,用户端获取用户隐私需求中的隐私数据类所对应的实例,转化为实例断言公理φ;组合者持有服务输入和前置条件中的隐私数据集。首先,用户向服务组合者发送服务请求,服务组合者收到用户的服务请求后,向用户出示运行服务所要的隐私数据集{C1(op1),…,Ci(opi),…,Cn(opn)} 。此时,探测服务组合者所要求的隐私数据集是否满足用户的隐私需求,具体过程如下:
(1)针对隐私项是否满足用户的隐私实例断言公理,即:φ ⊧Ci(opi);
(2)针对隐私数据集是否满足PDC;
(3)检测此隐私数据集是否与服务的输入与前置条件语义等价:
(4)是否存在冗余的隐私数据,即:
用户端将检测结果发回给服务端,如果检测内容(1),其结果为φ|≠Ci(opi),服务端采用本体树搜索算法,找到其兄弟节点brother( )Ci(opi) ,用兄弟节点替换节点Ci(opi),直到满足用户隐私实例断言公理φ,然后检测是否满足(2)。假若搜索完所有的节点也不能满足φ,则用户发送消息要求服务组合者重新绑定服务。
检测内容(3),如果隐私暴露集PDC与服务的输入和前置条件在语义上不等价,服务组合者重新绑定服务,并将所需暴露的隐私数据返回给用户进行检测(1)。
检测内容(4),如果存在冗余的隐私数据,Ci(opi)⋂PDC ≠φ。此时,服务组合者根据用户的需求去掉冗余,并将此结果返回给用户确认,并得到隐私增强集,即协商成功。
当用户与服务组合者进行隐私增强集协商成功以后,得到了Ci(opi)序列,即{C1(op1),C2(op2),…,Cj(opj),…,Cn(opn)} 。对于用户而言,此序列中的每个Cu(opu)都有隐私暴露约束P,即Cu(opu)↦P;对于服务提供者,此序列中的每个Cs(ops)都有隐私披露约束P,即Cs(ops)↦P;P描述了Owner使用隐私数据的具体行为约束和时间约束,如:传递的Owner,有效使用时间等。
定义4(隐私约束映射SM(Pu≅PsMapping))隐私披露/暴露约束的语义映射满足如下条件:
(1)用户的隐私数据类的实例所对应的隐私披露约束与服务提供者的隐私数据类的实例所对应的隐私暴露约束之间等价,即Cu(opu)↦Pu≡Cs(ops)↦Ps。
(2)用户的隐私数据类的实例所对应的隐私暴露约束包含服务提供者隐私数据类的实例所对应的隐私披露约束,即Cu(opu)↦Pu⊏Cs(ops)↦Ps。
隐私披露/暴露约束的交换过程也是隐私约束的映射过程。首先,服务组合者所对应的服务端根据隐私增强集协商所得到的隐私约束的交换序列,向用户端发送隐私披露约束P1s,用户端收到以后,启动推理机对用户和服务提供者之间的隐私约束关系Pu≅Ps进行推理,其推理结果有三种情况:
2.2 面向服务交互过程的隐私监督
定义5(隐私暴露监督动作[17-18])假设Ci为隐私项的本体概念名,D 为本体概念,则隐私概念的定义式可以表示为Ci≡D。对于概念定义式所组成的有限集合T ,如果每个概念名最多在T 中某个概念定义式的左边出现一次,则称T 为P_TBox。给定某个P_TBox,设NA为原子动作名所组成的集合,可以将原子隐私暴露监督动作定义为:
其中:
(1)α ∈NA为所定义的原子动作名;
(2){C1(op1),C2(op2),…,Cj(opj),…,Cn(opn)} 为SaaS服务所请求的用户隐私项所组成的有限序列;
(3)D 为委托授权声明所组成的有限集合,表示执行某个动作所必须满足的前提条件;
(4)P 为隐私断言所组成的有限集合,表示执行某个动作所产生的结果;
(5)D和P满足:φ ∈P →φ¬∈D。
对于隐私暴露监督动作定义式所组成的任何一个有限集合P-A,如果每个隐私暴露监督动作名最多在PA中某个隐私暴露监督动作定义式的左边出现一次,则称P-A为P-AABox。
当服务组合者BPEL调用外包服务时,SaaS服务向服务组合者请求用户的隐私数据作为服务的输入和前置条件。为了分析SaaS服务是否拥有获取用户隐私数据的权限并是否按照隐私策略使用用户的隐私数据,服务组合者需要对SaaS 服务进行分析以及对SaaS 服务使用用户隐私数据的过程进行监控。设隐私暴露监督动作π ≡α[C1(op1),C2(op2),…,Cj(opj),…,Cn(opn)],即π ≡request(O,pa),其中request(O,pa)表示SaaS 服务从服务组合者获取隐私数据的过程,pa 表示隐私数据P的一个实例,即:
Request(O,pa)≡({O,pa,composerServer(pa),¬owns(O,pa)},{¬composerServer(pa),owns(O,pa)})
因此,隐私可满足性分析过程可以通过以下两步进行描述:
步骤1 检测是否为授权的SaaS服务:( D?;π)*;¬D?;如果是,则执行动作π ,即返回相应的隐私数据给SaaS服务。如果此SaaS 服务为非授权服务,则不执行动作π ,即拒绝暴露隐私数据给此服务提供者。此时,服务组合者将调用其他候选服务进行授权检测,直到满足相应的授权规则为止。
步骤2 对SaaS 服务的执行进行监控:(P?;ok)⋃(?P?;cal l(SLA))。其中,ok 表示满足Mapping(Pu≅Ps),服务组合者继续调用其他服务并重复此过程;call(SLA)表示如果SaaS 服务违反了隐私暴露约束,即使得隐私暴露约束为假,此时调用SLA中对应的惩罚机制进行惩罚。同时继续执行BPEL 流程,如果捕获到invoke 标签,则回到步骤1。
定义6(BPEL-隐私约束转换)根据云服务组合流程BPEL 在执行过程中服务参与者之间的协同交互关系,得到相应的隐私披露约束:
(1)根据receive活动的输入和前置条件获取Owner所要求用户提供的隐私数据,Pi:{Ox,Oy} ;
(2)根据invoke 活动,得到用户隐私数据的传递关系,即由某个Owner传递给某一个Owner,Pi:{Ox→Oy} 。
(3)根据Wait 活动,获取Owner 对用户数据的持有时间Pi:≤vt。
定义7(面向隐私的服务演化分析)服务组合流程不满足用户的需求,有3种操作,分别为删除、添加和替换,而替换的过程可以分解为删除此服务和增加满足用户需求的服务两个操作。
当删除某个服务时,分为4种情况进行讨论:
(1)当服务组合流程图中被删除服务的入度为0时,即deg+(v)=0 ,对应的演化监控断言可以表示为:if(deg+(v)=0){try{Φ}},其中deg+(v)表示此服务所对应节点的入度,Φ 表示什么也不用做。
(2)当服务组合流程图中被删除服务的入度为1时,即deg+(v)=1,对应的演化监控断言可以表示为:if(deg+(v)=1){try{forall:≤0(vt)ΘA from(pre-A)}},其中vt表示服务A 使用用户隐私信息的时间,pre-A 表示A 的前驱服务。
(3)当服务组合流程图中被删除服务的入度大于等于2时,即deg+(v)≥2,对应的演化监控断言可以表示为:
(4)当服务组合流程图中被删除服务的出度为0时,即deg-(v)=0 ,对应的演化监控断言可以表示为:
当添加某个服务时,分为两种情况进行讨论:
(1)当服务组合流程图中被添加服务的出度或者入度为1时,即( deg-(v)=1) ∨( deg+(v)=1) =ture,对应的演化监控断言可以表示为:
(2)当服务组合流程图中被添加服务的出度或者入度大于等于2 时,即( deg-(v)≥2 )∨( deg+(v)≥2) =ture,对应的演化监控断言可以表示为:
3 实例研究
王同学(Wang)想通过SaaS服务组合者C向Alibaba的服务提供者教学用品公司S 购买一批教学用品。其中S为Alibaba的非VIP用户。
Wang对非VIP用户的隐私策略为:
(1)如果暴露自己的真实名字RN,则只能暴露自己的办工室电话号码OP,并且地址中不能带有社区信息。
(2)名字RN、不带社区信息的地址AWC 和电话号码OP只能提供给快递公司或邮局。
(3)在交易完成后,C、Alibaba和所有服务参与方必须在20分钟内自动清除所有用户隐私信息。
Alibaba对于非VIP用户家具公司S,其隐私策略为:
(1)C 只允许S 将Wang 的名字RN、不带社区信息的地址AWC和电话号码OP提供给快递公司或邮局。
(2)在交易完成后,S 和所有服务参与方必须在15分钟内自动清除所有用户隐私信息。
假设在交易过程中,Alibaba不能满足Wang的功能需求,需要将Alibaba 替换为JD,Wang 要求在服务替换过程中,保证其隐私数据的安全。
组合服务由服务组合者C,在线购物平台A(Alibaba),顾客(Wang),售货商Seller(SE),快递公司Shipper(SH),4个协作单元组成,其中Wang的姓名N(name),家庭住址AD(address),邮编PC(postcode),电话PH(phone),银行账号等是其个人隐私数据,本文假设用户采用货到付款的方式。
步骤1 隐私协议的生成
根据SaaS 服务组合者C 得到所需用户的隐私数据集{s ubject:name} 并赋值:
userName(Wang);RN(Wang);Stree(YUDAO STREET);City(NANJING);Province(JIANGSU);Country(CHINA);OP(+86-0258686866)∪Mobile(+86-123456789);PC(210016)
用户Wang的隐私需求可以得到实例断言公理φ,即:
φ=∃hasRN.Name(Wang)⊓AWC(YUDAO STREET,NANJING CITY,JIANGSU PROVINCE,CHINA)⊓hasOP(Wang,+86-0258686866)
其中非原子概念AD和AWC可以表示为:
根据Tableau算法的展开规则、∃规则、∀规则和⊓规则,可以得到φ=Wang,YUDAO,NANJING,JIANGSU,CHINA,+86-0258686866,没有冲突。由定义2可知Wang的RN 与mobile 或者与AD,即{R N,Adress} 和{RN,mobilePhone} 为隐私暴露集。由定义3可知{RN,AWC,OP} 恰好是Wang的一个隐私增强集。假若此用户Wang不想暴露自己的办公室电话号码,此时服务无法执行,则不是隐私增强集。
为了简化隐私暴露约束,对于非VIP 用户,省略serverConstr 部分。根据用户的隐私需求可以得到隐私暴露约束:
因此,隐私策略的详细协商过程如下:
(1)预协商阶段:Wang通过云服务组合者C向Alibaba的服务提供商家具公司S发出教学用品的请求,C收集服务交易过程中所需的隐私数据,并将收集后的隐私数据集{ }RN,AD,OP 通过客户端的算法Tableau(Ci(opi),φ)进行隐私增强集协商。在此过程中发现{ }RN,AD 为隐私暴露集,因此,隐私数据Address 不满足客户的隐私暴露断言φ,即φ|≠AD。此时,利用函数brother( )
AD得到AD在本体树中的兄弟节点AWC,然后重复上述过程。发现{RN,AWC,OP}满足用户非隐私暴露集,并且可以使服务组合正常运行,即PDC ≡(service(input)⋃service(pre )_condition) ,同时,没有冗余的隐私数据,即subject:name ∩PDC ≠φ。此时,获取隐私增强集。
(2)隐私披露约束的交换阶段:当隐私增强集{RN,AWC,OP}后,利用Reasoner()进行隐私披露/暴露约束的语义映射。根据Wang 与服务提供者对隐私披露/暴露约束的定义可知,Wang服务提供者的隐私暴露约束比Wang 的隐私披露约束更严格,即,故获取隐私协议。
步骤2 面向隐私协议的监督
委托授权声明D可以表示为:
D=(credit ≥6 000)⊗Bank∨(reputation ≥600)⊗Amazon
根据用户与C的隐私协议协商,可以得到隐私暴露约束P如下:
由分析可以得到,电子商务服务仅仅拥有用户的名字(RN)、不带社区信息的地址(AWC)和电话号码(OP),并且电子商务服务仅仅把这些隐私信息发送给卖家,而没有给其他的商家;同样,卖家也是仅仅拥有这些用户隐私信息,并且仅仅发送给了快递公司;快递公司也是仅仅拥有用户的这些隐私信息,并没有发送给其他任何商家,仅仅将货品发送给客户。
隐私协议监督机制有委托授权声明DS检测和隐私暴露断言P监控两部分。采用插桩的方式分别将D和P插入SaaS 服务组合流程BPEL 中服务调用之前和之后的位置,对BPEL流程中SaaS服务的执行进行权限检测和隐私协议监控。由于对SaaS 服务执行流程BPEL 的拥有者C 来说,为服务组合者,因此不用检测C 的使用权限,并且其Scope为全局的,一定为服务。因此,只须对流程执行过程中是否遵守了隐私协议进行监控即可。为了减少监督服务对SaaS服务执行在时间上的影响,将隐私协议监督器(监控隐私暴露断言PDAi)与BPEL流程并行执行,如图2所示。
针对C,A,SE和SH的监督取证,首先,检测委托授权声明( D?;π)∗;¬D?,如果DAS 为真,则执行π ,同时启动监督器对服务的执行过程进行监督取证。具体的检测与监督过程如下:
图2 监督过程的BPEL表示
(1)C
Request(C,RN)≡({C,RN,User(RN),¬owns(C,RN)},{¬User(RN),owns(C,RN)})
Request(C,AWC)≡({C,AWC,User(AWC),¬owns(C,AWC)},{¬User(AWC),owns(C,AWC)})
Request(C,OP)≡({C,OP,User(OP),¬owns(C,OP)},{¬User(OP),owns(C,OP)})
同时,启动监督器Supervise C,即匹配隐私暴露约束:P1=RN:C ∧( C →A );P2=AWC:C ∧( C →A );P3=OP:C ∧( C →A )。
(2)A
Request(A,RN)≡({A,RN,C(RN),¬owns(A,RN)},{¬C(RN),owns(A,RN)})
Request(A,AWC)≡({A,AWC,C(AWC),¬owns(A,AWC)},{¬C(AWC),owns(A,AWC)})
Request(A,OP)≡({A,OP,C(OP),¬owns(A,OP)},{¬C(OP),owns(A,OP)})
同时,启动监督器Supervise A,即匹配隐私暴露约束:
(3)SE
Request(SE,RN)≡({SE,RN,A(RN),¬owns(SE,RN)},{¬A(RN),owns(SE,RN)})
Request(SE,AWC)≡({SE,AWC,E-commerce Service(AWC),¬owns(SE,AWC)},{¬A(AWC),owns(SE,AWC)})
Request(SE,RN)≡({SE,OP,A(OP),¬owns(SE,OP)},{¬A(OP),owns(SE,OP)})
同时,启动监督器SE,即匹配隐私暴露约束:
(4)SH
Request(Shipper,RN)≡({SH,RN,SE(RN),¬owns(SH,RN)},{¬SE(RN),owns(SH,RN)})
Request(SH,AWC)≡({SH,AWC,SE(AWC),¬owns(SH,AWC)},{¬SE(AWC),owns(SH,AWC)})
Request(SH,RN)≡({SH,OP,SE(OP),¬owns(SH,OP)},{¬SE(OP),owns(SH,OP)})
同时,启动监督器SH,即匹配隐私暴露约束:
最后,检测定时器Wait所对应的隐私暴露约束:
步骤3 演化监控
假设服务组合流程中,由于电子商务服务A 不满足用户的需求,需要发生演化,即将A(Alibaba)替换为E(JD),假设服务A的入度为1,即deg+(v)=1,那么对应的演化监控断言可以表示为:
同时,由于服务组合流程图中被添加服务E的出度和入度都为1,即,则对应的演化监控断言可以表示为:
4 结束语
本文提出了一种隐私数据的描述、隐私策略的协商与监督机制。在SaaS 服务组合过程中,针对明文交互与演化的特征,为保证用户隐私需求的一致性和可满足性提供了一种理论依据和实现方法,该方法能够有效地增强用户隐私信息的安全。下一步将针对监督日志进行分析,以保证与时间相关的隐私信息安全。