第13讲 数字签名和认证协议
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Needham-Schroeder协议
用途:在A、B之间安全地分配一个会话密钥 如果攻击者知道一个旧的会话密钥,则容易受
到重放攻击
攻击者可以模仿A重放步骤3中的消息,使B相信与 他通信的人是A
两个改进版本:
Denning(1981):加入了时间戳 Neuman(1993):临时交互号的握手协议
抵抗重放攻击的对策
序列号(不实用) 时间戳(要求通信各方的时钟保持同步) 挑战/应答(使用临时的唯一交互号)
利用对称加密方法构造认证协议
使用两层传统加密密钥结构提供保密性 通常需要一个可信的密钥分配中心(KDC)
通信各方与KDC共享一个主密钥 KDC负责产生通信双方通信时需要的会话密钥 用主密钥保护会话密钥的分配
数字签名的性质
签名必须是与消息相关的二进制位串 签名必须使用发送方某些独有的信息,以防伪
造和否认 产生数字签名比较容易 识别和验证签名比较容易 伪造数字签名在计算上是不可行的。无论是从
给定的数字签名伪造消息,还是从给定的消息 伪造数字签名在计算上都是不可行的 保存数字签名的拷贝是可行的
EPUb[EPRa[Ks||T]]
由于会话密钥是由A选择并加密的,因此不存在会话 密钥被AS泄露的危险
时戳可防止重放攻击,但需要同步时钟
单向认证
消息的接收方和发送方并不需要同时在线 消息的头必须以明文的形式传输 可以对消息的主体进行加密保护或对发送方进
行认证
利用对称加密方法构造单向认证协议
将签名(r,s)与消息 M一起发送给接收方
DSA签名的验证
收到消息 M 及签名 (r,s) 为了验证签名,进行如下计算:
w = s-1(mod q) u1= (H(M)·w)(mod q) u2= (r·w)(mod q) v = (gu1·yu2(mod p)) (mod q)
如果 v=r,则签名是有效的
数字签名的分类
直接数字签名 仲裁数字签名
直接数字签名
只涉及消息的发送方和接收方 接收方知道发送方的公钥 发送方通过用自己的私钥对整个消息或消息的
散列码加密来产生数字签名 用接收方的公钥对整个消息和签名加密则可以
获得保密性 先签名,后加密 安全性取决于发送方的私钥
仲裁数字签名
引入仲裁者A
对消息及其签名进行验证 给消息加上日期并发送给接收者
要求通信各方都非常信任仲裁者 可利用秘密钥或者公钥进行仲裁 仲裁者可以被授权阅读消息,也可以不被授权
认证协议
使通信双方确信对方的身份并交换会话密钥 单向认证、相互认证 关键:
保密性:保护会话密钥 及时性:防止重放攻击
不能抵抗重放攻击
虽然可能存在大量延时(如email),但加入时戳 可以提供一定的抗攻击能力
利用公钥加密方法构造单向认证协议
目前已经得到了若干实用的协议 如果主要关心保密性,可采用如下方法:
A->B: EPUb[Ks] || EKs[M] A用会话密钥对消息加密,用B的公钥对会话密钥加
一个例子:
1. A->KDC: IDA || IDB || N1 2. KDC -> A: EKa[Ks || IDB || N1 || EKb[Ks||IDA] ] 3. A -> B: EKb[Ks||IDA] || EKs[M]
该协议保证只有真正的消息接收方才能读取消 息,同时也可证明发送方确实是A
Needham-Schroeder协议
传统的三方密钥分配协议 A、B为通信方,KDC为仲裁方
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)]
密
如果主要关心真实性,可采用数字签名:
A->B: M || EPRa[H(M)] || EPRas[T||IDA||PUa] A用私钥对其签名加密并用认证服务器的私钥对其证
书加密,然后将它们连同消息一起发送给B
数字签名标准(DSS)
美国政府批准的签名方案 由NIST以及NSA于上世纪90年代初设计 1991年成为联邦信息处理标准FIPS 186 分别于1993、1996以及2000年三次进行了修改 使用了安全散列算法(SHA) DSS是标准,其相应的算法称为数字签名算法(DSA) 2000年发布了DSS的扩充版,即FIPS 186-2,其中
包括基于RSA和椭圆曲线密码的数字签名算法
数字签名算法(DSA)
产生一个320比特的签名 比RSA快 仅能用于签名,不能用于加密或密钥分配 安全性基于计算离散对数问题的困难性
数字签名算法(DSA)
DSA的密钥
全局公钥 (p,q,g):
160位的素数 q 大素数 p
p的长度L 介于 512 到 1024 之间,并能被 64 整除 q 能整除 p-1 选择 g = h(p-1)/q 其中 h<p-1, h(p-1)/q (mod p) > 1
利用公钥加密方法构造认证协议
要求通信的每一方都拥有另一方的当前公钥 引入了认证服务器(AS)
不负责密钥分Biblioteka Baidu,只提供公钥证书
目前已有的协议大都基于时戳或临时交互号
Denning的协议(含有AS)
Denning于1981年构造了如下的密钥分配协议:
1. A -> AS: IDA || IDB 2. AS -> A: EPRas[IDA||PUa||T] || EPRas[IDB||PUb||T] 3. A -> B: EPRas[IDA||PUa||T] || EPRas[IDB||PUb||T] ||
用户选择私钥x,并计算公钥 y
选择 x<q 计算 y = gx (mod p)
DSA的签名
假设发送方对消息 M 签名:
随机选择一个签名密钥 k, k<q k 必须是随机选择的,使用后立即废弃,不再使用
计算签名对:
r = (gk(mod p))(mod q) s = (k-1H(M)+ x·r)(mod q)
第13讲 数字签名和认证协议
数字签名
消息认证可以保护信息交换双方不受第三方的 攻击,但不能处理通信双方自身发生的攻击
数字签名能够在收发双方不能完全信任的情况 下实现消息认证等功能
数字签名具有下列功能:
能够验证签名者、签名日期和时间 能够认证被签的消息内容 能够由第三方仲裁,以解决争执
不存在完美的协议
重放攻击
复制签名的消息并重新发送
简单重放:攻击者只是简单地复制消息并在以后重 放这条消息
可检测的重放:攻击者在有效的时限内重放有时间 戳的消息
不可检测的重放:由于原始消息可能被禁止而不能 到达其接收方,只有重放的消息到达了接收方,此 时可能出现这种攻击
不加修改的逆向重放:向消息发送方的重放。如果 使用对称密码并且发送方不能根据内容来区分发出 的消息和接收的消息,那么可能出现这种攻击