引言

安全攻击

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

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

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

安全服务

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

安全机制

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

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

数学基础

数论

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

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

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

举例

求$5^{-1}\bmod18$

①求18对5的余数:$3$$=18-5\times$$3$

②将3作为除数,求5对3的余数:$2$$=5-3\times$$1$

③将2作为除数,求3对2的余数:$1$$=3-2\times$$1$

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

$1=3-($$5-3\times1$$)\times1=($$18-5\times3$$)-[5-($$18-5\times 3$$)\times1]\times1=18\times2-5\times7$

⑤表示为$ax-bn$形式:$18\times2-5\times7=5\times(-7)-18\times(-2)=5\times11-18\times3$

⑥则模逆元为11

更多例题
  1. $1234^{-1}\bmod 4321$
  2. $24140^{-1}\bmod40902$
  3. $550^{-1}\bmod1769$

费马定理

若$p$是素数,且$a$是正整数,且$gcd(a,p)=1$,则$a^{p-1}\equiv 1(\bmod p)$。

例$a=7,p=19$

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

$7^2=49\equiv 11\bmod 19$

$7^4\equiv 121\bmod 19\equiv 7\bmod 19$

$7^8\equiv49\bmod 19\equiv 11\bmod 19$

$7^{16}\equiv 121\bmod 19 \equiv 7 \bmod 19$

$a^{p-1}=7^{18}=7^{16}\times 7^2\equiv 7\times 11\bmod 19\equiv 1\bmod 19$

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

设$p$是素数,对于任意正整数$a$,则$a^p\equiv a(\bmod p)$。

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

欧拉定理

对于任意互素的两个整数$a,n$,有:$a^{\varphi (n)}\equiv 1\bmod m$​。

欧拉函数$\varphi(n)$:

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

欧拉函数举例

$\varphi(1)=1$:1

$\varphi(2)=1$:1

$\varphi(3)=2$:1、2

$\varphi(5)=4$:1、2、3、4

$\varphi(8)=4$:1、3、5、7

欧拉定理举例

$a=3,n=10$:$\varphi (10)=4,a^{\varphi(n)}=3^4=81\equiv 1\bmod 10=1\bmod n$

$a=2,n=11$:$\varphi(11)=10,a^{\varphi (n)}=3^{10}=1024\equiv1\bmod 11=1\bmod n$

对于欧拉定理,有:

  • 当$n=p$时,有$a^{p-1}\equiv 1\bmod p$,为费马定理
  • 易见$a^{\varphi (n+1)}\equiv a\bmod n$(欧拉定理的另一种形式不要求$a$和$n$互素)
求$13^{2001}$被$60$除所得的余数

$\because gcd(13,60)=1$

$\therefore 13^{\varphi (60)}\equiv 1(\bmod 60)$

$\because \varphi (60)=\varphi (2^2\times 3\times 5)=2\times(3-1)\times(5-1)=16$,$2001=125\times 16+1$

$\therefore 13^{16}\equiv 1(\bmod 60)$,$13^{2001}=(13^{16})^{125}\times 13\equiv 13(\bmod 60)$

即被60除所得的余数为13

中国剩余定理

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

设$m_1,m_2,\dots ,m_k$​是两两互素的正整数,令

$M=m_1m_2\dots m_k=m_1M_1=m_2M_2=\dots=m_kM_k$

上式中$M_i=\frac{M}{m_i},i=1,2\dots,k$,则同时满足同余方程组

$x\equiv b_i\bmod m_i\quad(i=1,2,\dots,k)$

的唯一正整数解$x_0$是:

$x_0=(b_1M^{\prime}_{1}M_1+b_2M^{\prime}_{2}M_2+\dots+b_kM^{\prime}_{k}M_k)\bmod M$

上式中$M^{\prime}_{i}$是$M_i$以$m_i$为模的逆元。

求解$x$举例

求解满足以下方程的解$x$:

$x\equiv 1\bmod 2$​
$x\equiv 2\bmod 3$
$x\equiv 3\bmod 5$
$x\equiv 5\bmod 7$

