版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4讲身份认证与数字签名王庆先qxwang@电子科技大学计算机学院1一、身份认证概述
为了保护网络资源及落实安全政策。需要提供可追究责任的机制,这里涉及到三个概念:认证、授权及审计。用户对资源的访问过程
访问控制用户身份认证资源授权数据库审计数据库2一、身份认证概述(续)认证与以下环境有关:某一成员(声称者)提交一个主体的身份并声称他是那个主体,认证能使别的成员(验证者)获得对声称者所声称的事实的信任。身份认证的作用对抗假冒攻击确保身份,明确责任
3身份认证概述对身份认证过程中攻击:数据流窃听(Sniffer):由于认证信息要通过网络传递,并且很多认证系统的口令是未经加密的明文,攻击者通过窃听网络数据,就很容易分辨出某种特定系统的认证数据,并提取出用户名和口令。拷贝/重传:非法用户截获信息,然后再传送给接收者。修改或伪造:非法用户截获信息,替换或修改信息后再传送给接收者,或者非法用户冒充合法用户发送信息。4二、认证方法的主要原理主体了解的秘密,如口令、密钥;主体携带的物品,如智能卡;只有该主体具有的独一无二的特征或能力,如指纹、声音、视网膜血管分布图或签字等。特定场所(也可能是特定时间)提供证据
验证者认可某一已经通过认证的可信方51、基于口令的认证
对口令的攻击窃听监听Login:UserAPassword:1234561、基于口令的认证(续)
对口令的攻击截取/重放
拷贝认证信息然后重放认证信息(加密的口令)71、基于口令的认证(续)
对口令的攻击字典攻击:根据调查结果可知,大部份的人为了方便记忆选用的密码都与自己周遭的事物有关,例如:身份证字号、生日、车牌号码、在办公桌上可以马上看到的标记或事物、其他有意义的单词或数字,某些攻击者会使用字典中的单词来尝试用户的密码。穷举攻击(BruteForce):也称蛮力破解。这是一种特殊的字典攻击,它使用字符串的全集作为字典。
81、基于口令的认证(续)对口令的攻击窥探:攻击者利用与被攻击系统接近的机会,安装监视器或亲自窥探合法用户输入口令的过程,以得到口令。社交工程:比如冒充是处长或局长骗取管理员信任得到口令等等。冒充合法用户发送邮件或打电话给管理人员,以骗取用户口令等。垃圾搜索:攻击者通过搜索被攻击者的废弃物,得到与攻击系统有关的信息,如用户将口令写在纸上又随便丢弃。
91、基于口令的认证(续)安全口令(对抗字典攻击和穷举攻击)(1)位数>6位。(2)大小写字母混合。如果用一个大写字母,既不要放在开头,也不要放在结尾。(3)可以把数字无序的加在字母中。(4)系统用户一定用8位口令,而且包括~!@#$%^&*<>?:"{}等特殊符号。
101、基于口令的认证(续)不安全口令(字典攻击和穷举攻击)(1)使用用户名(帐号)作为口令。(2)用用户名(帐号)的变换形式作为口令。
(3)使用自己或者亲友的生日作为口令。
(4)使用常用的英文单词作为口令。
111、基于口令的认证(续)为判断系统是否易受攻击,首先需要了解系统上都有哪些帐号。应进行以下操作:(1)审计系统上的帐号,建立一个使用者列表,同时检查路由,连接Internet的打印机、复印机和打印机控制器等系统的口令。(2)制定管理制度,规范增加帐号的操作,及时移走不再使用的帐号。(3)经常检查确认有没有增加新的帐号,不使用的帐号是否已被删除。(4)对所有的帐号运行口令破解工具,以寻找弱口令或没有口令的帐号。(5)当雇员或承包人离开公司时,或当帐号不再需要时,应有严格的制度保证删除这些帐号。121、基于口令的认证(续)为了增强基于口令认证的安全,可以采用以下改进方案。(1)认证过程有一定的时延,增大穷举尝试的难度。(2)不可预测的口令。修改口令登记程序以便促使用户使用更加生僻的口令。这样就进一步削弱了字典攻击。(3)对无效用户名的回答应该与对有效用户名的回答相同。131、基于口令的认证(续)基于单向函数的口令认证f是单向函数,p是口令,id是身份Alice提供p||id
计算机计算f(p)计算机与存储的值f(p)||id
作比较由于计算机不再存储口令表,所以敌手侵入计算机偷取口令的威胁就减少了
f(p1)id1f(p2)id2f(p3)id3141、基于口令的认证(续)如果敌手获得了存储口令的单向函数值的文件,采用字典攻击是有效的。敌手计算猜测的口令的单向函数值,然后搜索文件,观察是否有匹配的。猜口令p1,p2,…,pn。计算f(p1),f(p2),…,f(pn)。搜索文件。151、基于口令的认证(续)掺杂口令(加盐)Salt是一随机字符串,它与口令连接在一起,再用单向函数对其运算。然后将Salt值和单向函数运算的结果存入主机中。计算机存储的是f(p,Salt)||Salt||idSalt只防止对整个口令文件采用的字典攻击,不能防止对单个口令的字典攻击。f(p1,Salt1)Salt1id1f(p2,Salt2)Salt2id2f(p3,Salt3)Salt3id3161、基于口令的认证(续)SKEYAlice输入随机数R,计算机计算x1=f(R)、x2=f(x1)、…、xn+1=f(xn)。Alice保管x1
,x2
,x3
,。。。,xn这些数的列表,计算机在登录数据库中Alice的名字后面存储xn+1的值。当Alice第一次登录时,输入名字和xn,计算机计算f(xn),并把它和xn+1比较,如果匹配,就证明Alice身份是真的。然后,计算机用xn代替xn+1。Alice将从自己的列表中取消xn。Alice每次登录时,都输入她的列表中未取消的最后的数xI,计算机计算f(xI),并和存储在它的数据库中的xI+1比较。当Alice用完了列表上面的数后,需要重新初始化。x1=f(R)x2=f(x1)…xn+1=f(xn)计算机存储xn+1171、基于口令的认证(续)设计基于口令的协议应满足的要求口令不能过长离线字典攻击无效在线字典攻击无效记号共享的秘密ZAB导出的会话密钥KAB181、基于口令的认证(续)基于DH的EKE
共享的信息:口令.安全参数L.AB19基于口令的认证
改进的EKE
H2()=gAI:Password.BI:AB20
是相应的签名公钥。和OriginalDiffie-Hellman-basedEKEProtocol的比较:1、用口令的镜像加密;2、多了最后一个消息。因为,如果没有这个消息,敌手只要知道了口令的镜像就可以冒充A和B进行通信,而不用知道口令本身。所以最后一条消息正是为了避免这一漏洞。存在的攻击敌手如果知道了历史会话密钥,可以通过最后一条消息猜测口令。解决方案是签名消息不用会话密钥,而为和ZAB相关的另一个值。几点说明:21服务器保存hpw=H(id,pw),例1.C
S:id,rc
hpw,H(rc)例2.A选择RSA公开密钥(e,n)和随机数rA,发送((e||n||rA)⊕hpw)给B
抵抗离线字典攻击需要精心设计协议抵抗离线字典攻击22在线口令猜测失败会被发现并且服务器会将其记入日志。一般可使用帐号加锁、延迟响应或者CAPTCHA来抵抗在线字典攻击。抵抗在线字典攻击23CAPTCHA抵抗在线字典攻击防止恶意注册24基于对称密码的认证ISO/IEC9798-2协议(同时建立会话密钥)1路单向认证(时间戳)2路双向认证(时间戳)AB:{TA,B}KABAB:{TA,B}KABBA:{TB,A}KAB25基于对称密码的认证ISO/IEC9798-2协议(同时建立会话密钥)2路单向认证(一次性随机数)2路双向认证(一次性随机数)1.B
A:NB2.AB:{NB,B}KAB1.B
A:NB2.AB:{NA,NB,B}KAB3.BA:{NB,NA}KAB26基于对称密码的认证记号A,B期望建立会话密钥的两个用户S可信服务器KAS,KBS:A与S,B与S初始时共享的长期密钥KAB:会话密钥27基于对称密码的认证Needham-Schroeder协议(同时建立会话密钥)1.AS:A,B,NA2.SA:{NA,B,KAB,{KAB,A}KBS}KAS3.AB:{KAB,A}KBS4.BA:{NB}KAB5.AB:{NB-1}KABABS1234528基于对称密码的认证Denning-Sacco攻击:在Needham-Schroeder协议消息3中使用破解的会话密钥KAB,假冒A.
3.AB:{KAB,A}KBS4.BA:{NB}KAB5.AB:{NB-1}KABABS1234529基于对称密码的认证Denning-Sacco协议1.AS:A,B2.SA:{B,KAB,TS,{A,
KAB,TS}KBS}KAS3.AB:{A,
KAB,TS}KBSABS123保证会话密钥的新鲜性,会话密钥与时间戳绑定30基于公钥密码的认证记号
EX(M)用X的公钥加密MSigX(M)X对M做的签名NX
X
产生的随机nonceTX
X
选择的时间戳{M}K用对称密钥K对消息M加密31基于公钥密码的认证ISO/IEC9798-3单向认证ISO/IEC9798-3单向认证1.AB:TA,B,SigA(TA,B)1.BA:NB2.AB:NA,NB,SigA(NA,NB,B)32基于公钥密码的认证ISO/IEC9798-3双向认证ISO/IEC9798-3双向认证1.AB:TA,B,SigA(TA,B)2.BA:TB,A,SigB(TB,A)1.BA:NB2.AB:NA,NB,B,SigA(NA,NB,B)3.BA:NB,NA,A,SigB(NB,NA,A)33基于公钥密码的认证Needham-SchroederpublickeyprotocolLowe给出了攻击AC(A)
B可以在第二条消息中增加B的标识阻止这种攻击
AB:EB(NA,A)BA:EA(NA,NB)AB:EB(NB)1.AC:EC(NA,A)1'.CAB:EB(NA,A)2'.BCA:EA(NA,NB)
2.CA:EA(NA,NB)
3.AC:EC(NB)3'.CAB:
EB(NB)34基于公钥密码的认证X.509单向认证X.509双向认证1.AB:TA,NA,B,EB(KAB),SigA(TA,NA,B,EB(KAB))AB:TA,NA,B,EB(KAB),SigA(TA,NA,B,EB(KAB))BA:TB,NB,A,NA,EA(KBA),SigB(TB,NB,A,NA,EA(KBA))35基于公钥密码的认证X.509three-passauthenticationAB:TA,NA,B,EB(KAB),SigA(TA,NA,B,EB(KAB))BA:TB,NB,A,NA,EA(KBA),SigB(TB,NB,A,NA,EA(KBA))AB:NB,B,SigA(NB,B)36基于公钥密码的认证站对站(Station-to-Station)协议
ABrARZq,
tA=grA
tArBRZq
,tB=grBZAB=tBrAtB,{SigB(tB,tA)}KABZAB=tArB解密→验证签名{SigA(tA,tB)}KAB解密→验证签名
站间协议具有前向保密性(Forwardsecret)。前向保密性是指长期密钥被攻破后,利用长期密钥建立的会话密钥仍具有保密性。37基于公钥密码的认证不使用加密的站对站协议
ABrARZq,
tA=grA
tArBRZq
,tB=grBZAB=tBrAtB,SigB(tB,tA)ZAB=tArB验证签名SigA(tA,tB) 验证签名
AC(B)B
tA
tAtB,SigB(tB,tA)tB,SigB(tB,tA)SigA(tA,tB)SigC(tA,tB)A以为与B通信,实际上与C38基于公钥密码的认证改进的站对站协议
ABrARZq,
tA=grA
tArBRZq
,tB=grB验证签名tB,SigB(tB,tA,A)ZAB=tArBZAB=tBrASigA(tA,tB,B)验证签名
39零知识身份认证零知识证明(zero-knowledgeproof)的思想是:证明者Peggy拥有某些知识(如某些长期没有解决的难问题的解决方法),零知识证明就是在不将该知识的内容泄露给验证者Victor的前提下,Peggy向Victor证明自己拥有该知识。例如:
Peggy:“我可以对密文为C的消息进行解密。”Victor:“我不相信。请证明。”Peggy(糟糕的回答):“密钥是K,您可以看到消息解密成了M。”Victor:“哈哈!现在我也知道了密钥和消息。”
40零知识身份认证一个更好的对话是:Peggy:“我可以对加密为C的消息进行解密。”Victor:“我不相信。请证明。”Peggy(好的回答):“让我们使用一个零知识协议,我将以任意高的概率证明我的知识(但是不会将关于消息的任何情况泄露给您)。”Victor:“好”。Peggy和Victor通过该协议……41零知识身份认证可以使用洞穴例子来解释零知识,C和D之间存在一个密门,并且只有知道咒语的人才能打开。Peggy知道咒语并想对Victor证明,但证明过程中不想泄露咒语。
DCAB42零知识身份认证零知识证明的例子。图是否同构是NP完全问题,对于一个非常大的图,判断两个图是否同构是非常困难的。对于图G1和G2,如果存在一个一一对应的函数F:F的定义域是G1的顶点集。F的值域是G2的顶点集。当且仅当[g1,g2]是G1中的一条边,[F(g1),F(g2)]才是G2中的一条边,称G1和G2同构的。43零知识身份认证假设Peggy知道图G1和G2之间同构,Peggy使用下面的协议将使Victor相信G1和G2同构:(1)Peggy随机置换G1产生另一个图H,并且H和G1同构。因为Peggy知道G1和H同构,也就知道了H和G2同构。(2)Peggy把H送给Victor。(3)对如下两个问题Victor选择其中的一个,要求Peggy证明。但是,Victor不要求两者都证明。
①证明G1和H同构,或者
②证明G2和H同构。(4)Peggy按Victor的要求证明。(5)Peggy和Victor重复步骤(1)至(4)n次。44MessageAuthentication:报文鉴别(消息认证,消息鉴别)Message:消息、报文。Authentication:鉴别、认证。认证:消息的接收者对消息进行的验证真实性:消息确实来自于其真正的发送者,而非假冒;完整性:消息的内容没有被篡改。是一个证实收到的消息来自可信的源点且未被篡改的过程。它也可以验证消息的顺序和及时性二、消息认证45三元组(K,T,V)密钥生成算法K标签算法T验证算法V攻击者信宿信源认证编码器认证译码器信道安全信道密钥源TVK概念46认证函数鉴别编码器和鉴别译码器可抽象为认证函数认证函数产生一个鉴别标识(AuthenticationIdentification)给出合理的认证协议(AuthenticationProtocol)接收者完成消息的鉴别(Authentication)47认证函数分类认证的函数分为三类:消息加密函数(Messageencryption)用完整信息的密文作为对信息的认证。消息认证码MAC
(MessageAuthenticationCode)是对信源消息的一个编码函数。散列函数
(HashFunction)是一个公开的函数,它将任意长的信息映射成一个固定长度的信息。48MEKEK(M)DMK提供保密提供认证不提供签名BobAlice对称加密:保密性与认证认证函数:加密函数49认证函数:加密函数公钥加密:保密性MEKaEKa(M)DMK’a提供保密不提供认证BobAlice50认证函数:加密函数公钥加密:认证与签名MDK’bEK’b(M)EMKb提供认证BobAlice51公钥加密:保密、认证与签名MDKaEKa(Dk’b(M))DK’a提供认证提供保密性EK’bDk’b(M)Dk’b(M)EKbMBobAlice认证函数:加密函数52认证函数:加密函数公钥加密:保密、认证与签名??MEK’bEK’b(Eka(M))EKb提供认证提供保密性DKaEa(M)Eka(M)DK’aMBobAlice53认证函数:消息认证码消息认证码:使用一个密钥生成一个固定大小的短数据块,并将该数据块加载到消息后面,称MAC(或密码校验和) MAC=Ck(M)MAC函数类似于加密函数,但不需要可逆性。因此在数学上比加密算法被攻击的弱点要少54认证函数:消息认证码MAC的基本用法:消息认证AliceBobM||KCK(M)CKCM比较提供认证55认证函数:消息认证码MAC的基本用法:与明文有关的认证M||K1CK(M)CK2CM比较EK2MDK1MAliceBob提供认证提供保密56认证函数:消息认证码MAC的基本用法:与密文有关的认证M||K1CK1(Ek2(M))CCM比较EK2K1提供认证提供保密MMDK2BobAliceEk2(M)57认证函数:Hash函数HashFunction哈希函数、摘要函数输入:任意长度的消息报文M输出:一个固定长度的散列码值H(M)是报文中所有比特的函数值单向函数根据是否使用密钥带秘密密钥的Hash函数:消息的散列值由只有通信双方知道的秘密密钥K来控制。此时,散列值称作MAC。不带秘密密钥的Hash函数:消息的散列值的产生无需使用密钥。此时,散列值称作MDC。Hash函数需满足以下条件:输入x可以为任意长度,输出为固定长度正向计算容易,反向计算困难抗冲突性(无冲突性)58哈希函数的基本用法(a)M||H(M)HKHM比较EKMDMBobAlice提供认证提供保密EK(M|H(M))59哈希函数的基本用法(b)M||KEK(H(M))HHM比较EDBobAlice提供认证K60哈希函数的基本用法(c)M||K’bDK’b(H(M))HHM比较DEBobAlice提供认证Kb61哈希函数的基本用法(d)M||KDK’b(H(M))HHM比较EDBobAlice提供认证提供保密KMMDK’bEKbEk(M|DK’b(H(M))62哈希函数的基本用法(e)M||H(M||S)||HM比较BobAlice提供认证SS||H63哈希函数的基本用法(f)M||H(M||S)||KHM比较EKMDMBobAlice提供认证提供保密EK(M||H(M||S)SS||H64
数字签名数字签名:DigitalSignature传统签名的基本特点签名是可信的:能与被签的文件在物理上不可分割签名是不可抵赖的:签名者不能否认自己的签名签名不能被伪造:除了合法者外,其他任何人不能伪造其签名签名是不可复制的:对一个消息的签名不能通过复制的方式变为另外一个消息的签名签名是不可改变的:经签名的消息不能被篡改容易被验证数字签名是传统签名的数字化能与所签文件“绑定”签名者不能否认自己的签名容易被自动验证签名不能被伪造65
数字签名五元组(P,A,K,S,V)P是所有消息组成的有限集A是所有可能的签名组成的有限集K是所有可能的密钥组成的有限集S签名算法D验证算法66
数字签名可分为两类:直接数字签名方案(directdigitalsignature);基于仲裁的数字签名方案(arbitrateddigitalsignature)。67直接数字签名Sa(M)Eb(Sa(M))M,Sa(H(M))Eb(M,Sa(H(M)))MMSH(M)Ek(H)MDk(H)HHH比较Alice(A)Bob(B)直接签名Alice(A)Bob(B)加密+签名Alice(A)Bob(B)Hash+签名Alice(A)Bob(B)加密+签名+HashHash+签名68仲裁数字签名Alice(A)Bob(B)Trent(T)M,Eat(IDa,H(M))Ebt(IDa,M,Eat(Ida,H(M)),T))Alice(A)Bob(B)Trent(T)Eab(M),Eat(IDa,Eab(H(M)))Ebt(IDa,Eab(M),Eat(Ida,Eab(H(M),T)Alice(A)Bob(B)Trent(T)Ida,Sa(Ida,Eb(Sa(M)))St(IDa,Eb(Sa(M)),T)对称密码+明文传送对称密码+密文传送公钥密码+密文传送69普通数字签名体制RSAEIGamal
DSS/DSA不可否认的数字签名算法群签名算法盲签名算法数字签名体制DSS签名算法我们在后续课程中讲述70数字签名体制盲签名算法Alice(A)Bob(B)t=mkemodntd=(mke)dmodn71WhivpHSt9A8DreF7p%qkj!Ppqp!C$E656QFed8Fbu(pc1y7Ah&7rnBE1yCRN-cZI1Mb1!l#cUjik(YBHJf*p5LPVAt7bbNoMkRLF7Wl8#9zBW*z2cxB$d)XbtY#%rOmG-$S--d+YamT*f3Y1-c-Zdu(fH!*Hw52&oY0wPt8sZ3F1()JDf6)jv#+f)LPCEe!0+ji5vXX33uRGDea*cufcpd7zUtTlsy+nCj&5ldmjI)#&TMMdLy5#kPH63lu1K$pHfPItzmjUjbGL6vmj%WETHY%gfk#6hL!A9nXSq6nz2oHzoRkC6-6bHYl5(p#6F*T*B$ATpCXU05&uo55Q-RF4W9beL-!IhpBo8j2Y5j!UEWsypwkBlcT#a-U-xgosC#C&-ZRfZhAZP)Z+(cX$WxGJaUE8ZhZ1caXJzeC56rP&hhCVeF7CQkQQIILEIlqc1elH&Fx#O-H4MjTSP1o4chGW9&HSEOPCTJ(lUFkdq71URSdVu#yVJ3ZzKip(6xsQvC-UHF5*a%L13f)*Y3Q3OmM6tiHKBoSuVnq)+*MB#%Cml28GT3lGiQXC1YxNk9-jkqaBgnRM1S1)qtqL1r1CR(grl0j80TiCz0-5#6f3aSS4lOha#HEnZZtOdv#kM3Jty*(9*FJmFjTio3$9YT(Zd3VvSsW7oGoo588D98m8MKRnISqjK5zSN)pQ5Sg*f!tr6N!-a5G8Shc-o0vKek0tT&L0*WfklP3#YmzSHSKAjbm!EYhLR19!1z4I*FlRM3sxNK!hm&pon9%y1*b2)a8FiO2Z7s9JT(MMyb#RyT-G0Dg+kiZOFL7yt*lpu#79PWGE41(JgTZgzoUw6Bzpj9S)aldPyDXk5E7rc7Ch4!56guhj+ogJ*(YcnpO+0#V-62TDA4hDZylrCxiURUfZg*A$Nu6bc54Jb7RI0RSxD#e#fGs8c##q)QwtwPGx0myBEk-Wa6KZ&5PpMsw%bl3ia0UcsS!uLWETPr6-mPMLfwFwd#x8wXg#3o1Gg4(*aC-)&fTy8g3ge9oBeoTGnBOYVDR$F5GXfot6z#$+&vI47sOt(RkQLT7dxnf-Wqh0e$(VXybed$$U8z)TUvamqQX3L!PRBLQl-n*rh8FeFk$0e3nt7VBCkolQfoNZs$)a3inZvJ2fQfd2d46LfcBB#b(ZuhFyrOYfa+oTYndJ6-QP1fH#z$zSBXj4Hj)Vi&8lCgKSa7tN6G#+vpj8im&%!1Fpf#GC%xXMu#!y-CzKEg8t2PhxJRHXIr)#f(74KXTncORI2(K77rV8!VrJJ!!%o(Swrx(WoBFK$qNSHSYJaYAaxAuv*p25Vihy0Vs#U9dI)6MMdio(+qxWi#vo5SwT$2Rh7BqFbSbt0$pD!VhUvEAVVaLiuUwqrVW7(qw*)bbrN(dgc*RiqZsqk1vMavvVJTlILC10#TKGZ)ZhfraJGZzvYy%LnkWRZ+1&&pTlwNZf-j6%fUU&0EIx&GIylDE#7Ak#9hdP0AZKz5)$7O3O8aJdhjzDP!4KR7pg!xssz+-(UHV#twgV&C6d39&KcQ!h5Gbeo56*g*3-b+%mZdUe2ZiJoPdd7ruLzpLWh7Z4ngohBSCv2*N$9-2KxoO(BWikkN&s&P0rvQZ6EvbaW!HtZCxGPlQ0H62xY+p86Ih$jSKJgy%-pRh4Hb$Kz)Mt)ynB0%k)qukcbWr!ul)!Laf$XEaPqW!7MshK(UwZ2LCk5OVB3$mmYQc(4qzZGTX(50DT7)DKCvE*p1h9%*Uf&dM(hf-JiG9$W5&zay8qAC)la1N2jOCoanR-+LCP3yna*%J*QZYbYxs$pKT%L03%8cXVbTRKIV%%eiqeBN7aFdXSSh*6oXyh9hj*#ONEJ!wBJypLak9fq4FvEDvD)&xPWO17bwoFQ3lJnZLPd0ve!tbj9mM0%zPJLkV*mx1MTGBz3gHTlTT!NNRr-+W#FpJWmE)((pG5hzh*zOQcGEOEQUcFo!J+rgAAU(&j-AfYuCRXJGpZ)hcTv#Wvdx8i-I-1mNph$QlKBee-Tq80sxiycP#d#qd#gL3luWHfvtQ01MiQS!WOHFerm-qbQ8Jn(jylPBwJPYe1ZG*2V1XcckXWldhSm#c!x8Z*-NAP7ps(4GR2sxOE2-Qaoa$#wU2EP%J-R*TIhp&lxp+sLGKAs*JN-RS2C%sQ1#yZMpQ5P8xJ+*wS3DDOSRmNXd7D1ETRBuKizBkN9wKDPMdN*hmR7xzY&bCQAxcfbXl6LrP3Wum#CPYmE04aM5R9JLL1dDDG7ziZld7JpKW2QojBOm*p-Yrxom*N-#MpcS!7H&HttvWTP*GCC5xTKcNKU0ztQo8lg&U*4*S5xEh5NZxYeqREzthC%CeCRkGqg7)soFoffM#em5(77&9fqIcU#qX2qvZgJ32Fuw9nz#FTX(rz$Nzp8HJsz0&r(C0*NtjRhgsf7rKdrKS9x9c)#XZ3IKEJYqO*2Q+fAzmO70y!x8bjN))Oou!79alt4I9rSM&KEhlcL3SdU*5#z!HhsJCNL4wtCsGMhY9L+QvVsjXBQ$uOc2YdYLe#6dHgJ8ueFG#A*qiHPo-7m*M)YQveHTGGfjC!tzAY)MSgW21LiME9vfoI2HA8Ks3aE(Kaz4B6GR67-aZAuFBGGkj3he96I4px-Kb*DOUkD1yei81YK1-cF6kZSv!Sz2acnIk4$iCNy1MeWHHfn#zuPzxKDPAK&Vtdv(C2krIy&6$RtdV4y36QDnsDdS!ix6RCb3Hi5-Do())BgLs18j44#4f%Qi5T%7$$MMG)hXaHXXueS!4RnfDQcGtrx!lzHscSRTg%nwXOZ##rEV7bN+ll0eh2mgZ%-MjcdOD7zV9&JAaT7AI(sSD2+Nsv3-U9HAZU!I2LKD5)LDR(NYWZ-XuFKgknzY1tjVc9Q0U9IugQn42U&i726!3j+j1qy3S0WN2tgAIM)$d1i9OEc2Ztr7cjSaZdFrdFm0qWSKZLzR-TPsrjJ37ou$nmvirrYoxUH8NQL$ZAYecch-TseNvxxwHq$S+R33fbOef8fwEpP1CK(crSS8awRsY)N9BLK6iLt#+cV7toZJLEc2uWE&30gRuS0RmmNby%1gMTTdLaOkgg!Sp8dT7LfXC2DIr%JFjl!SlHwmrMa(H3h#EDCkO%jvL&XF#9AEHEtRsuhfEYMYekzgynreqypJhF5aeM-BQ2XDHts-EFvErlQpJ9vaW272LsTC&BGY8F*0p*kZ9IJ5%-9Cv)oTWUNFuM6Ns#S!0$FCusaHKGRYC9#UsGMKUCTCK+0Ly!R-vmfjNuPdP%uHzHGip$2E(!gchtegPo$3lAIUpcAQwc&azgCdC!DaU+PizpWR%SGJhKJLQye!KrOek8EeFjFzoDBNwh0%BwiCZV)%hCpl(!M&e6nyi7vLh-DDFmC+7awY$lbIrzQPrm2MhFpgt0+iLecpSB9rvzs6)5cgP)0HM02DDbY)TiuA1t0dm)lrl8MWS8$OvePk6I%M(&f)1bzIM767CnO1+UjMJ+JD$jVNYNui*Rl$u6aJC(S7-PFV$Hn+-MU!C8uMQbEz$96bVsqbbN+WRph)ansvPLMcGoYANvTiyx0326+PXF&8ZNs%LLSJGqZSah)c5elaaw8H93ZXLerK&5QnhHNrzaA$+c7AzfIXNlApvIVU(zgr+q#88PZzTK7w+wNvL8v)-kL+jwUN4aWmj*(Z5L#vRgnxy3qy)ADfpMHEAfInDBwT!jmkUsOjO!0BZuN+UyAjeQfkBzV1Q+E!sAXiYaQfgd*YC!Ye&puXMS28v55$eBq%wqIC0NATs5p2(y$YJkvl+1bOYDwKyLjhb3zQI(!qJIer(kgz6mS1KAw+)&nHRDHeqSFA7cLSj*rkIWln8DL8!&UHQTXGrJRog+h-71aGTzmYJk4(gnLJNfLu*HYqOfy4EEK8bpb-g8SO)KjevyHeii3qtx&zemSpv3UPZ%inh99zcDpu!D)4Vf3P)gis5WiccacqFzRd17R$jg*QpuqGeH+KE!8hT8)!x+$WJEAb*TF$csqI4K75sQ1t&yac3EmGLRkV7Pd98P$lmr&p5B7iq!eS(g-JKpgTozW!e!4bHLknaDV9*JNw!+%k0jgGHOy8nB+J8CFC1fyRGK0JQ67)cVYFqVf3P)ge6tJigsex%9OvDIEgyXEl%e314vi*c-jJCXb%dPNCV$HhJHRWFuQwZ)zIRdU8Tn6+ikAodzLsh-dvlrg+U3dJU5&Ozygo7C#BC0$PfDm5RFm4hiZw-sB8fP5Lc0bZsvCEdES8Ra(U)8xJqV(#6N9(tklp8Wfm*AVvU#6K7pa#DyS4*SZUGGo)%!%vSnbqqOq0+STd9dk1NtgR&lhcALvqgG2aAOm%6uz!d)Wm3GB4G-K0)%(I0njiRtO3B&&(9C#TmV#oYq9+wlE0AX0A6T+I!LQRiSBrKd$tr4SzN3W5U&j*&06Ja44DhDDLEZusFsnuvL8$NaaTKIzjMY6J*ErrA!W$TLLeW(mx0(%R#PNfOFhaNkpmGGRxkch5hoDZz#2$SlOpTpt(bmar$8i$KW(ddyyId5sUVW-aby3QzNLh5O%uVSt2sIuY83bGeW!4JUNw9vag$Mj2QDc2oxl*cfWS+P)IDO0bYXo%ADHdpRVF(uF)eG*PmcOnxB&6wsqT2!LnxLy)8$O)p*V)TCSWKLBHqL%9ckJLil2tIxr#f$qzKqxai#Un7tyQkyLM+K!Q-bEU7hxf1cqiv!f4%c&yuQ&ma12(8&LAd0FsH1CD%xbi8xMad%8rj49XERV9dp5SWLQvduC(7sfra7XGG5xiVdBPnM-!oli2wI4ku)I$1Tmjv+CodqcffY7e+Dzqdmv2Gd)u*tYU1fWp#KV94Ac0i0t!$-7buh53(BQlu3XN53n)pO4DW0um5aDH8JT6cYyHI)3l8*bg&*!mW+s#gHtsy#oFSc#pisw+hOj4+(iVU&*3Y73i04xqsPHn5flPfez0TzO-)Wdp2(b*gUI-QRBT#$5)L*Q(L$QBpYKlAKQZ72Pkj7c&T8s1t-ao(vdIchjKWdbdL+J-wxvV)opt(r8FdpA4x5nLyei30D63Y!HtQ)D$uDOjOtVlnlJR3-*pKfA%#U5cy22EfDbICw-Nc+R0qsNWq%3osT4YOe)CAx+L4UrxHsrdrCg4H4oc)a7l7-mD5oQNJ)8ADKhRE9Zb+jP&w$XYAuakt6*zratPYLNn098srzaSRCCbYxu51W2lbe1cj!FC$uBH8w3mKAjrdazYRVGOOcPHe+tYQzCkbEBTgy6LS)#vs%sk-%zadaUNvHTCxpot+zn&Or0eCI0kwIbx)6gIbt)skfQ)uAJgP(wWHuZ1J$g2SL!(w(2eeZGYw*NhfcU7N)ngsfi7b)emOLvN-$yFk3k3JAg7%78pfjXzL3HPY6Q9#+YHP#XdD1*8-A1GWh-oQ$eg(S6rt(kAYKo8tFnOx3HbKZR)%vS5ztE5cT3O8RFrQd%aKIYah*39P(wVyIO!ZtGR5kLw6ney$GJ!rM(AHUA&BI*9dribgE$OJHQRiN-tXdF3p8U!Ek#lAgFpvyVA#iCziVo7(pwtOm9lk2Gjx26G+5ZzJ*8eap8(mo7z#zm&HV)FiymhZU%M4(xI3lIH4O9nbDNgr!d$x&5d2vTzTyG%1HS7LEw%LTrlSRVmRvY5AFvmUE8N9gJ!&fABbQjciA(Qyey*LWF00GCoNimF*VC$h&4ssPFhh*OayiS(*qbacddNr7ceEOzdTAt2xDgSzmn&v&-Wp-zPQU5(GG)3YLDPMRnGY!Fk$utu)R&n(CONVa*iSp$V2&W5E$CK$n+Hd8VDdASVVS0e5xK%p#!O#Q-m#VcC&HVokWPKvAWvjDFMeaUmy&)nB-y&jTxrf7nczc9xY6eF3fw1M*0ZpP3)C&)fVVyTlh%SlH2o4V6GReyF&+0W3Qbryhe*reYY9!&LU&Bh8u-VvOjo7K5%R*Mdf&OhL)iaU+SZa!15q#(FHdf885Ix9U!s$DVKIG7+FbGd-A+0uYqfttW$f23KXjdQ4!L8cUVK6rDlAsf68(k7q+Eub7#1CqFQ2hSz8cfCM2voSj3HmIG!nC4*0+mtX(5SGluLt7czwV8--NT!Dcd+0Lp)%DxgvMABmvAqNoRkuD6x6rTLxICJm1a9rnq*wn-WjTOBI27KftW0E47h6kl!vraaVARJe2OVH%4wBM9DJ(7Yme*(V+MtU7O%aI4fXzO#3Pb-Rw2C&dI%GrLkKEs%1-aSUWOFuVrS9NYwZ5UdTSO1o4oiWF3N2CN23cm6xRcHvx+o)F(3Wn-&gDW(4WfOWPv5kq&beKMKA7tWQdZ#P*UNmMXmlXej7jkhJ4rmdX&SHlvPL&Zzaq-8WCaBqOIchZ!ZvGBx$QaPACA#LrmRUFxELpQG1*#2KELbkyZdP&fpO8(Hxc)v7QCtGJHbrjg$&LZ#KEBs0SKgK$Kq4mWw0k9uWvcLJdrwo+G&uThpOFA6fGJwd4F84$+qU7XiRWLjqSPLmU5Vp3)(gTJ1OfmME%hyDqK62sOQzMHZC97y9PY9hPhfwoCYlP0vMjIBm8ms%+XxoY526XXTzdlg6hn&G*BANZw$G-wv9ZWFR!Fu-YGW5)5-izjcUMuJ#QTGT$CkQu-CD(dLU0OncxHaNV5t5X7lGjTLBD+O7XTTsiIGIp+oB15q)Scgqz+c#DWsRg*lOSGTOK(gob(vt%8pNtPq&F(o!l6-oDpq3ZA4NwiGe&j)n1vULpFts+%ln7RZn2!knRO(ZgbGUcXT!N+sVl&1d**O+zi5+Y!bDoMRESG#eOR*Ff1evCc$F%)hQ&k-UR%ElV!M+G#5#T9b!5yK&RLn#vt%uB-Gp7kYA*sAf5tYczB+4(WsZBU*XBFh!0Ai9cRf8UYpIG3%rqI9dZShLYTyA4Rt2a2d1p$n1%)10O9D#Ox&406RZV1EC+zJwkRgb-tHMdR&l+x+-#4+3Nkl8c!L*8I#jihL$rDVDhj31Gcdsiuz1IZm*oQFlbvHg!oZG(rdtn-*w(I%)8U&x6)WNDJBbqyoVGh5(A#GZc8uTaSo%LB6B)fvYjFl7Kqx(G6R5L99%u3Co7h&HSLJUJrxcXl&Mzu#7-6mGMfhkSoUnJWKyb(C$7)kJjo2(eJ3b4SO3lPfsTSn3frJ40xzCgO17f4hcnsZrjGV!L8vo3aEllRGc2I477diSqUgMz8VrQ428cpf73V(El69VkuLzE6c5a%Ni#p%Nt)4dl85%uCYC7R#!jd(9n8rMJMgNz3Us3kMVgFrjUC62)u2p-yvw5&(*+z$G+DLPh)wl59QLn9&CR9hTrz&Durjc(UojzhCAOVttosoiaExrqxFbintp1rQQ%#msbx%qyrcZTlhqw%xo(pKNpa)SBaT1*YU6Y$0DYMrlSSJ7V()&MNk$8dBhZNweMuY1mJvE$*vmk48(*weFCDbiL3waA77$8iZUlMX)L)*5!(hlNuF!B1gtY3t9ikOj(xo4Tr*RiU!&d1MQO96BjExn(*P#yX3FNmrzfnKGH7zd#k8-u3vbW(d6fgYwypzmgWwRjHn2lPYj%8kXaMWwVjw%iyLhYg+NGjiyHbSGhmS9zCDuag82$05eAHFafVp8jpcoI2K5d#v(QMH*zvfHQhPUS($wO7wn1ipyP9Oin2-9-dWF4H%P1f3zK#xNblssMbt6KZQ6w2J#*jz$+ptkqp5SMTgM2AKFk#6kKkfhHTx$NmpZwb9%wB3V%MDluX2jnj4isrIa6MOR5iMSH)tCDoP6!A7C!QJd+HXYjFatUNBRQ&RG$5DQ2ERDDnyEc$cz(--5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高科技园区土地承包经营合同协议3篇
- 2025年离婚前财产评估与不自愿离婚调解服务协议3篇
- 2024年芒果加工厂租赁协议
- 2024房地产开发商与建筑设计院合作开发合同
- 2024版建筑物资采购运输一体化协议版
- 2024年现金流保证合同2篇
- 2024年还建房购房合同范例
- 基金复习测试题
- 2025年笔及其零件项目规划申请报告模式
- 1-2 《齐桓晋文之事》说课稿 2023-2024学年统编版高中语文必修下册
- 健康教育工作考核记录表
- 路面轮胎模型建立方法swift
- 装饰工程施工技术ppt课件(完整版)
- SJG 05-2020 基坑支护技术标准-高清现行
- 汽车维修价格表
- 10KV供配电工程施工组织设计
- C#读取DXF文件
- 支付平台线上统一对账接口说明V0.2.docx
- 沥青路面损坏调查表-带公式
- 现场电气安全隐患排查表(含检查内容和参考标准)
- 合同签订与审查的风险防控培训课件
评论
0/150
提交评论