机器人
Nightyping-AI
TianliGPT
生成中...

引言

安全攻击

⭐️被动攻击和主动攻击的分类

安全攻击是危及信息系统安全的活动,即信息在存储、共享和传输中,可能会被非法窃听、截取、篡改和破坏的活动。

  • 安全攻击包括两类:
    • 被动攻击
      • 目的:获得传输的信息,不对信息作任何改动
      • 威胁信息的保密性
      • 举例:消息内容的泄漏、流量分析
    • 主动攻击(主动破坏数据)
      • 目的:篡改 / 伪造信息、改变系统的状态和操作
      • 威胁信息的完整性、可用性和真实性
      • 举例:伪装、篡改、重放、拒绝服务
  • 常见的安全攻击如下:
    • 消息内容的泄漏:消息的内容被泄露或透露给某个非授权的实体
    • 流量分析:通过分析通信双方的标识、通信频度、消息格式等信息来达到自己的目的
    • 篡改:指对合法用户之间的通信消息进行修改或者改变消息的顺序
    • 伪装:指一个实体冒充另一个实体
    • 重放:将获得的信息再次发送以期望获得合法用户的利益
    • 拒绝服务:指阻止对信息或其他资源的合法访问。

安全服务

⭐️安全服务的分类,CIA(基本)

X.800 把安全服务划分为 5 类服务。

  1. 认证:确保通信实体就是它所声称的那个实体

    • 对等实体认证:同逻辑连接一起使用,用以提供对连接双方实体的机密性保证

    • 数据源认证:在非连接传输中,确保数据来源与所声称的一致

  2. 访问控制:防止对资源的非授权使用

  3. 数据机密性:防止非授权的数据泄露

    • 连接机密性:对连接中所有用户的数据的保护

    • 无连接机密性:对单一数据块中的所有用户数据的保护

    • 选择域机密性:在连接或单一数据块上的用户数据中的选择域的机密性

    • 流量机密性:对可能从流量中获取的信息的保护

  4. 数据完整性:确保被认证实体发送的数据与接收到的数据完全相同(无篡改、插入、删除或重放)

    • 带有恢复的连接完整性:确保连接中所有用户数据的完整性,检测实体数据序列中任意的改写、插入、删除或重放,并尝试恢复数据

    • 无恢复的连接完整性:检测数据完整性,单不进行恢复操作

    • 选择域连接的完整性:在一个连接中,提供对传输数据块中用户数据选择域的完整性保证,并且裁决选择域中的数据是否被篡改、插入、删除或重放

    • 无连接的完整性:对单一无连接数据块提供完整性保证并且可能对数据篡改进行检测。此外也可以提供有限的重放数据检测

  5. 不可抵赖性:提供对被全程参与或部分参与通信的实体拒绝的防范

    • 源不可抵赖性:证明消息由特定一方发出

    • 目的地不可抵赖性:证明消息由特地一方接收

安全机制

安全机制即阻止安全攻击及恢复系统的机制,OSI 安全框架将安全机制分为特定安全机制和普遍安全机制

  • 特定安全机制:
    • 描述:在同一时间只针对一种安全服务实施一种技术或软件
    • 举例:加密、数字签名、访问控制、数据完整性、认证交换、流量填充、路由控制和公证
  • 普遍安全机制:
    • 描述:普遍安全机制不能应用到 OSI 参考模型的任一层上
    • 举例:可信功能机制、安全标签机制、事件检测机制、审计跟踪机制、安全恢复机制

数学基础

数论

扩展欧几里得算法(辗转相除法)

(扩展的)欧几里得算法:求模逆元(具体过程不要求)

在密码学特别是非对称密码体制中,常常需要求模逆元,求模逆元就是求乘法逆元。即已知 a b,寻找一个 x,使得 a×x1modb 成立,即求出可使得 1=a×xb×n(顺序为 a 在前,b 在后)成立的 x。模逆元不一定存在结果,通常用欧几里得算法求出。

举例

51mod18

①求 18 对 5 的余数:3=185×3

②将 3 作为除数,求 5 对 3 的余数:2=53×1

③将 2 作为除数,求 3 对 2 的余数:1=32×1

④(已求得余数为 1)将③中的非 a,b 的数用①和②表示:

1=3(53×1)×1=(185×3)[5(185×3)×1]×1=18×25×7

⑤表示为 axbn 形式:18×25×7=5×(7)18×(2)=5×1118×3

⑥则模逆元为 11

更多例题
  1. 12341mod4321
  2. 241401mod40902
  3. 5501mod1769

费马定理

p 是素数,且 a 是正整数,且 gcd(a,p)=1,则 ap11(modp)

a=7p=19

a=7,p=19,gcd(a,p)=1

72=4911mod19

74121mod197mod19

7849mod1911mod19

716121mod197mod19

ap1=718=716×727×11mod191mod19

推论(费马定理另一种表现形式):

p 是素数,对于任意正整数 a,则 apa(modp)

推论不要求 gcd(a,p)=1,即 a,p​互素

欧拉定理

对于任意互素的两个整数 a,n,有:aφ(n)1modm​。

欧拉函数 φ(n)

φ(m) 为小于或等于 m 且与 m​互素的正整数个数,则称其为 欧拉 (Euler) 函数

