Encryption,Tracking & Privacy

本文学习目的:

  • 解释对称与非对称加密的区别
  • 描述数字证书
  • 讨论 IPsec 和 TLS 安全协议
  • 描述一些在 web 上用于跟踪的常见方法
  • 解释匿名网络是什么以及如何工作

Encryption and Secrecy

加密是一个有组织地修改数据使得未授权用户不可读的过程。数据由发送方进行加密。然后数据通过网络以编码,不可读的形式进行传输。接收数据的的计算机解密数据并读取。

加密是几乎所有 TCP/IP 安全的重要基础。安全系统必须也这样的需要:

  • Authentication: 确保数据来自其数据源。
  • Integrity: 确保数据在传输过程中没有被修改

加密技术被用于确保 Anthentication 以及 integrity,还有保密性。

Algorithms and Keys

为了加密工作正常进行,两个通信实体必须满足如下条件:

  • 使数据不可读(加密)的一个过程
  • 是不可读数据恢复到原始可读的形式(解密)

加密和解密过程必须分成一个标准的,可再生的部分(总是一样)以及一个独一无二的部分(在通信部分之间形成的一个隐秘的关系)。

加密过程的标准部分叫做加密算法。加密算法本质上是一系列用于将数据转变成不可读形式的数学步骤。这个过程中唯一且隐秘的部分叫做加密密钥。

Symmetric (Conventional) Encryption

对称加密有时候又称为传统加密,因为它在更新,非对称的加密技术之前开发。

对称加密之所以称为对称是因为加解密过程使用同样的密钥,或者至少以某种可预知的方式关联的密钥。加解密步骤如下:

  1. 使发送端的计算机和接收端的计算机都知道密钥。
  2. 发送段使用预备的加密算法以及密钥加密数据。
  3. 将加密(不可读)后的文本传输给目的计算机。
  4. 接收端的计算机使用相关的解密算法(以及密钥)对数据进行解密。

加密方案(对称或者非对称)的最重要的安全考虑如下:

  • 加密算法的强度
  • 密钥的长度
  • 密钥的保密状态

使用对称加密的几个常见算法。使用 56-bit 密钥的Data Encryption Standard (DES) 曾受到过欢迎,但现在它使用的密钥长度过短。现代的加密技术经常考虑使用一个变长的密钥长度。派生自DES的Advanced Encryption Standard (AES) 支持 128,192,或 256 位的密钥长度。Blowfish 对称算法提供高达 448 位长度的密钥。

Asymmetric (Public Key) Encryption

非对称加密能够解决对称加密中分发密钥的问题。非对称加密之所以称为非对称,是因为加密数据使用的密钥不同于解密数据所使用的密钥。

非对称加密通常与公钥加密关联。在公约加密中,两个密钥中的一个密钥(私钥)被安全地保存在单台计算机上。另一个密钥(公钥)放到想要给私钥的拥有者发送数据的计算机上。其步骤如下:

  1. 计算机 A 尝试与计算机 B 建立连接。
  2. 计算机 B 发送公钥给计算机 A
  3. 计算机 A 使用计算机 B 收到的公钥对数据进行解密并且传输数据。来自计算机 B 的公钥存储在计算机 A 上用于后续的使用。
  4. 计算机 B 接收数据并且使用私钥对据进行解密。

公钥加密方法一个重要方面是,通过公钥执行加密是一个单向函数。公钥能够用于加密数据,但是只有私钥能够解密加密后的数据。

公约解密经常用于建立一个安全的连接。通过公钥加密传输的数据经常含有一个用于在会话中加密传输数据的对称加密会话密钥。

Digital Signatures

数字签名是用于确保数据来源于真实可信的源头并且沿着传输路径传输过程中没有被修改。

