网络安全讲义 4章数字签名和认证协议.docx
- 文档编号:23113049
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:15
- 大小:66.83KB
网络安全讲义 4章数字签名和认证协议.docx
《网络安全讲义 4章数字签名和认证协议.docx》由会员分享,可在线阅读,更多相关《网络安全讲义 4章数字签名和认证协议.docx(15页珍藏版)》请在冰豆网上搜索。
网络安全讲义4章数字签名和认证协议
第13章数字签名和认证协议
(一)回顾与总结
●消息鉴别(MessageAuthentication):
是一个证实收到的消息来自可信的源点且未被篡改的过程。
●散列函数(HashFunctions):
一个散列函数以一个变长的报文作为输入,并产生一个定长的散列码,有时也称报文摘要,作为输出。
●数字签名(DigitalSignature)是一种防止源点或终点抵赖的鉴别技术。
(二)讨论议题
●数字签名(DigitalSignature)
●认证协议(AuthenticationProtocol)
(三)数字签名
●消息鉴别用以保护双方之间的数据交换不被第三方侵犯;但它并不保证双方自身的相互欺骗。
假定A发送一个认证的信息给B,双方之间的争议可能有多种形式:
–B伪造一个不同的消息,但声称是从A收到的。
–A可以否认发过该消息,B无法证明A确实发了该消息。
●例如:
EFT系统(ElectronicFundsTransfersystem,电子支付或电子资金转账系统)中改大金额;股票交易指令亏损后抵赖。
●传统签名的基本特点:
①能与被签的文件在物理上不可分割
②签名者不能否认自己的签名
③签名不能被伪造
④容易被验证
●数字签名是传统签名的数字化,基本要求:
①能与所签文件“绑定”
②签名者不能否认自己的签名
③签名不能被伪造
④容易被自动验证
数字签名
13.1.1对数字签名的要求
(一)数字签名应具有的性质
●必须能够验证作者及其签名的日期时间;
●必须能够认证签名时刻的内容;
●签名必须能够由第三方验证,以解决争议;
因此,数字签名功能包含了鉴别的功能
(二)数字签名的设计要求
●签名必须是依赖于被签名信息的一个位串模式;
●签名必须使用某些对发送者是唯一的信息,以防止双方的伪造与否认;
●必须相对容易生成该数字签名;
●必须相对容易识别和验证该数字签名;
●伪造该数字签名在计算复杂性意义上具有不可行性,既包括对一个已有的数字签名构造新的消息,也包括对一个给定消息伪造一个数字签名;
●在存储器中保存一个数字签名副本是现实可行的。
(三)数字签名分类
●以方式分
①直接数字签名(directdigitalsignature)
②仲裁数字签名(arbitrateddigitalsignature)
●以安全性分
①无条件安全的数字签名
②计算上安全的数字签名
●以可签名次数分
①一次性的数字签名
②多次性的数字签名
13.1.2直接数字签名(DDS)
(一)公钥签名
(1)A→B:
M||EKRa[M]
提供了鉴别与签名:
•只有A具有KRa进行加密;
•传输中没有被篡改;
•需要某些格式信息/冗余度;
•任何第三方可以用KUa验证签名
(1’)A→B:
EKUb[M||EKRa(M)]
提供了保密(KUb)、鉴别与签名(KRa):
(二)加密Hash码签名
(2)A→B:
M||EKRa[H(M)]
提供鉴别及数字签名
—H(M)受到密码算法的保护;
—只有A能够生成EKRa[H(M)]
(2’)A→B:
EK[M||EKRa[H(M)]]
提供保密性、鉴别和数字签名。
(三)直接数字签名的缺点
•验证模式依赖于发送方的保密密钥;
–发送方要抵赖发送某一消息时,可能会声称其私有密钥丢失或被窃,从而他人伪造了他的签名。
–通常需要采用与私有密钥安全性相关的行政管理控制手段来制止或至少是削弱这种情况,但威胁在某种程度上依然存在。
–改进的方式例如可以要求被签名的信息包含一个时间戳(日期与时间),并要求将已暴露的密钥报告给一个授权中心。
•X的某些私有密钥确实在时间T被窃取,敌方可以伪造X的签名以及早于或等于时间T的时间戳。
13.1.3仲裁数字签名
(一)思路
•引入仲裁者
–通常的做法是所有从发送方X到接收方Y的签名消息首先送到仲裁者A,A将消息及其签名进行一系列测试,以检查其来源和内容,然后将消息加上日期并与已被仲裁者验证通过的指示一起发给Y。
•仲裁者在这一类签名模式中扮演敏感和关键的角色
–所有的参与者必须极大地相信这一仲裁机制工作正常。
(二)仲裁数字签名技术(a)——单密钥加密方式,仲裁者可以看见消息
(1)X→A:
M||EKxa[IDx||H(M)]
(2)A→Y:
EKay[IDx||M||EKxa[IDx||H(M)]||T]
●X与A之间共享密钥Kxa,Y与A之间共享密钥Kay;
●X:
准备消息M,计算其散列码H(M),用X的标识符IDx和散列值构成签名,并将消息及签名经Kxa加密后发送给A;
●A:
解密签名,用H(M)验证消息M,然后将IDx,M,签名,和时间戳一起经Kay加密后发送给Y;
●Y:
解密A发来的信息,并可将M和签名保存起来。
解决纠纷:
●Y:
向A发送EKay[IDx||M||EKxa[IDx||H(M)]]
●A:
用Kay恢复IDx,M,和签名(EKxa[IDx||H(M)]),然后用Kxa解密签名并验证散列码
注意:
●在这种模式下Y不能直接验证X的签名,Y认为A的消息正确,只因为它来自A。
因此,双方都需要高度相信A:
ØX必须信任A没有暴露Kxa,并且没有生成错误的签名EKxa[IDx||H(M)]
ØY必须信任A仅当散列值正确并且签名确实是X产生的情况下才发送的EKay[IDx||M||EKxa[IDx||H(M)]||T]
Ø双方都必须信任A处理争议是公正的。
●只要A遵循上述要求,则X相信没有人可以伪造其签名;Y相信X不能否认其签名。
上述情况还隐含着A可以看到X给Y的所有信息,因而所有的窃听者也能看到。
(三)仲裁数字签名技术(b)——单密钥加密方式,仲裁者不可以看见消息
(1)X→A:
IDx||EKxy[M]||EKxa[IDx||H(EKxy[M])]
(2)A→Y:
EKay[IDx||EKxy[M]||EKxa[IDx||H(EKxy[M])]||T]
在这种情况下,X与Y之间共享密钥Kxy,
●X:
将标识符IDx,密文EKxy[M],以及对IDx和密文消息的散列码用Kxa加密后形成签名发送给A。
●A:
解密签名,用散列码验证消息,这时A只能验证消息的密文而不能读取其内容。
然后A将来自X的所有信息加上时间戳并用Kay加密后发送给Y。
(a)和(b)共同存在一个共性问题:
ØA和发送方联手可以否认签名的信息;
ØA和接收方联手可以伪造发送方的签名;
(四)仲裁数字签名技术(c)——双密钥加密方式,仲裁者不可以看见消息
(1)X→A:
IDx||EKRx[IDx||EKUy(EKRx[M])]
(2)A→Y:
EKRa[IDx||EKUy[EKRx[M]]||T]
●X:
对消息M双重加密:
首先用X的私有密钥KRx,然后用Y的公开密钥KUy。
形成一个签名的、保密的消息。
然后将该信息以及X的标识符一起用KRx签名后与IDx一起发送给A。
这种内部、双重加密的消息对A以及对除Y以外的其它人都是安全的。
●A:
检查X的公开/私有密钥对是否仍然有效,是,则确认消息。
并将包含IDx、双重加密的消息和时间戳构成的消息用KRa签名后发送给Y。
本模式比上述两个模式具有以下好处:
1、在通信之前各方之间无须共享任何信息,从而避免了联手作弊;
2、即使KRx暴露,只要KRa未暴露,不会有错误标定日期的消息被发送;
3、从X发送给Y的消息的内容对A和任何其他人是保密的。
认证协议
•双方认证(mutualauthentication)
•单向认证(one-wayauthentication)
13.1.4相互认证
(一)问题
●最常用的协议,该协议使得通信各方互相认证鉴别各自的身份,然后交换会话密钥。
●基于认证的密钥交换核心问题有两个:
—保密性
—时效性
为了防止伪装和防止暴露会话密钥,基本认证与会话密码信息必须以保密形式通信。
这就要求预先存在保密或公开密钥供实现加密使用。
第二个问题也很重要,因为涉及防止消息重放攻击。
(二)重放攻击
消息重放:
最坏情况下可能导致敌人暴露会话密钥,或成功地冒充其他人;至少也可以干扰系统的正常运行,处理不好将导致系统瘫痪。
常见的消息重放攻击形式有:
1、简单重放:
攻击者简单复制一条消息,以后在重新发送它;
2、可被日志记录的复制品:
攻击者可以在一个合法有效的时间窗内重放一个带时间戳的消息;
3、不能被检测到的复制品:
这种情况可能出现,原因是原始信息已经被拦截,无法到达目的地,而只有重放的信息到达目的地。
4、反向重放,不做修改。
向消息发送者重放。
当采用传统对称加密方式时,这种攻击是可能的。
因为消息发送者不能简单地识别发送的消息和收到的消息在内容上的区别。
对付重放攻击的一种方法是在认证交换中使用一个序数来给每一个消息报文编号。
仅当收到的消息序数顺序合法时才接受之。
但这种方法的困难是要求双方必须保持上次消息的序号。
(三)两种更为一般的方法
1、时间戳:
A接受一个新消息仅当该消息包含一个时间戳,该时间戳在A看来,是足够接近A所知道的当前时间;这种方法要求不同参与者之间的时钟需要同步。
2、盘问/应答方式。
(Challenge/Response)A期望从B获得一个新消息,首先发给B一个临时值(challenge),并要求后续从B收到的消息(response)包含正确的这个临时值。
时间戳方法似乎不能用于面向连接的应用,因为该技术固有的困难在于:
(1)某些协议需要在各种处理器时钟中维持同步。
该协议必须既要容错以对付网络出错,又要安全以对付重放攻击。
(2)由于某一方的时钟机制故障可能导致临时失去同步,这将增大攻击成功的机会。
(3)由于变化的和不可预见的网络延迟的本性,不能期望分布式时钟保持精确的同步。
因此,任何基于时间戳的过程必须采用时间窗的方式来处理:
一方面时间窗应足够大以包容网络延迟,另一方面时间窗应足够小以最大限度地减小遭受攻击的机会。
盘问/应答方法不适应非连接性的应用,因为它要求在传输开始之前先有握手的额外开销,这就抵消了无连接通信的主要特点。
安全的时间服务器用以实现时钟同步可能是最好的方法。
[LAM92b]
(四)传统加密方法
1、A→KDC:
IDA||IDB||N1
2、KDC→A:
EKa[Ks||IDB||N1||EKb[Ks||IDA]]
3、A→B:
EKb[Ks||IDA]
4、B→A:
EKs[N2]
5、A→B:
EKs[f(N2)]
保密密钥Ka和Kb分别是A和KDC、B和KDC之间共享的密钥。
本协议的目的就是要安全地分发一个会话密钥Ks给A和B。
A在第2步安全地得到了一个新的会话密钥,第3步只能由B解密、并理解。
第4步表明B已知道Ks了。
第5步表明B相信A知道Ks并且消息不是伪造的。
第4,5步目的是为了防止某种类型的重放攻击。
特别是,如果敌方能够在第3步捕获该消息,并重放之,这将在某种程度上干扰破坏B方的运行操作。
上述方法尽管有第4,5步的握手,但仍然有漏洞。
●假定攻击方C已经掌握A和B之间通信的一个老的会话密钥。
●C可以在第3步冒充A利用老的会话密钥欺骗B。
除非B记住所有以前使用的与A通信的会话密钥,否则B无法判断这是一个重放攻击。
如果C可以中途阻止第4步的握手信息,则可以冒充A在第5步响应。
从这一点起,C就可以向B发送伪造的消息而对B来说认为是用认证的会话密钥与A进行的正常通信。
(五)DenningProtocol[1982]的改进
1、A→KDC:
IDA||IDB
2、KDC→A:
EKa[Ks||IDB||T||EKb[Ks||IDA||T]]
3、A→B:
EKb[Ks||IDA||T]
4、B→A:
EKs[N1]
5、A→B:
EKs[f(N1)]
|Clock-T|<Δt1+Δt2
其中:
Δt1是KDC时钟与本地时钟(A或B)之间差异的估计值;Δt2是预期的网络延迟时间。
DenningProtocol比Needham/SchroederProtocol在安全性方面增强了一步。
然而,又提出新的问题:
即必须依靠各时钟均可通过网络同步。
如果发送者的时钟比接收者的时钟要快,攻击者就可以从发送者窃听消息,并在以后当时间戳对接收者来说成为当前时重放给接收者。
这种重放将会得到意想不到的后果。
(称为抑制重放攻击)。
一种克服抑制重放攻击的方法是强制各方定期检查自己的时钟是否与KDC的时钟同步。
另一种避免同步开销的方法是采用临时数握手协议
KEHN92
1、A→B:
IDA||Na
2、B→KDC:
IDB||Nb||EKb[IDA||Na||Tb]
3、KDC→A:
EKa[IDB||Na||Ks||Tb]||EKb[IDA||Ks||Tb]||Nb
4、A→B:
EKb[IDA||Ks||Tb]||EKs[Nb]
(六)公钥加密方法:
一个使用时间戳的方法:
1、A→AS:
IDA||IDB
2、AS→A:
EKRas[IDA||KUa||T]||EKRas[IDB||KUb||T]
3、A→B:
EKRas[IDA||KUa||T]||EKRas[IDB||KUb||T]||EKUb[EKRa[Ks||T]]
一个基于临时值握手协议:
WOO92a
1、A→KDC:
IDA||IDB
2、KDC→A:
EKRauth[IDB||KUb]
3、A→B:
EKUb[Na||IDA]
4、B→KDC:
IDB||IDA||EKUauth[Na]
5、KDC→B:
EKRauth[IDA||KUa]||EKUb[EKRauth[Na||Ks||IDB]]
6、B→A:
EKUa[EKRauth[Na||Ks||IDB]||Nb]
7、A→B:
EKs[Nb]
13.1.5单向认证(One-WayAuthentication)
应用:
(一)传统加密方法
1、A→KDC:
IDA||IDB||N1
2、KDC→A:
EKa[Ks||IDB||N1||EKb[Ks||IDA]]
3、A→B:
EKb[Ks||IDA]||EKs[M]
(二)公钥加密方法
方法1、A→B:
EKUb[Ks]||EKs[M]
方法2、A→B:
M||EKRa[H(M)]
方法3、A→B:
EKUb[M||EKRa[H(M)]]
方法4、A→B:
M||EKRa[H(M)]||EKRas[T||IDA||KUa]
数字签名标准
•普通数字签名算法
–RSA
–EIGamal
–DSS/DSA
•不可否认的数字签名算法
•群签名算法
•盲签名算法
13.1.6DSS方法
(一)RSA签名方案
•A的公钥私钥对{KUa||KRa}
•A对消息M签名:
SA=EKRa(M)
•问题:
–速度慢
–信息量大
–第三方仲裁时必须暴露明文信息
–漏洞:
EKRa(x×y)≡EKRa(x)×EKRa(y)modn
①先做摘要:
HM=hash(M)
②再对HM签名:
SA=EKRa(HM)
•hash函数的无碰撞性保证了签名的有效性
(二)数字签名标准
公布于1994年5月19日的联邦记录上,并于1994年12月1日采纳为标准DSS。
DSS为EIGamal签名方案的改进。
(三)DSS签名方案
DSS算法说明--算法参数
•全局公开密钥分量
–p:
素数,其中
,512≤L<1024,且L为64的倍数:
即比特长度在512到1024之间,长度增量为64比特
–q:
(p-1)的素因子,其中
–g= ,其中h是一整数,1 modp>1 •用户私有密钥 –x随机或伪随机整数,其中0 •用户公开密钥 –y= modp •用户每个报文的密数 –k: 随机或伪随机整数(0 (四)DSS算法的签名与验证过程 ●签名 –r≡( modp)modq –s≡[ (H(M)+xr)]modq –签名=(r,s) ●验证 –w≡(s′)-1modq – ≡ modq, ≡ modq –v≡ modpmodq ●检验: v=r′ ●符号说明: –M要签名的消息 –H(M)使用SHA-1生成的M的Hash码 –M′,r′,s′接收到的M,r,s版本 ●理论根据: v≡ ≡ ≡ ≡ ≡ ≡ ≡ ≡rmodpmodq (五)DSS的特点 •DSS的签名比验证快得多 •DSS不能用于加密或者密钥分配 •s-1(modq)要存在 s≠0(modq),如果发生,接收者可拒绝该签名。 要求重新构造该签名,实际上,s≡0(modq)的概率非常小 •若p为512位,q为160位,而DSS只需要两个160位,即320位
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络安全讲义 4章数字签名和认证协议 网络安全 讲义 数字签名 认证 协议