欧拉函数举例

φ(1)=1:1

φ(2)=1:1

φ(3)=2:1、2

φ(5)=4:1、2、3、4

φ(8)=4:1、3、5、7

欧拉定理举例

a=3,n=10φ(10)=4,aφ(n)=34=811mod10=1modn

a=2,n=11φ(11)=10,aφ(n)=310=10241mod11=1modn

对于欧拉定理,有:

  • n=p 时,有 ap11modp,为费马定理
  • 易见 aφ(n+1)amodn(欧拉定理的另一种形式不要求 a n 互素)
132001 60 除所得的余数

gcd(13,60)=1

13φ(60)1(mod60)

φ(60)=φ(22×3×5)=2×(31)×(51)=162001=125×16+1

13161(mod60)132001=(1316)125×1313(mod60)

即被 60 除所得的余数为 13

中国剩余定理

中国剩余定理:求解同余方程组

m1,m2,,mk​是两两互素的正整数,令

M=m1m2mk=m1M1=m2M2==mkMk

上式中 Mi=Mmi,i=1,2,k,则同时满足同余方程组

xbimodmi(i=1,2,,k)

的唯一正整数解 x0 是:

x0=(b1M1M1+b2M2M2++bkMkMk)modM

上式中 Mi Mi mi 为模的逆元。

求解 x 举例

求解满足以下方程的解 x

x1mod2
x2mod3
x3mod5
x5mod7

M=m1m2m3m4=2×3×5×7=210

M1=105,M2=70,M3=42,M4=30

由扩展欧几里得定理:

M11mod21M21mod31M31mod53M41mod74

xmod210(1×105×1+2×70×1+3×42×3+5×30×4)mod210173

x173mod210

代数

群的概念:如 Zn​​(n 为合数,即非素数)关于模 n 乘法运算不构成群

Zm 表示正整数 {0,1,,m1} 的集合

  • 群定义了一个二元运算的集合,这个二维运算可以表示为(具有一般性,可以指任何数学运算),群 G 记作 {G,},G 中的每一个序偶 (a,b) 通过运算生成 G 中的元素 (ab)​。
  • 如果一个群的元素个数是有限的,则该群称为有限群。并且群的阶等于群中元素的个数。否则,称该群为无限群。
  • 满足以下原则:
    • 封闭性:如果 a b 都属于 G,则 ab 也属于 G
    • 结合律:对于 G 中的任何元素abc 都有 a(bc)=(ab)c​成立
    • 单位元:G 中存在一个元素 e,对于 G 中任意元素 a,都有 ae=ea=a 成立
    • 逆元:对于 G 中任意元素 aG 中都存在一个元素 a,使得式 aa=aa=e​成立
    • 交换律:对于 G 中的任意元素 a,b,都有 ab=ba 成立

有限域

有限域的阶必为素数 p 的幂 pn

判断方法即是否可以表示成 pn

对任意素数 p 和正整数 n,存在 pn 阶的有限域,记为 GF(Pn)。当 n=1 时有限域GF§​也称为素域。

定义:

  1. 有限域中元素的个数称为有限域的阶
  2. 有限域的阶必为素数 p 的幂 pnn 为正整数

域上多项式

GF(28) 上的运算,对称加密 AES

F 上的 n(n0)​次多项式表示为:

f(x)=anxn+an1xn1++a1x+a0=i=0naixi

其中系数 ai 是域 F 中的元素。

对称加密和消息机密性

对称加密原理

  • 一对保密密钥相等或互相容易推算,又称为单密钥密码机制。
  • (加密和解密采用相同的密钥)

对称加密算法

Feistel 结构

