消息认证技术
2016-08-03 00:54
351 查看
1. 先说说网络通信环境中可能面临的攻击:
a) 泄密:将消息透露给没有合法密钥的人或程序
b) 传输分析:分析通信双方的通信模式,在面向连接的应用中,确定连接的频率和连接时间,在面向连接或无连接的环境中,确定双方的消息数量和长度
c) 伪装:欺诈源向网络中插入一条伪造的消息
d) 内容修改:对消息内容的修改,包括插入、删除、转换和修改
e) 顺序修改:对通信双方消息的顺序的修改,包括插入、删除和重新排序
f) 计时修改:对消息的延时和重放
g) 发送方否认和接受方否认
2. 消息认证:消息认证是指验证所收到的消息确实来自真实的发送方,并且未被篡改的过程。各种消息认证和数字签名可以被看做两层,下层有用于产生认证码的函数,认证码是一个用来认证消息的值,上层协议中将该函数做为原语使接收方可以验证消息的真伪
3. 产生消息认证码一般有三种方式
a) 消息加密
i. 对称加密,对称加密算法中,只有通信的双方知道通信的密钥,也就是只有A发送的消息B才能获取原文,这样既提供了保密性又提供了认证,但是,假设说明文是一个二进制的文件的话,通过明文进行文件的合法性判断就成了问题,因此攻击者可以通过冒充合法用户的身份来发送任何报文,从而进行干扰和破坏。解决方法是在每个消息后都附加错误检测码,也叫帧校检序列(FCS)或校检和
ii. 非对称加密,如果使用公钥加密可以提供认证和签名
b) 消息认证码(MAC)是一种认证技术,它利用密钥来生成一个固定长度的数据块,并将该数据块附加在消息之后,假定通信双方共享密钥K,A向B发送消息M,然后通过消息认证码计算函数来计算MAC,并将m和MAC发送给接收方,B接受到消息之后可以使用相同的密钥来计算出新的MAC与原来的对比,如果两者相等那么:
i. 接收方可以相信消息未被修改,如果攻击者修改了消息,那么攻击者并不知道密钥K不能算出新的MAC
ii. 接收方可以相信消息来自特定的发送方,因为其它各方均不知道密钥,他们不能产生正确的MAC报文
iii. 如果在消息中加入序列号,由于攻击者无法成功正确地修改序列号,因此可以相信报文的顺序是正确的
iv. 消息认证码的保密性:在上述的方法中,因为消息是以明文传送的,所以并不能提供保密性,如果要获得保密性可以使用MAC算法后对报文加密或在使用MAC算法前对报文进行加密。这两种方法都需要独立的密钥并且收发双方共享这个密钥
v. MAC算法不要求可逆性,但加密算法必需是可逆的,一般而言MAC算法是多对一函数,多种明文可能产生相同的MAC,所以MAC相比与加密函数更不容易被攻破,由于首发双方共享密钥,所以MAC算法并不能提供数字签名的功能
c) 哈希函数:单向哈希函数是消息认证码的一个变形,与消息认证码一样,哈希函数的输入是可变大小的m,输出是固定长度的值,但是与MAC不同的是,哈希函数不需要密钥,哈希值又被称为散列值和消息摘要哈希值是所有消息位的函数具有错误检测功能,改变消息的一位都会使哈希值发生改变,哈希值法用于消息认证的几种方法:
i. 用对称密码对消息和附加的哈希值进行加密
ii. 用对称密码仅对哈希值加密,针对保密度不高的应用
iii. 用非对称密码仅对哈希值加密,因为只有发送方能产生加密之后的哈希值,所以这种方法也有数字签名的功效
iv. 用非对称密码的私钥对哈希值进行加密,再用对称密码对消息和上述加密体进行加密,比较常用的方法
首发于我的个人网站: 点击打开链接
a) 泄密:将消息透露给没有合法密钥的人或程序
b) 传输分析:分析通信双方的通信模式,在面向连接的应用中,确定连接的频率和连接时间,在面向连接或无连接的环境中,确定双方的消息数量和长度
c) 伪装:欺诈源向网络中插入一条伪造的消息
d) 内容修改:对消息内容的修改,包括插入、删除、转换和修改
e) 顺序修改:对通信双方消息的顺序的修改,包括插入、删除和重新排序
f) 计时修改:对消息的延时和重放
g) 发送方否认和接受方否认
2. 消息认证:消息认证是指验证所收到的消息确实来自真实的发送方,并且未被篡改的过程。各种消息认证和数字签名可以被看做两层,下层有用于产生认证码的函数,认证码是一个用来认证消息的值,上层协议中将该函数做为原语使接收方可以验证消息的真伪
3. 产生消息认证码一般有三种方式
a) 消息加密
i. 对称加密,对称加密算法中,只有通信的双方知道通信的密钥,也就是只有A发送的消息B才能获取原文,这样既提供了保密性又提供了认证,但是,假设说明文是一个二进制的文件的话,通过明文进行文件的合法性判断就成了问题,因此攻击者可以通过冒充合法用户的身份来发送任何报文,从而进行干扰和破坏。解决方法是在每个消息后都附加错误检测码,也叫帧校检序列(FCS)或校检和
ii. 非对称加密,如果使用公钥加密可以提供认证和签名
b) 消息认证码(MAC)是一种认证技术,它利用密钥来生成一个固定长度的数据块,并将该数据块附加在消息之后,假定通信双方共享密钥K,A向B发送消息M,然后通过消息认证码计算函数来计算MAC,并将m和MAC发送给接收方,B接受到消息之后可以使用相同的密钥来计算出新的MAC与原来的对比,如果两者相等那么:
i. 接收方可以相信消息未被修改,如果攻击者修改了消息,那么攻击者并不知道密钥K不能算出新的MAC
ii. 接收方可以相信消息来自特定的发送方,因为其它各方均不知道密钥,他们不能产生正确的MAC报文
iii. 如果在消息中加入序列号,由于攻击者无法成功正确地修改序列号,因此可以相信报文的顺序是正确的
iv. 消息认证码的保密性:在上述的方法中,因为消息是以明文传送的,所以并不能提供保密性,如果要获得保密性可以使用MAC算法后对报文加密或在使用MAC算法前对报文进行加密。这两种方法都需要独立的密钥并且收发双方共享这个密钥
v. MAC算法不要求可逆性,但加密算法必需是可逆的,一般而言MAC算法是多对一函数,多种明文可能产生相同的MAC,所以MAC相比与加密函数更不容易被攻破,由于首发双方共享密钥,所以MAC算法并不能提供数字签名的功能
c) 哈希函数:单向哈希函数是消息认证码的一个变形,与消息认证码一样,哈希函数的输入是可变大小的m,输出是固定长度的值,但是与MAC不同的是,哈希函数不需要密钥,哈希值又被称为散列值和消息摘要哈希值是所有消息位的函数具有错误检测功能,改变消息的一位都会使哈希值发生改变,哈希值法用于消息认证的几种方法:
i. 用对称密码对消息和附加的哈希值进行加密
ii. 用对称密码仅对哈希值加密,针对保密度不高的应用
iii. 用非对称密码仅对哈希值加密,因为只有发送方能产生加密之后的哈希值,所以这种方法也有数字签名的功效
iv. 用非对称密码的私钥对哈希值进行加密,再用对称密码对消息和上述加密体进行加密,比较常用的方法
首发于我的个人网站: 点击打开链接
相关文章推荐
- 路由器内的安全认证
- C#创建自签名认证文件的方法
- 浅析Ruby中继承和消息的相关知识
- Visual C++中MFC消息的分类
- MFC自定义消息的实现方法
- windows消息和消息队列实例详解
- Windows消息传递机制详解
- php获取twitter最新消息的方法
- 微信公众平台开发之认证"成为开发者".Net代码解析
- WM_CLOSE、WM_DESTROY、WM_QUIT及各种消息投递函数详解
- Delphi实现获取句柄并发送消息的方法
- PHP微信开发之微信消息自动回复下所遇到的坑
- Apache Shiro 使用手册(二) Shiro 认证
- PHP中基本HTTP认证技巧分析
- Android顶栏定时推送消息
- Android中Handler消息传递机制
- 深入浅析Android消息机制
- VC自定义消息响应函数postmessage用法示例