数字签名是和消息包含在一起的一个加密数据块。加密数据块有时候又称为一个鉴别码(authenticator)。数字签名通常反向使用公钥加密过程:

  1. 计算机 A 想发送一份带有数字签名的文档给计算机 B。计算机 A 使用必要的信息创建一小段数据来验证文档的内容。换句话说,
    在文档的中的 bits 上执行数学运算而得出一个值。这个鉴别码可能也含有其他用于验证信息可靠性的信息,比如时间戳或者其他将鉴别码和鉴别码被附加到哪个信息的参数。
  2. 计算机 A 使用私钥加密鉴别码。然后这个鉴别码被附加给这个文档,并且发送这个文档到计算机 B。
  3. 计算机 B 接收数据并且使用计算机 A 的公钥对鉴别码进行解密。鉴别码中的信息让计算机 B 用来验证数据在传输的过程中没有被修改。事实上,使用计算机 B 的公钥解密数据证明了数据是使用计算机 A 的私钥进行加密的,这确保数据
    是来自计算机 A。

https://i.quantuminit.com/db88b60159674b35.svg

Digital Certificates

使用数字证书来确保谁能够访问公钥。数字证书本质上是公钥的加密拷贝。证书签发过程需要一个能和通信双方有着安全关系的证书服务器。

这个证书服务器也称为 Certificate authority (CA)。

https://i.quantuminit.com/629b33f64ec94681.svg

这个过程的概要描述如下:

  1. 用户 B 通过安全的通信信道发送他的公钥到证书服务器。
  2. 证书服务器使用不同的密钥加密用户 B 的公钥(还有其他用户参数)。这个新加密的包称为证书。和证书包含在一起的是证书服务器的数字签名。
  3. 证书服务器返回这个证书给用户 B。
  4. 用户 A 需要获取用于 B 的公钥。计算机 A 向计算机 B 询问获取用户 B 的证书的拷贝。
  5. 计算机 A 通过安全信道与证书服务器进行通信来获取用于加密这个证书的密钥拷贝。
  6. 计算机 A 使用从证书服务器获取来的密钥对这个证书进行解密并且提取出用户 B 的公钥。计算机 A 还检查证书服务器的数字签
    名(步骤2)来确保证书是可靠的。

最著名的证书流程标准是由多份RFCs描述的 X.509。数字证书流程设计用于服务用户社区。X.209 证书流程在一些 TCP/IP 安全协议中会
使用到。

Securing TCP/IP

将加密技术集成入两个互联网安全系统中:SSL/TSL 和 IPsec。

TLS and SSL

Secure Sockets Layer (SSL) 开始是由 Netscape 为了保护 web 通信安全而引入的一个 TCP/IP 安全协议的集合。SSL 的目的是给
在传输层的 sockets 和通过 sockets 访问网络的应用程序之间提供一层安全。 基于SSL 3.0的 Transport Layer Security (TLS) 是 SSL 的继承者并且考虑将其作为标准。

当使用 TLS 之后,诸如 FTP 和 HTTP 等网络服务通过安全的 TLS 协议避免遭受到攻击。

https://i.quantuminit.com/9dc971dd88b548ee.svg

TLS Record Protocol 是一个用于访问 TCP 的标准基础。在 Record Protocol 之上的是一组执行特定服务器的相关协议:

  • TLS Handshake Protocol: 处理验证以及协商通信设置。
  • TLS Change Cipher Spec Protocol: 发出过渡信号,比如转变协商的加密参数。
  • TLS Allert Protocol: 发送警告。

https://i.quantuminit.com/a95941d5a839469a.svg

启用 TLS 的服务直接通过 TLS Record Protocol 运行。在连接建立之后,TLS Record Protocol 提供加密以及必要的验证来确保会话的
可靠性以及完整性。

TLS Handshake Protocol 建立链接以及协商任何的连接设置(包括加密设置)。一个使用 TLS 加密的 HTTP web 协议的版本称为 Hypertext Transfer Protocol Secure (HTTPS)。

SSL 以及 TLS 被设计用于和面向连接的 TCP 连接一起运行。其他协议称为 Datagram Transport Layer Security (DTLS) 提供 TLS-like 的安全,用这种方式也能够支持和UDP的无连接通信。

