赵睿斌,张道德,杨绍亮,江伟玉
1.国家信息中心,北京 100045
2.华为技术有限公司,北京 100095
近年来,隐私的关注度持续在上升。根据Global Web Index的调查结果显示,在2018年全球有大约四分之一的网民使用VPN技术来保护自己的上网隐私[1]。 除此之外,匿名P2P、Tor、Freenet技术使用需求也在逐年上升。 特别是随着欧盟的《通用数据保护条例》[2](General Data Protection Regulation,GDPR)、美国的《加利福尼亚州消费者隐私法》[3]和我国的《中华人民共和国网络安全法》的发布,个人信息隐私保护越来越受到重视。欧盟的GDPR,美国的消费者隐私法,中国的网络安全法都关注个人隐私,违反个人隐私保护的数据控制者和处理者将面临巨额罚款。例如,2019年1月Google被法国开出5000万美元的罚款[4]。
基于IP协议的网络作为数据世界的管道,在构建万物互联的世界中扮演重要角色。在IP协议中,IP地址作为一种网络主机标识符,常常跟主机绑定(比如,IPV4地址中的主机号以及IPV6地址中接口标识符)而主机常常和用户进行绑定,从而IP地址蕴含着用户的身份隐私。IP地址不仅携带了用户的身份隐私,即在同一时间段内可以在全网唯一标识一台主机,而且还携带位置信息,比如IPV4地址的网络号以及IPV6地址的前缀信息都蕴含着主机所在的网络位置。除此之外,出于路由寻址目的不得不随包携带IP地址,造成链路上所有途径的网络设备、链路窃听者以及目的网站都可以轻而易举地获得该标识符。
由于IP地址的易获取性以及IP地址蕴含着大量的隐私信息,链路上的非法监听者以及不可信的目标网站很容易获取该信息并加以利用从而来分析用户隐私。 常见的隐私分析方式有以下几种:(1)位置隐私分析。比如,用户Alice某日登录了某款应用程序APP_B,并且使用IP地址IP1填写了家庭住址。此时如果应用程序APP_B是恶意的话,它很容易可以得出IP1属于XX镇或者XX校区,IP1的地理范围跟Alice的家庭住址范围一致。如果用户Alice用IP地址IP1访问应用程序APP_B时,说明用户Alice在家。除此之外,当Alice在日常生活中不经意地在不同地点使用不同的IP地址访问APP_B时,应用程序APP_B可以很容易地刻画出Alice的生活轨迹。(2)身份隐私分析。比如,用户没有使用用户账号访问某网站时,用户依然可能会被网站识别,网站可以根据IP地址将用户过去的网络活动和当前的网络活动进行关联,分析用户隐私,向用户定向推送垃圾广告或者不良信息,或者根据IP地址可以关联该用户在其他网站的注册信息。 再比如,目前在浏览器访问的网页中,通常除了访问的主网页以外,还嵌入了多个第三方链接,多个服务器可以根据数据包中提取的IP地址进行关联分析。用户A手机在某段时刻使用IP地址访问W1网站,并且在同一时间段使用相同IP地址访问W2网站,如果W1和W2属于同一母公司或者W1和W2的提供商是共享数据的合作方,那么用户在W1和W2中的行为就可以被关联。如果用户在W1中注册了实名身份信息,那么W2根据IP地址就可以关联出用户的真实身份信息,从而带来隐私泄露问题。
IP地址作为个人信息的一部分,其隐私保护技术在工业界和学术界得到了普遍的关注。尽管网络隐私保护被研究了多年,并提出了众多的IP地址隐私保护技术,但是依然存在诸多不足。例如,Passport[5]和ISP[6]隐私方案能够提供源 IP 地址的隐私,但是不能隐藏发送者ISP的位置信息。Mailbox[7]通过提供多个代理位置来为多个IP地址接收数据分组,可以隐藏接收者的真实IP地址,但是并没有提供发送者的隐私保护。为应对IPv4地址空间不足而生的网络地址转换技术NAT虽然也提供了一定的隐私保护特性,但是NAT技术需要维护逐流的状态,开销比较大。另外NAT技术没有提供前缀隐私,攻击者依然可以根据IP包中的IP地址获得主机的位置信息,而且NAT没办法处理外部网络主机主动发起的流量。基于洋葱路由的Tor[8]匿名网络对数据包的源和目的地址进行了隐藏,洋葱网络的每一个节点只知道传输数据包的上一个节点和数据包将被转发的下一个节点,从而提供了很好的IP隐私保护。但是洋葱网络需要源主机提前规划好洋葱路由的路径,并且层层加密的方式开销较大,经过的洋葱路由节点越多,带来的延迟就会越大。另外,其加密的地址需要放在应用层数据中,而洋葱路由不能根据直接网络层IP地址进行转发,上层协议的解密同样也会带来延迟。对于出口节点,同样需要维护状态。IETF也有多项针对IPV6地址隐私保护的工作,但是大部分工作(如临时地址[9,11-13]、基于公钥的密码方案CGA[14]、无状态接口方案[10,15]等)聚焦在后64位的接口标识符隐私,没有考虑前缀隐私,并且其方案无法做到逐流的隐私保护。即,在同一段时间内,链路窃听者以及目标网站依然可以根据IP地址关联用户在不同网站的活动、以及在不同时间的网络活动。而实际上,5G网络的IPV6 PDU Session使用唯一的前缀作为发送者的标识符,并且在共用同一IPV6前缀的用户比较少的情况下,前缀隐私同样需要提供保护。
综上所述,暴露在数据包头部中的源IP地址存在身份隐私泄露和位置隐私泄露的双重安全威胁。为了解决上述问题,在本文中提出了一种终端设备与网络设备协同的IP隐私保护技术方案。在该方案中,网络设备对IP地址等隐私信息进行实时混淆,能够达到逐包级的IP隐私保护,防止隐私好奇者通过窃听或收集IP报文来实施隐私攻击。该技术在同时兼顾隐私保护、路由高效寻址、审计追踪等需求的情况下,不但消除当前IP地址耦合身份和位置双重语义的障碍,而且还对身份标识符和位置标识符分别进行加密保护。
(1)对于身份标识符的加密保护。对于源主机身份ID的加密保护,主要由接入设备和边界网络设备(如边界路由器,核心交换机等)来执行实时的加密混淆。该技术对源ID实现完全隐私保护,源ID被加密保护,发往不同目的地的相同来源的源ID不可关联,被加密的ID仅可以被源域少数执行安全功能的网络节点(接入设备,审计设备,边界路由器等)解密出真实ID,而链路上的窃听者、目的接收者无法根据IP报文头部的源ID信息推断源端主机的身份信息。
(2)对于位置标识符的加密保护。 对于locator实现层次化加密保护,为了兼顾路由寻址,数据包不完全暴露完整位置信息,仅暴露部分用于路由寻址的前缀信息,由边界设备执行实时的加密混淆,使得隐私分析者无法根据IP报文头部暴露的位置信息推断出真实的小范围位置信息,也无法推断出两个数据包是否来自相同局域网。该技术可以做到同一个主机在不同时间发往不同目的地的IP地址是不一样的,从而防止攻击者根据IP地址来获得用户具体的位置信息,并且防止攻击者推断出同一局域网的两个IP报文属于相同的地理位置,从而很好的保护了用户的位置隐私。
除此之外,将技术方案可以应用到两种源IP地址隐私需要保护的场景中,一个场景是面向运营商的用户IPV6地址隐私保护场景,另一个是面向云服务的租户IP隐私保护场景,并针对此两个场景给出具体的详细的方案介绍。
文章组织结构如下:在第1章节中,主要介绍IP地址隐私保护技术的系统方案设计;在第2章节中,会将IP地址隐私保护技术应用到两个使用场景中,一个场景是IPV6地址的隐私保护场景,另一个是面向云服务的租户IP地址隐私保护场景;最后,第3章节是对全文的总结。
本文主要解决的是IP头部隐私泄露问题,即:解决如何让目标网站不能根据IP地址分析源主机的身份隐私和位置隐私。 涉及源终端主机、终端侧路由器、边界路由器(或靠近目的端路由器)以及目的端主机(一般为服务器)等设备。源终端主机在发送IP数据包到目的服务器的过程中,其源IP地址会经过路由器无状态转换,主要包括两个转换操作:(1)终端侧路由器对主机标识符进行加密混淆,使得同一主机发往不同的目的服务器的源IP地址中的主机标识符不一样。(2)边界路由器(或靠近目的端的路由器)对含有位置信息的内部定位符进行加密混淆,并使用自身的定位符作为新的外部可见定位符,从而可以防止不可信目的端设备分析得到源主机的位置隐私。
本方案的主要目的是保护源IP地址的隐私,防止不可信网络设备或者窃听者分析出终端主机隐私。终端主机、路由器、服务器三类设备(见图1)相互合作来达到保护源IP地址隐私的目的,具体工作如下:
图1 技术方案涉及的设备Fig.1 The devices involved in the solution
(1)源主机与终端侧路由器建立安全连接,加密传输数据包,如采用二层加密,数据包的IP地址被隐藏,从而可以防止源终端主机到终端侧路由器这段链路的窃听者分析终端隐私。
(2)终端侧路由器在收到数据包时,对源主机的主机标识符进行混淆,从而能够防止终端侧路由器到边界路由器之间的链路窃听者识别终端并进行关联。
(3)边界路由器在收到数据包时,对源定位符和主机标识符同时进行加密隐藏,从而能够防止边界路由器到达目的服务器链路上的窃听者以及目的服务器识别主机、获取终端主机的位置信息,对主机网络活动进行关联。
本文中的核心设备为主要是路由器,但是不限于路由器,也可以使具备数据包转发功能的交换机、接入网关等网络设备。核心装置需要增加支持常用的密码算法,能够使用密码算法对IP地址进行处理。
接下来以核心设备是路由器为例,来具体介绍的。流程主要体现在IP数据包的转发过程中。方案中将数据包的主机标识分成定位符和主机标识符,定位符和主机标识符可以作为数据面的主机标识。数据面的数据包头部字段包括源定位符SrcLoc和源主机标识符SrcID、目的定位符DstLoc和目的主机标识符DstID。
对于终端主机发出的数据包,由数据包途径的源域的网络设备对IP数据包头部进行处理,大致分为三个部分:主机构造数据包发送数据包给终端侧路由器Router1,终端侧路由器转发数据包给边界路由器Router2,以及边界路由器转发数据包。具体流程请参考图2。
图2 数据包转发流程Fig.2 Packets transferring process
(1)终端主机构造数据包,其中IP数据包头头部含四个字段,即,SrcLoc、SrcID、DstLoc以及DstID。其中,源定位符SrcLoc=LocE,长度为x位,可以根据SrcLoc找到连接终端主机的路由器。SrcID=HIDE是主机标识符,长度为y位,可以由靠近主机的终端侧路由器根据该标识符确定对应的主机。DstLoc=LocS是目的主机的定位符,DstID=HIDS是目的主机的标识符,DstLoc和DstID连接起来可以是目的主句的IP地址(即,LocS||HIDS)。终端设备发送构造的数据包给终端侧路由器Router1。
(2)当终端侧路由器Router1收到终端设备发送的数据包时,终端侧路由器Router1会对出向流量中数据包的处理如下:终端侧路由器Router1收到数据包后,提取出IP包头中的源主机标识符SrcID=HIDE,利用秘密参数SK1以及DstLoc和DstID对SrcID进行混淆从而得到混淆后的主机标识符EHID, EHID的长度也是y位。使用EHID替换掉数据包中的SrcID字段的数值。转发数据包。
(3)当边界路由器Router2收到Router1转发的终端设备发送的数据包时,边界路由器Router2会对出向流量中数据包的处理如下:边界路由器Router2在收到数据包后,提取出数据包中的源定位符SrcLoc和源主机标识符SrcID(即EHID),利用其秘密参数SK2对SrcLoc||SrcID进行混淆从而得到EIP,其中EIP的长度为x+y位。 添加外部定位符OutLoc,从而构造新的源标识符=OutLoc||EIP,将OutLoc和EIP作为新的源标识符(定位符和主机标识符)放在数据包头部对应的字段。转发数据包。
对于目的服务器返回给终端主机的数据包,主要包括两个部分:边界路由器Router2转发数据包给终端侧路由器,终端侧路由器Router1转发数据包给终端主机。
(1)边界路由器Router2在收到数据包后,提取目的主机标识字段的EIP,使用SK2对EIP进行解混淆,得到解混淆后的消息,并从中提取出x位数值作为目的定位符DstLoc=LocE,提取出目的主机标识符DstID=EHID,将DstLoc和DstID分别放在数据包头部的目的定位符和目的主机标识字段中组成目的地址innerLoc=LocE||EHID,根据innerLoc标识转发数据给终端侧路由器Router1。
(2)终端路由器Router1在收到数据包后,从数据包中提取源主机标识字段SrcLoc=LocS和SrcID=HIDS,以及目的主机标识字段DstID=EHID。接着利用秘密参数SK1以及辅助输入LocS和HIDS对DstID进行解混淆从而可以得到新的DstID=HIDE。将数据包中目的主机标识字段的更新为计算得到的HIDE。转发数据包。
截止目前有众多的IP地址隐私保护方案,我们的方案与这些方案的不同之处如下所述:
(1)Mailbox代理方案:Mailbox通过提供多个代理地址来为多个 IP 地址接收数据,从而隐藏接收者的真实IP地址。而我们的方案中,不需要维护多个代理地址。
(2)NAT技术:NAT对所有流经NAT设备的出向流量进行处理,将数据包源地址字段的地址(内网地址)替换成公网可路由的外部地址,并分配一个源端口号、替换掉数据包的源端口号。NAT需要维护逐流的状态,即需要维护转换前内网地址、端口号以及转换后的外网地址及端口号的映射关系,以便在收到返回数据包时,能够正确转换。而我们的技术不需要维护映射关系表,而是维护一个秘密参数,分别对数据中的数据进行混淆。
(3)ISP隐私方案[6]:与NAT技术类似,不再赘述。
(4)洋葱路由的Tor匿名网络:洋葱网络对数据包的源和目的地址进行了隐藏,洋葱网络的每一个节点只知道传输数据包的上一个节点和数据包将被转发的下一个节点。仅洋葱网络的入口节点知道源主机的IP,但是不知道目的IP。仅出口节点知道数据包的目的IP,但是不知道源IP。洋葱路由依赖于洋葱网络的节点对数据包进行层层加密和解密。而我们的方案中,我们只需要对源地址中的部分字段进行加密,而对数据不加密。
(5)IPV6地址隐私[16-17]保护的工作:工作聚焦在后64位的接口标识符隐私,没有考虑前缀隐私。而我们的技术对接口标识符隐私和前缀隐私都进行了保护。
本文介绍的技术方案可以应用到多种IP地址隐私需要保护的场景,在此章节中介绍两个场景:一个场景是IPV6地址的隐私保护场景,另一个是面向云服务的IP隐私保护场景,并针对此两个场景给出具体的技术方案。
本技术方案可以应用在IPv6地址的隐私保护方面,源主机所在运营商网络的路由设备负责对IPv6地址进行转换,从而提供隐私保护能力。其中,终端侧路由器可以是第一跳路由器或者接入网关设备,边界路由器可以是边界路由器或者域内靠近目的主机的路由器。将128bit的IPv6地址分成四个部分:外部定位符位(x bit)、内部定位符位(y1 bit)、主机标识符位(y2 bit)、标记位(z bit)。
当运营商网络的路由设备接收到终端主机发出的出向流量的数据包时,运营商网络的路由设备进行如下处理(见图3):
图3 终端发送IPV6数据包时各设备处理流程Fig.3 Process of each device when the terminal sends IPV6 packet
(1)主机在发送数据包时,在源IP地址中设置标记位Flag,用于指示网络设备该流量的源IP地址是一个动态隐私IP。假设终端主机标识符为HIDE。主机发送的数据包的源IPv6地址字段中外部定位符可以使用padding进行填充,内部定位符为SrcLoc=LocE,主机标识符SrcID=HIDE。目的地址为DstIP=IPS。转发数据包。
(2)终端侧路由器在收到数据包后,对数据包的源IP地址进行处理:提取出源地址字段和目的地址字段,如果源IP地址中的标记位Flag被设置,并且Flag指示为需要对源IP地址加密,则提取出源主机标识符SrcID=HIDE,进行混淆计算分为两步:C=E(SK1, DstIP)=E(SK1, IPS), EHID=截取C的y2位数值⊕HIDE,其中E (·,·)是一个基于密码学的混淆算法,可以完全隐藏IPS, 其中SK1是终端侧路由器的密钥, DstIP=IPS是数据包中的目的IP地址,⊕是异或算法。将数据包中的源主机标识符SrcID值设置为EHID。转发数据包。
(3)边界路由器或者域内靠近目的主机的路由器对源IP地址进行处理:如果标记位Flag被设置为隐私地址,则对源定位符SrcLoc=LocE和源主机标识符SrcID=HIDE进行处理,计算得到EIP=F(SK2,SrcLoc||EHID),其中F(·, ·)是一个基于密码学的混淆算法,可以完全隐藏SrcLoc||EHID。其中,SK2是边界路由器的秘密参数。使用EIP替换数据包源IP地址的内部定位符和主机标识符的数值,使用该路由器的定位符OutLoc作为数据包源IP地址的外部标识符。转发数据包。
当运营商网络的路由设备接收到返回给终端主机的入向流量的数据包时,运营商网络的路由设备会进行处理:
(1)边界路由器或者域内靠近目的主机的路由器对数据包的目的IP地址进行处理:如果目的地址字段中的标记位Flag被设置为隐私地址,则提取内部定位符和内部主机标识符的混淆字段EIP,使用SK2对EIP进行解混淆,得到P= F-1(SK2, EIP)=SrcLoc||EHID,F-1为F的逆运算,将数据包目的IP地址中EIP字段替换成明文P=SrcLoc||EHID、将外部定位符字段设置成填充值,即,padding。转发数据包。
(2)终端侧路由器在收到数据包时,对目的IP地址进行处理:如果目的地址字段中的标记位Flag被设置为隐私地址,则提取出目的地址字段中的主机标识符EHID。使用SK1对EHID进行解混淆,C=E(SK1, SrcIP)=E(SK1, IPS),HIDE=截取C的y2位数值⊕EHID。将数据包目的主机标识符字段的数据EHID变为HIDE。转发数据包。
在IPv6地址的隐私保护方面,该技术方案具有以下优点:(1)提供IP地址隐私保护功能,对终端主机的IP数据包,不仅能够提供位置隐私保护能力,还可以提供身份隐私保护能力。不同的目的主机看到的同一源主机的地址是不一样的,不能通过合谋关联分析出同一源主机访问不同目的主机的流量。方案对定位符进行了隐藏,非法攻击者(如,目的端主机、外部链路窃听者等)无法根据IP地址分析出源终端主机的位置信息。除此之外,来自同一局域网的主机(相同明文定位符)即使拥有相同的内部定位符,得到的内部定位符密文是不一样的。目的端或外部链路窃听者无法通过同一局域网沦陷的主机位置信息及IP地址分析出两台主机来自同一局域网。(2)相比于传统的IPv4 NAT翻译技术,该技术方案无需维护逐流状态,无需维护逐主机状态。(3)相比于IPv6 前缀翻译技术,该技术方案可以抵抗关联分析,A和B属于同一局域网,但是目标服务器不能根据A的位置获得B的位置。
本文提出的技术方案可以应用在云环境中,部署了大量边缘节点的云服务提供商可以为其用户提供IP隐私保护能力。即在运营商不提供隐私保护能力的情况下,用户可以选择提供IPv6地址的隐私保护能力的云服务为其转发数据流量、并提供数据流量的IP地址隐私保护功能。如图4所示,云服务提供商部署了大量的边缘节点,有些边缘节点靠近终端用户,称为近源端节点,有些边缘节点靠近网站服务器,称为近目的端节点。终端用户设备(IPUE)在发送数据到目标网站(IPS1)时,可以选择云服务提供商的边缘节点为其提供服务,主要包括以下步骤:
图4 云服务的租户IP隐私保护原理图Fig.4 IP privacy protection scheme for cloud service
(1)终端用户设备使用离其最近的节点转发数据包(近源端节点IP地址为IPHW0),与该节点建立安全通道(如IPsec通道),将其所有外发的数据包通过该IPsec通道发送给近源端节点。其中,IP包内层IP头部的源地址字段包含隐私标识位Flag以及终端标识符HIDUE、目的地址字段为目标网站IP地址IPs1,IP包外层IP头部的源地址为终端用户设备的地址IPUE、目标地址为IPHW0。
(2)近源端节点在收到数据包时,先解封装IPsec数据包,获得内层IP头部的目的地址IPs1,根据目的地址IPs1选择离该目标网站最近的云服务提供商节点,即近目的端节点(IP地址为IPHW1),对内层的数据包进行IPsec封装,得到新的数据包:外层IP头部的源IP地址为IPHW0、目的地址为IPHW1,IP包内层IP头部不变,其源地址字段为终端标识符HIDUE、目的地址字段为目标网站IP地址IPs1。封装完成后转发数据包。
(3)近目的端节点在收到数据包时,先解封装IPsec数据包,得到内层IP数据包,并对内层IP包的源IP地址进行加密保护:①将对HIDUE进行混淆计算,计算分为两步:C=E(SK1, IPs1), EHID=截取C的y位数据⊕HIDUE,其中E(·, ·)是一个基于密码学的混淆算法,可以完全隐藏IPs1,⊕是异或算法,sk1是近目的端节点的秘密参数。最终得到混淆后的源主机标识符EHID。②查询定位符索引映射表,获得IPHW0对应的索引index0。对EHID||index0进行混淆运算,计算得到EIP=F(SK2, EHID||index0),其中F(·, ·)是一个基于密码学的混淆算法,可以完全隐藏EHID||index0。其中,||是连接符,SK2是近目的端节点的秘密参数。使用EIP替换数据包的源IP地址的后y1+y2位。并使用可以定位到近目的端节点的定位符替换掉源IP的前缀,即前x位。转发数据包。内层源IP地址的转换前后如图4所示。
当目标网站受到数据包后,会发送返回包给近目的端节点,近目的端节点转发数据包给近源端节点,近源端节点最后会将数据包正确转发给终端用户设备。近目的端节点的处理流程主要有以下四个步骤:(1)近目的端节点提取出数据包中的目的IP地址字段,使用SK2解混淆目的IP地址的后y1+y2位(即EIP),F-1(SK2, EIP)= EHID||index0。接下来利用SK1以及源地址SrcIP= IPs1进行运算C=E(SK1,IPs1)以及HIDUE=截取C的y位数据⊕EHID。从而可以得到HIDUE。(2)根据Index0,查询定位符索引映射表,获得索引index0对应的近源端节点的地址IPHW0。(3)将HIDUE||padding替换掉目的IP地址的后y1+y2位,将前x位替换成约定的填充位。设置Flag为隐私地址标识位。(4)采用IPsec封装目的地址转换后的数据包,发送给近源端节点。
在云服务的IP隐私保护方面,该技术方案具有以下优点:(1)可部署性强。该技术结合现有的IPSec技术,将IP地址隐私保护作为一种安全服务,由云服务提供商对终端主机的流量中的源IP地址进行加密隐藏。(2)提供了终端主机的位置隐私。目的主机看到的流量都是来自最靠近目的主机的云服务提供商的边缘节点,而无法得到终端主机的位置,具备非常好的位置隐私保护能力。(3)该技术保护终端主机的身份隐私,能够防止关联分析。每个目的端看到的同一终端主机标识符都是不一样的,无法将同一主机的不同网络行为进行关联。
在本文中,针对暴露在数据包头部中的源IP地址存在身份隐私泄露和位置隐私泄露的问题,提出了一种保护源IP地址隐私的方法。该方法可以防止不可信网络设备或者窃听者分析出终端主机隐私,包括终端主机IP地址包含的用户身份隐私以及位置隐私。基于身份(ID)与位置(locator)分离技术,设计了标识符加密混淆技术。该技术在同时兼顾隐私保护、路由高效寻址、审计追踪等需求的情况下,不但消除当前IP地址耦合身份和位置双重语义的障碍,而且还对身份标识符和位置标识符分别进行加密保护。除此之外,将技术可以应用到两种源IP地址隐私需要保护的场景中,一个场景是IPV6地址的隐私保护场景,另一个是面向云服务的租户IP隐私保护场景,并针对此两个场景给出具体的详细的介绍。
利益冲突声明
所有作者声明不存在利益冲突关系。