NSE Week 10: Privacy and anonymity

NSE Week 10: Privacy and anonymity

Privacy and Anonymity

Privacy is about you choosing what you let other people know which means keep confidentiality of information that you don’t want to share with others

However, Anonymity is about conceal your identity, the confidentiality of your identity, no one know what you are doing.

Privacy and anonymity on public networks

However, the confidentiality of both the data you want to transmit or your identity is exposed to Internet.

  1. Internet is designed as a public network

    • Devices in LAN can see your traffic
    • Intermediate routers can see all traffic that passes through them
    • Remember what we leanred in CIS? Email is actually a post card but not a letter, which means everyone could see the content on it with envelop protects
  2. Routing information is public

    • IP packet will contain source and destination for routing

    • It is easy to figure out who is talking to whom

  3. Encryption dose NOT hide identities

    • encryption only happen on payload but not the routing information in header

    • Even IPsec have to reveal the IP address of IPsec gateways

Why is anonymity so important?

  • packet headers exposes two ends of communication
  • packet routes can be tracked (traffic analysis)
  • encrypted payload is still visible (cryptanalysis)

Some applications:

  1. Privacy
    • hide online transactions, web browsing
  2. Untraceable email
    • corporate whistle-blowers
    • political dissidents
    • confidential business negotiations
  3. Digital cash
    • unlinkable to buyer’s identity
  4. Anonymous electronic voting (e-voting)
  5. Censorship-resistant publishing

Anonymity

Anonymity中最重要的一点:你只能在一群人中才能使自己匿名,即所有人都在一起发送,接收,做出同样的行动,才能隐藏个人的行为

You are only anonymous within a group is your actions

You cannot be anonymous by yourself!!!

Anonymity由三个特性

  1. Anonymity
    • 从茫茫多的活动中隐藏自己的活动,而不要显眼的被挑出来
  2. Unlinkability
    • 无法将行动与个人联系起来
    • 比如发完邮件之后,发件人和邮件就没有关联了
  3. Unobservability
    • 很难实现
    • 既别人无法意识到这件事情到底发生没有
    • 笔名就是一个简单的方法,用来隐藏自己的身份(用户名)
  • Attacks on anonymity?

    Passive traffic analysis : - 从网络活动中发现谁与谁在通信 - 为了隐藏自己的活动,每个人必须要还要处理别人的traffic,即每个人都在做一样的事情,分不清真正想要做这件事情的人是谁

    Active traffic analysis : - 注入数据包或者将signature注入数据流中进行进一步观察

    Compromise of network nodes : - 黑入网络中的节点,然后被动的收集数据 - 因此不能相信任意一个网络节点,被黑以后都是不明显的

    Proxy也可以用来进行匿名

    1. sender通过proxy改变了自己的信息,使原始的sender不会被找到
    2. receiver则通过广播或者多播发送给整一个匿名组用户,其中只有一个真正的接收者

    弱点在哪儿呢? 那就是Proxy知道一切的事情,如果proxy被黑客控制,那么一切都没有意义了

    我们也可以用cascaded proxy chains,mix networks来counter这个攻击

  • Cascaded proxies with encryption

    何谓cascaded proxies级联代理呢?就是我们通过多层的代理,每一层都proxy都拥有一个private key来进行解密,再传递给下一个proxy继续解密,只有最后一个proxy服务器知道最初始的数据,然后广播到匿名组里去

    但是流量分析还是可以实现,因此我们需要mix networks

Mix networks

主要目的是为了建立一个匿名的channel

在垃圾邮件出现之前,大家都觉得匿名邮件是个好东西,从而衍生出了很多的remailers

Mix = Public-key cryptography + trusted re-mailer

  • Publick key就作为持久的假名,就类似于Bitcoin中的address
  • Untrusted communication medium: 被设计在一个攻击者可以
    • 获取所有的source/destination信息,以及所传递的信息
    • 可以修改注入删除所有的 messages
    • 但是唯一做不到的事情就是不能找到这些信息之间的关系,cannot coorelate plaintext and ciphertext,也无法进行伪造(不知道如何加密)

Using a single Mix

我们用 Mix 代表一个邮件处理系统

A发出一条信息给Mix,使用mixer的public key进行加密,Mix会解密之后重新组装,然后发送给一个匿名组所有的用户,每一个用户所接受到的信息都是不同的

