您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 信息安全原理及应用:第09章-数字签名与身份认证
1第9章数字签名与身份认证2数字签名•数字签名(DigitalSignature)是公开密钥体系加密技术发展的一个重要的成果。3不可否认性的应用需求•网络通信中,希望有效防止通信双方的欺骗和抵赖行为。•简单的报文鉴别技术只能使通信免受来自第三方的攻击,无法防止通信双方之间的互相攻击。•Y伪造一个不同的消息,但声称是从X收到的;•X可以否认发过该消息,Y无法证明X确实发了该消息;•原因:鉴别技术基于秘密共享。•数字签名技术为此提供了一种解决方案。4数字签名的功能•是对现实生活中笔迹签名的功能模拟。–必须能够用来证实签名的作者和签名的时间。•对消息进行签名时,必须能够对消息的内容进行鉴别。•签名应具有法律效力,必须能被第三方证实用以解决争端。•必须包含对签名进行鉴别的功能。5数字签名的设计目标•签名的比特模式是依赖于消息报文的,也就是说,数据签名是以消息报文作为输入计算出来的,签名能够对消息的内容进行鉴别;•数据签名对发送者来说必须是惟一的,能够防止伪造和抵赖;•产生数字签名的算法必须相对简单易于实现,且能够在存储介质上保存备份;•对数字签名的识别、证实和鉴别也必须相对简单,易于实现;•伪造数字签名在计算上是不可行的,无论攻击者采用何种方法(利用数字签名伪造报文,或者对报文伪造数字签名)。6数字签名的解决方案•可分为两类:–直接数字签名方案;–基于仲裁的数字签名方案。7直接数字签名•实现比较简单,在技术上仅涉及到通信的源点X和终点Y双方。•终点Y需要了解源点X的公开密钥Kux。•发送方A可以使用其私有密钥KRx对整个消息报文进行加密来生成数字签名。•更好的方法是使用KRx对消息报文的散列码进行加密来形成数字签名。8直接数字签名的安全性•方案的安全性依赖于发送方X私有密钥的安全性。–发送方可以声称自己的私有密钥丢失或被盗用,而否认其发送过某个报文。•改进:每个签名报文中包含一个时间戳。–问题:•X的私有密钥确实在时间T被窃取;•攻击者窃取X的密钥后,则可能发送带有X的签名报文,附上一个等于T的时间戳,接受者无法判别。9基于仲裁的数字签名•通过引入仲裁来解决直接签名方案中的问题。•仲裁者必须是一个所有通信方都能充分信任的仲裁机构。•基本工作方式(假定用户X和Y之间进行通信):–每个从X发往Y的签名报文首先被送给仲裁者A;–A检验该报文及其签名的出处和内容,然后对报文注明日期,并附加上一个“仲裁证实”的标记发给Y。10基于仲裁的数字签名--对称密钥加密方式•发送方X和仲裁A共享一个密钥Kax。•数字签名由X的标识符IDx和报文的散列码H(M)构成,用密钥Kax进行加密。•过程:(1)X→A:M‖EKax(IDx‖H(M))。(2)A→Y:EKay(IDx‖M‖EKax(IDx‖H(M))‖T)。(3)Y存储报文M及签名。11基于仲裁的数字签名--对称密钥加密方式•争端解决方式–Y→A:EKay(IDx‖M‖EKax(IDx‖H(M)))。–仲裁A可用Kay恢复出IDx、M及签名,然后再用Kax对签名解密并验证其散列码。•特点:–Y不能直接验证X的签名。–双方都需要高度相信A•Y相信A已对消息认证,X不能否认其签名;•X信任A没有暴露Kxa,无人可伪造DS;•双方都信任A处理争议是公正。–问题:•报文M明文传送给,有可能被窃听。12基于仲裁的数字签名--对称密钥加密方式•明文加密的方案–(1)X→A:IDx‖EKxy(M)‖EKax(IDx‖H(EKxy(M)))。–(2)A→Y:EKay(IDx‖EKxy(M)‖EKax(IDx‖H(EKxy(M))‖T)。•特征:–X与Y之间共享密钥Kxy。–DS的构成:IDx和消息密文的散列码用Kxa加密。–DS的验证:A解密签名,用散列码验证消息。•A只能验证消息的密文,而不能读取其内容。–A将来自X的所有信息加上时间戳并用Kay加密后发送给Y。•问题:–A和发送方X联手可以否认签名的信息。–A和接收方Y联手可以伪造发送方X的签名。13基于仲裁的数字签名—公开密钥加密方式•特点:仲裁者看不见消息的内容。•过程:–X对报文M进行两次加密。–经过双重加密后,报文M只有Y能够阅读,A不能读取XA:IDx||EKRx[IDx||EKUy[EKRx(M)]]–A能进行外层的解密,从而证实报文确实是来自X的•因为只有X拥有KRx。–验证后A向Y发送用KUy加密的报文,其中包括时间戳TAY:EKRa[IDx||EKUy[EKRx(M)]||T]•优点:–通信各方之间无须共享任何信息,从而避免了联手作弊;–只要KRa安全,则不会出现伪造A发送的消息;–消息的内容是保密的,包括对A在内。14认证(Certification)•证实通信中某一方的身份。•两个基本的方式:–相互鉴别(mutualCertification);–单向鉴别(one-wayCertification)。15相互鉴别•目的:用于通信各方之间的相互进行身份认证,同时交换会话密钥。•需要解决的核心问题:–密钥交换的机密性和时效性。•机密性–防止会话密钥被篡改或和泄露;–用户身份信息和会话密钥都必须以密文形式交换;–前提:通信各方与事先保存一个密钥(共享或公开密钥)。•时效性–为了防止消息的重放攻击。16报文重放(replay)攻击•攻击过程:–窃听。–复制或部分复制一个报文。–在以后的某个时间重放•可以拦截原信息,用重放消息取代;•可以在一个合法有效的时间窗内重放一个带时间戳的消息。•后果–扰乱接收者正常的工作。–窃取会话密钥,假扮成一个通信方欺骗其他人。17重放攻击问题的解决方式•报文序号方式–在认证交换中对消息报文编排序号,消息序号合法时才接受。–问题:通信各方必须保持序号同步。•时间戳方式–在报文中附加发送的时间戳;接收时只有报文时间戳与本地时间足够接近时,才认为是一个合法的新报文。–问题:•通信各方的时钟同步比较困难;•时间窗口的大小如何确定。18基于对称密钥加密的相互鉴别•须具备的条件–可信的密钥分配中心(KDC);–通信各方都与KDC共享一个主密钥;–主密钥Ka和Kb是安全。•目的:KDC为通信双方A、B产生短期的会话密钥Ks。•工作过程:(1)AKDC:IDA||IDB||N1(2)KDCA:EKa[Ks||IDB||N1||EKb(Ks||IDA)](3)AB:EKb[Ks||IDA](4)BA:EKs[N2](5)AB:EKs[f(N2)]19基于对称密钥加密的相互鉴别过程1.A在会话开始时首先向KDC发送报文,包含A和B的标识和一个与时间相关的现时标识符N1。2.A就可安全地从KDC获得一个新的会话密钥Ks。3.A将用Kb加密的会话密钥Ks发送给B,这个会话密钥只有B能够通过解密获得。4.B向A发送用会话密钥加密的现时值N2,向A证实B已经正确获得了会话密钥Ks5.A使用新建立的会话密钥Ks对f(N2)加密后返回给B20基于对称密钥加密的相互鉴别•问题:过期的会话密钥–X可冒充A,使用过期密钥,并重放第3步的报文,就可以欺骗B。•改进:1.增加时间戳机制:需要通信各方周期性地与KDC通信进行时钟校准。2.通信时使用现时握手。3.1,2结合。21基于对称密钥加密的相互鉴别•改进后的协议过程(增加时间戳):(1)AKDC:IDA||IDB(2)KDCA:EKa[Ks||IDB||T||EKb(Ks||IDA||T)](3)AB:EKb[Ks||IDA||T](4)BA:EKs[N1](5)AB:EKs[f(N1)]T是时间戳,需满足:其中,C本地时间,t1时钟偏差,t2网络时延。21ttTC22基于对称密钥加密的相互鉴别•改进后的协议过程(增加时间戳和现时握手)(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)其中,称EKb(IDA‖Na‖Tb)为访问B的“票据”(ticket)。23基于公开密钥加密的相互鉴别•过程(1)A→AS:IDA‖IDB(2)AS→A:CA‖CB(3)A→B:CA‖CB‖EKUb(EKRa(Ks‖T))其中:A的公钥和私钥分别为KUa和Kra;B的公钥和私钥分别为KUb和KRb;AS(鉴别中心)的公钥和私钥分别为KUas和KRas;CA=EKRas(IDA‖KUa‖T),A的公开密钥证书;CB=EKRas(IDB‖KUb‖T),B的公开密钥证书。24基于公开密钥加密的相互鉴别•改进(使用现时值N代替时间戳)(1)A→KDC:IDA‖IDB(2)KDC→A:EKRk(IDB‖KUb)(3)A→B:EKUb(Na‖IDA)(4)B→KDC:IDB‖IDA‖EKUk(Na)(5)KDC→B:EKRk(IDA‖KUa)‖EKUb(EKRk(Na‖Ks‖IDB))(6)B→A:EKUa(EKRk(Na‖Ks‖IDB)‖Nb)(7)A→B:EKs(Nb)25单向鉴别•One-WayAuthentication。•主要用于电子邮件认证等应用。•特点:发方和收方无需同时在线。–鉴别时收发方不能在线交互。26基于对称密钥加密的单向鉴别•以KDC策略为基础。•具体过程:(1)A→KDC:IDA‖IDB‖N1(2)KDC→A:EKa(Ks‖IDB‖N1‖EKb(Ks‖IDA))(3)A→B:EKb(Ks‖IDA)‖EKs(M)其中,Ka、Kb分别为A和B与KDC间的共享主密钥,N1为一个现时值。27基于公开密钥加密的单向鉴别•保密性为主:A→B:EKUb(Ks)‖EKs(M)。•签名和鉴别:A→B:M‖EKRa(H(M))。•保密和鉴别:A→B:EKUb(M‖EKRa(H(M)))。•数字证书:A→B:M‖EKRa(H(M))‖EKRas(T‖IDA‖KUa)。28数字签名标准(DSS)•美国国家标准技术研究所(NIST)公布的美国联邦信息处理标准FIPSPUB186。•DSS最早发表于1991年,并于1993年和1996年进行了修改。•DSS基于安全散列算法(SHA)并设计了一种新的数字签名技术,即DSA(数字签名算法)。29数字签名算法(DSA)•设计基础基于离散对数的计算。•三个p、q、g作为全局公开的密钥分量:–p是一个素数,其长度在512比特到1024比特之间,可以对p进行更精确的描述:p是素数,且满足2L-1≤p≤2L(其中512≤L≤1024,且L是64的倍数);–q是一个长度在160为素数,且q是p-1的一个素因子,即2159≤p≤2160,且(p-1)modq=0;–g定义为g=h(p-1)/qmodp,其中h是一个整数,且满足1≤h≤(p-1),故g=h(p-1)/qmodp1。•用户的私有密钥x必须是一个1~(p-l)之间的随机数或伪随机数(即1xp)。•公开密钥y利用私有密钥计算出来的:y=gxmodp。30DSS的数字签名方案31DSS的数字签名方案•同时采用散列函数H()和签名函数Sig()。•签名函数的输入是散列函数输出的散列码及一个用于生成签名的随机数k。•签名函数还需要使用发送方的私有密钥(用KRa表示)和由参数集构成了组成一个全局公开密钥(KUG)。•签名函数输出的最终结果(即数字签名)由两个分量组成,记为s和r。•在接收端,验证函数的输入包括了报文的散列码、数字签名、全局公开密钥KUG以及发送方公开密钥KUa。32签名函数Sig()•输入为:–公开的密钥分量(p,q,g);–用户私有密钥x;–报文的散列码H(M),报文的散列码采用SHA-1算法计算;–一个额外的整数密数k,k是随机或伪随机整数,且对每个签名是惟一,也就是说对每一个报文需要选择不同的k。qxrMHkqrxkMHfsqpggqpkfrkmod))(((),,,),((mod)mod(),,,(11233验证函数(Ver)qpygrwMHgqyfvqwruqwMHuqsqsfwu
本文标题:信息安全原理及应用:第09章-数字签名与身份认证
链接地址:https://www.777doc.com/doc-1742831 .html