文章目录
1. 一些基本概念
1.1 抗击攻击的方式
抗击被动攻击:加密
抗击主动攻击:消息认证
消息认证是一个过程,用以验证接收消息的真实性和完整性,同时还用于验证消息的顺序性和时间性。
认证符:用于认证消息的数值
认证符的产生方法:消息认证码 MAC 和杂凑 hash 函数
1.2 消息认证功能
如果计算的 MAC 与接收到的 MAC 一致,则实现了以下功能:
①接收方相信发送方发来的消息未被篡改。
②接收方相信发送方不是冒充的。
2. 杂凑函数应满足的条件(简答题)
杂凑函数的目的是为需认证的数据产生一个“指纹”。为了能够实现对数据的认证,杂凑函数应满足以下条件:
①函数的输入可以是任意长。
②函数的输出是固定长。
③已知 x,求 H(x) = h 较为容易,可用硬件或软件实现。
④已知 h,不能反推出 H(x),这一性质称为函数的单向性,称 H(x) 为单向杂凑函数。
⑤已知 x,找出 y(y ≠ x) 使得 H(y) = H(x) 在计算上是不可行的。如果单向杂凑函数满足这一性质,则称其为弱单向杂凑函数。
⑥找出任意两个不同的输入 x、y ,使得 H(y) = H(x) 在计算上是不可行的。强单向杂凑函数。
3. 生日攻击(可能选择填空)
第Ⅰ类生日攻击问题描述:已知一杂凑函数 H 有 n 个可能的输出,H(x) 是一个特定的输出,如果对 H 随机取 k 个输入,则至少有一个输入 y 使得 H(y) = H(x) 的概率为 0.5 时,k 有多大?
根据概率论公式,想要达到 50% 的几率,那么需要尝试的次数是:
H 表示输入的可能数量
4. 一些 Hash 算法的参数
MD5 | SHA-1 | RIPEMD-160 | |
---|---|---|---|
输出长度 | 128 bits | 160 bits | 160 bits |
处理基本单位 | 512 bits | 512 bits | 512 bits |
步数 | 64(4 rounds of 16) | 80(4 rounds of 20) | 160(5paired rounds of 16) |
最大消息长度 | ∞ | 2^64 - 1 bits | 2^64 -1 bits |
轮数 | 4 | 4 | 5 |
5. MD5 杂凑算法
- 输入:任意长的消息
- 分组:512 比特
- 输出:128 比特的消息摘要
处理过程:
①对消息填充
②附加消息的长度
③对MD缓冲区初始化
④以分组为单位对消息进行处理
⑤输出
6. SHA 算法
- 输入:小于 2^64 比特长的任意消息,分为 512 比特长的分组
- 输出:160比特长的消息摘要
处理过程:
①对消息填充
②附加消息的长度
③对 MD 缓冲区初始化
④以分组为单位对消息进行处理
7. SHA与MD5的比较
两个算法极为相似
-
抗穷搜索攻击的强度
SHA 抗击穷搜索攻击的强度高于 MD5 抗击穷搜索攻击的强度。 -
抗击密码分析攻击的强度
由于 SHA 的设计准则未被公开,所以它抗击密码分析攻击的强度较难判断,似乎高于 MD5 的强度。 -
速度
SHA 的速度要比 MD5 的速度慢。 -
简洁与紧致性
两个算法描述简单,实现也较为简单 -
数据的存储方式
MD5 使用 little-endian 方式,SHA 使用 big-endian 方式。