攻击者可以看到所有的senders and receivers但是却不能将发送的消息和经由Mix重新组装后的消息所联系起来

其中r1, r0 这些内容是为了满足加密算法所需要的byte数而进行的padding

  • Foiling traffic analysis: four requirements

    为了防止进行流量分析,mix还提供了四个要求

    1. Agents/mixes work with uniformly sized items 要求所有的信息都是同样格式的(比如所有的信息都被padded到相同的长度的block后加密)
    2. Order of arrival hidden by outputting items in batches 通过批量输出信息到匿名组来隐藏顺序
    3. Repeated information must be blocked 不允许重复的信息,需要通过过滤器来筛查重复信息
    4. Sufficient traffic from a large anonymity set if required 需要大量的匿名组用户进行数据的发送
      • 太少的话就会削弱anonymity
      • 可以让clients定期发送或者接受dummy messages假信息

  • Generating receipts

    Mix同样可以用来生成receipt代表message被收到了

    这里的 c 是很大的,我觉得应该就是为了保持相等的格式,可以用很多0来填充

Mix networks

我们已经看过了一个单独的Mix是如何工作的,其实和之前的proxy很类似,都存在一个缺点,就是一旦被攻击,那么所有信息都会暴露

因此我们在这里采取同样的策略,即使用级联的Mix服务器相连来处理

每一个Mix都属于不同的administrative domain,这里应该想说的是不属于同一个地方管辖,也就不会因为一个被黑入了,就会影响其他的servers

通过多个Mix server联合使用,只要还有一个server没有被黑入,那么通信就还是匿名的

我们假设network中存在着多个Mix server,那么Alice就需要选择Mix-path来决定路经那几个server,然后使用对应的密钥进行加密再发送给Bob

  1. Alice 根据Mix-path选择Mix server的public key对数据进行padding与加密
  2. 每一个途径的Mix-server用自己的private key解密后再传达给下一个
  3. 最终最后一个Mix server就和我们之前提到过的那样发送给匿名组

那么既然最后一个Mix server又变成了single Mix-server中最简单的模式,难道被攻破之后不是毫无意义了吗?

这里要注意的是,每一个Mix server也就是仅仅只能知道前一个Mix server的信息,发送方的信息根本已经无从知晓了

Untraceable return addresses

如何匿名发送回复消息表示信息收到了呢?

  • Single Mix case (with key pk_mix1):

    • 发送方在自己的数据里包含 return address: {r1, A_x}_pk_mix1, pk_x
      • r1, random string, can be used as a shared key
      • pk_x, a fresh public key
      • Ax 真实的地址
    • 接受者回复: {r1, A_x}_pk_mix1, {r0, M’}pk_x
      • 通过 fresh public key对数据进行加密
    • Mix解密之后得知真实的地址是Ax,然后回复给A
  • 级联的Mix servers的处理方式

同样的办法,A会附带自己的地址以及一个pk_x,然后B在回复的时候会一层层根据选择的Mix-path上的Mix server的public key进行层层加密后返回

Mix networks: attacks

  1. Tracing a message

因为存在大量的dummy messages假消息而不可被追踪

  1. Replay attack, 用重复的messsage进行攻击

但是每一个 Mix server 中都有一个重复信息的过滤器,也不可能发生

Mix networks: n-1 attack

n-1 attack 是一种active attack, attacker 通过flooding一个node,使一个node上大部分的数据都是其做知晓的,那么剩下来的内容就很容易进行分析了

如何进行防御呢? 使用Hearbeat message:

  1. 每一个Mix server都会检测自己的网络环境,然后观察发出的消息收到的回复情况,我们称为heartbeat messages心跳
  2. 当Mix server收到了flooding attack其无法判断哪些流量是好的还是攻击者的流量,但是通过对于 heatbeat message在这些流量的比例的判断,来主动增加网络流量中的dummy message从而与flooding数据包进行抗衡,增加匿名性

Mix networks: advantages

  1. 匿名化的程度非常高
    • Mix input and output 之间无法被联系起来
    • 只要有一个Mix server没有被入侵就还能保证匿名性
    • 只要有足够多的dummy traffic, anonymity set就是整一个网络
  2. 新的密码学的实践
    • 连receiver都可以不知道sender是谁
    • 同时这封匿名的邮件是可以被certified的,可以由receiver以及路上的每一个Mix进行签名