了解具体结构图,根据图写出加密过程

  • 分组大小:越大的分组意味着越高的安全性,但减小了加密 / 解密速率(折中 128bit)

  • 密钥大小:越长的密钥意味着越高的安全性(128bit)

  • 迭代轮数:多轮处理能提供更高的安全性。(16 轮)

  • 子密钥生成算法:此算法复杂度越高,密码破译难度就越高

  • 快速软件加密 / 解密:软件执行速度成为一个重要因素

  • 易于分析:便于掌握算法的保密强度以及扩展办法

    img

  • 过程:

    • 每一轮的左半部分是上一轮的右半部分
      每一轮的右半部分是 (上一轮的右半部分进入一个 F 操作,且要输入这一轮的密钥 Ki,然后产生的解再与上一轮的左半部分进行异或操作

    图片来源:CSDN-Ferry_xie

分组密码:

DES(数据加密标准)
  • 最广泛使用的加密方案,算法被称为数据加密算法 (DEA) 。DES 是一个分组密码,明文长度为 64bit,密钥长度为 56bit,16 轮迭代。
  • 工作原理:
    • 加密:用 Key 去把数据 Data 进行加密, 生成 Data 的密码形式(64 位)作为 DES 的输出结果
    • 解密:用 Key 去把密码形式的数据 Data 解密,还原为 Data 的明码形式(64 位)作为 DES 的输出结果
AES(高级加密标准)
  • 和 DES 有等同或更高的安全强度,并且效率有显著提高
  • 支持的分组大小为 128、192 和 256bit
  • 支持密钥长度为 128、192 和 256bit
IDEA(International Data Encryption Algorithm)
  • 目标:密码强度;使用的方便性。
  • 密码强度:
    • 分组长度:64bit 分组
    • 密钥长度:128bit;
    • 扰乱:用三种操作达到扰乱的目的;
    • 扩散:IDEA 密码的扩散效果也很有效。
  • 实现方面的考虑:软件和硬件的实现
SM4(SMS4 中国商用密码算法)
  • 分组长度:128bit
  • 密钥长度:128bit
  • 迭代轮数:32 轮
  • 非对称的 Feistel 结构

流密码:RC4

  • 流密码的设计思想:
    • 加密序列应该有一个长周期
    • 密钥流应该尽可能地接近真随机数的性质
    • 为了抵抗穷举攻击,密钥必须足够长 (128bit)
  • RC4:1987,Ron Rivest 为 RSA Secutity 公司设计 的流密码,用于 SSL/TLS,IEEE 802.11 WEP 和 WAP 等协议中

分组密码的工作模式

EC(ECB)

电子簿模式 (electronic codebook mode),明文一次被处理 64bit,而且明文的每一个分组都使用同一密钥加密。(安全性不好,会出错,一般不用)

  • 相同明文对应相同密文
  • 同样信息多次出现造成泄漏
  • 信息块可被替换
  • 信息块可被重排
  • 密文块损坏对应明文块损坏
  • 适合于传输短信 息

CBC

密码块链接 (cipher block chaining),加密算法的输入是当前明文分组与前一密文分组的异或

  • 需要共同的初始化向量
  • 相同明文 -> 不同密文
  • 初始化向量可以用来改变第一块
  • 密文块损坏 -> 两明文块损坏
  • 安全性好于 ECB

CFB

密码反馈方式 (cipher feedback),将任意分组密码转化为流密码

CRT

计数器模式 (counter model)

  • 硬件效率:没有连接,并行执行(效率高)
  • 预处理:预先准备加密箱的输出
  • 随机存取
  • 可证明的安全性:CTR 至少与和其他模式一样安全
  • 简单性:只需要对加密算法执行,不需要解密算法的执行;解密密钥的安排调度不需要执行

公钥加密和消息认证

安全 Hash 函数

Hash 函数应满足的性质

一个 hash 函数 H 的性质:

  • H 能应用于任意长度的数据
  • H 生成固定长度的输出
  • 对任意的 x,H (x) 易于计算
  • 对任意的 h,计算 x 使得 H (x)=h 是计算上不可行的 (单向性)
  • 对任意的 x,计算 y≠x 使得 H (y)=H (x) 是计算上不可 行的(弱抗碰撞性)
  • 计算任意对 (x,y) 使得 H (x)=H (y) 是计算上不可行的 (强抗碰撞性)

消息认证码 (消息鉴别码)

消息认证码(MAC)是一种使用密钥的认证技术,它利用密钥来生成一个固定长度的短数据块,并将该数据块附加在消息之后,用于保证消息的完整性。

基于 Hash 函数构造(HMAC)

  • HMAC 的设计目标:
    1. 可以直接使用现有的 Hash 函数
    2. 不针对于某一个 Hash 函数,可以根据需要更换 Hash 函数模块
    3. 可保持 Hash 函数的原有性能,不能过分降低其性能
    4. 对密钥的使用和处理应较简单
    5. 如果已知嵌入的 Hash 函数的强度,则可以知道认证机制抵抗密码分析的强度

基于分组密码构造

  • 使用 AES 之类的分组密码可以实现消息认证码。

公钥加密原理

原理:接收者公钥加密

  • 使用两个密钥对于保密性、密钥分发和认证都产生了意义深远的影响
  • 公钥加密方案由 6 个部分组成:明文、加密算法、公钥、私钥、密文、解密算法

公钥加密算法:

RSA

RSA 及其参数设置:基于大整数分解问题(安全性)

了解具体过程、密钥生成、加密解密、签名

  1. 密钥的产生

    • 随机选择两个大的素数 a b
    • 计算 n=a×b
    • 计算秘密的欧拉函数 φ(n)=(a1)(b1)
    • 选择 e 使得 1<e<φ(n),且 gcd(e,φ(n))=1
    • e 的乘法逆元 ded1modφ(n),0dn​)
    • 求得公钥 PU=e,N
    • 求得私钥 PR=d,a,b
  2. 加密过程

    加密时明文以分组为单位进行加密,每个分组 m 的二进制值均小于 n,对明文分组 m 做加密运算:c=memodn,0mn

  3. 密文解密:m=cdmodn

  4. 计算签名:s=mdmodn

  5. 签名验证:m=semodn

ElGamal

ElGamal:基于离散对数问题(具体过程不要求)

ElGamal 既能用于数据加密,也能用于数字签名,其安全性是依赖于计算有限域上离散对数这一难题。

Diffie-Hellman 密钥交换

了解具体过程

Diffie-Hellman 算法的唯一目的是使得两个用户能够安全地交换密钥,得到一个共享的会话密钥,算法本身不能用于加密和解密。该算法的安全性基于求离散对数的困难性。

  1. 任取一大素数 q 和任一其本原根 a(a<q)

  2. 用户 A 选择私钥 XA(<q),计算公钥 YA=aXAmodq

    用户 B 选择私钥 XB(<q),计算公钥 YB=aXBmodq

  3. 用户 A 加密密钥 K=(YB)XAmodq

  4. 用户 B 的加密密钥 K=(YA)XBmodq

