密码学与网络安全笔记整理-数据完整性技术
来源:互联网 发布:淘宝进货在哪里进 编辑:程序博客网 时间:2024/06/06 03:39
1. 数据完整性
类似于通信中的校验码功能,在密码学领域数据完整性用于验证收到信息的正确性,校验收到的信息是否经过篡改,校验收到的信息是真实的发送者发送而非伪造。发送者通过编码为消息增加一些“冗余”,生成一个校验值,并将该校验值附在消息之后。接收者根据协商好的规则,利用附加的校验值来检测接收到消息的正确性。
2. 对称技术
- 有效的变换f和g是对称算法,意味着f = g,并且Ke = Kv;
- MAC(消息认证码):由对称密码技术生成的MDC;
- MAC的生成验证可以使用:keyed hash函数,分组加密等;
3. Keyed hash函数与HMAC
- 一个确定的函数,可以将任意长的比特串映射为一个固定长的比特串,该函数需要key作为参数;
- 设h表示一个Keyed hash函数,其固定输出长度为|h|;
- h应当是混合变换的;
- h应当可以抵抗冲突攻击;
- h应当可以抵抗原像攻击;
- h应当具有实用有效性;
使用keyed hash函数构造生成的MAC被称为HMAC,与发送者共享key的接收者收到M,并重新计算HMAC,检验与收到的HMAC是否一致,HMAC = h(key || M || key),用密钥包含信息的两端是阻止攻击者直接修改信息前缀或者消息后缀。
4. 基于分组加密算法的MAC
使用分组加密构造keyed hash函数,选择CBC模式,密钥为k,每一块加密函数为Ek(m):
- 对信息M分组,分成若干长度相同(分组加密算法每一块的长度)的块M = m(1)m(2)……m(t),如果最后一块长度不够,则需要随机填充padding;
- H(0) = IV,随机初始向量;
- H(i) = Ek(m(i) ⊕ H(i-1)),i = 1, 2……t;
将(IV, H(t))作为MAC;
说明:CBC-MAC是一个单向变换,不可求其逆数据:因为MAC里面包含的只是分组加密得到的最后一块H(t)与IV,根据CBC的加密解密流程:无论是接收者还是中间的攻击者都无法根据最后一块H(t)和IV反推出全部的MAC值,因此这是一个单向变换;
- MAC在MAC空间中分布均匀;
- 发送者与接收者共享密钥k,发送者发送消息M与CBC-MAC,接收者收到M与MAC(IV, H(t)),进行再一次计算,验证是否相同;
5.生日攻击
生日攻击又称平方根攻击,攻击者利用生日现象,找到冲突的哈希函数值,伪造报文,从而进行攻击。为了实施攻击,攻击者通过计算若干message-hash数值对,直到找到冲突。
【例】
M = (price, description, R), h = h(price, description, R)M1 = (price1, description, R1), h1 = h(price1, description, R1)M ≠ M1, h = h1, use (M1 || h1) to forge(M || h)
生日攻击:攻击者计算
【证明】
假设计算K次,能够找到冲突的哈希数值对的概率为P。
在证明生日攻击这个问题之前,我们回想这样一个简单的问题:一个黑色的盒子里装了N个颜色各不相同的小球,每一次我们摸一个球记录一下它的颜色,再放回去,那么我们摸了K次,都没有摸到重复颜色的球的概率为1-P。
那么K次都是独立的事件:
第一次肯定是100%不会相同,第二次只要和第一次颜色不同即可,所以分子是1,第三次要和前两次颜色不同,所以分子是2……以此类推。
回到我们的问题,两者是等同的,在我们的问题中,1-P代表了攻击者计算了K次,仍然还没有找到冲突的哈希数值对的概率(即不同的输入得到了相同的哈希值的情况)。因此,我们继续化简:
5. 非对称技术
5.1. RSA
密钥建立:
p,q:两个长度差不多的大素数,公钥(N, e),N=pq,e满足gcd(e, Φ(N))=1,私钥d,满足ed≡1 (mod Φ(N));
签名生成:
对于消息m∈Z, Alice生成签名s=Sign_d (m)←m^d (mod N);
验证:
公钥(N,e),消息m,签名对(m,s),Bob验证Verify_((N,e) ) (m,s)=true ⇔m≡s^e (mod N);
5.2. Rabin
密钥建立:
p,q:两个不同的奇素数(p=q=3 mod 4),公钥 N,N=pq,私钥(p, q);
签名生成:
对于消息m∈Z, Alice生成签名s=m^(1/2) (mod N);
验证:
公钥N,消息m,签名对(m, s),Bob验证Verify_((N,e) ) (m,s)=true ⇔m≡s^2 (mod N);
5.3. Elgamal
【例】
- 密码学与网络安全笔记整理-数据完整性技术
- 密码学与网络安全笔记整理-伽罗华环
- 网络安全-密码学
- 西电捷通完整性测试技术与网络安全协议检测系统互操作
- 密码学复习笔记1【基本概念与传统密码技术】
- 数据完整性与约束
- 表与数据完整性
- 网络安全技术与市场分析
- 信号完整性与电源完整性分析 笔记
- 密码学与网络安全课程习题集及参考答案(一些思考题)
- 网络安全之密码学基础
- Oracle笔记之数据完整性
- Oracle数据完整性学习笔记
- 索引与数据完整性约束
- 计算机防火墙技术与网络安全
- Linux网络安全技术与实现
- mysql 如何保证数据完整性 -- 笔记
- 数据安全 密码学原理与概论
- 驾驭<hr />标签
- 【目标检测】OpenCV中dnn模块的SSD demo运行
- 数组——二维数组中的查找
- android中canvas.drawArc的弧度问题
- aws linux php7 to php5.6
- 密码学与网络安全笔记整理-数据完整性技术
- java编程思想学习笔记(2)--一切皆对象
- Problem R-18 Prime Number
- flume学习05---Exec Source
- 《ACM程序设计》-Problem-Z-比较英文缩写是否相同
- Storage Access Framework
- 一个2年安卓开发者的一些忠告
- Q91:真实地模拟透明材质(Realistic Transparency)(2)——Triangle Meshes
- PHP编程学习第一周