作者:my011215
链接:https://my011215.github.io/
来源:个人博客
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处
- 第一章 计算机与网络安全概念
- 第三章传统加密技术
- 第四章 分组密码和数据加密标准
- 第六章 高级加密标准
- 第七章 分组加密的工作模式
- 第八章 伪随机数的生成和流密码
- 第九章 公钥密码学与 RSA
- 第十章 密钥管理和其他公钥密码体制
- 第十一章 密码学 Hash 函数
- 第十二章 消息认证码
- 第十三章 数字签名
- 第十四章 密钥管理和分发
- 第十五章 用户认证
第一章 计算机与网络安全概念
定义
- 3 个阶段
- 传统安全(计算机出现之前):物理管理方法(保险箱和锁)
- 计算机安全:自动化工具、软件硬件、CIA(机密性、完整性、可用性)
- 网络安全 (use of networks and communications links):通讯、网络设备(路由器、交换机、服务器、网关)
- 网络空间安全(Cybersecurity): 保护在计算机、其他数字设备以及网络设备和传输线路(包括互联网)的网络系统中存储、传输和处理的信息。
- 信息安全(Information Security):(机密性 confidentiality、完整性 integrity、可用性 availability)统称为计算机安全 CIA、真实性、可审计性
- 网络安全(Network Security):数据与服务在网络中的安全。保护网络及其服务免受攻击,并保证网络正确执行其关键功能并且没有有害的副作用。
-
机密性
数据机密性:非授权的个体不可以访问秘密信息
隐私:隐私数据、血型、生日、指纹不可以被可能泄露这些数据的第三方搜集 -
完整性
数据完整性:信息只可以被授权的方式修改,如果信息被修改,可以发现(不可以恢复),MD5
系统完整性:系统只支持预期功能。 -
可用性:系统可以对合法用户的请求立刻产生响应
-
真实性:数据是真实的,可以被验证
-
可审计性:任何行为可以唯一的追踪到某个实体(日志)
OSI 安全架构
- 定义:提供一个系统的方法实现信息安全
- 安全攻击 (security attack):破坏 / 攻击系统安全性的行为
- 安全机制 (security mechanism):方法 / 算法用来检测、阻止、恢复在攻击中的系统
- 安全服务 (security service):增强数据 / 信息安全性(阻止安全攻击)
- 攻击三个步骤
- 选择攻击(泄密)
- 选择服务(阻止攻击)
方法:加密 AES、RSA - 选择机制(实现服务)
安全攻击(security attack)
- 被动攻击 (Passive attacks):
- 概念:跟踪、监视、偷听
- 目的:得到数据
- 检测:困难(不涉及对数据的更改)
- 阻止:容易(加密数据)
- 例子:信息泄露、流量分析(模式大小、源 IP、目的 IP、频率)
- 主动攻击 (Active attacks):
- 概念:修改、伪造
- 目的:干预、破坏
- 检测:容易
- 阻止:困难
- 例子:伪装、重放、修改信息、拒绝服务攻击(Dos (攻击中耗尽服务器资源(计算、带宽、内存)))
安全服务(security service)
- 认证:验证身份
- 访问控制:阻止非授权访问资源
- 要求
- 数据保密性 (Data Confidentiality)
防止未经授权的信息泄露。 - 数据完整性 (Data Integrity)
保证收到的数据与被授权实体发送的数据完全相同(即不包含修改、插入、删除或重放)。 - 不可否认性 (Non-Repudiation)
不可否认性可防止发送方或接收方拒绝传输的消息。
发送消息时,接收方可以证明所谓的发送者确实发送了消息。
收到消息后,发件人可以证明
所谓的接收者实际上收到了该消息。
- A—>B
A:不可以否认发送了信息
B:不可以否认接受了信息 - 应用:股票交易服务
安全机制(security mechanism)
- 密码加密 (Encipherment):机密性
可以提供数据和流量的机密性,也是一些身份验证交换机制的基础 - 数字签名 (Digital Signature):相当于手写签名
由两个过程(签名和验证)组成,可以提供不可抵赖、原产地认证和数据 - 访问控制 (Access Control):资源访问控制机制
使用与客户相关的信息的方法,以及服务器,以决定客户端是否访问服务器。 - 数据完整性 (Data Integrity):SHA、MAC
防止数据被修改,用于提供数据完整性和来源认证服务 - 认证协议 (Authentication):保证实体身份
提供实体身份验证服务,也称为身份验证协议,由一对通信实体之间交换的一系列受加密保护的消息组成。 - 流量填充 (Traffic Padding):发送数据包过程中添加假数据
添加假数据以隐藏真实数据量,提供流量机密性,仅与其他机制(例如加密)结合使用有效 - 路由控制 (Routing Control):控制数据走安全路线
用于防止敏感数据使用不安全的通道
例如,可以选择仅使用物理安全网络的路由 - 公证 (Notarisation):利用可信第三方保护数据
数据的完整性,来源和 / 或目的地可以通过使用第三方来保证。
公证人通常会对数据应用加密转换。
可提供不可抵赖服务
9. 通讯安全
- IPses—IP 安全
- SSL—HTTP 安全
- SIMIM— 电子邮件安全
- 设备安全:防火墙、入侵检测、过滤器
第三章传统加密技术
- 学习假设情况:
- 密钥:保密
- 攻击者可知:加解密算法、密文
- 攻击中目的:得到密钥,获取明文
- 密码学 (cryptography)
- 盾:密码编码学 (cryptology)(加密的科学方法)
- 矛:密码分析学 (cryptanalysis (codebreaking))(破解未知密钥)
- 密钥 (key):保密,用于配置密码系统
- 明文 (plaintext):原始信息
- 密文 (ciphertext):加密后的信息
- 加密算法 (encipher (encrypt)):明文 + key-> 密文
- 解密算法 (decipher (decrypt)):密文 + key-> 明文
- 分类
- 加密类型(替换、置换、乘积)
- 密钥个数
(1)对称加密(单钥密码):发送者和接受者共享一个密钥
(2)非对称加密(双钥密码):公钥、私钥 - 明文处理方式
(1)分组密码:每次处理一组元素(128bit,256bit)
(2)流密码:连续的处理每个元素(1 字节,1 比特)
- 通用攻击方式 (Attacking the cipher)(2 个)
-
密码分析攻击 (cryptanalytic attack)(一个合格的密码系统应该能够阻止前两种攻击)
依赖于算法的性质,再加上对明文的一般特征的一些了解,甚至是一些样本明文 - 密文对。推断特定的明文或推断正在使用的密钥
(1)唯密文攻击(困难,知识少)
(2)已知明文攻击(明文,密文固定)
(3)选择明文攻击(明文,密文可以有条件的选择)
(4)选择密文攻击(选择一个已知密文和明文,获得明文与密文之间的加密关系,从而破解未知密文信息)
(5)选择文本攻击(选择明文 + 选择密文两者的结合)(简单,知识多)
-
暴力破解(穷举攻击)
尝试密钥集合中的每个钥匙(至少尝试可能密钥的一半)???
总是可以简单地尝试每个键,平均而言,必须尝试所有可能的密钥中的一半才能取得成功。最基本的攻击,与密钥大小成正比。
- 对称加密 (Symmetric Encryption)
-
四个角色
(1)发送方面
(2)接收方
(3)可信第三方密钥源(为通讯双方生成、分发密钥)
(4)密码分析员 -
简化模型
-
完整模型
-
无条件安全 (unconditional security)
无论计算机有多少可用的能力和时间,密码都无法被破解,因为密文提供的信息不足以唯一确定相应的明文 -
计算安全 (computational security)
有限的计算机资源和时间,密码不值得被破解
- 古典密码 (Classical Encryption)
-
替代 (Substitution)(内容变化,位置、次序不变)
明文中的字母被别的字母、数字、符号取代
明文字母被其他字母或数字或符号替换,或者,如果将明文视为一系列位,则替换涉及将明文位模式替换为密文位模式
例子:凯撒加密
-
置换 (Transposition)(内容不变,位置、次序发生改变)
例子:栅栏技术
第四章 分组密码和数据加密标准
- 分组密码 (Block Ciphers)
-
提前生成明文
-
慢
-
应用广泛
-
明文分组与密文分组大小相同(64 位或 128 位)
- 流密码 (stream ciphers)
-
每次生成 1byte/1bit
-
快(实时应用)
-
应用窄
-
比特流生成算法(随机数生成器)
- Feistel 密码
-
实现:S-P 网络:替换 - 网络置换
-
扩散 (Diffusion):使得密文和明文关系复杂(在大量密文上分散明文的统计结构,不利于密钥排列的推断)
在大量密文上消散明文的统计结构,反对推导出密钥排列
实现:置换 -
混淆 (Confusion):使得密文与密钥关系复杂,不利于密钥的推断
使密文和密钥之间的关系尽可能复杂 - 以防止攻击以推断密钥 - 替换
实现:替换 -
原理
左边明文 32/64 位经过密钥置换得到右边密文,右边明文 32/64 位经过置换得到左边密文。如此循环 16 轮
-
分组长度
长:安全 -
迭代轮数
多:安全 -
密钥长度
长:安全 -
块大小 (block size):
更大的块大小意味着更高的安全性 -
密钥大小 (key size):
密钥大小越大意味着安全性越高 -
回合数 (number of rounds):
多回合提供更高的安全性 -
子密钥生成算法 (subkey generation algorithm):
越复杂,密码分析难度越大。 -
回合模块 (round function)
快速软件 En / 解密:算法的执行速度成为一个问题,易于分析
- DES 加密
-
分组大小(明文):64 位
-
密钥大小:64 位(但是,64 位明文,使用 56 位密钥)
-
轮数:16 轮
-
密钥剩下的八位可用于奇偶校验或者随意置换
-
DES 优势分析
现在对 DES 进行了几次分析攻击:
这些利用了密码的一些深层结构,通过收集有关加密的信息,最终可以恢复部分 / 全部子键位如有必要,请详尽地搜索其余的
通常这些是统计攻击,包括
(1)差分密码分析 (differential cryptanalysis)
(2)线性密码分析 (linear cryptanalysis)
(3)相关按键攻击 (related key attacks)
-
雪崩效应 (Avalanche Effect)
密钥或明文的微小改变对密文产生很大影响
加密算法的关键理想特性,其中一个输入或关键位的变化导致大约一半的输出位变化,DES 表现出强烈的雪崩
第六章 高级加密标准
- AES
-
DES 不足以阻抗暴力攻击
-
复杂结构(轮数少)VS 简单结构(轮数多)
-
简单结构(分析容易,实现:硬件 or 软件)
-
框架
-
具体图
-
4 个变换
(1)字节代替 (byte substitution):利用 S 盒
(2)高 4 位做行值,低 4 位做列值,根据 16 进制到 S 盒中找值映射
-
行移位 (shift rows):简单的移位
-
列混淆
-
轮密钥加变换
- AES 的密钥扩展
- 密钥扩展算法
第七章 分组加密的工作模式
- 操作模式 (Modes of Operation)
- 目的
(1)可以应用分组密码处理
(2)任意大小和数据 - 功能
(1)加强密码应用的安全性
(2)应用于各种不同的场景
- 分组模式
- ECB、CBC
- 提前准备全部的明文密文
- 流模式
- CFB、OFB、CTR
- 把分组密码转换成流密码
- ECB(电码本模式)
-
概念
(1)就是使用相同的密钥对明文组进行加密,一次只加密一组明文。解密时也使用相同的密钥对密文组进行解密,一次解密一组密文。
(2)假设明文分组长度为 b,则可以将明文分为 b 位一组的明文组,必要时,可对最后一个明文组进行填充。
(3)消息被分解为加密的独立块,每个块都是一个被替换的值,就像一个密码本,因此得名
每个块都独立于其他块进行编码,Ci = 桌面 1(Pi),用途:单个值的安全传输。
(4)在这种工作模式下,一个明文组只能固定地被加密成一个对应的密文组,一个密文组也只能固定地被解密成对应的密文组。他们彼此是一一对应的。设想我们有一个厚厚的密码本,每次加密时,我们只需要从密码本中查出明文所对应的密文就可以。这也是电码本模式名称的由来。 -
优缺点
(1)对于短消息,ECB 模式是比较适用的。但对于长消息,ECB 模式就不太安全了。这是因为长消息中会经常对相同的明文分组进行加密,得出相同的密文,这回导致频率特征暴露,造成安全隐患。
(2)存在块重复问题
- CBC(密文分组链连接模式)
-
概念
(1)加密算法的输入是明文分组和前一个密文分组的异或,同样均使用相同的密钥进行加密。其中第一个明文加密时,需先与初始向量 IV 异或,再进入加密算法进行加密。
-
不存在块重复问题
-
优缺点分析
(1)处理大量数据
(2)在每次发送消息时,发送方应该把 IV 的值也秘密发送给接收方。即对于 m 个明文分组,CBC 将输出 m+1 个密文分组( IV 也被算作密文分组的一部分)。
(3)如果 IV 被公开,则攻击者可能会篡改 IV ,导致第一块密文解密失败。
(4)CBC 模式存在错误传播的可能,如果前一块密文接收失败,那么会影响下一块密文的解密,但是并不会影响下下块密文的解密,最多只能影响一块,即 CBC 模式具有自同步功能。
(5)CBC 的密文块需要按顺序逐一解密,ECB 模式可以同时解密。
- 填充提示攻击???
- 概念
填充提示攻击是一种利用分组密码中填充部分来进行攻击的方法。在分组密码中,当明文长度不为分组长度的整数倍时,需要在最后一个分组中填充一些数据使其凑满一个分组长度。在填充提示攻击中,攻击者会反复发送一段密文,每次发送时都对填充数据进行少许改变。由于接收者(服务器)在无法正确解密时会返回一个错误消息,攻击者通过这一错误消息就可以获得一部分与明文相关的信息。这一攻击并不仅限于 CBC 模式,而是适用所有需要进行分组填充的模式。2014 年对 SSL3.0 造成了重大影响 POODLE 攻击实际上就是一种填充示攻击。
- CFB(密码反馈模式)
-
概念
(1)明文本身并没有进入加密算法中进行加密,而是与加密函数的输出进行了异或,得到了密文。CFB 以及后面要讲的 OFB、CTR 模式都具有这样的特征,这是流密码的典型特征。此外,CFB 不需要将明文分组填充到分组长度的整数倍,可以实时操作。
-
优缺点分析
(1)密文块需要按顺序逐块加密。
(2)密钥、明文相同时,IV 不同,则加密结果不同。
(3)存在错误传播的可能性:前部分密文出错,会影响后边的解密。这是因为一块密文在进入下一分组的移位寄存器后,会在接下来的几个分组中一直除以移位寄存器中。
(4)有自同步功能:在若干分组加密后,前边错误加密的密文会移出移位寄存器,停止对后面分组的加密造成影响。
- OFB(输出反馈模式)
参考:http://t.csdn.cn/Sfqt0
-
概念
这是一种输出反馈 (OFB) 模式 ,其结构与密码学中的 CFB 相似。 加密功能的输出被反馈到密码学中的 OFB 中的移位寄存器,而在 CFB 中,在块模式下,密文单元被反馈到该块中的移位寄存器。 另一个区别是,OFB 模式对纯文本或原始文本和密文的完整块进行操作,而不对字符的 s 位子集进行操作。 加密可以表示为 Cj = Pj Ⓧ E (K, [Cj - i Ⓧ Pj - 1])
-
优缺点分析
(1)OFB 方法的主要优点是传输中的误码不会在加密中传播。
例如 ,如果在 C1 中作为密文发生位错误,则仅影响 P1 作为明文的恢复值; 随后的明文单元未损坏。 使用 CFB 时,C1 作为密文还用作移位寄存器的输入,因此在此模式下会导致下游的其他损坏。
(2)OFB 的缺点是,与 CFB 相比,它在操作模式下更容易受到消息流修改攻击。
- CTR(计数器模式)
-
概念
一种 “新” 模式,虽然很早就提出了,类似于 OFB,但加密计数器值而不是任何反馈值 ,每个明文块必须具有不同的键和计数器值(永不重用)
用途:高速网络加密
-
优缺点分析
(1)可以在硬件或软件中进行并行加密
(2)可以提前预处理
(3)适用于突发高速链路
(4)随机访问加密数据块
(5)可证明的安全性(与其他模式一样好),但必须确保永远不要重用键 / 计数器值,否则可能会中断 (cf OFB)
- 对称加密位置
-
链接加密 (link encryption)
(1)加密在每个链接上独立进行
(2)暗示必须解密链接之间的流量
(3)需要许多设备,但配对的密钥
(4)使用端到端加密时,必须将标头保留为明文, 因此,网络可以正确路由信息,因此,尽管内容受到保护,但流量模式流不是。理想情况下,希望同时使用两者
(5)链路加密发生在第 1 层(物理层)或第 2 层(链路层) -
端到端加密 (end-to-end encryption)
(1)加密发生在原始源和最终目标之间
(2)两端都需要具有共享密钥的设备
(3)端到端保护整个路径上的数据内容并提供身份验证,链路保护流量免受监控
(4) 端到端可以发生在第 3 层(网络层)、第 4 层(传输层)、第 6 层(表示层)、第 7 层(应用层)
(5)随着移动得越高,加密的信息就越少,但它更安全,尽管实体和密钥更多,但更复杂
第八章 伪随机数的生成和流密码
- 随机数的 4 个典型应用
- 现在:用于阻止重放攻击在认证协议,仅使用一次随机数
- 会话密码:用于加密消息在一个事务或一个会话中,短生存期
- 公钥生成
- 密钥流(流密码中)
- 三个生成器
-
TRNG(真随机数生成器)
(1)输入:熵源(噪音…)
(2)输出:真随机数(任意种子) -
PRNG(伪随机数生成器)
(1)输入:seed (种子)
(2)输出:任意长度伪随机数
(3)三个要求
1)随机性 (Randomness)
传统上,随机数生成的关注点是数字序列在某种明确定义的统计意义上是随机的。以下三个条件用于验证数字序列是否随机:
a. 均匀分布性 (Uniformity):在任何位置,是 0 或 1 的概率是 0.5
b. 可伸缩性 (Scalability):对任意子序列,可以通过随机性测试
c. 一致性 (Consistency):对任意一个种子在种子集合,可生成满足要求的随机数。生成器的行为必须在起始值(种子)之间保持一致。
2)不可预测性 (Unpredictability)
a. 前向不可预测性:攻击者不知道种子,知道前面的序列。攻击者不能预测下一个的输出
b. 后向不可预测性:攻击者知道所有的序列,不知道种子。根据对任何生成值的了解来确定种子也不可行。
3)保护种子安全 (Characteristics of the seed)
a. 如果已知对手可以确定输出,那么必须是随机数或伪随机数 -
PRF(伪随机函数)
(1)输入:seed,上下文相关的结构
(2)输出:固定长度伪随机数
(3)确定性算法:给点一个输入,算法总是生成相同输出,无论运行多少次
(4)非确定性算法:给定一个输入,每次运行算法,生成不同输出
(5)危害:如果攻击中知道 seed,就会重新生成输出
(6)示例是对称加密密钥和随机数。
- 随机数生成
- 线性同余生成器 (Linear Congruential Generator)
- BBS 生成器 (Blum Blum Shub Generator)
- 硬件 (hardware)
- 使用分组密码作为 PRNG (Using Block Ciphers as PRNGs)
- 自然随机噪声 (Natural Random Noise)
第九章 公钥密码学与 RSA
- 对称加密 (symmetric encryption)
- 复杂替代与置换
- 1 个密钥
- 问题
(1)密钥分发 (key distribution),(n 个人,两两分发,一共需要 n (n-1)/2)
(2)数字签名 (digital signatures)
1)报文鉴别 —— 接收者能够核实发送者对报文的签名
2)报文的完整性 —— 接收者不能伪造对报文的签名或更改报文内容
3)不可否认 —— 发送者事后不能抵赖对报文的签名
- 非对称加密 (public-key/two-key/asymmetric cryptography)
- 数学困难问题
- 一个公钥,一个私钥
- 3 个错误认识
- 公钥密码比对称密码更安全
- 可以放弃对称密码
- 公钥分发是不重复的
- 公钥 (public-key)
- 公开,任何人可知
- 加密
- 验证签名算法
- 私钥 (private-key)
-
拥有者可知
-
解密
-
生成签名算法
- 明文 (Plaintext):算法的输入
- 加密算法 (Encryption algorithm):对明文进行各种转换
- 公钥和私钥 (Public and private keys)
- 密文 (Ciphertext):算法输出
- 解密算法 (Decryption algorithm):还原成明文
- 6 个要求
-
易于生成公钥和私钥
-
知道公钥和明文,易于生成密文
-
知道私钥和密文,易于生成明文
-
攻击者知道公钥,不可以得出私钥
-
攻击者知道公钥和密文,不可以得到明文
-
生成签名的条件(验证,解密)
- 3 个典型应用
-
加密和解密 (encryption/decryption)(机密性)
-
数字签名 (digital signatures)(鉴别,安全服务)
-
密钥交换 (key exchange)(会话密钥)
13.RSA 和中间人攻击 -
RSA
(1)数学困难问题:素数因子分解 (Prime Factorization)(n=p*
q (pq 互素))
(2)pq 互素由最大公因子为 1 条件确定
(3)定义小于 n 并且与 n 互素的数的个数 -
素性测试 (Primality Testing)(是否素数)
(1)基于统计的(快)
如果通过测试,数以一定的概率是素数
(2)确定性的(慢)
如果通过测试,一定是素数 -
公私钥生成 (Key Setup)
-
攻击
(1)暴力攻击 (brute force key search)
给定数字大小不可行
(2)数学攻击 (mathematical attacks)
基于计算难度 ø(n),通过分解模数 n
(3)记时攻击 (timing attacks)
运行解密时
(4)选择密文攻击 (chosen ciphertext attacks)
给定 RSA 的属性 -
例子
第十章 密钥管理和其他公钥密码体制
- D-H 密钥交换协议
https://www.jianshu.com/p/55c875969c0a
- 概念
Diffie-Hellman: 一种确保共享 KEY 安全穿越不安全网络的方法,它是 OAKLEY 的一个组成部分。Whitefield 与 Martin Hellman 在 1976 年提出了一个奇妙的密钥交换协议,称为 Diffie-Hellman 密钥交换 协议 / 算法 (Diffie-Hellman Key Exchange/Agreement Algorithm). 这个机制的巧妙在于需要安全通信的双方可以用这个方法确定 对称密钥 。然后可以用这个密钥进行 加密和解密 。但是注意,这个密钥交换协议 / 算法只能用于密钥的交换,而不能进行消息的加密和解密。双方确定要用的密钥后,要使用其他对称密钥操作加密算法实现加密和解密消息。 - 介绍
1 | DHKE 是最早的 公钥协议 之一,它允许两方安全地交换数据,因此有人嗅探双方之间的通信,交换的信息就可以泄露。 |
- 中间人攻击 (Man-in-the-middle Attack)
来源:http://t.csdn.cn/RiQcB
- 概念
(1)中间人攻击(Man-in-the-MiddleAttack,简称 “MITM 攻击”)是一种 “间接” 的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制的一台计算机虚拟放置在网络连接中的两台通信计算机之间,这台计算机就称为 “中间人”。 - 中间人攻击常见的两种方法:ARP 欺骗、DNS 欺骗
(1)DNS 欺骗
1 | 目标将其DNS请求发送到攻击者这里,然后攻击者伪造DNS响应,将正确的IP地址替换为其他IP,之后你就登陆了这个攻击者指定的IP,而攻击者早就在这个IP中安排好了一个伪造的网站如某银行网站,从而骗取用户输入他们想得到的信息,如银行账号及密码等,这可以看作一种网络钓鱼攻击的一种方式。对于个人用户来说,要防范DNS劫持应该注意不点击不明的连接、不去来历不明的网站、不要在小网站进行网上交易,最重要的一点是记清你想去网站的域名,当然,你还可以把你常去的一些涉及到机密信息提交的网站的IP地址记下来,需要时直接输入IP地址登录。 |
(2)ARP 欺骗
1 | 在实现TCP/IP协议的网络环境下,一个ip包走到哪里,要怎么走是靠路由表定义,但是,当ip包到达该网络后,哪台机器响应这个ip包却是靠该ip包中所包含的硬件mac地址来识别。也就是说,只有机器的硬件mac地址和该ip包中的硬件mac地址相同的机器才会应答这个ip包,因为在网络中,每一台主机都会有发送ip包的时候,所以,在每台主机的内存中,都有一个 arp--> 硬件mac 的转换表。通常是动态的转换表(该arp表可以手工添加静态条目)。也就是说,该对应表会被主机在一定的时间间隔后刷新。这个时间间隔就是ARP高速缓存的超时时间。通常主机在发送一个ip包之前,它要到该转换表中寻找和ip包对应的硬件mac地址,如果没有找到,该主机就发送一个ARP广播包,于是,主机刷新自己的ARP缓存。然后发出该ip包。 |
- 防范 MITM 攻击的常用方法
(1)将一些机密信息进行加密后再传输,这样即使被 “中间人” 截取也难以破解。
(2)通过设备或 IP 异常检测。如用户以前从未使用某个设备或 IP 访问系统。
(3)通过设备或 IP 频率检测:如单一的设备或 IP 同时访问大量的用户帐号。
(4)进行带外认证,具体过程是:系统进行实时的自动电话回叫,将二次 PIN 码发送至 SMS(短信网关),短信网关再转发给用户,用户收到后,再将二次 PIN 码发送到短信网关,以确认是否是真的用户。
第十一章 密码学 Hash 函数
- 压缩函数 (Hash Functions)
- h=H(M)
- 输入:任意长度的消息 M
- 输出:固定长度的值:散列值,码,指纹,报文,摘要
- 散列函数(实现完整性,不是加密算法,不可逆)
-
检测修改,不可以把修改后的消息恢复成原始消息
-
六个要求
(1)可以处理任意长度消息 M (any sized message)
(2)总是生成固定长度 (fixed-length) 的值
(3)易于计算 h=H (M)
(4)单向性 (one-way property),给定 h,不可以计算出 M,正向易,反向难
(5)抗弱碰撞性 (weak collision resistance)(会出现重复的值,md5 碰撞结合 php 弱比较和 md5 碰撞 SQL 漏洞
1)解决碰撞 https://www.cnblogs.com/hld123/p/15212563.html
2)例子,给定 x,找出到 y,使得 H(x)=H(y)易
(6)抗强碰撞性 (strong collision resistance)
例子找出任意 x,y,使得 H(x)=H(y)难 -
3 类典型应用
(1)消息认证 (message authentication)
1)保证信息完整性
2)验证发送方身份
3)实现方法
a. 消息认证 (message encryption)(3 种方法实现报文鉴别)
消息加密(https://www.cnblogs.com/block2016/p/5634808.html)
b. 消息鉴别码 MAC (message authentication code)
1 | 一小块固定大小的数据块,由消息 + 密钥生成 |
c. 散列函数 (hash function)
(2)数字签名 (digital signature)
(3)其余应用 (other applications)
1)产生单向口令文件 (create a one-way password file)
2)入侵检测和病毒检测 (intrusion detection and virus detection)
3)构建随机函数,伪随机数发生器 (pseudorandom function (PRF) or pseudorandom number generator (PRNG))
3. 生日攻击 (Birthday Attacks(23))
- 问题
一个房间里必须有多少人才能使房间里至少有两个人的生日相同的可能性达到 50%?
答案:23
第十二章 消息认证码
- 消息认证函数(MAC)(不是数字签名)
- MAC=(K,M)
- M:任意长度的消息
- K:私钥
- 不是加密算法(不可逆)
- MAC:固定长度的值,鉴别符
(1)理论上:多对一函数,存在多个消息相同的 MAC 值
(2)实际上:找到多个消息有相同 MAC 值不可能 - 3 个要求(假设攻击者不知道 K)
(1)攻击者知道 M,生成一个新消息 N,满足 C(K,N)=C(K,M)
(2)C(K,M)均匀分布,概率都为 2 的 - n 次方
(3)不存在弱碰撞(weak spot) - MAC 也分为两类
(1)安全哈希算法 (A secure hash algorithm):HMAC
(2)对称分组密码 (A symmetric block cipher):CMAC
第十三章 数字签名
- 数字签名 (Digital Signatures)
消息身份验证没有解决缺乏信任的问题,数字签名提供了以下功能:
1 | 验证作者,签名日期和时间 |
- 报文鉴别:接收者能够核实发送者对报文的签名,其他人无法伪造此签名;
- 报文的完整性:接收者确信所收的数据和发送者发送的完全一样;
- 不可否认:发送者事后不能抵赖对报文的签名。
- 要求
(1)必须依赖于签名的消息
(2)必须使用发件人独有的信息
防止伪造和否认
(3)必须相对容易生产
(4)必须相对容易识别和验证
(5)在计算上不可行
为现有数字签名构造新邮件
为给定邮件构建欺诈性数字签名
(6)确保将数字签名保存在存储中
- 直接数字签名 (Direct Digital Signatures)
- 概念
仅涉及发送方和接收方,假定接收方具有发送方的公钥。发件人使用私钥对整个消息或哈希进行签名的数字签名。可以使用接收器的公钥进行加密,安全性取决于发件人的私钥
- 数字签名标准 DSS (Digital Signature Standard)
- 概念
1 | 美国政府批准的签名方案,由NIST和NSA在90年代初设计。1991 年作为 FIPS-186 发布 |
4. 数字签名短发 DSA (Digital Signature Algorithm)
- 概念
1 | 具有 512-1024 位安全性,比 RSA 更小、更快。仅数字签名方案,安全性取决于计算离散对数的难度,ElGamal和Schnorr计划的变体 |
- DSA 签名生成 (DSA Signature Generation)
- DSA 签名验证 (DSA Signature Verification)
第十四章 密钥管理和分发
- 密钥的分发和管理
- 问题
(1)密钥的分发
(2)存储和管理大量的密钥
(3)私钥加密体系在开放系统中的不适用性 - 键层次结构 (Key Hierarchy)
(1)会话密钥 (session key)
1)临时密钥
2)用于用户之间的数据加密
3)一个逻辑会话,然后丢弃
(2)万能钥匙 (master key)
1)用于加密会话密钥
2)由用户和密钥分发中心共享
- 第三方密钥分发 (Third-party Key Distribution Option)
- KTC:密钥运输中心 (Key Translation Center)
传输对称密钥,以便将来在两个用户之间进行通信 - KDC:密钥配送中心 (Key Distribution Center)
生成和分发会话密钥
- 密钥分发问题 (Key Distribution Issues)
- 大型网络所需的 KDC 层次结构,但必须相互信任
- 应限制会话密钥生存期以提高安全性
- 使用自动密钥分发代表用户,但必须信任系统
- 使用分散式密钥分发
- 控制密钥用法
- 使用公钥的对称密钥分发 (Symmetric Key Distribution Using Public Keys)
- 概念
公钥密码系统效率低下,以几乎从不用于直接数据加密,而是用于加密密钥以进行分发
- 简单的密钥分发 (Simple Secret Key Distribution)
- 概念
默克尔于 1979 年提出,A 生成新的临时公钥对,A 向 B 发送公钥及其身份,B 生成一个会话密钥 K 将其发送给 A 使用提供的公钥进行加密,A 解密会话密钥,两者都使用。问题是对手可以拦截和模拟协议的两半
- 公钥的分发 (Distribution of Public Keys)
几种技术可以分为以下一般方案:
- 公开公告 (public announcement)
- 公开可用的目录 (publicly available directory)
- 公钥颁发机构 (public-key authority)
- 公钥证书 (public-key certificates)
1 | 证书允许在不实时访问公钥机构的情况下进行密钥交换,证书将身份绑定到公钥,通常带有其他信息,例如有效期,使用权等。所有内容均由受信任的公钥或证书颁发机构 (CA) 签名 |
- X.509 身份验证服务 (X.509 Authentication Service)
CCITT X.500 目录服务标准的一部分,维护用户信息数据库的分布式服务器,定义身份验证服务的框架。目录可以存储公钥证书,使用由证书颁发机构签名的用户公钥。还定义了身份验证协议,使用公钥加密和数字签名,算法未标准化,但 RSA 推荐,X.509 证书被广泛使用 - 公钥基础结构 (PKI)(Public-Key Infrastructure)
- 概念
RFC 2822(互联网安全术语表)将公钥基础结构 (PKI) 定义为基于非对称加密创建、管理、存储、分发和吊销数字证书所需的一组硬件、软件、人员、策略和过程。IETF 公钥基础结构 X.509 (PKIX) 工作组建立了一个基于 X.509 的正式(和通用)模型,适用于在互联网上部署基于证书的体系结构。
第十五章 用户认证
- 用户认证
- 用户认证原理
(1)鉴定阶段 (identification - present identifier)
给安全系统提供身份标识(QQ 号,IP 地址)
(2)核实阶段 (verification - bind entity (person) and identifier
distinct from message authentication)
提供认证信息(密码) - 认证方式
(1)知道什么
口令,个人身份号(PIN),电话号码
(2)拥有什么
加密密钥,电子密钥卡,智能卡,统称为令牌
(3)特征(静态生物特征,动态生物特征)
指纹,视网膜,脸,声音,手写特征,打字节奏 - 单因素身份验证 (Single-factor authentication)
- 双因素身份验证 (Two-factor authentication)
- 多重身份验证 (Multifactor authentication)
- 独立计算机上的身份验证相对简单 (Authentication on a stand-alone computer)
-
“安全路径” 是主要问题
-
主要关注点是对身份验证软件的攻击
-
问题
简单,对于独立系统可能没问题,但对于联网系统不安全,受到重复攻击,鲍勃必须知道爱丽丝的密码
- 通过网络进行身份验证要复杂得多 (uthentication over a network)
- 攻击者可以被动观察消息
- 攻击者可以重播消息
- 可能出现主动攻击(插入、删除、更改消息)
- 重放攻击 (Replay Attacks)
-
产生重放攻击的位置
(1)简单回放 (simple replay)
(2)可以记录的重复 (repetition that can be logged)
(3)无法检测到的重复 (repetition that cannot be detected)
(4)向后重放,无需修改 (backward replay without modification) -
对策包括
(1)使用序列号 (use of sequence numbers)(通常不切实际)
(2)时间戳 (timestamps)(需要同步时钟)
(3)质询 / 响应 (challenge/response)(使用唯一随机数)
1 | 随机数是Nonce |
- 使用对称密钥进行身份验证 (Authentication with Symmetric Key)
- 问题
Alice 不能验证 Bob 身份
- 相互身份验证 (Mutual Authentication)
-
概念
由于我们有一个安全的单向身份验证协议,显而易见的事情是使用该协议两次。鲍勃一次验证爱丽丝,一次让爱丽丝验证鲍勃
- 公钥身份验证 (Public Key Authentication)
- 切勿使用相同的密钥对进行加密和签名
- 一个密钥对用于加密 / 解密
- 用于签名 / 验证签名的不同密钥对
- 会话密钥 (Session Key)
9. 时间戳 (timestamps)
1 | 使用随机数进行签名和加密... |