IPsec

IP Security (IPsec) 是一个在 TCP/IP 网络上使用的可供选择的安全协议系统。IPsec 在 TCP/IP 协议栈内部运行,它在 Transport Layer
下方。因为这个安全系统在 Transport layer 下方,运行在 Transport layer 上方的应用程序不需要知道这个安全系统。IPsec 设计用于提供保密性,访问控制,验证以及数据完整性的支持。IPsec 也能够防护重放攻击 (replay attacks),在重放攻击中,由攻击者从数据流中提取数据包并且在后面进行重用。

IPsec 本质上是 IP 协议的一组扩展。IPsec 内建在 IPv6 协议系统结构中。在 IPv4 中,IPsec 被认为是一个扩展,但是 IPsec 支持仍
内置在许多的 IPv4 实现中。

IPsec 为任何网络应用程序提供了便利的加密安全,不管应用程序是否是安全感知的。然而,需要两台计算机的协议栈必须支持 IPsec。因为
这个安全措施对于高层次的应用程序来说是不可见的,IPsec 对于比如路由器和防火墙等网络设备来说,能够提供理想的安全措施。IPsec 的
两种运行模式:

  • 传输模式为一个 IP 数据包中的数据载荷提供加密。然后这个加密后数据载荷包含在一个普通的 IP 数据包中用于传输。
  • 隧道模式将加密整个 IP 数据包。然后,加密后的数据包作为数据载荷被包含在另一个外部包中。

IPsec 使用许多的加密算法以及密钥分发技术。使用传统的加密算法对数据进行加密,比如 AES,RC5 或 Blowfish。验证以及密钥分发可能
需要使用公钥技术。

VPNs

系统管理员总是使用两种重要的方法去进行远程连接:

  • Dial-up: 远程用户通过一个 modem 连接到一个拨号 (dial-up) 服务器,这个服务器充当该网络的网关。
  • Wide area network (WAN): 两个网络通过由电话公司或是互联网提供商提供的一根租约线路来连接。

使用加密方法创建一个到公有网络的私有信道。比如,VPN (virtual private network)。一个 VPN 在网络上建立一个“隧道”,通过这个隧道,
普通的 TCP/IP 流量能够安全地通过。

远端服务器上的 VPN 客户端软件与充当该网络的网关的一个 VPN 服务器建立连接。VPN 客户端以及服务器交换简单可路由的 TCP/IP 数据报,
这个数据包像往常一样通过网络传输。然而,通过 VPN 连接发送的数据载荷实际上是一个加密的数据报。包含在这个简单可读的数据报中的这个加密的数据报转发到 VPN 服务器上。VPN 服务器提取
加密的数据报,然后使用加密密钥对该数据报进行解密,并且转发这个被包含的数据报到受保护的网络上的目的地址。

Kerberos

Kerberos 是一个基于网络的身份验证以及访问控制系统,旨在支持通过敌对网络的安全访问。kerberos 系统开始时是用于 Unix-based 系统的,但是已经移植到其他系统环境了。

Kerberos 系统使用一个称为 Key Distribution Center (KDC) 的服务器来管理密钥的的分发过程。 Kerberos 身份验证过程影响到如下三个实体的关系:

  • The client: 请求访问服务器的计算机
  • The server: 在网络上提供服务的计算机
  • The KDC: 给网络通信提供密钥的一台计算机

这个验证过程如下图所示,但是要注意这个过程是预先假设 KDC 已经有用于和客户端通信的一个共享的私钥,并且它能够使用一个共享私钥与
服务器进行通信。这些密钥用于加密一个新的会话密钥,客户端与服务器使用这个新的会话密钥来与笔记进行通信。KDC 用于为客户端和服务器
加密数据的分开的密钥称为长期的 (long-term) 密钥。这个长期的密钥通常取自由 KDB 和其他计算机共享的一个密钥。通常来说,客户端的长
期密钥来自用户的登录密码的哈希值,客户端以及 KDB 都知道这个密码。