数字签名

方法:发送者使用私钥签名,验证者用公钥进行验证

  1. 传统签名的基本特点
    • 能与被签的文件在物理上不可分割
    • 签名者不能否认自己的签名
    • 签名不能被伪造
    • 容易被验证
  2. 数字签名是传统签名的数字化,基本要求
    • 能与所签文件 “绑定”
    • 签名者不能否认自己的签名
    • 签名不能被伪造
    • 容易被验证

密钥分配和用户认证

两种分类体制

  1. 对称体制(需要保证机密性)
    • 优点:速度快,适合做大量数据加密
    • 缺点:功能有限,只有知道密钥的人才可以验证签名(不满足需求)
  2. 公钥体制(公钥可以直接公开,需要保证公钥真实性)
    • 优点:功能丰富,可以做加密、签名、密钥交换
    • 缺点:运算速度慢

对称加密的密钥分配

在两个用户(主机、进程、应用程序)A 和 B 之间分配密钥的方法有以下几种:

  1. 密钥由 A 选取,并通过物理手段交给 B
  2. 密钥由第三方选取,并由第三方通过物理手段交给 A 和 B
  3. 如果 A 和 B 事先已有一密钥,则其中一方选取新密钥后,用已有的密钥加密新密钥并发送给另一方
  4. 如果 A 和 B 与可信的第三方 C 分别有一保密通道,则 C 为 A 和 B 选取密钥后,分别在两个保密信道上发送给 A 和 B

Kerberos

应用层安全协议,需要做配置修改,Kerberos 需求:安全性、可靠性、透明性、可伸缩性

会话过程

6 个阶段

image-20240619152737793
  1. 用户以明文方式向认证服务器 AS 发出请求,要求获得访问 TGS 的许可证
  2. AS 以证书作为响应,证书包括访问 TGS 的许可证和用户与 TGS 之间的会话密钥,会话密钥以用户的密钥加密后传输
  3. 用户解密得到 TGS 的响应,然后利用 TGS 的许可证向 TGS 申请应用服务器的许可证,该申请包括 TGS 的许可证和一个带有时间戳的认证符。认证符以用户与 TGS 间的会话密钥加密。
  4. TGS 从许可证中取出会话密钥、解密认证符,验证认证符中时间戳的有效性,从而确定用户的请求是否合法。TGS 确认用户的合法性后,生成所要求的应用服务器的许可证,许可证中含有新产生的用户与应用服务器之间的会话密钥。TGS 将应用服务器的许可证和会话密钥传回到用户。
  5. 用户向应用服务器提交应用服务器的许可证和用户新产生的带时间戳的认证符(认证符以用户与应用服务器之间的会话密钥加密)。
  6. 应用服务器从许可证中取出会话密钥、解密认证符,取出时间戳并检验有效性。然后向用户返回一个带时间戳的认证符,该认证符以用户与应用服务器之间的会话密钥进行加密。据此,用户可以验证应用服务器的合法性。

基于口令

Kerberos 是基于口令的认证协议。

单点登录

Kerberos 协议的设计使得用户只需在初次认证时输入身份验证信息,之后就可以凭借票据访问多个服务,实现了单点登录的便利性。

防止重放攻击

在采用 Kerberos 系统进行认证时,为了防止重放攻击,可以在报文中加入一个时间戳或随机数。

时间戳可以确保报文的新鲜性,即只有在规定时间内发送的报文才会被接收并处理。如果攻击者尝试重放旧的报文,由于时间戳已经过期,服务器会拒绝该报文。

随机数 (Nonce) 也是一种常用的防止重放攻击的手段。在 Kerberos 协议中,服务器会为每个会话生成一个唯一的随机数,并将其发送给客户端。客户端在发送后续报文时,必须包含这个随机数。如果攻击者尝试重放报文,由于随机数已经使用过,服务器会检测到并拒绝该报文。

票据(Ticket)和认证符(Authenticator)

票据:降低用户输入口令次数,如果泄露存在重放攻击

认证符:防止重放攻击

  • 票据(Ticket):是一个记录凭证,客户可以用它来向服务器证明自己的身份,其中包括客户的标识、会话密钥、时间戳以及其他一些信息。Ticket 中的大多数信息都被加密,密钥为服务器的密钥。
  • 认证符(Authenticator):是另一个记录凭证,其中包含一些最近产生的信息,产生这些信息需要用到客户机和服务器之间共享的会话密钥。

非对称加密的密钥分配

X.509 公钥证书

为签名和身份做背书

X.509 证书由用户公共密钥和用户标识符组成。此外还包括版本号、证书序列号、CA 标识符、签名算法标识、签发者名称、证书有效期等信息。有如下作用:

  1. 身份验证
  2. 安全通信
  3. 数字签名
  4. 访问控制
  5. 代码签名
  6. 电子邮件加密和签名
  7. 身份验证和授权

公钥基础设施 PKI

