文章目录
一、消息鉴别概述
1、消息鉴别的概念
鉴别的定义:消息接收者对消息进行验证,是一个证实收到的消息来自可信源点且未被篡改的过程。
主要检测的是消息的真实性和完整性。
2、消息鉴别的必要性
问题的提出:
- 伪造:一个假冒的信源向网络中插入消息。
- 内容修改:消息内容被插入、删除、修改和变换。
- 否认:接收者否认接收到消息,发送者否认发送了消息。
所以为了避免以上问题的出现,消息鉴别就显得尤为重要。
3、消息鉴别的作用
主要是保护双方的数据交换不被其他人侵犯(基于双方共享的秘密)。
但是消息鉴别不能解决双方之间可能存在的争议(B伪造一个消息,声称A发送;或者B否认发送某个消息,但A不能证明B撒谎)
4、消息鉴别系统的构成
鉴别算法:底层实现的一项基本功能,鉴别功能要求低层必须实现某种能生成鉴别标识(用于鉴别消息的特征值)的算法,鉴别算法通常使用一个鉴别函数 f 来实现。
鉴别协议:接收方通过鉴别协议来调用底层的鉴别算法,来验证消息的真实性,完成消息的合法性鉴别。
鉴别函数:是决定鉴别系统的特性的主要因素。
5、消息鉴别系统的分类
- 基于消息加密方式的鉴别:以整个消息密文作为鉴别符。
- 基于消息鉴别码MAC的鉴别:利用公开函数与密钥产生定长的鉴别值,与消息一同发送。
- 基于Hash的鉴别:采用Hash函数将任意长消息映射为散列值,做为鉴别码。
二、各种鉴别方法简述
1、基于消息加密方式的鉴别
通常以整个消息密文作为鉴别符,对称加密与非对称加密都有运用。
采用对称加密的鉴别模式:
提供了保密性与鉴别服务,但不能提供签名与认证。并且存在一下问题:
- 接收端如何判断密文的合法性。
- 接收端如何判断解密的结果的正确性。
为解决这些问题,通常采用某种强制性的结构:
采用公钥加密体制的鉴别模式:
这种方式的鉴别在提供机密性的同时也提供了鉴别与签名服务。
2、基于MAC的鉴别
加密方采用一种类似于加密的算法和一个密钥,根据消息内容计算生成一个固定大小的数据块,并加入到消息中,称为MAC。
MAC具有的功能:
- 消息接收者可以确认消息是否发生改变。
- 接收者可以确信消息来自所声称的发送者。
原理:
具有的特点:
- 类似于加密函数,需要密钥
- 无需可逆,可以是单向函数。
- 不能提供对消息的保密。
- 基于MAC的鉴别过程独立于加解密过程。
- 不能提供数字签名功能,无法防止对方的欺骗。
2、基于HASH的鉴别
特点: 单向性、任意长度的输入产生定长的输出、抗强碰撞性、抗弱碰撞性。
基本的Hash函数鉴别方案:
采用对称加密对明文M与H(M)进行加密,提供鉴别与保密性服务。
结合对称加密与公钥密码体制进行的鉴别:
提供了鉴别服务、机密性与数字签名。
三、数字签名(Digital Signature,DS)
1、数字签名的应用需求与概念
应用需求:
防止通信双方的相互欺骗与抵赖行为。
基本概念:
数字签名是指附加在某一电子文档中的一组特定的符号或代码。
通常是对电子文档进行关键信息提取,并通过某种密码运算生成一系列符号及代码组成签名来代替书写签名或印章。
具有以下功能:
- 防抵赖性:发送者事后不能抵赖
- 防篡改:接收者不能对接收到的消息进行篡改
- 防伪造:接收方不能伪造消息并声称来自对方
- 防冒充:验证网络实体的身份
2、数字签名满足的条件与具有的性质
满足的条件:
- 签名是可被确认的
- 签名是不可伪造的
- 签名是不可重用的
- 签名是不可抵赖的
- 第三方可确认签名但不能篡改
应具有的性质:
- 必须能验证签名者及其签名的时间
- 在对消息进行签名时,必须能够对消息的内容进行鉴别
- 必须能够由第三方证实,以解决争议
3、数字签名的设计要求与基本原理
基本要求:
- 签名的比特模式必须依赖于被签名的信息
- 必须使用发送者的唯一信息,以防止伪造和抵赖
- 数字签名算法必须相对简单、易于实现
- 必须相对易于识别和验证该数字签名
- 伪造该签名在计算复杂性上具有不可行性
- 在存储介质中保存数字签名备份是可行的
基本原理:
4、数字签名的设计方案
1)直接数字签名
直接数字签名实现简单,仅涉及到通信的发送方与接收方。
前提是采用了公钥密码算法,接收方要了解发送方的公开密钥。
为确保消息的机密性,通常对签名与消息一起加密来实现。
常用方案:
2)基于仲裁的数字签名
基本要求:仲裁扮演的是一个敏感和关键的角色,必须是一个可信的系统
实现方案一(对称加密实现):
特点:双方必须高度信任A,与A共享密钥
存在的问题:消息明文传送易被监听,若仲裁A不可信,则A可能伪造数字签名。
改进方法:对消息M进行加密后,再对加密后的密文进行签名。
实现方案二(基于公钥密码体制):
特点:消息被加密,仲裁者不能获取消息信息
3)数字签名标准DSS与DSA
数字签名标准(Digital Signature Standard),规定了一套用于生产和证实数字签名的整套算法,包括数字签名和消息鉴别两部分功能。
DSS签名方法图示:
DSA签名算法简介:
(1)发送方确定全局公开密钥: KUG:p,q,g
- 素数p: 512~1024bits
- 素数q是p-1的素因子,159或160bits
- g=h(p-1)/q mod q,h是1~q-1之间的整数
(2)发送方确定公钥和私钥
- 私钥:随机数x满足1<x<p
- 公钥:y=gx mod p
(3)发送签名(r,s),M
- r= (gx mod p) mod q
- s=(K-1(H(M)+xr) mod q
(4)接收方接收到签名(r’,s’)和M’并验证
- w=(s’) -1 mod q
- U1=[H(M’)w] mod q
- U2=( r’)w mod q
- v=[(gU1 y U2) mod p] mod q
- v=r’ ?