第一章
计算机安全的定义
对某个自动化信息系统的保护措施,其目的在于实现信息系统资源的完整性、可用性及机密。
相关性质:
- 机密性:保护个人隐私信息,防止非授权泄漏
- 数据机密性:保证私有的或机密的信息不泄漏给非授权用户
- 隐私性:保证个人可以控制和影响与之相关的信息(即个人隐私)
- 完整性:防范不当修改和破坏,保证信息的认证与授权
- 数据完整性:保证信息和代码只能以某种特定的授权方式更改
- 系统完整性:系统能够实现预期功能,不被故意或偶然的非授权操作控制
- 可用性:保证及时且可靠地获取和使用信息
- 真实性:可以被验证和信任的属性,来源可信性。即验证使用者身份、以及系统信号来自可靠信息源
- 可计量性:每个实体行为可以被唯一地溯源,非否认、告警、错误隔离、入侵检测、错误恢复等
安全威胁违反安全性的例子
1️⃣ 用户A向B传递了文件,该文件中包含了敏感的数据:比如合同标的。C通过监视该传输过程截取了文件副本。
2️⃣一个雇员被解雇而没有通知大家,人事经理向服务器发出了删除该雇员账号的要求。但该消息被雇员截获,并使之能延迟足够长时间。以便能够最后访问服务器获取敏感信息。然后再转发该息。
3️⃣某网络管理员D在其管理下向一台计算机E传递一条消息,指示E更新一个授权文件,该文件包含了一些能够访问该机的用户Id。F截获了该消息,进行了删改并传给E。E以为来自于D从而接受并更新了授权文件。
4️⃣用户F没有中途阻止某消息,而是直接构造了自己希望内容的消息,好像该消息来自于D。E接受并更改了授权文件
5️⃣ 一个客户向代理商发出带有多个交易指示的消息。随后该投资跌值,而该客户不承认发出过该消息
端到端通信和点到点通信
点到点通信
物理层、数据链路层和网络层是面向网络通信的低三层,为网络环境中的主机提供点对点通信服务。点到点通信并不能保证数据传输的可靠性,也不能说明源主机与目的主机之间是哪两个进程在通信。
端到端通信
端到端通信完成应用程序(进程)之间的通信。OSI 参考模型中的传输层功能的裨是最终完成端到端的可靠连接。“端”是指用户应用程序的“端口”。
TCP 协议五元组?
TCP 协议的五元组是指由源 IP 地址、目的 IP 地址、源端口号、目的端口号和传输协议类型这五个值组成的标识一个 TCP 连接的唯一标识符。
被动攻击
概念 | 特征 | 对策 |
---|---|---|
攻击者只是窃听或监视数据传输,目标是获取传输的数据信息。常见的有消息内容泄漏和流量分析。 | 难以检测,不改变数据及通信 | 防范而非检测 |
分类
- 消息内容泄露攻击
- 电话交谈、电子邮件消息和传输文件中都有可能包含敏感或机密信息
- 流量分析攻击
- 攻击者对观察到的信息进行分析,推测出消息内容
被动攻击非常难以检测,因其不改变数据。对付被动攻击的重点是防范而不是检测