保证公钥真实性

  • PKI 是利用公钥密码技术来实现并提供信息安全服务的基础设施,它能够为所有网络应用透明的提高加密、数字签名等密码服务所需要的密钥和证书管理。

    PKI系统组成
  • 证书机构 CA 是 PKI 的信任基础,它管理公钥的整个生命周期,其作用包括:发放证 书、规定证书的有效期和通过发布证书撤销列表来确保在必要时可以撤销证书。

  • 注册机构 RA 提供用户和 CA 之间的一个接口,它用于获取并认证用户的身份,向 CA 提出证书请求。

身份认证

What you know/have/are

通过所知道的、所有的、身份特征

分类方式:

  • 是否使用硬件:软件认证、硬件认证
  • 需要验证的条件:单因子认证、双因子认证
  • 认证信息:静态认证、动态认证
  • 认证手段:
    • 基于用户所知道的(秘密如:密码、个人识别码 PIN、密钥……)
    • 基于用户所拥有的(令牌如:信用卡、智能卡、印章……)
    • 基于用户本身的(生物特征如:语音、笔迹、指纹……)

访问控制

访问控制是为了限制访问主体(或称为发起者,是一不主动的实体;如用户、进程和服务等),对访问客体(需要保护的资源)的访问权限,从而使计算机系统在合法范围内使用; 访问控制机制决定用户及代表一定用户利益的程序能做什么,及做到什么程度。

自主访问控制 DAC

自主访问控制是指对某个客体具有拥有权(或控制权)的主体能够将对该客体的一种访问权或多种访问权自主地授予其他主体,并在随后的任何时刻将这些权限回收。这种控制是自主的,也就是指具有授予某种访问权力的主体(用户)能够自己决定是否将访问控制权限的某个子集授予其他的主体或从其他主体那里收回他所授予的访问权限。

强制访问控制 MAC

⭐️向下读,向上写

所谓强制访问控制是指计算机系统根据使用系统 的机构事先确定的安全策略,对用户的访问权限进行强制性的控制。

强制访问控制

强制访问控制用来保护系统确定的对象,对此对象用户不能进行更改。也就是说,系统独立于用户行为强制执行访问控制,用户不能改变他们的安全级别或对象的安全属性。这样的访问控制规则通常对数据和用户按照安全等级划分标签,访问控制机制通过比较安全标签来确定授予还是拒绝用户对资源的访问。强制访问控制进行了很强的等级划分,所以经常用于军事用途。

基于角色的访问控制

基于角色的访问控制的基本思想是在用户和访问权限之间引入角色的概念,将用户和角色联系起来,通过对角色的授权来控制用户对系统资源的访问。这种方法可根据用户的工作职责设置若干角色,不同的用户可以具有相同的角色,在系统中享有相同的权力,同一个用户又可以同时具有多个不同的角色,在系统中行使多个角色的权力。

传输层安全

SSL 体系结构

SSL的体系结构

SSL 记录协议

加密、MAC(数据完整性认证)、运行流程

在传输层,基于 TCP,需要按序接收,不能 UDP

工作流程(发送方):

  1. 从上层接受传输的应用报文
  2. 分片:将数据分片成可管理的块,每个上层报文被分成 16KB 或更小的数据块。
  3. 进行数据压缩(可选):压缩是可选的,压缩的前提是不能丢失信息,并且增加的内容长度不能超过 1024B,默认的压缩算法为空。
  4. 增加 MAC:加入信息认证码(MAC),这一步需要用到共享的密钥。
  5. 加密:利用 IDEA、DES、3DES 或其他加密算法对压缩报文和 MAC 码进行数据加密。
  6. 增加 SSL 记录首部:增加由内容类型、主要版本、次要版本和压缩长度组成的首部。
  7. 将结果传输到下层

接收方:

  1. 从低层接受报文
  2. 解密
  3. 用事先商定的 MAC 码校验数据
  4. 如果是压缩的数据,则解压缩
  5. 装配数据
  6. 将信息传输到上层

变更密码规格协议

SSL 修改密文规约协议用来发送修改密文规约协议信息。任何时候客户都能请求修改密码参数,比如握手密钥交换。在修改密文规约的通告发出以后,客户方就发出一个握手密钥交换信息(如果可得到的话),鉴定认证信息,服务器则在处理了密钥交换信息之后发送 一个修改密文规约信息。此后,新的双方约定的密钥就将一直使用到下次提出修改密钥规约请求为止。

报警协议

SSL 告警协议是用来将 SSL 有关的告警传送给对方实体的。和其他使用 SSL 的情况 一样,告警报文按照当前状态说明被压缩和加密。SSL 告警协议的每个报文由两个字节组成。第 1 个字节的值用来表明告警的级别,第 2 个字节表示特定告警的代码。如果在通信过程中某一方发现任何异常,就需要给对方发送一条警示消息通告。

握手协议

防范重放攻击?随机数

