信息安全——消息认证与数字签名
消息认证和数字签名是为防止以下情况:
(1)伪造:从假冒信源向网络插入消息。
(2)内容修改:消息内容被插入、删除、变换等。
(3)顺序修改:重组消息序列。
(4)时间修改:消息延迟或重放。
(5)否认:否认收到消息或否认发送过消息。
一 消息认证
目的:保证信息的完整性——验证信息的发送者是不是伪冒的(信源识别);验证信息在传送或存储过程中未被篡改,重放或延迟等。
方法:使用鉴别函数——证实收到的消息来自可信的源点且未被篡改。
鉴别函数分类:(1)信息加密;(2)散列函数;(3)消息认证码;
1.1 信息加密
1.1.1 对称密码*下的信息加密
秘钥k仅A,B双方相互知道——保密。
仅来自A,传输中若被修改将无意义——一定程度的鉴别。
发送人和接收人均可伪造——不提供签名。
1.1.2 非对称密码*下的信息加密
公钥加密,私钥解密——可保密,不提供鉴别
私钥加密,公钥解密——提供鉴别和签名,不可保密
1.2 散列函数
a.输入x,h=H(x),其中H为哈希函数,h为x的哈希值(消息摘要,指纹,密码检验和,消息完整性校验)
b.消息摘要:简要描述了一份较长的信息或文件,对特定文件而言,信息摘要是唯一的,它可以被公开,但不会透露相应文件的任何内容。
c.hash函数基本要求:
d.对hash函数的两种穷举攻击(攻击目的是找到不同的数据块,使之hash后产生同样的消息摘要,伪造消息):
(1)原像攻击和第二原像攻击
攻击者对给定的hash值h,试图找H(y)=h的y,穷举攻击的方法是随机选择y,计算其hash值直到碰撞出现。
(2)碰撞攻击
寻找两个随机的消息x和y,满足H(x)=H(y)。
——hash值必须足够长。
e.用法:
(1)鉴别
共享秘钥加密H(M)
(2)保密+鉴别
共享秘钥加密M和H(M)
(3)鉴别+数字签名
A的私钥加密H(M),公钥解密H(M)
(4)保密+鉴别+数字签名
————————————————————————————————————————————————A的私钥加密H(M),共享秘钥加密M和加密的H(M);共享秘钥解密M和加密的H(M),A的公钥解密H(M)
(5)鉴别
附加M和一共享消息S的hash值:H(M+S)
(6)鉴别+保密
共享秘钥对M+H(M+S)加密
方法(5)不含加密处理实现鉴别——加密软件很慢,硬件开销很大,加密算法可能受专利保护或出口限制。
1.3 常用Hash函数
1.3.1 MD5
输入:任意长度的消息。
输出:128bit消息摘要。
处理:将消息划分为512bit数据块。
步骤:
(1)添加填充位(一个1和若干个0),使得数据位长度满足length=448 mod 512,若数据长度正好是模512为448,增加512个填充bit
(2)添加长度,添加64位表示的原始消息长度。448+64=512。
(3)初始化MD缓冲区(128位),用于保存中间和最终Hash函数的结果。
(4)四轮数据处理
1.3.2 SHA-1
输入:消息长度<2的64次方。
输出:160bit消息摘要。
处理:按512位分组进行处理。
总结:160位hash值,抵抗生日攻击;没有发现存在两个不同的块产生相同的hash;
速度慢于MD5,安全性优于MD5
1.3.3 SHA-2
Hash值长度224,256,384,512,一般使用SHA-256
在需要非常安全的系统中应用。
1.3.4 欧洲RIPE项目
基础:MD5
消息长度<2的64次方
分组处理长度:512bit
摘要长度:160bit
速度略慢与SHA-1,安全性优于MD5,对密码分析的抵抗力好于SHA-1。
1.4 字典攻击
收集好密码可能包含的字符串,从中查密码并验证之。
避免策略——salt:
key=md5(password,salt),salt不小于64bit,——>一个password可能对应多个key。
1.5 消息认证码
使用一个秘钥将数据块生成一个固定大小的小数据块,并加入到消息中,称MAC或密码校验和,MAC=CK(M)
输入:固定大小的秘钥+任意大小的输入。
输出:MAC值——固定大小的数据块
1.6 Hash与Mac的区别——是否需要秘钥
(1)Mac需要对全部数据进行加密
(2)Mac速度慢
(3)Hash是一种直接产生鉴别码的方法
1.7 HMac——hash函数可用来构造Mac
1.7.1 设计目标
1.7.2 应用举例
HMAC-MD5
HMAC-SHA-1
HMAC-SHA-256
1.7.3 CBC-MAC
把分组密码转变成Mac函数,只保留最后一个消息块的密文作为MAC,其余全部丢弃。
优点:速度快,便于硬件实现。
缺点:很难正确使用,不建议使用。
二 数字签名
目的:防止通信双方的抵赖行为。
原理:利用已公开的验证算法生成数字签名,并将签名连接到被签消息上,数字签名可复制。
条件:
(1)依赖性:依赖于被签名的报文。
(2)唯一性:对签名者来说是唯一的。
(3)可验证:在算法上可验证。
(4)抗伪造:伪造在计算上不可行,
(5)可用性:产生、失败、证实简单,备份可实现。
2.1 数字签名分类
2.1.1直接数字签名
原理:使用发送方的私钥加密散列码或整个消息,公钥解密。
弱点:有效性依赖于发方私钥安全性,万一A的私钥被盗或者A假装私钥被盗。。。
2.1.2 需仲裁的数字签名
流程:发方A对消息签名后,将附有签名的消息发给仲裁者C(所有通信方都能充分信任的机构),C对其验证后连同一个通过验证的证明发送给B。
对称秘钥加密方式-1:仲裁可查看明文,Y需要通过A验证X的签名。
对称秘钥加密方式-2:仲裁只能验证消息的密文,而不能读取其内容,可联手作弊。
公钥方式:总裁看不见消息的内容,只能进行外层解密,可防止联手作弊。
2.2 RSA数字签名*
见散列函数用法(3),如下图:
2.3 数字签名标准DSS
DSS只能用于数字签名,使用SHA作为散列函数 。
2.4 其他签名
盲签名:签名者不知道文件具体内容——电子货币,电子选举。
群签名:签名可由一个群的人产生——投标。
电子签章:数字签章。