信息安全——消息认证与数字签名

消息认证和数字签名是为防止以下情况:

(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,若数据长度正好是模512448,增加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 其他签名

盲签名:签名者不知道文件具体内容——电子货币,电子选举。

群签名:签名可由一个群的人产生——投标。

电子签章:数字签章。