消息认证
主动攻击和被动攻击
安全攻击主要分为两类:主动攻击和被动攻击
被动攻击以获取信息为目的,不对数据做任何的篡改,破坏消息的机密性。主动攻击通过冒充、重放、篡改等手段改变发送的信息,破坏了消息的完整性。
这个时候需要做一个图举一个例子
为什么要进行认证?
1、验证消息的发送者和接收者是合法的,成为实体认证或身份认证
具体技术包括口令、智能卡、指纹、视网膜等
2、验证消息本身的完整性,成为消息认证
验证消息在传送或存储的过程中是否被篡改、伪造、重放或延迟等。
3、验证消息的顺序性和时间性
未重排、重放、延迟
怎么进行消息认证?
消息认证是通过认证符来认证消息的完整性的
认证符由消息的发送方通过认证函数产生,并传递给接收方,接收方通过验证认证符以鉴别收到消息的真实性。
认证函数主要由有以下三类:
- 1、加密函数
- 2、消息认证码MAC(Message Authentication Code)
- 3、散列函数
消息加密认证
消息认证码
定义:
将通信双方共享的密钥K和消息m作为输入,生成一个关于K和m的函数值MAC,将其作为认证标记(Tag)。发送时,将消息和认证码同时发送给接收方,若接收方用消息和共享密钥生成相同的消息认证码,则认证通过。
1、接收方相信发送方发来的消息未被篡改
2、接收方相信发方不是冒充的
上述过程中,消息本身在发送的过程中是明文的形式发送的,所以只提供了认证性但是没有提供保密性。为了提供保密性可以在MAC函数之后进行一次加密。
MAC函数的安全性
1、攻击密钥
2、攻击MAC函数的算法
认证的安全性模型
攻击者选择消息发送给MAC,MAC将相应的Tag值返回,通过该方法可以得到任意消息的认证码。若攻击者可以另外找一个其他的消息,并能够伪造其认证码,则攻击成功,MAC被攻破。
Hash函数
什么是Hash?
Hash函数又称为散列函数或杂凑函数,是一种能将不定长的输入映射成定长的特殊函数,记为h=H(M)。
Hash在消息认证中的作用
简单提供三种方案
1、消息与哈希码链接后用单钥加密算法加密 提供认证性和保密性
2、用单钥加密算法仅对哈希码进行加密 提供完整性
3、用公钥加密算法和发方的密码钥进加密哈希码 提供认证性和数字签名
散列函数H必须满足的特征
为了防止第三方伪造或者通过Hash值计算出明文
- 1、单向性
- 2、弱碰撞性
- 3、强碰撞性
几种Hash算法
MD5 (不安全)
SHA
SM3 (国产)
生日攻击
举个例子,想象一位老师问一个有30名学生的班级(n = 30)每个人的生日在哪一天(为简便,此处省略闰年)以确定是否有两个学生同一天生日(对应碰撞 )。从直觉角度考虑,机率看起来很小。若老师选择特定日期(例如9月16日),则至少有一名学生在那天出生的几率是,约为7.9%。但是,与我们的直觉相反的是,至少一名学生和另外任意一名学生有着相同生日的几率大约为70.63%(n = 30时),从方程中可看出。
一个小实例
实现的原理:
-
1、消息接收端和发送端建立连接,生成连接确认信息
-
2、接收端生成rsa公钥和私钥,将公钥发送给接收端(文件中读取)
-
3、发送端使用des的ECB模式加密消息(messages.txt),rsa公钥加密对称密钥(des_key),使用sha-1算法生成消息认证码,rsa私钥对消息认证码进行数字签名; 将消息密文,RSA加密的对称密钥,数字签名后的sha-1消息认证码发送给接收端程序
-
4、接收端收到加密消息返回确认消息给发送端;接收端计算消息认证码确认消息的完整性;最后将对称密钥和密文进行解密,得到最终解密的明文信息
可以提供:保密性 认证性 数字签名
标签:加密,认证码,认证,MAC,消息,函数 From: https://www.cnblogs.com/ai-researcher/p/16948696.html