SSL握手过程
  1. 客户发出一个带有客户 HELLO 信息的连接请求。包括如下信息:

    • 想要使用的 SSL 版本号
    • 时间信息,以标准的 UNIX 32 位格式标识的当前时间和日期
    • 会话标识(可选),如果没有指定的话,则服务器重用上一次的会话标识或返回一个错误信息
    • 密文组(客户方所支持的各种加密算法选项清单,包括认证码、密钥交换方法、加密和 MAC 算法)
    • 客户方所支持的压缩算法
    • 随机数
  2. 服务器评估客户方发来的 HELLO 信息中的各项参数,并且返回一个服务器方的 HELLO 信息,其中包含 SSL 会话的各项参数,具体内容如下:

    • 版本号
    • 时间信息,以标准的 UNIX 32 位格式标识的当前时间和日期
    • 会话标识
    • 密文组
    • 压缩方法
    • 随机数

    在服务器 HELLO 消息发送之后,服务器发出如下信息:

    • 服务器证书,如果服务器需要被鉴别的话。
    • 服务器密钥交换信息,如果得不到证书或证书仅仅用作签名的话。
    • 证书请求,如果客户要求被鉴别的话。

    最后,服务器发出一个服务器 HELLO DONE 信息,开始等待客户的回音。

  3. 客户发送下列信息:

    • 如果服务器发出了一个证书请求,那么客户方必须发送一个证书或非证书信息。
    • 如果服务器发送了一个服务器密钥交换信息,那么客户方就发送一个基于公钥算法的由 HELLO 信息决定的密钥交换信息。
    • 如果客户方已经发送了一个证书,那么客户方就需验证服务器方的证书并且发出一个证书验证信息指明结果。

    然后,客户方发出一个结束信息,指出协商过程已经完成。客户方还将发送一个修改密文规约信息来产生共享的常规密钥。应该注意这部分工作不是由握手协议控制,而是由修改密文规约协议管理的。

  4. 服务器发出一个结束信息,指出协商阶段完成。然后服务器发出一个修改密文规约信息。

  5. 会话双方分别产生一个加密密钥,然后他们再根据这些密钥导出会话主密钥。握手协议改变状态至连接状态。所有从应用层来的数据传输作为特定信息传输给对方。

暂态 Diffie-Hellman

暂态 Diffie-Hellman 使用临时的公钥。每个协议的实例或运行使用不同的公钥。服务器临时公钥的真实性可以通过检查公钥上的签名来验证。由于公钥是临时的,即使服务器的长期签名密钥被泄露,也不会危及过去会话的隐私。这被称为完美前向保密性(PFS)。

RSA 密钥交换:由客户端选择会话密钥

客户端在发起与服务器的连接时,会生成一个对称加密的会话密钥(通常是一个随机数),这个会话密钥用于加密整个会话过程中的数据传输。客户端使用服务器的公钥对会话密钥进行加密,这样,只有服务器的私钥能够解密这个会话密钥,这样可以确保在整个通信过程中,只有服务器和客户端共享相同的会话密钥,其他任何人(包括中间人攻击者)都无法获取会话密钥或解密通信内容。

SSL 如何防范 Web 安全威胁

如穷举密码分析攻击、已知明文字典攻击、重放攻击、中间人攻击、口令窃听、IP 地址假冒、IP 劫持,但无法防范 SYN 泛滥

  1. 穷举密码分析攻击:使用加密算法(如 AES)
  2. 已知明文字典攻击:验证对端身份
  3. 重放攻击:使用时间戳和随机数来保护通信的唯一性
  4. 中间人攻击:使用公钥基础设施(PKI)和数字证书来验证通信两端的身份
  5. 口令窃听:使用加密技术(如对称加密和非对称加密)来加密传输的数据
  6. IP 地址假冒和 IP 劫持:通过加密通信和数字证书验证,SSL 可以确保通信的两端确实是预期的合法实体,而不是恶意的 IP 地址假冒或劫持者
  7. SYN 泛滥:SSL/TLS 本身不直接处理 TCP 层面的 SYN 泛滥攻击

HTTPS=HTTP+SSL

SSL 握手协议用于鉴别初始化和传输密钥,它使得服务器和客户能相互鉴别对方的身份,并保护在 SSL 记录中发送的数据。因此在传输任何应用数据前,都必须使用握手协议。 一个 SSL 会话是按以下步骤初始化的:

  1. 客户方,用户用 URL 发出的请求中,HTTP 用 HTTPS 替代
  2. 客户方的 SSL 请求通过 TCP 的 443 端口与服务器方的 SSL 进程建立连接
  3. 然后客户方初始化 SSL 握手状态,用 SSL 记录协议作为载体。这时,客户 / 服务器双方的连接中还没有加密和完整性检查的信息。

SSH 协议

SSH 是一种远程登录安全协议,它提供了一条安全的远程登录通道。

PGP 与电子邮件安全(7.5)

PGP 提供的安全服务

压缩顺序(签名 — 压缩 — 加密)

  • 压缩对邮件传输或存储都有节省空间的好处
  • 签名后压缩的原因:
    • 不需要为检验签名而保留压缩版本的消息
    • 为了检验而再做压缩不能保证一致性,压缩算法的 不同实现版本可能会产生不同的结果
  • 压缩之后再做加密的原因:
  • 压缩后的消息冗余小,增加密码分析的难度
  • 若先加密,则压缩难以见效

4 种类型的密钥

  1. 一次性会话传统密钥
  2. 公钥
  3. 私钥
  4. 基于口令短语的传统密钥

PGP 的信任模型:Web-of-Trust

X.509 与 PGP 对用户公钥的信任模型有何不同?

X.509 采用层次 CA 的结构,PGP 采用 Web-of-Trust 建立信任。X.509 用户只信任 CA,而 PGP 用户可以相信其他用户。