Mix networks: disadvantages

  1. 级联的 Mix server意味着每一个server上都要进行大量的加密解密结算,非常消耗资源
  2. 延迟非常高,email还可以接受,但是网页浏览就没办法了
  3. Dummy message的开销很大
  4. 如何搭建一个低延迟的匿名环境是一个挑战
    • Use public-key cryptography to establish a “circuit” with pairwise symmetric keys between hops on the circuit.
    • Then use symmetric decryption and re-encryption to move data messages along the established circuits.
    • Each node behaves like a mix; anonymity is preserved even if some nodes are compromised

Dining cryptographers

三个的密码学家在一起吃晚饭,吃完饭之后需要结账,他们有两个选择,一是报销让NSA付钱,要么他们中的一个付钱,但是付钱的那个人不希望其他两个人知道(别问万一两个人都想付钱怎么办233),他们相出了一个办法可以让这一切成立

  1. 每个密码学家都抛一枚硬币,并向其左边的邻居展示
    • 因此每个密码学都能看到两枚硬币,他自己的和他右边的邻居的
  2. 每个密码学家需要宣称两枚硬币是否相同
    • 付钱的那位密码学家会撒谎(说反话)
  3. 那么如果说“相同的”是单数 => NSA报销
    • 如果是偶数,他们其中一个人付钱了
    • 但是其他人不知道谁付钱了

Three-person DC protocol

  1. 假设三位密码学家:C1, C2, C3投掷了硬币,其结果为bi
  2. 每位密码学家都与左边的邻居共享了自己的信息
  3. 每位密码学家都将自己所看到的两枚硬币的情况进行计算di = bi XOR bi-1
    • bi表示密码学家自己的硬币
    • bi-1表示右边邻居的情况
    • 要注意的是d0 = d3 and b0 = b3因为绕了一圈了
  4. 如果没有付钱,那就直接宣称计算的结果di,如果付钱了,那就宣称di XOR 1

Proof

我们假设有三位密码学家所宣称的值为:A1, A2, A3

  • 如果没付钱了,那么Ai = di

  • 如果付钱, Ai = di XOR 1

如果没有一个人付钱,那么所有宣称的数值计算后应该得出0,否则则为1

同时,如果有人付钱了,一个没有付钱的密码学家是无法得知是其他两人中的谁付的

同样的情况可以运用到多个用户身上,每个用户都生成一个随机的bit发送给左边的邻居,每个人都有两个bits来进行计算

  • 每个人都宣称自己进行XOR计算的结果
  • 只有发送者会多XOR一个想要发送的数据中的bit
  • 这样就可以综合所有的结果并得到0/1也就是message bit

但是现实中很难实现,因为首先需要很大的匿名组,然后还有每个用户都做随机数然后再计算,很复杂

安全性确实很强,就算有很强大的算力也无法得知发送者是谁。

同时也会因为通信channel被干扰而出现错误,同时匿名组中的成员如果撒谎了也会导致通信失败

Onion routing

发送者随机地选择途径路由器的次序

  • 我们假设有一些路由器是诚实的,但是有一些被黑客所控制了
  • 发送者主动的控制路径的长度

  1. 发送者将数据根据选择的路径用每个路由器的public key加密好,并内置一个symmetric key来对后续的内容进行加密
  2. 同时每个路由器只能获取到前一个router的identity,使其无法溯源

Tor (the onion router)就是这么进行匿名通信的

Set up Onion service sot that it’s reachable by clients

  1. 发送者首先先与一台路由器交换symmetric session key
  2. 然后用这台路由器作为代理与新的路由器交换symmetric session key,不断反复,直到到达目标地址
  3. 然后就利用建立的Tor circuit进行通信,每个途径的onion router都会单独加密解密

Location hidden servers

Goal:

  1. 将服务器部署在Internet上并且告知其他用户可以访问,但是不能让别人知道这台服务器在哪儿和是谁在运行
  2. 随处可以访问
  3. 不会被审查
  4. 能够在DoS attack中存活
  5. 找不到物理服务器

https://community.torproject.org/onion-services/overview/

Privacy

A privacy policy specifies how data may be used, under which condition, and what obligations this entails.

Licensed under CC BY-NC-SA 4.0
Last updated on May 30, 2022 21:27 +0100
comments powered by Disqus
Cogito, ergo sum
Built with Hugo
Theme Stack designed by Jimmy