$M=m_1m_2m_3m_4=2\times 3\times 5\times 7=210$

$M_1=105,M_2=70,M_3=42,M_4=30$

由扩展欧几里得定理:

$M^{-1}_{1}\bmod 2\equiv 1\quad M^{-1}_{2}\bmod 3\equiv 1\quad M^{-1}_3\bmod 5\equiv 3\quad M^{-1}_4\bmod 7\equiv 4$

$\therefore x\bmod 210\equiv(1\times 105\times 1+ 2\times 70\times 1+3\times 42\times 3+5\times 30\times 4)\bmod 210\equiv 173$

即$x\equiv 173\bmod 210$

代数

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

用$Z_m$表示正整数{$0,1,\dots,m-1$}的集合

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

有限域

有限域的阶必为素数$p$的幂$p^n$​

判断方法即是否可以表示成$p^n$

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

定义:

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

域上多项式

如$GF(2^8)$上的运算,对称加密AES

域$F$上的$n(n\ge 0)$​次多项式表示为:

$f(x)=a_nx^n+a_{n-1}x^{n-1}+\cdots+a_1x+a_0=\sum_{i=0}^na_ix^i$

其中系数$a_i$是域$F$中的元素。

对称加密和消息机密性

对称加密原理

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

对称加密算法

Feistel结构

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

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

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

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

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

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

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

    img

  • 过程:

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

    图片来源: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\times b$
    • 计算秘密的欧拉函数$\varphi(n)=(a-1)(b-1)$​
    • 选择$e$使得$1\lt e\lt\varphi(n)$,且$gcd(e,\varphi(n))=1$
    • 求$e$的乘法逆元$d$($ed\equiv 1\bmod\varphi(n),0\le d\le n$​)
    • 求得公钥$PU={e,N}$
    • 求得私钥$PR={d,a,b}$​
  2. 加密过程

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

  3. 密文解密:$m=c^d\bmod n$

  4. 计算签名:$s=m^d\bmod n$

  5. 签名验证:$m=s^e\bmod n$

ElGamal

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

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

Diffie-Hellman密钥交换

了解具体过程

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

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

  2. 用户A选择私钥$X_A(\lt q)$,计算公钥$Y_A=a^{X_A}\bmod q$

    用户B选择私钥$X_B(<q)$,计算公钥$Y_B=a^{X_B}\bmod q$

  3. 用户A加密密钥$K=(Y_B)^{X_A}\bmod q$

  4. 用户B的加密密钥$K=(Y_A)^{X_B}\bmod q$

数字签名

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

  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. $A\to C$:A的公钥$PU_A$和身份标识$ID_A$
    2. $C\to B$:C的公钥$PU_C$和身份标识$ID_C$
    3. $B\to C$:$E_{PU_C}(K_S)$,C因此知道$K_S$
    4. $C\to A$:$E_{PU_A}(K_S)$
  • 改进方式:认证。假设A和B事先可以得到对方的公钥,会话钥分配过程如下:

    1. $A\to B$:$E_{PU_B}(ID_A || N_1)$

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

    2. $B\to A$:$E_{PU_A}(N_1||N_2)$​

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

    3. $A\to B$:$E_{PU_B}(N_2+1)$​

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

    4. $B\to A$:$E_{PU_A}(E_{PR_B}(K_S))$​

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

拥塞攻击:Cookie交换

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

重放攻击:序列号

  • 重放攻击:攻击者获得经过认证的数据包的一个附本,并在稍后的某个时间发送给目标。接受到重复的,经过认证的数据包可能以某种方式扰乱服务,或者可能产生其他不可预料的后果。
  • 设计序列号来防范重放攻击:当新的SA建立时,发送者初始化序列号计数器为0,每次SA发送一个数据包,计数器便加1。如果需要抗重放服务,序列号计数器不允许从$2^{32}-1$到0重复循环,如果计数器到达最大值$2^{32}-1$,发送者必须 终止此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. 缺点:带来了对每个连接的额外处理开销(建立两个接合的连接)

理解简单的包过滤规则

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