主动攻击
概念 | 特征 | 对策 |
---|---|---|
数据流的改写及错误数据流的添加。包括假冒(伪装)、重放、篡改消息、拒绝服务。试图改变系统资源或影响系统操作。 | 易于检测防范困难 | 物理保护、检测以防范 |
- 假冒(伪装)
- 发生在一个实体假冒成另一个实体的场合。
- 重放
- 涉及被动获取数据单元并按照它之前的顺序重新传输,由此产生一个非授权效应。
- 篡改消息
- 合法消息的某些部分被篡改,或者消息被延迟、被重排,从而产生一个非授权效应。e.g.,一条含义为“允许 John Smith 读取机密文件 accounts”的消息被篡改为“允许 Fred Brown 读机密文件 accounts”
- 拒绝服务
- 可以阻止或禁止对通信设备的正常使用和管理。
网络访问安全模型
解决有害访问的安全机制包含:
(1)看门人功能。如基于口令的登录过程
(2)逻辑屏蔽。设计检测和拒绝蠕虫、病毒以及类似攻击。
第二章
传统加密
传统加密的原理:取代和置换
取代(Substitution):将明文集中每个元素映射为另外一个元素。
置换(Permutation):重新排列明文中每个元素
求积密文:以上二者结合
一般的数据加密模型
加密的目的:
通过将消息编码或隐藏使其不可读,从而保护机密性
同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密
一个对称加密方案由 5 部分组成:
- 明文(plaintext)
- 原始消息或数据,作为算法的输入,任何人可解读。
- 加密算法(encryption algorithm)
- 变换函数,对明文进行各种取代和变换。
- 密钥(secret key)
- 密钥也是算法的输入,参与变换的参数,算法进行的具体替换和转换取决于这个密钥
- 密文(ciphertext)
- 产生的已被打乱的消息输出,取决于明文和密钥,对于一个给定的消息,两个不同的密钥会产生两个不同的密文
- 解密算法(decryption algorithm)
- 本质是加密算法的逆变换,输入密文,输出明文
明文 X 用加密算法 E 和加密密钥 Ke 得到密文 Y=E(Ke ,X)。在传送过程中可能出现密文截取者。到了收端,利用解密算法 D 和解密密钥 Kd,解出明文为 D(Kd , Y)=D(Kd , E(Ke , X))=X。截取者又称为攻击者或入侵者。
对称加密的安全使用有如下两个要求:
(1)需要一个强加密算法;
(2)发送者和接收者必须通过一个安全的方式获得密钥且保证密钥安全。
对称加密的安全取决于密钥的保密性而非算法的保密性。
*Feistel 密码结构
实际中,我们需要加密,也需要解密。因此,有两种方法:
1、定义每个替换、置换的逆,这样增加了复杂度
2、定义一种结构,容易求逆,这样可以使用基本的相同编码或硬件用于加密和解密
Horst Feistel(working at IBM Thomas J Watson Research Labs )于 1973 年,提出了基于可逆乘积加密器,即现在大部分对称分组密码算法的核心 Feistel Cipher 。

算法输入为长度 2W 的明文块和密钥 K,执行 N 轮循环处理,每次循环的输入取决于上一轮的输出
将输入分组分成左 Li-1 和右 Ri-1 两部分
变换是在密码的第 n 轮只使用 Ri-1 和子密钥 Ki
对左半部数据执行替代操作(substitution);将右半部数据和子密钥应用函数 F,其输出与左一半做异或,作为下轮的右半部分
最后将这两部分进行互换(permutation swapping)