Owner trust field、Key legitimacy field

  • Owner trust field:表明该公钥用于签名其它公钥证书时的信任程度。这个信任程度是由用户给出的。
  • Key legitimacy field:合法性或者有效性,表明 PGP 对 “此用户公钥是合法的” 的信任程度;信任级别越高,这个 userID 与该公钥的绑定越强。这个字段是由 PGP 计算的

IPSec

IPSec 的好处

  • 对通过其边界的所有通信流提供了强安全性
  • 对所有应用透明:位于传输层(TCP,UDP) 之下
  • 当防火墙或路由器使用 IPSec 时,没有必要对 用户系统和服务器系统的软件做任何改变
  • IPSec 对终端用户透明,不需要对用户进行安 全机制的培训
  • IPSec 能给个人用户提供安全性

数据结构:安全关联(SA)

  • 安全关联(SA)是发送者和接收者两个 IPSec 系统之间的一个简单的单向逻辑连接,是与给定的一个网络连接或一组网络连接相关联的安全信息参数集合。因为 SA 是单个方向的,所以,对于一个双向通信,则需要两个 SA。
  • 一个安全关联由三个参数唯一确定:
    • Security Parameter Index (SPI):赋给此 SA 的一个仅在本地有意义的比特串
    • IP Destination address:SA 的目的端点地址
    • Security Protocol Identifier: AH or ESP:标示 SA 使用的 IPSec 协议

两个协议

AH(7.4.2)

  • AH 协议为中通信提供数据源认证、数据完整性和反重播保证,它能保护通信免受篡改,但不能防止窃听,适合用于传输非机密数据。

    AH报头格式
  • AH 的工作原理是在每一个数据包上添加 一个身份验证报头。此报头包含一个带密钥的 Hash 散列(可以将其当作数字签名,只是它不使用证书),此 Hash 散列在整个数据包中计算,因此对数据的任何更改将致使散列无效 —— 这样就提供了完整性保护。

ESP(7.4.3)

  • ESP 为 IP 数据包提供完整性检查、认证和加密。可以将其看作 “超级 AH”,因为它提供机密性并可防止篡改。ESP 服务依据建立的安全关联(SA)是可选的。然而,也有如下一 些限制:

    • 完整性检查和认证一起进行
    • 仅当与完整性检查和认证一起时,“重播(Replay)” 保护才是可选的
    • “重播” 保护只能由接收方选择
    ESP的格式

IPSec 报头格式(P196)

携带安全参数索引 SPI(指定 SA)、序列号(抗重放)

  • 每个 SA 用唯一的 SPI 索引标识,当处理接收数据包时,服务器根据 SPI 值来决定该使用哪种 SA。具体采用什么方式,要由三方面的因素决定:第一个是安全参数索引(SPI),该索引存 在于 IPSec 协议头内;第二个是 IPSec 协议值;第三个是要向其应用 SA 的目标地址。
  • 序列号是一个无符号单调递增的计数器,从 1 开始的 32 位单增序列号,不允许重复,唯一地标识了每一个发送数据包,为安全关联提供反重播保护。接收端将校验序列号为该字段值的数据包是否已经被接收过, 若是,则拒收该数据包。对于一个特定的 SA,它用于实现反重传服务。

AH 的认证范围更广,包括 IP 头

AH 协议的认证范围更广泛,包括 IP 数据报的头部部分。在 IPSec 中,AH 协议提供数据完整性验证和防篡改保护,其作用范围涵盖整个 IP 数据报,包括其头部信息,这使得 AH 协议在保护 IP 数据报完整性方面有更广泛的应用。

密钥管理 IKE

中间人攻击:认证

  • 中间人攻击是一种间接的攻击方法,假设 A 和 B 是需要通信的双方,C 则是 “中间人”。A 和 B 都以为将消息传送给对方,没有意识到由一个中间人 C 在转发消息。C 不仅可以窃听 A 和 B 的通信,还可以对信息进行篡改再传给对方。当然 C 也可以获得 A 和 B 之间通信的敏感信息。
    中间人攻击

  • 攻击过程:

    1. AC:A 的公钥 PUA 和身份标识 IDA
    2. CB:C 的公钥 PUC 和身份标识 IDC
    3. BCEPUC(KS),C 因此知道 KS
    4. CAEPUA(KS)
  • 改进方式:认证。假设 A 和 B 事先可以得到对方的公钥,会话钥分配过程如下:

    1. ABEPUB(IDA||N1)

      A 用 B 的公钥加密自己的身份 IDA 和临时交互号 N1,然后将消息传送给 B,只有 B 能够打开这个消息

    2. BAEPUA(N1||N2)

      B 用 A 的公钥加密临时交互号 N1 N2,然后将消息传给 A,只有 A 能够打开该消息,通过 N1 的正确性确认对方身份

    3. ABEPUB(N2+1)

      A 用 B 的公钥加密 N2+1,然后将消息传给 B,B 也可以通过 N2 认证对方的身份

    4. BAEPUA(EPRB(KS))

      由 B 产生一个会话钥,先用私钥 PRB 加密,再用 A 的公钥加密,做到既保密又认证

