Distributed System 基础(四)隐私性(Privacy)

当我们谈到网络的隐蔽性时,我们首先会想到一个例子的是隐身浏览(或者称为私人浏览)。这是浏览器提供的确保本地用户隐私的方式,比如:不记录搜索历史等。我们分布式系统所分析的隐私性是指全局隐私,指对网络提供商,government等的匿名性。

1 TOR 匿名系统

TOR全名:The Onion Routing。其基本思路是:如果我们在全世界范围内有着大量的某种服务器(称为TOR路由器,大约有8000个),如果有人想要连入网络,浏览网页,那么他首先需要连入一个叫做Guard的路由器,之后再连入一个类似的路由器,最后连入一个叫Exit Point的路由器。为了在TOR中路由,至少需要这么三个路由器,并且每个路由器都可以在世界的不用地点。

  1. Guard:Guard路由器知道你是谁,从哪里来的,但它并不知道你的请求要去哪里,你要访问什么网站
  2. 中间部分的路由器:什么都不知道
  3. Exit Point:知道你这个请求要去哪里,但不知道你的信息,不知道你从哪里来的。

我们如何做到这样的呢?

我们假设有n个keys(n>=3)并且将我们的请求用首先用gif.latex?k_%7Bn%7D加密,然后用gif.latex?k_%7Bn-1%7D.....直到gif.latex?k_%7B1%7D,建立一个类似洋葱一样的分层结构。通过这种方式,Guard将使用gif.latex?k_%7B1%7D解密,中介路由器用gif.latex?k_%7B2%7D...gif.latex?k_%7Bn-1%7D。Exit Point用gif.latex?k_%7Bn%7D解密。所以我们是如何构建这种连接的呢?

首先,我们希望确保尽可能匿名,这样我们就不能将我们的私钥(如果我们有的话)共享给Guard,相反,我们使用一个协议,使Guard和我们能够制作密钥。这种类型的协议确保了以下两件事:

  1. 完成后,只有我们和Guard知道key是什么
  2. 即使有一个恶意的过程试图看到Guard和我们之间的“对话”,这个过程也无法从被盗的数据中获得任何信息

其中一个最为有名的协议称为:Diffie-Hellman

2 Diffie-Hellman协议

有两个人,gif.latex?g_%7B1%7Dgif.latex?g_%7B2%7D,他们想要分享一个秘密。他们都分别想到一个数字,a和b。gif.latex?g_%7B1%7Dgif.latex?g%5E%7Ba%7D发送给gif.latex?g_%7B2%7Dgif.latex?g_%7B2%7Dgif.latex?g%5E%7Bb%7D发送给gif.latex?g_%7B1%7D。所以gif.latex?g_%7B1%7D可以计算gif.latex?%5Cleft%20%28%20g%5E%7Bb%7D%20%5Cright%20%29%5E%7Ba%7Dgif.latex?g_%7B2%7D可以计算gif.latex?%5Cleft%20%28g%5E%7Ba%7D%20%5Cright%20%29%5E%7Bb%7D,并且很容易看到gif.latex?%5Cleft%20%28%20g%5E%7Bb%7D%20%5Cright%20%29%5E%7Ba%7D=gif.latex?%5Cleft%20%28g%5E%7Ba%7D%20%5Cright%20%29%5E%7Bb%7D=gif.latex?g%5E%7Bab%7D。我们可以有把握地假设,从gif.latex?g%5E%7Ba%7Dgif.latex?g%5E%7Bb%7D等等开始,来重建一个a是非常困难的,这是由于g操作背后的复杂性。为了在用户和Guard之间选择key,我们不完全使用Diffie-Hellman,而是一个被称为:Authenticated Diffie-Hellman的扩展

 3 Authenticated Diffie-Hellman

 两个角色:User和Guard,user知道guard的公钥。因此,用户可以使用这个密钥gif.latex?E_%7Bpk%7D%5Cleft%20%28%20g%5E%7Ba%7D%20%5Cright%20%29发送一个加密的信息。Guard回复gif.latex?g%5E%7Bb%7D,gif.latex?H%5Cleft%20%28%20g%5E%7Bab%7D%20%5Cright%20%29 | “Handshake”。当user得到这个消息时,我们可以计算gif.latex?g%5E%7Bab%7D并且通过hash这个值来检查这个协议是否工作正常。这个版本被叫做authenticated是因为用这种方法user能确定他在于guard通信,而在初始版本里我们容易受到中间人的攻击。

4 为什么用TOR,谁在用TOR?

如果某个用户使用了TOR环境,那么它也将成为其中的一个节点,这就意味着有时他也可能是Guard或者Exit Point。因此,我们可以知道谁在建立一个连接或一个连接要连接到哪里。这意味着我们能通过研究知道,从统计的角度来看,为什么要用TOR,以及谁在用TOR

5性能

互联网中最重要的两个指标是延迟和带宽。很明显,使用这个方法会使用户失去一些性能,尤其是延迟。因为在理论上,如果所有的路由器都有良好的连接,用户就不会失去带宽,但这是不太可能的。

 6 Attack

如果某人是Guard和Expoint的持有人,那么他将可以进行大量攻击,最常见的是traffic analysis。你可以检查信息的模式,比如看到一个数据包到达您的一个节点,然后在一秒钟后到达另一个节点。如果这种情况经常发生,你可以了解用户是谁,网站在哪。显然,很难同时拥有系统的起点和终点。

现在有系统能保证Guard和Exit Point在世界上的两个地方(不是100%保证,但是是很大的概率)

另一种攻击是来自website的,网站可以根据浏览器用来发送信息的方式来去匿名化信息。当浏览器连接到一个网站时,它会发送大量的信息,如果你收集了所有这些信息,你就可以定位别人了。这意味着一个网站可以找到两个浏览器以相同的方式交互,他们最有可能来自同一个人。这并不打破匿名,而是叫伪匿名(该网站不知道你,但也知道你是同一个人)

为了避免这种攻击,用户可以使用一个总是发送相同信息的浏览器,它是基于火狐浏览器的TOR浏览器。

7 服务隐私性(暗网dark web)

TOR也可以用来隐藏服务。我们已经看到了一个用户被隐藏起来的例子,但是TOR也可以确保网站的隐私。我们的想法是,我们有两个参与者,一个用户和一个隐藏的服务(hidden service)。如果用户想要连接到一个隐藏的服务,首先他必须使用TOR连接一个名为directory server的TOR路由器。隐藏的服务也同样这样做。结果是,directory server不知道我们在哪里,不知道我们是谁,也不知道我们请求的网站在哪里。目录服务现在选择另一个名为“rendez-vous point”的路由器,然后用户和隐藏服务使用TOR与rendez-vous point(像代理一样)进行通信。directory server每天都在更改。

如何定位一个隐藏服务?

一般情况下,用.onion域,只能通过与directory server通信来解决,用这种域名的被称为暗网(dark web)

8 VPN

VPN最初的创建并不是为了隐私性,而是将本地网络虚拟化为非本地网络。即,即使你没有从网络那里连接,你也能成为该网络的一个节点(举例:VPN能让你在家也能连入校园网)。如果我们想用VPN连入网络,我们与远程服务器建立连接,然后通过该远程服务器,连接网站,隐藏我们的IP地址。这意味着,中间节点能知道我们的一切信息。

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值