1、1,第4讲 身份认证与数字签名,王庆先 电子科技大学计算机学院,2,一、身份认证概述,为了保护网络资源及落实安全政策。需要提供可追究责任的机制,这里涉及到三个概念:认证、授权及审计。 用户对资源的访问过程,3,一、身份认证概述(续),认证与以下环境有关:某一成员(声称者)提交一个主体的身份并声称他是那个主体,认证能使别的成员(验证者)获得对声称者所声称的事实的信任。 身份认证的作用 对抗假冒攻击 确保身份,明确责任,4,身份认证概述,对身份认证过程中攻击: 数据流窃听(Sniffer):由于认证信息要通过网络传递,并且很多认证系统的口令是未经加密的明文,攻击者通过窃听网络数据,就很容易分辨出某
2、种特定系统的认证数据,并提取出用户名和口令。 拷贝/重传:非法用户截获信息,然后再传送给接收者。 修改或伪造:非法用户截获信息,替换或修改信息后再传送给接收者,或者非法用户冒充合法用户发送信息。,5,二、认证方法的主要原理,主体了解的秘密,如口令、密钥; 主体携带的物品,如智能卡; 只有该主体具有的独一无二的特征或能力,如指纹、声音、视网膜血管分布图或签字等。 特定场所(也可能是特定时间)提供证据 验证者认可某一已经通过认证的可信方,6,1、基于口令的认证,对口令的攻击 窃听,7,1、基于口令的认证(续),对口令的攻击 截取/重放,8,1、基于口令的认证(续),对口令的攻击 字典攻击:根据调查
3、结果可知,大部份的人为了方便记忆选用的密码都与自己周遭的事物有关,例如:身份证字号、生日、车牌号码、在办公桌上可以马上看到的标记或事物、其他有意义的单词或数字,某些攻击者会使用字典中的单词来尝试用户的密码。 穷举攻击(Brute Force):也称蛮力破解。这是一种特殊的字典攻击,它使用字符串的全集作为字典。,9,1、基于口令的认证(续),对口令的攻击 窥探:攻击者利用与被攻击系统接近的机会,安装监视器或亲自窥探合法用户输入口令的过程,以得到口令。 社交工程:比如冒充是处长或局长骗取管理员信任得到口令等等。冒充合法用户发送邮件或打电话给管理人员,以骗取用户口令等。 垃圾搜索:攻击者通过搜索被攻
4、击者的废弃物,得到与攻击系统有关的信息,如用户将口令写在纸上又随便丢弃。,10,1、基于口令的认证(续),安全口令(对抗字典攻击和穷举攻击) (1)位数6位。 (2)大小写字母混合。如果用一个大写字母,既不要放在开头,也不要放在结尾。 (3)可以把数字无序的加在字母中。 (4)系统用户一定用8位口令,而且包括!?:“等特殊符号。,11,1、基于口令的认证(续),不安全口令(字典攻击和穷举攻击) (1)使用用户名(帐号)作为口令。 (2)用用户名(帐号)的变换形式作为口令。 (3)使用自己或者亲友的生日作为口令。 (4)使用常用的英文单词作为口令。,1、基于口令的认证(续),为判断系统是否易受攻
5、击,首先需要了解系统上都有哪些帐号。应进行以下操作: (1)审计系统上的帐号,建立一个使用者列表,同时检查路由,连接Internet的打印机、复印机和打印机控制器等系统的口令。 (2)制定管理制度,规范增加帐号的操作,及时移走不再使用的帐号。 (3)经常检查确认有没有增加新的帐号,不使用的帐号是否已被删除。 (4)对所有的帐号运行口令破解工具,以寻找弱口令或没有口令的帐号。 (5)当雇员或承包人离开公司时,或当帐号不再需要时,应有严格的制度保证删除这些帐号。,13,1、基于口令的认证(续),为了增强基于口令认证的安全,可以采用以下改进方案。 (1)认证过程有一定的时延,增大穷举尝试的难度。 (
6、2)不可预测的口令。修改口令登记程序以便促使用户使用更加生僻的口令。这样就进一步削弱了字典攻击。 (3)对无效用户名的回答应该与对有效用户名的回答相同。,14,1、基于口令的认证(续),基于单向函数的口令认证 f是单向函数,p是口令,id是身份 Alice提供p|id 计算机计算f(p) 计算机与存储的值f(p)|id 作比较 由于计算机不再存储口令表,所以敌手侵入计算机偷取口令的威胁就减少了,15,1、基于口令的认证(续),如果敌手获得了存储口令的单向函数值的文件,采用字典攻击是有效的。敌手计算猜测的口令的单向函数值,然后搜索文件,观察是否有匹配的。 猜口令p1, p2, pn。计算f(p1
7、), f(p2), f(pn)。搜索文件。,16,1、基于口令的认证(续),掺杂口令(加盐) Salt是一随机字符串,它与口令连接在一起,再用单向函数对其运算。然后将Salt值和单向函数运算的结果存入主机中。 计算机存储的是f(p,Salt)|Salt|id Salt只防止对整个口令文件采用的字典攻击,不能防止对单个口令的字典攻击。,17,1、基于口令的认证(续),SKEY Alice输入随机数R,计算机计算x1=f(R)、x2=f(x1)、xn+1=f(xn)。Alice保管x1 ,x2 ,x3 ,。,xn这些数的列表,计算机在登录数据库中Alice的名字后面存储xn+1的值。 当Alice
8、第一次登录时,输入名字和xn,计算机计算f(xn),并把它和xn+1比较,如果匹配,就证明Alice身份是真的。然后,计算机用xn代替xn+1。Alice将从自己的列表中取消xn。 Alice每次登录时,都输入她的列表中未取消的最后的数xI,计算机计算f(xI),并和存储在它的数据库中的xI+1比较。当Alice用完了列表上面的数后,需要重新初始化。,计算机存储xn+1,18,1、基于口令的认证(续),设计基于口令的协议应满足的要求 口令不能过长 离线字典攻击无效 在线字典攻击无效 记号 共享的秘密ZAB 导出的会话密钥KAB,19,1、基于口令的认证(续),基于DH的EKE,共享的信息: 口
9、令 . 安全参数 L.,A,B,20,基于口令的认证,改进的EKE H2()=g,AI: Password . BI:,A,B,21,是 相应的签名公钥。 和Original Diffie-Hellman-based EKE Protocol的比较:1、用口令的镜像加密;2、多了最后一个消息。因为,如果没有这个消息,敌手只要知道了口令的镜像就可以冒充A和B进行通信,而不用知道口令本身。 所以最后一条消息正是为了避免这一漏洞。存在的攻击敌手如果知道了历史会话密钥,可以通过最后一条消息 猜测口令。解决方案是签名消息不用会话密钥,而为和ZAB 相关的另一个值。,几点说明:,22,服务器保存hpw =
10、 H(id, pw),例1. C S: id, rc hpw, H(rc)例2. A选择RSA公开密钥(e,n)和随机数rA ,发送 (e|n|rA) hpw)给B 抵抗离线字典攻击需要精心设计协议,抵抗离线字典攻击,23,在线口令猜测失败会被发现并且服务器会将其记入日志。一般可使用帐号加锁、延迟响应或者CAPTCHA来抵抗在线字典攻击。,抵抗在线字典攻击,24,CAPTCHA,抵抗在线字典攻击 防止恶意注册,25,基于对称密码的认证,ISO/IEC9798-2协议(同时建立会话密钥) 1路单向认证(时间戳)2路双向认证(时间戳),AB: TA, BKAB,AB: TA, BKAB BA: T
11、B, AKAB,26,基于对称密码的认证,ISO/IEC9798-2协议(同时建立会话密钥) 2路单向认证(一次性随机数)2路双向认证(一次性随机数),1. B A : NB 2. AB: NB, BKAB,1. B A : NB 2. AB: NA, NB, BKAB 3. BA : NB, NAKAB,27,基于对称密码的认证,记号 A, B 期望建立会话密钥的两个用户 S 可信服务器 KAS , KBS : A与S,B与S初始时共享的长期密钥 KAB : 会话密钥,28,基于对称密码的认证,Needham-Schroeder 协议(同时建立会话密钥),1. A S : A, B, NA
12、2. S A : NA, B, KAB, KAB, AKBSKAS 3. A B : KAB,AKBS 4. B A : NBKAB 5. A B : NB - 1 KAB,1,2,3,4,5,29,基于对称密码的认证,Denning-Sacco攻击:在Needham-Schroeder 协议消息3中使用破解的会话密钥KAB,假冒A.,3. A B : KAB,AKBS 4. B A : NBKAB 5. A B : NB - 1 KAB,1,2,3,4,5,30,基于对称密码的认证,Denning-Sacco协议,1. A S : A, B 2. S A : B, KAB, TS, A, K
13、AB, TSKBSKAS 3. A B : A, KAB, TSKBS,A,B,S,1,2,3,保证会话密钥的新鲜性,会话密钥与时间戳绑定,31,基于公钥密码的认证,记号,EX(M) 用X 的公钥加密M SigX(M) X 对 M 做的签名NX X 产生的随机 nonceTX X 选择的时间戳MK 用对称密钥K 对消息 M 加密,32,基于公钥密码的认证,ISO/IEC 9798-3 单向认证ISO/IEC 9798-3 单向认证,1. AB: TA , B, SigA(TA,B),1. BA: NB 2. AB: NA , NB, SigA (NA, NB, B),33,基于公钥密码的认证,
14、ISO/IEC 9798-3 双向认证ISO/IEC 9798-3 双向认证,1. AB: TA , B, SigA (TA ,B) 2. BA: TB , A, SigB (TB , A),1. BA: NB 2. AB: NA , NB, B, SigA (NA, NB, B) 3. BA: NB , NA, A, SigB (NB, NA, A),34,基于公钥密码的认证,Needham-Schroeder public key protocolLowe给出了攻击 AC(A) B 可以在第二条消息中增加B的标识阻止这种攻击,AB: EB (NA, A) BA: EA(NA, NB) AB
15、: EB (NB ),1. AC: EC (NA , A) 1. CAB: EB (NA, A) 2. B CA: EA (NA, NB) 2. C A: EA (NA, NB) 3. AC: EC (NB) 3. CAB: EB (NB),35,基于公钥密码的认证,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) B A: TB, NB, A, NA ,EA (KBA), SigB ( TB, N
16、B,A,NA,EA (KBA),36,基于公钥密码的认证,X.509 three-pass authentication,AB: TA, NA, B ,EB (KAB ), SigA ( TA, NA,B,EB (KAB) B A: TB, NB, A, NA ,EA (KBA), SigB ( TB, NB,A,NA,EA (KBA) AB: NB , B, SigA( NB ,B ),37,基于公钥密码的认证,站对站(Station-to-Station)协议,站间协议具有前向保密性(Forward secret)。前向保密性是指长期密钥被攻破后,利用长期密钥建立的会话密钥仍具有保密性。,
17、38,基于公钥密码的认证,不使用加密的站对站协议,A,C(B),B,tA,tA,tB, SigB(tB,tA),tB, SigB(tB,tA),SigA(tA,tB),SigC(tA,tB),A以为与B通信,实际上与C,39,基于公钥密码的认证,改进的站对站协议,40,零知识身份认证,零知识证明(zero-knowledge proof)的思想是:证明者Peggy拥有某些知识(如某些长期没有解决的难问题的解决方法),零知识证明就是在不将该知识的内容泄露给验证者Victor的前提下,Peggy向Victor证明自己拥有该知识。例如: Peggy:“我可以对密文为C的消息进行解密。” Victor
18、:“我不相信。请证明。” Peggy(糟糕的回答):“密钥是K,您可以看到消息解密成了M。” Victor:“哈哈!现在我也知道了密钥和消息。”,41,零知识身份认证,一个更好的对话是: Peggy:“我可以对加密为C的消息进行解密。” Victor:“我不相信。请证明。” Peggy(好的回答):“让我们使用一个零知识协议,我将以任意高的概率证明我的知识(但是不会将关于消息的任何情况泄露给您)。” Victor:“好”。 Peggy 和 Victor 通过该协议,42,零知识身份认证,可以使用洞穴例子来解释零知识,C和D之间存在一个密门,并且只有知道咒语的人才能打开。Peggy知道咒语并想对
19、Victor证明,但证明过程中不想泄露咒语。,43,零知识身份认证,零知识证明的例子。 图是否同构是NP完全问题,对于一个非常大的图,判断两个图是否同构是非常困难的。 对于图G1和G2,如果存在一个一一对应的函数F:F的定义域是G1的顶点集。F的值域是G2的顶点集。当且仅当g1,g2是G1中的一条边,F(g1),F(g2)才是G2中的一条边,称G1和G2同构的。,零知识身份认证,假设Peggy知道图G1和G2之间同构,Peggy使用下面的协议将使Victor相信G1和G2同构: (1)Peggy随机置换G1产生另一个图H,并且H和G1同构。因为Peggy知道G1和H同构,也就知道了H和G2同构
20、。 (2)Peggy把H送给Victor。 (3)对如下两个问题Victor选择其中的一个,要求Peggy证明。但是,Victor不要求两者都证明。证明G1和H同构,或者证明G2和H同构。 (4)Peggy按Victor的要求证明。 (5)Peggy和Victor重复步骤(1)至(4)n次。,45,Message Authentication:报文鉴别(消息认证,消息鉴别) Message:消息、报文。 Authentication: 鉴别、认证。 认证:消息的接收者对消息进行的验证 真实性:消息确实来自于其真正的发送者,而非假冒; 完整性:消息的内容没有被篡改。 是一个证实收到的消息来自可信
21、的源点且未被篡改的过程。它也可以验证消息的顺序和及时性,二、消息认证,46,三元组(K,T,V) 密钥生成算法K 标签算法T 验证算法V,概念,47,认证函数,鉴别编码器和鉴别译码器可抽象为认证函数 认证函数 产生一个鉴别标识(Authentication Identification) 给出合理的认证协议(Authentication Protocol) 接收者完成消息的鉴别(Authentication),48,认证函数分类,认证的函数分为三类: 消息加密函数(Message encryption) 用完整信息的密文作为对信息的认证。 消息认证码MAC (Message Authentic
22、ation Code) 是对信源消息的一个编码函数。 散列函数 (Hash Function) 是一个公开的函数,它将任意长的信息映射成一个固定长度的信息。,49,M,E,K,EK(M),D,M,K,提供保密 提供认证 不提供签名,Bob,Alice,对称加密:保密性与认证,认证函数:加密函数,认证函数:加密函数,公钥加密:保密性,M,E,Ka,EKa(M),D,M,Ka,提供保密 不提供认证,Bob,Alice,认证函数:加密函数,公钥加密:认证与签名,M,D,Kb,EKb(M),E,M,Kb,提供认证,Bob,Alice,公钥加密:保密、认证与签名,M,D,Ka,EKa(Dkb(M),D,
23、Ka,提供认证 提供保密性,E,Kb,Dkb(M),Dkb(M),E,Kb,M,Bob,Alice,认证函数:加密函数,认证函数:加密函数,公钥加密:保密、认证与签名?,M,E,Kb,EKb(Eka(M),E,Kb,提供认证 提供保密性,D,Ka,Ea(M),Eka(M),D,Ka,M,Bob,Alice,54,认证函数:消息认证码,消息认证码: 使用一个密钥生成一个固定大小的短数据块,并将该数据块加载到消息后面,称MAC(或密码校验和)MACCk(M)MAC函数类似于加密函数,但不需要可逆性。因此在数学上比加密算法被攻击的弱点要少,55,认证函数:消息认证码,MAC的基本用法:消息认证,Al
24、ice,Bob,M,|,K,CK(M),C,K,C,M,比较,提供认证,认证函数:消息认证码,MAC的基本用法:与明文有关的认证,M,|,K1,CK(M),C,K2,C,M,比较,E,K2,M,D,K1,M,Alice,Bob,提供认证 提供保密,认证函数:消息认证码,MAC的基本用法:与密文有关的认证,M,|,K1,CK1(Ek2(M),C,C,M,比较,E,K2,K1,提供认证 提供保密,M,M,D,K2,Bob,Alice,Ek2(M),认证函数:Hash函数,Hash Function 哈希函数、摘要函数 输入:任意长度的消息报文 M 输出:一个固定长度的散列码值 H(M) 是报文中所
25、有比特的函数值 单向函数 根据是否使用密钥 带秘密密钥的Hash函数:消息的散列值由只有通信双方知道的秘密密钥K来控制。此时,散列值称作MAC。 不带秘密密钥的Hash函数:消息的散列值的产生无需使用密钥。此时,散列值称作MDC。 Hash函数需满足以下条件: 输入x可以为任意长度,输出为固定长度 正向计算容易,反向计算困难 抗冲突性(无冲突性),哈希函数的基本用法(a),M,|,H(M),H,K,H,M,比较,E,K,M,D,M,Bob,Alice,提供认证 提供保密,EK(M|H(M),哈希函数的基本用法(b),M,|,K,EK(H(M),H,H,M,比较,E,D,Bob,Alice,提供
26、认证,K,哈希函数的基本用法(c),M,|,Kb,DKb(H(M),H,H,M,比较,D,E,Bob,Alice,提供认证,Kb,哈希函数的基本用法(d),M,|,K,DKb(H(M),H,H,M,比较,E,D,Bob,Alice,提供认证 提供保密,K,M,M,D,Kb,E,Kb,Ek(M|DKb(H(M),哈希函数的基本用法(e),M,|,H(M|S),|,H,M,比较,Bob,Alice,提供认证,S,S,|,H,哈希函数的基本用法(f),M,|,H(M|S),|,K,H,M,比较,E,K,M,D,M,Bob,Alice,提供认证 提供保密,EK(M|H(M|S),S,S,|,H,数字签
27、名,数字签名:Digital Signature 传统签名的基本特点 签名是可信的:能与被签的文件在物理上不可分割 签名是不可抵赖的:签名者不能否认自己的签名 签名不能被伪造:除了合法者外,其他任何人不能伪造其签名 签名是不可复制的:对一个消息的签名不能通过复制的方式变为另外一个消息的签名 签名是不可改变的:经签名的消息不能被篡改 容易被验证 数字签名是传统签名的数字化 能与所签文件“绑定” 签名者不能否认自己的签名 容易被自动验证 签名不能被伪造,数字签名,五元组(P,A,K,S,V) P是所有消息组成的有限集 A是所有可能的签名组成的有限集 K是所有可能的密钥组成的有限集 S签名算法 D验
28、证算法,数字签名,可分为两类: 直接数字签名方案(direct digital signature); 基于仲裁的数字签名方案(arbitrated digital signature) 。,直接数字签名,M,M,S,H(M),Ek(H),M,Dk(H),H,H,H,比较,Hash签名,仲裁数字签名,Alice (A),Bob (B),Trent (T),Alice (A),Bob (B),Trent (T),Alice (A),Bob (B),Trent (T),对称密码明文传送,对称密码密文传送,公钥密码密文传送,普通数字签名体制RSA EIGamal DSS/DSA 不可否认的数字签名算法 群签名算法 盲签名算法,数字签名体制,DSS签名算法我们在后续课程中讲述,数字签名体制,盲签名算法,Alice (A),Bob (B),t=mkemod n,td=(mke)dmod n,