-
什么是网络安全?
- 入侵者可能采取的行动
- 窃听
- 嗅探、截获分组,比如利用 Wireshake 就可以做到。
- 修改、插入或删除报文内容
- 截获分组并修改分组内容再转发。
- 身份冒充
- 劫持会话,冒充通信者双方任意一方的身份。
- 窃听
- 安全通信需要具备的特性
- 1、机密性
- 通信内容被加密,只有发送方和接收方能理解该内容,那么即使被窃听也不要紧。
- 2、报文完整性
- 如果通信内容被篡改,那么接收方可以觉察到这种篡改。
- 3、端点鉴别
- 发送方可以确认接收方就是他想通信的那个人;接收方能确认接收到的消息的确来自发送方所声称的身份。
- 4、运行安全性
- 检查可疑活动分组,排除被病毒感染和分组攻击的可能性。
- 1、机密性
- 入侵者可能采取的行动
-
密码学
-
对称加密
-
中心思想 : 发送双方需要先协商共享的密钥。
-
术语
- 密文 : 加密后的明文
- 明文 : 未经加密的通信内容
- 加密算法 : 使用密钥加密的具体逻辑
- 密钥 : 明文到密文的映射关系
- 对称密钥系统 : 发送方和接收方共享相同的密钥
-
-
对称加密方法
- 凯撒密码
- 单码替代码
- 多码替代码
- 块密码
- 块密码链接
-
入侵者的攻击方法 : 根据入侵者所拥有的信息进行区分
-
唯密文攻击 : 入侵者只能截获密文,也不了解明文内容。统计分析词频有助于唯密文攻击。
-
已知明文攻击 : 入侵者知道(明文,密文)的一些匹配。
-
选择明文攻击 : 入侵者能够选择某一明文报文并得到对应的密文形式。
-
-
非对称加密
-
中心思想 : 发送双发不用协商用来加密的密钥,所有人都可以获得某个通信实体的公钥,而私钥只由该通信实体保管,不为其他任何人所知,用公钥加密的密文只能由对应的私钥解密,而用私钥来加密的密文只能由对应的公钥解密。
-
术语
- 公钥 : 所有人都可以获取的密钥
- 私钥 : 只由自己保管不能被任何人所获知的密钥
-
RSA 算法
-
Bob 如何生成 RSA 的公钥呢?
- 1、选择两个大素数 p 和 q
- 2、计算
n = pq
和z = (p - 1)(q - 1)
- 3、选择小于 n 的一个数 e,且使 e 和 z 互质,e 即为公钥。
- 4、求一个数 d,使得
ed mod z = 1
,d 即为私钥 - 5、公钥 :
(n, e)
,私钥 :(n, d)
-
公钥加密
- 必须满足
m < n
,则c = m^e mod n
- 必须满足
-
私钥解密
m = c^d mod n
-
会话密钥
- 软件实现 DES 比 RSA 快 100 倍,硬件实现 DES 比 RSA 快 100 ~ 10000 倍,因此实际上加密报文都使用对称密钥,具体流程是先使用非对称加密安全分发对称密钥,然后使用对称密钥加密报文。
-
RSA 工作原理
- 加密后的报文为
c = m^e mod n
- 即证明
c^d mod n = m
- 证明过程:
-
c^d mod n
-
= (m^e mod n)^d mod n
-
= m^ed mod n
-
= m^(ed mod z) mod n
,因为我们选择了ed mod z = 1
,所以 -
= m^1 mod n
-
因为
m < n
所以c^d mod n = m mod n = m
-
上面的推导中使用了数论结果:如果 p 和 q 是素数,且有
n = pq
和z = (p - 1)(q - 1)
,那么x^y mod n = x^(y mod z) mod n
,在这里x = m
以及y = ed
-
- 加密后的报文为
-
-
-
报文完整性鉴别
- 报文鉴别码 (MAC)
- 鉴别密钥参与 hash 运算
- 数字签名
- 计算 hash
- 私钥加密 hash,公钥解密 hash
- 公钥认证 : 需要公钥基础设施 PKI 支持
- 报文鉴别码 (MAC)
-
端点鉴别
- 双方都共享一个密钥,使用加密不重数来防止重放攻击
⚠️ 相互鉴别时会遭受中间人攻击 (见习题)。
-
安全电子邮件 PGP
-
同时提供机密性,完整性和端点鉴别
-
A 和 B 使用 PGP 涉及的加密过程如下:
-
A 使用摘要算法得到摘要 hash,将 m 和 hash 拼在一起得到
P1 = (m + hash)
,然后使用 Ks 加密 P1 得到Ks(P1)
,接着使用 B 的公钥加密 Ks 得到 Kb+(Ks),然后把两个包拼在一起得到P2 = Ks(P1) + Kb+(Ks)
,A 将 P2 传输给 B。 -
B 收到 P2 进行解密操作,首先使用自己的私钥 Kb- 解密得到 Ks,然后用 Ks 解密得到
m + hash
,接着 B 执行和 A 相同的摘要算法得到 hash',用两个摘要比较,若相同说明报文没有遭到篡改。
-
-
-
SSL
-
建立 SSL 连接如下所示:
- TCP 三次握手
- 客户端发送不重数,支持的加密套件,Session ID
- 服务器发送不重数,选择的加密套件,包含公钥的证书
- 客户端发送使用公钥加密的 PMS
- 现在客户端和服务器共享了 PMS,分别独立地使用该 PMS 导出 4 个密钥,Eb, Mb, Ea, Ma
- 接下来使用这 4 个密钥进行数据的传输
-
SSL 记录项格式如下
类型 版本 长度 数据 MAC - 其中
数据 + MAC
使用 Eb 加密,MAC 使用了 Mb 参与了 MAC 的计算
- 其中
-
⚠️ 为了防止 SSL 记录项数据流的顺序性和完整性,客户端和服务器端分别维护了 SSL 的发送序号和接收序号,在计算 MAC 时使用了序号参与了 MAC 的计算。
-
-
IPsec
-
SA (安全关联):
- SA 在逻辑上是单向的,如果既要让
R1 -> R2
使用 IPsec 也要反过来,那么需要创建两个 SA。 - 某台 IPsec 使能的路由中的 SA 包含下列状态信息。
- SA 的 32 比特标识符,成为安全参数索引 (SPI)
- SA 初始接口 (IP 地址) 和目的接口 (IP 地址)
- 将使用的加密类型(例如,具有 CBC 的 3DES)
- 加密密钥
- 完整性检查的类型(例如,具有 MD5 的 HMAC)
- 鉴别密钥
- SA 在逻辑上是单向的,如果既要让
-
IPsec 数据报格式如下图所示:
-
SAD 安全关联数据库,总部网关路由器中存储了所有 SA 的状态信息。
-
SPD 安全策略库,指示了哪些 IP 数据报需要使用 SA 加密 (该策略一般是源和目的 IP 地址以及上层协议的函数),以及使用哪个 SA 加密。
-
IKE 大型 VPN 在地理上分散的部署要求一个自动的机制来生成 SA。IPsec 使用 IKE 协议来进行这项工作。
- 首先使用 Diffie-Hellman 在路由器之间生成一个双向的 IKE SA。该 IKE SA 在这两台路由器之间提供了一个鉴别的和加密的信道。
- 使用第一步的 IKE SA 信道,两侧协商 IPsec SA 算法和密钥。然后在两侧生成每个方向的一个 SA。
- 因为在第二个阶段不涉及任何公钥密码,因此 IKE 能够以相对低的计算成本在两个 IPsec 实体间生成大量 SA。
-
-
-
Diffie-Hellman 密钥协商
- 步骤和如何遭受中间人攻击,见习题
-
防火墙
-
防火墙分为三类 : 传统分组过滤器,状态分组过滤器,应用程序网关
-
传统分组过滤器 : 基于下列因素决定数据报允许通过还是丢弃。
-
状态分组过滤器 : 跟踪多条 TCP
-
应用程序网关 : 深度检测分组中的应用层字段。
-