拥塞攻击:Cookie 交换

  • Cookie 交换要求每一方在初始消息中发送一个伪随机数,即 cookie,而另一方对此做出相应的应答。
  • Cookie 的要求:
    • Cookie 的值必须依赖于特定的参与方,即与参与方的某种标识关联
    • 除了产生 Cookie 的这一方之外,其他人都无法产生出可被他接受的 Cookie 值,所以,产生和验证 Cookie 时都会用到本地的秘密信息
    • Cookie 的产生和验证方法必须足够快速

重放攻击:序列号

  • 重放攻击:攻击者获得经过认证的数据包的一个附本,并在稍后的某个时间发送给目标。接受到重复的,经过认证的数据包可能以某种方式扰乱服务,或者可能产生其他不可预料的后果。
  • 设计序列号来防范重放攻击:当新的 SA 建立时,发送者初始化序列号计数器为 0,每次 SA 发送一个数据包,计数器便加 1。如果需要抗重放服务,序列号计数器不允许从 2321 到 0 重复循环,如果计数器到达最大值 2321,发送者必须 终止此 SA,协商一个新的 SA 和一个新密钥

两种工作模式

AH 传输模式

传输模式用于两台主机之间,只对上层协议数据(传输层数据)和 IP 头中的固定字段提供认证,主要保护传输层协议头,实现端到端的安全。

AH传输模式

在传输模式的 AH 中,封装后的分组 IP 头仍然是原 IP 头,只是 IP 头的协议字段由原来的值变为 51,表示 IP 头后紧接的载荷为 AH 载荷。

AH 隧道模式

隧道模式对整个 IP 数据项提供认证保护,把需要保护的 IP 包封装在新的 IP 包中,既可用于主机也可用于安全网关,并且当 AH 在安全网关上实现时,必须采用隧道模式。

AH隧道模式

在隧道模式的 AH 中,不是将原始的 IP 报头移到最左边然后插入 AH 报头,而是复制原始 IP 报头,并将复制的 IP 报头移到数据报最左边作为新的 IP 报头。随后在原始 IP 报头与 IP 报头的副本之间放置 AH 报头。原始 IP 报头保持原封不动,并且整个原始 IP 报头都被认证或由加密算法进行保护。

ESP 传输模式

IP 报头被调整到数据报左边,并插入 ESP 报头;ESP 报尾以及 ICV(完整性校验值,用于认证)被附加在数据报末端。如果需要加密,仅对原始数据和新的 ESP 报尾进行加密。认证从后 ESP 报头一直延伸到 ESP 报尾。

ESP传输模式

ESP 隧道模式

在 ESP 隧道模式下,原数据包(包括原 IP 报头和数据)被封装在 ESP 报头和 ESP 报尾之间,外边附上了新的 IP 报头。在这种模式下,加密部分为原 IP 数据包和 ESP 报尾,完整性检查部分为 ESP 报头、原 IP 数据包以及 ESP 报尾。整个原始数据报都可以用这种方法进行加密或认证。如果既选择 ESP 认证又选择 ESP 加密, 那么应该首先实现加密。这就允许在传输之前与发送方没有改变数据报的保证一同实现认证,并且接收方在对分组进行解密之前认证数据报。

ESP隧道模式

防火墙

不同类型防火墙的特点

包过滤路由器

  1. 优点:
    • 简单
    • 对用户透明
    • 高处理速度
  2. 缺点:
    • 不能阻止利用了特定应用漏洞或功能所进行的攻击。 如,不能阻止特定的应用命令
    • 日志记录功能有限
    • 不支持高级的用户认证机制
    • 对利用 TCP/IP 规范和协议栈存在的问题进行的攻击没 有很好的应对措施。如,IP 地址假冒攻击
    • 设置包过滤规则比较困难

状态检测防火墙

  • 传统的包过滤防火墙不考虑更高层的上下文信息,允许来自基于 TCP 的所有高端口的入站网络流量
  • 状态检测防火墙建造了一个出站 TCP 连接目录,仅当入站数据包符合目录里某个条目时,才允许到达高端口的入站流量通过
  • 状态检测防火墙在上下文中检查每个 IP 包
  • 记录有关 TCP 连接的信息:TCP 序列号轨迹、检查有限的应用层数据

应用层网关

  1. 优点
    • 比包过滤防火墙更安全
    • 只需要细查少数可以允许的应用程序
    • 容易记录和审计所有的入站流量
  2. 缺点:带来了对每个连接的额外处理开销(建立两个接合的连接)

理解简单的包过滤规则

  • 包过滤规则是基于网络安全策略(即凡是未被明确许可的就是禁止的或凡是未被明确禁止的就是许可的)的。包过滤规则是在考虑了外部攻击以及服务级别限制和收发双方的通信级别限制等因素后制定的。
  • 包过滤类型的防火墙要遵循的一条基本原则是 “最小特权原则”,即明确允许那些管理员希望通过的数据包,禁止其他数据包
  • 包过滤可分为静态包过滤和动态包过滤两种。 静态包过滤这种类型的防火墙根据定义好的过滤规则审查每个数据包,以便确定其是否与某一条包过滤规则匹配。动态包过滤采用动态设置包过滤规则的方法,避免了静态包过滤所具有的问题。这种技术后来发展成为所谓包状态监测技术。