也可以用数字签名来认证身份
(一)消息认证码和安全散列函数
消息认证码的生成可以使用任何数学函数生成(比对两边的消息认证码)
而安全散列函数使用单向散列函数(消息摘要),散列函数要和密钥捆绑
消息认证的要求:
保护消息完整性(确认没有被修改,插入,删除,重放)
验证发起方身份
消息源的不可否认性(解决分歧:发送方声称消息是真是有效的)
消息认证要考虑安全需求:
三种消息认证的方法
消息加密
消息认证码(Mac)
哈希函数
对认证的要求
一、攻击:
泄密
传输分析:分析双方的通信模式
伪装
内容篡改 顺序篡改 计时篡改 (都可以用消息认证码抵御)
信源抵赖:发送方否认发过信息
信宿抵赖:接收方否认发过消息
1、认证函数
1、消息加密本身提供的认证
先签名,再将源消息和签名一起加密,接收方先解密,再用签名认证
解密所得的消息是否具有可读性
要求明文具有易于识别的结构
如在加密前对每个消息附加一个帧校验序列(FCS)
FCS和加密函数执行的顺序很重要
接收方可以先校验FCS再确定要不要读取明文
2、公钥加密作为认证手段
1、若要提供认证,发送方用自己的私钥对消息加密,接收方用发送方的公钥解密(验证),就提供了认证功能
2、用接收方的公钥加密
3、既保密又加密要四次执行算法(比如四次RSA)
3、消息认证码(Mac)
1、使用密钥产生短小的定长数据分组,附加在报文中
AB共享密钥K, A计算Mac = Ck(M),发给B之后,B再计算Mac并比对
2、特性(考选择题)
报文认证不提供保密性
Mac不提供数字签名,因为双方共享密钥
将Mac直接与明文并置,然后加密传输的方式比较常用
3、特点
Mac加密所得的校验和
Mac是一个多对一的函数
n位Mac:有2^n个可能性的Mac
k-bit的密钥,有2^k种可能的密钥
基于以上,如果攻击者知道明文来进行密钥破解,有可能获取多个K(多个K产生的Mac相同)
如此就需要多个消息来确定K
4、Mac函数应具有性质
1、Ck(M') = Ck(M)计算上不可行
2、Ck(M)均匀分布
3、。。。
碰撞攻击
4、散列(hash)函数(简答题)
H(M):输入为任意长度的消息M:输出为一个固定长度的散列值,成为消息摘要
H(M)是消息M的所有位的函数并提供错误检测能力,消息中的任何一位或多位的变化都将导致该散列函数改变
都是比对H(M)值
散列函数的要求
强抗碰撞性:在计算上找不到 y(x!=y,h(x) = h(y))
弱抗碰撞性:在x在X范围内找不到 y(x!=y,h(x) = h(y))
1、强抗冲突性:对于任何分组,都可以找到他的Hash算法
2、弱抗冲突性:
生日攻击:是一种欺骗
攻击者通过寻找假的消息生成和要发送的散列值一样的散列来进行欺骗
两种散列算法
SHA-1及其系列
MD5及其系列
Hash函数的分类
带密钥的Hash函数MAC
这种就是带单向陷门的hash函数
即使知道了函数本身,也不能从f(x)中推出x,但是知道了陷门(密钥)就很容易了
不带密钥的Hash函数MDC
消息的散列值的产生无需使用密钥。此时,散列值称作MDC
综述:
首先要知道什么是单向和陷门
单向函数是无法求得他的x的,而有了陷门则可以求得
下面讲一下过程:
一条消息先生成它的摘要(单向函数)
然后将它和明文一起加密并发送
接收后取出摘要和明文,对明文使用单向哈希函数生成摘要并对比来确保消息的完整性