*Feistel Cipher 的设计问题
对称分组密码的具体操作取决于以下参数和设计属性:
- 分组大小(block size):越大的分组意味着越高的安全性,但减小了加密/解密速率。128 比特大小的分组是一个合理的折中且是近来分组密码设计的普遍选择。
- 密钥大小(key size):越长的密钥意味着越高的安全性,但可能会减小加密/解密速率。在安全性与速度间抉择,64、128bit。
- 迭代轮数:对称分组密码的本质是单轮处理不能提供充分的安全性,多轮处理能提供更高的安全性。增加轮数可以提高安全性,但降低速度,典型大小是 16 轮
- 子密钥产生算法:越复杂则密码分析越困难
- 轮函数 Round:越复杂则抗密码分析的能力越强
- 其他考虑
速度(尤其是软件实现的速度)
算法简洁清楚,便于分析,发现密码分析弱点
*Feistel 类算法举例:
DES、CAST、Blowfish/(Twofish)、RC6(/5)
不是 Feistel 结构的:AES、IDEA
绝大数分组密码属于或类似 Feistel 结构:多轮、每轮有 XOR(或能恢复的操作)、轮函数
二重 DES
二重 DES 是对 DES 算法的加强版本。它采用两次 DES 算法对明文进行加密,即先用一个密钥对明文进行一次加密,再用另一个密钥对加密后的结果进行一次加密。因为使用两个密钥,所以又称为双重 DES。
安全性问题:虽然二重 DES 的安全性比单重 DES 更高,但是它仍然存在被暴力破解的风险。对于一个有限的密钥空间,使用暴力破解的方法可以尝试所有的密钥组合,从而破解出密钥。
三重 DES
三重 DES(Triple DES)是一种对称加密算法,是在 DES 算法的基础上发展而来的加密算法。它采用了三次 DES 算法对明文进行加密,即先用一个密钥对明文进行一次加密,再用另一个密钥对加密后的结果进行解密,最后用第三个密钥对解密后的结果再进行一次加密。
当 K1=K2=K3 时,有 C=E(K1,D(K1,E(K1,P)))=E(K1,P),这样 3DES 会退化为 DES。
3DES 的特点:
由于 168 比特的密钥长度,它克服了 DES 对穷举法攻击的不足
3DES 的底层加密算法和 DES 相同,而这个算法比任何其它算法都经过了更长时间、更详细的审查,除穷举法以外没有发现任何有效的基于此算法的攻击
3DES 的缺点:
DES 算法软件运行较慢(原始 DES 为硬件实现,没有高效的软件代码),3DES 迭代轮数是 DES 的三倍,因此 3DES 更慢
DES 和 3DES 都使用 64 比特大小的分组,安全性较弱
高级加密标准
属于分组加密算法、分组长度 128bits、密钥长度 128/192/256bits,相应 10/12/14 轮
特点
速度快,耗用内存小,可靠性、防御能力强,将替代 DES 成为新的数据加密标准
设计原则
- 设计简单
- 在多个平台上速度快,编码紧凑
- 抵抗所有已知的攻击
Rijndael 没有采用 Feistel 结构,轮函数由 3 个不同的可逆均匀变换构成的,称为 3 个层。
Rijndael 是一个分组密码算法,其分组长度和密钥长度相互独立,都可以改变。
不是 Feistel 结构
密钥扩展
4 个不同步骤,1 个移位,3 个替换
结构简单
只有轮密钥加步骤使用密钥
轮密钥加本身不强大
每一步都简单可逆
解密算法按照相反顺序使用扩展密钥,但解密算法与加密算法不同
若 4 个步骤均可逆,可恢复明文
加解密最后一轮都只要 3 个步骤
随机数和伪随机数
含义
产生随机数有多种不同的方法。这些方法被称为随机数发生器。随机数最重要的特性是它在产生是后面的那个数与前面的那个数毫无关系。
真正的随机数是使用物理现象产生的,它们的缺点是技术要求比较高。
在实际应用中往往使用伪随机数就足够了。这些数列是“似乎”随机的数,实际上它们是通过一个固定的、可以重复的计算方法产生的。它们不真正地随机,因为它们实际上是可以计算出来的,但是它们具有类似于随机数的统计特征。这样的发生器叫做伪随机数发生器。
性质
随机性:主要包含两种性质
(1)均匀分布:1 和 0 出现的频率大致相同。
(2)独立:数字之间相互独立。
不可预测性:无法根据前期的数据预测后续的数据。
两种类型的随机数产生器
真随机数 TRNG:运用一些自然发生的过程产生真正的随机数,如抛硬币、样本热噪声、测量机械过程等
伪随机数 PRNG:运用一个短的输入流(种子)的确定性序列获得适度的比特随机流。目前常用这种方法:LSFR 和分组密码生成器 PRF
分组密码工作模式
为了将分组密码算法应用于实际,人们定义了很多工作模式
分组密码的工作模式:根据不同的数据格式和安全性要求, 以一个具体的分组密码算法为基础构造一个分组密码系统的方法
分组密码的工作模式应当力求简单, 有效和易于实现
需要采用适当的工作模式来隐蔽明文的统计特性、数据的格式等
降低删除、重放、插入和伪造成功的机会
1.电码本(ECB)模式
在 ECB 模式下明文一次被处理 b 比特,且明文的每一个分组都使用同一密钥加密。形象地说,可以认为有一个非常大的电码本,对任意一个可能的明文分组,电码本中都有一项对应于它的密文。
在 ECB 模式下明文一次被处理 b 比特,且明文的每一个分组都使用同一密钥加密。形象地说,可以认为有一个非常大的电码本,对任意一个可能的明文分组,电码本中都有一项对应于它的密文。
- 优点:
实现简单
不同明文分组的加密可并行实施,尤其是硬件实现时速度很快 - 缺点:
相同的明文分组对应着相同的密文分组,适合加密短信息
不能隐蔽明文分组的统计规律和结构规律,不能抵抗替换攻击
2.密码分组链接(CBC)模式
密码分组链接方式 CBC(Cipher Block Chaining)
在密码分组链接模式中,加密算法的输入是当前明文分组与前一密文分组的异或;每个分组使用同一密钥。相当于将所有的明文组连接起来了。
加密函数的每次输入和明文分组之间的关系不固定。因此,64 比特的重复模式并不会被暴露。
- 优点:避免明密对应
- 缺点:不能并行加密、无法随机存取
3.密码反馈(CFB)模式
核心思想:将分组密码转换为流密码,不需要使用解密,仅需使用加密
若待加密消息需按字符、字节或比特处理时,可采用 CFB 模式
称待加密消息按 s 比特处理的 CFB 模式为 s 比特 CFB 模式
适用范围:
适用于每次处理 s 比特明文块的特定需求的加密情形,能灵活适应数据各格式的需要
例如,数据库加密要求加密时不能改变明文的字节长度,这时就要以明文字节为单位进行加密
使用密码反馈模式能将任意分组密码转化为流密码
4.输出反馈(OFB)模式
OFB 模式在结构上类似于 CFB 模式,但反馈的内容是 DES 的输出而不是密文
5.计数器(CTR)模式
利用固定密钥 K 对自然数序列加密,将得到的密文分组序列看作密钥流序列,按加法密码的方式与明文分组逐位异或的一种方式
效率,能并行处理
预处理
加密数据块的随机访问
可证明安全
简单性(不需要使用解密,仅需使用加密)
第三章
防篡改——错误校验码
(1)奇偶校验码(只能校验是否有错)
原理:如果有 n 个有效的信息位,那么我们会在这些信息位的首部或者尾部加入一位的奇偶校验位
奇校验码:整个校验码(有效信息位和校验位)中”1”的个数为奇数
偶校验码:整个校验码(有效信息位和校验位)中”1”的个数为偶数
例 1: 给出两个编码 1001101 和 1010111 的奇校验码和偶校验码。设最高位为校验位,余 7 位是信息位,则对应的奇偶校验码为:
奇校验: 11001101 01010111
偶校验: 01001101 11010111
缺陷:
(1)偶数个数缺陷检验不出
(2)无法对错误定位,进而纠错
消息摘要的 3 种安全保护方式
(1)使用传统密码
如果只有发送方和接收方共享密钥,可以同时保证机密性。
(2)使用公钥密码
发送方使用发送方的私钥加密,接收方用发送方的公钥解密。优势在于:
既能提供数字签名,又能提供消息认证
不需要再通信各方分发密钥
(3)使用散列函数但未使用加密
假设通信双方共享秘密值 SAB
安全散列函数
单向散列函数或安全散列函数可用于:消息认证以及数字签名。常见散列函数:SHA;MD5
hash 码,也称为:哈希函数、hash 值、消息摘要、数字指纹(Digitalfinger print)、压缩(Compression)函数、紧缩(Contraction )函数、数据鉴别码 DAC(Data authentication code)、篡改检验码 MDC(Manipulation detection code)。
与 MAC 的区别:与密钥无关仅是消息 M 的函数;是所有消息位的函数,具有错误检测能力(即改变消息的若干位,都会导致 hash 码的改变)。
散列函数要求
Hash 函数 H(x)可以为消息、文件或数据产生“数字指纹”,用于认证的 Hash 函数 H(M)必须满足下列性质:
- H 可适用于任意长度的数据块;
- H 能够生成固定长度的输出;称为消息摘要(MessageDigest)
- 对任意给定数据块 x,计算 H(x)容易实现,且适合软硬件实现;
- 单向性:对任意给定值 h,找到 x 使 H(x) =h 在计算上不可行;
- 弱碰撞抵抗( Weak Collision Resistance,WCR):对任意给定 x,找到 y≠x 使 H(x)=H(y)在计算上不可行;
- 强碰撞抵抗( Strong Collision Resistance,SCR):找到 y ≠ x 使 H(x)=H(y)在计算上不可行。
1、2、3 可行性要求
4 抗原像攻击,保证散列码恢复不出原始消息,有秘密值参与的应用时非常重要
假如散列函数不是单向的,而攻击者能够分析或截获消息 M 和散列码 C = H(SAB||M),则攻击者很容易发现秘密值。攻击者对散列函数取逆得到 SAB||M = H-1 (C)。因为这时攻击者拥有 M 和 SAB||M,所以他们可以轻而易举地恢复 SAB 。
5 抗第二原像攻击:对于给定的消息,不可能找到具有相同散列值的可替换消息。利用加密的散列码可防止消息被伪造。如果该性质非真则攻击者可以进行如下操作:
第一,分析或截获消息及其加密的散列码;
第二,根据消息产生没有加密的散列码;
第三,生成具有相同散列码的可替换消息。
6 抗碰撞性:防止生日攻击等。
该攻击把 m 比特的散列函数强度从 2m 简化至 2m/2
HMAC
HMAC 主要是为了能对信源可信性和消息完整性同时进行验证。
优点:软件实现速度快、开源的代码库
摘要算法,只能够证明签名消息的完整性。
HMAC 与消息摘要 MD 的最大不同,就是有签名密钥;
HMAC 被广泛的运用于网络协议的认证阶段,例如 SET、SSL 等!
HMAC 运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。黑盒设计,直接利用 hash 函数
只是一个框架,嵌入式的 hash,具有很好的移植性
保持 hash 原有特性,不发生显著退化
共享秘密值方式,处理简单
强度依赖于 hash 函数
前两个目标,优势:
第一,黑盒设计可复用现有 HMAC 模块。这样,已经预先封装的大量 HMAC 代码可以不加修改地使用。
第二,便于更新维护。如果想替换一个 HMAC 实现中的特定散列函数,所需做的只是除去现有的散列函数模块,放入新模块。如果需要更快的散列函数时就可以这样操作。更为重要的是,如果嵌入式散列函数的安全性受到威胁,可通过简单地用更加安全的模块取代嵌入式散列函数,从而保证了 HMAC 的安全。
最后一个目标是 HMAC 相对其他散列方案最主要的优点。如果能提供有一定合理性的抗密码分析强度的嵌入式散列函数,就能够证明 HMAC 是安全的。
公钥密码算法
自从公钥密码的思想提出以来,国际上已经提出了许多种公钥密码算法,但比较流行的主要有两类:
一类是基于大整数因子分解问题的,其中最典型的代表是 RSA;
另一类是基于离散对数问题的,比如 ElGamal 公钥密码和影响比较大的椭圆曲线(ECC)公钥密码。
*RSA
RSA 算法是在 1978 年由 Rivest、Shamir 和 Adleman 提出的,它的安全性依赖于大数因式分解的困难性。众所周知,大数分解和素性检测是著名的数论难题。
1、加密算法
RSA 算法中模数 n 是两个大素数 p 和 q 的乘积,公钥 e 和模数 n 是公开的,而私钥 d 是保密的。RSA 算法的加密过程就是通过 n 和 e 将明文 M(M<n)转化成密文 C。
若用整数 M 表示明文,用整数 C 表示密文(M,C<n),则加密和解密运算为:
$$加密:C = M^e mod n (其中gcd(M,n)=1)$$
$$解密:M = C^d mod n $$
其中:加解密方均知道 n 和 e,加密方不知道 d,仅解密方拥有 d 值。
公钥 PU={e.n},私钥 PR={d.n}。算法必须满足以下条件才可以使用:
可以找到 e、d、n 的值,使得对所有的 M<n,Med mod n=M 成立;
对所有的满足 M<n 的值,计算 Me 和 Cd 相对容易;
对给定 e 和 n,不可能推出 d。注:当 e 与 n 值较大时,n 的分解非常困难,难以求出 d。
2、密钥的产生
计算 n。用户秘密地选择两个大素数 p 和 q,计算出 n=p×q。n 称为 RSA 算法的模数。
计算 φ(n)。用户计算出 n 的欧拉函数 φ(n)=(p-1)×(q-1),φ(n)的定义为不超过 n,且与 n 互素的正整数的个数
选择 e。用户从[0, φ(n)-1]中选择一个与 φ(n)互素的数 e 作为公开的加密指数。
计算 d。求解 d 满足 e×d = 1 mod φ(n) 作为解密指数
得出所需要的公开密钥和秘密密钥:
公开密钥(即加密密钥) PU={e, n}
秘密密钥(即解密密钥) PR={d, n}
第四章
对称密钥与公开密钥密钥数
密钥管理量的困难
密钥管理两个问题:密钥的存储、密钥的更新,试思考:
(1)当用户规模为 n 时,为保证用户两两之间进行通信,对于对称加密,需要使用的密钥对的最少个数?对于非对称加密,需要使用的密钥对的最少个数?
对称密钥:n(n-1)/2; 非对称密钥:n 对
(2)当用户规模为 n 时,新用户加入时,对于对称加密/非对称加密,需要使用的密钥对的最少个数?
对称密钥:n 对;非对称密钥:1 对
密钥分发方法
- 通信一方选定密钥并通过物理方法传递给另一方
- 可信第三方选定密钥并通过物理方法传递给通信双方
- 通信双方使用早先用过的密钥加密传递新的共享密钥
- 通过与可信第三方的安全加密链路获得共享密钥
1,2 方法适合链路级加密,不适合端到端安全通信;方法 3 可以兼顾两种链路,但是早先密钥泄漏会导致安全威胁。
目前常用第 4 种方法。
方法 4 的安全保障需要两种密钥:会话密钥、永久密钥
- 会话密钥:有时也称数据密钥,用于数据加密传输,是一次性的临时密钥
- 永久密钥:也称秘密密钥,用于会话密钥的分发和安全传递。
方法 4 会用密钥分发中心 KDC(Key Distribution Center)管理和分发密钥。
Kerberos
Kerberos 设计的目的是解决在分布网络环境下,用户访问网络资源时的安全问题。Kerberos 的安全不依赖于用户登陆的主机或者应用服务器,而是依赖于几个认证服务器。
Kerberos 协议中有 4 个通信参与方:需要验证身份的通信双方,一个双方都信任的第三方 KDC(包含认证服务器 AS 和票据授权服务器 TGS)。
将发起认证服务的一方称为客户端
客户端需要访问的对象称为服务器。
在 Kerberos 认证协议中,存在四个角色
(1)客户端(C,即用户)
请求服务的用户
(2)应用服务器(V,即提供某种服务器的服务器)
向用户提供服务的一方
(3)认证服务器(AS: Authentication Server)
负责验证用户的身份,如果通过了认证,则向用户提供访问票据准许服务器的票据授权票据(Ticket-Granting Ticket)
(4)票据授权服务器(TGS:Ticket-Granting Server)
负责验证用户的票据授权票据,如果验证通过,则为用户提供访问服务器的服务授权票据(Service-Granting Ticket)
公钥证书
公钥加密的意思就是公钥是公开的。通过广泛接受的公钥算法,如 RSA,任何参与者都可以给其他参与者发送他的或她的公钥,或向群体广播自己的公钥。
优点:方法简单方便,缺点:任何人可以伪造公共通告
具体来说:某用户可以伪装用户 A 向其他参与者发送公钥或者广播公钥。直到一段时间后用户 A 发觉了伪造并且警告其他参与者,伪装者在此之前都可以读到试图发送给 A 的加密消息,并且使用假的公钥进行认证。
解决方案:公钥证书,包含公钥、公钥所有者的 ID、可信第三方签名。
可信第三方,即用户团体所信任的认证中心(CA),如政府机构或金融机构
用户可通过安全渠道将自身公钥提交给 CA 获取证书。然后用户就可以发布证书。任何需要该用户公钥的人都可以获取这个证书并且通过所附的可信签名验证其有效性
X.509 标准
通用公钥证书格式:X.509 标准
应用场合,大多数网络安全设施,包括:
IP 安全、安全套接字层(SSL)、安全电子交易(SET)、S/MIME
PKI
PKI(Public Key Infrastructure)是一个用公钥概念与技术来实施和提供安全服务的具有普适性的安全基础设施。PKI 公钥基础设施的主要任务是在开放环境中为开放性业务提供数字签名服务。
第五章
SSL 会话与连接
握手协议:用来实现密钥交换和认证
记录层协议:用来安全传输数据
修改密码规格协议:启用新的密码参数
报警协议:报警和错误
警告消息(Warning Msg)
- 仅仅是通告对方有关报警信息,不会导致连接的关闭。一般连接被关闭,尽管其它己经打开的连接依然可以使用,但是会话标识被标记为无效,因此可以防止通过该会话创建新的连接。
致命消息 - 将导致连接被立即中止,并将与这个连接相关的会话(会话标识符)作废,以免这个会话被继续用来建立新的连接。
用于将 SSL 握手协议或者记录层协议等过程有关的告警传输给对方或向对方发出警告,或者中止当前连接。
握手协议本质上是一个密钥交换协议,但它也包含认证功能,因此可以视为认证和密钥交换协议
握手协议主要由四个过程组成
- 交换安全能力
- 服务器认证和密钥交换
- 客户端认证和密钥交换
- 完成:通知启用新的安全参数
SSL 与 HTTP
HTTP 协议在传输过程中没有提供足够的安全保护
网景公司(Netscape)在 1995 年首先提出了采用 SSL 保护 HTTP 的方案( HTTP over SSL )
HTTP over TLS 具体在 RFC 2817 和 RFC 2818 中描述
HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 Netscape 公司 1994 年所研发
第六章
试回忆,你所遇到的电子邮件安全威胁?
垃圾邮件(spam):垃圾邮件是指未经请求的广告性电子邮件。垃圾邮件可能会包含冒充身份的钓鱼邮件或恶意软件。
钓鱼邮件(phishing):钓鱼邮件是指伪装成合法机构或个人的电子邮件,旨在欺骗接收者提供个人信息、账户信息或密码等敏感信息。
恶意软件(malware):恶意软件是指在电子邮件中携带的恶意代码或文件,包括病毒、木马、间谍软件等,可能会感染您的计算机或手机并窃取敏感信息。
带有恶意链接或附件的电子邮件:这些电子邮件可能包含恶意链接或附件,当接收者点击链接或打开附件时,可能会导致系统感染恶意软件或黑客攻击。
带有伪装附件的电子邮件:这些电子邮件可能包含伪装成常见文件类型的恶意附件,例如 PDF、Word 文档或压缩文件,当接收者打开附件时,可能会感染恶意软件或黑客攻击。
内部威胁:内部威胁是指由组织内部的员工或其他人员故意或无意地泄露敏感信息或攻击组织的网络安全。
S/MIME协议提供4种与消息相关的服务:身份认证、机密性、压缩、电子邮件兼容性。
功能 | 典型算法 | 典型案例 |
---|---|---|
数字签名 | RSA/SHA-256 | 使用SHA-256生成一条带有散列值的消息 此消息摘要使用SHA-256与发送方的私钥进行加密,并包含在邮件中 |
消息加密 | 带CBC的AES-128 | 使用带有CBC的AES-128加密消息 使用发送方生成的一次性会话密钥。会话密钥使用RSA与接收方的公钥进行加密,并包含在消息中 |
压缩 | 未定义 | 可以压缩消息以进行存储或传输 |
邮件兼容性 | radix-64转换 | 为了提供电子邮件应用程序的透明性,可以使用radix-64 conversion将加密的消息转换为ASCII字符串 |
PGP
PGP(Pretty Good Privacy)协议,一个提供加密和认证的基于 RSA 公钥及 AES 等加密算法的加密软件系列。与S/MIME功能基本相同,其区别在于:
密钥认证:PGP协议由用户生成自己的公钥和私钥;S/MIME由证书颁发机构(CA)颁发X.509证书。
密钥分发:PGP不包含每封邮件的发送方公钥,因此邮件接收方必须单独获取发送方的公钥才能验证邮件。如在受TLS保护的网站上发布/下载对应的PGP密钥。
PGP 提供电子邮件的安全性、发送方鉴别和报文完整性。假定 A 向 B 发送电子邮件明文 X,使用 PGP 进行加密。
发送方A 有三个密钥:A 的私钥、B 的公钥和 A 生成的一次性密钥。
接收方B 有两个密钥:B 的私钥和 A 的公钥。
- 对明文邮件 X 进行 MD5 运算,得出 MD5 报文摘要,即 H=H(X)。
- 用 A 的私钥对 H 进行加密(即数字签名)得出消息认证码MAC,即E(PRA,H(X))
- 把它拼接在明文 X 后面,得到扩展的邮件,即 X || E(PRA,H(X)) 。
- 压缩。即 Z( X || E(PRA , H(X)))。
- 使用 A 自己生成的一次性密钥Ks对扩展的邮件进行加密,即E(Ks, Z( X || E(PRA , H(X)))) 。
- 用 B 的公钥对 A 生成的一次性密钥进行加密,即E(PUB, Ks) 。因为加密所用的密钥是一次性的,即密钥只会使用一次,不会出现因为密钥泄露导致之前的加密内容被解密。即使密钥被泄露了,也只会影响一次通信过程。
- 把加了密的一次性密钥和加了密的扩展的邮件连接发送给 B,即E(PUB , Ks) || E(Ks , Z( X||E(PRA , H(X)))) 。
- 把被加密的一次性密钥E(PUB , Ks)和被加密的扩展报文E(Ks,Z( X || E(PRA , H(X))) )分离开。
- 用 B 自己的私钥解出 A 的一次性密钥Ks,即Ks =D(PRB, E(PUB , Ks) )。
- 用解出的一次性密钥Ks对报文进行解密,即Z( X || E(PRA , H(X))) = D(Ks , E(Ks, Z( X || E(PRA , H(X))) )
- 解压缩。即X || E(PRA , H(X)) = Z-1(Z( X || E(PRA , H(X))) )
- 然后分离出明文 X 和 E(PRA , H(X)) 。
- 用 A 的公钥对 MAC 进行解密(即签名核实),得出报文摘要 H。即H(X) = D(PUA,E(PRA , H(X)) ) ,这个报文摘要就是 A 原先用明文邮件 X 通过 MD5 运算生成的那个报文摘要。
- 对签名进行验证:对分离出的明文邮件 X 进行 MD5 报文摘要运算,得出另一个报文摘要 H(X)。把 H(X) 和前面得出的 H 进行比较,是否和一样。如一样,则对邮件的发送方的鉴别就通过了,报文的完整性也得到肯定。
为何先压缩再加密?
由于压缩的实质就是将有序的消息进行无序化处理,当消息规则性越强压缩效果可能越好,而加密的过程也是将消息进行无序化处理。
因此,先加密再压缩是在无序的基础上变更无序,没有什么实质性作用,可能原来10G的文件,还是10G。但是若先压缩再加密,就可能使得原来10G的文件变为5G,因此传输的消息将变少。
PGP 可以只签名而不(使用对方公钥)加密整个邮件。那么我们需要去掉图中的哪些步骤呢?
这适用于公开发表声明时,声明人为了证实自己的身份,可以用自己的私匙签名。这样就可以让收件人能确认发信人的身份,也可以防止发信人抵赖自己的声明。这一点在商业领域有很大的应用前途,它可以防止发信人抵赖和信件被途中篡改。
同样的,PGP可以只加密而不签名整个邮件,以提供邮件保密性。
DNSSEC
Domain Name System Security Extensions (DNSSEC) DNS安全扩展,是由IETF提供的一系列DNS安全认证的机制。
它提供了一种来源鉴定和数据完整性的扩展,但不去保障可用性、加密性和证实域名不存在。
DNSSEC的主要思想是通过在DNS记录中添加加密签名,从而为DNS解析流程提供来源可认证和数据完整性的保障。
开启DNSSEC,可有效防止DNS欺骗和缓存污染等攻击
第七章
IPSec
两种操作模式
- 传输模式
- 隧道模式
两个数据库 - 安全策略数据库SPD
- 安全关联数据库SAD
两个通信协议: - AH :认证头(Authentication Head)
- ESP: 封装安全载荷(Encapsulating Security Payload )
两个算法: - 加密算法
- 认证算法
三个密钥管理协议 - 安全关联与密钥管理协议(ISAKMP: Internet Security Association and Key Management Protocol)
- 因特网密钥交换管理协议(IKE: Internet Key Exchange )
- Oakley: IKE的密钥交换协议
什么是隧道技术
VPN的具体实现技术是采用隧道,通过其在公网中建立企业之间的链接,将用户的数据封装在隧道中进行传输。
隧道技术与接入方式无关,它可以支持各种形式的接入,如拨号方式接入、CABLE Modem、xDSL以及ISDN、E1专线和无线接入等。
一个隧道协议通常包括以下几个方面:
- 乘客协议:被封装的协议,如PPP、SLIP;
- 封装协议:隧道的建立、维持和断开,如L2TP、IPSec等;
- 承载协议:承载经过封装后的数据包的协议,如IP和ATM等。
目前因特网上较为常见的隧道协议大致有:
第二层隧道协议:PPTP(由微软、Ascend、3COM 等公司支持)、L2F(Cisco、北方电信等公司支持)、L2TP(由 IETF 起草,微软 Ascend 、Cisco、 3COM 等公司参与)
第三层隧道协议:GRE(RFC 1701 )、IPSec
隧道可在网络的任一层实现
- 数据链路层隧道:先把各种网络协议封装到PPP中,再把整个数据包装入隧道协议中。这种双层封装方法形成的数据包靠第二层协议进行传输。第二层隧道协议有L2F、PPTP、L2TP等。
- 网络层隧道:把各种网络协议直接装入隧道协议中,形成的数据包依靠第三层协议进行传输。第三层隧道协议有GRE、IPSec等。
第二层和第三层隧道协议的区别主要在于用户数据在网络协议栈的第几层被封装。其中GRE和IPSec主要用于实现专线VPN业务,L2TP主要用于实现拨号VPN业务,也可用于实现专线VPN业务。
封装安全载荷 ESP 协议格式
ESP有两种模式
- 传输模式:仅适用于主机实现,且仅为上层协议提供保护,而不包括IP头。
- 隧道模式:可适用于主机和安全网关,整个数据包被封装在ESP有效负载中,并产生一个新的IP头附加在ESP头之前。