第18章 网络安全III —身份认证和公钥基础设施 身份认证的概念 基于公钥的认证协议 公钥基础设施 PKI - X.509证书 - PKI组成及框架 - PKI系统
身份认证的概念 身份认证是网络安全的核心,其目的是防止未授权用户访问网络资源。 合法用户被给予进入系统的“钥匙”,使未授权用户被“关在门外”。但未授权用户可能窃取了别人的“钥匙”,冒充合法用户。身份认证系统就是要识别对方真实身份,防止这种情况发生。 现实生活中,人们通过面貌、声音、字迹来确认对方。许多场合用贴有照片的证件鉴别对方。还有通过指纹等生物特征来鉴别。…
身份认证的概念(续) 计算机系统一般采用三种类型的身份认证方法: 信息钥匙:最常用的是口令,只有口令与用户名匹配,系统才允许用户访问。口令的选择必须既容易记忆又难以猜测。... 物理钥匙:如磁卡,但计算机(或门上)要配有读卡机。卡可能丢失,一般可与用户的数字口令PIN (Personal Identification Number)一起使用增加安全性。 生物钥匙:如声纹、指纹、掌纹、虹膜等等。处理、存储信息量较大。但远程访问?
身份认证的概念(续) 网络环境下进行身份认证更困难,身份信息通过网络传输,真伪辨别更复杂。对网上交易、电子商务、电子金融等身份认证必不可少。 网络应用一般是用户通过客户进程访问远程服务器进程实现。网上身份认证是指用户通过客户进程与服务器进程互相证实身份,服务器进行访问控制,网上认证是计算机之间认证。 人只能记忆短口令,计算机能记忆高质量密钥、进行加/解密运算。网上计算机之间认证是采用密码学技术验证对方身份的协议。
身份认证的概念(续) 身份认证协议一般在两个通信方之间进行,一方按照协议向另一方发出认证请求,对方按照协议规定作出响应,协议执行成功后,双方应能确信对方身份。 身份认证也可以依靠双方都信任的第三方,如密钥分发中心,或证书签发权威来执行。 身份认证协议中验证身份所用密钥称为认证密钥,可以使用对称密钥,也可使用公钥。身份认证协议分为基于对称密钥和基于公钥两类。
身份认证的概念(续) 基于对称密钥的认证协议需要通信双方事先商定共享的密钥,也称共享密钥认证协议。密钥的安全分发...。 基于公钥的认证协议需要事先知道对方的公钥,公钥的分发...。 很多身份认证协议中,不仅要验证双方身份,还要建立后续通信使用的加密密钥,一般称为会话密钥(session key)。会话密钥往往在一段时间内有效。会话密钥都采用对称密钥。
客户用会话密钥加密服务器的随机数作为响应。 基于公钥的认证协议 1. c s:{c, Nc}Es 客户将自己名字和一次性随机数 Nc作为挑战,用服务器的公钥 Es 加密后发给服务器。 2. s c:{Nc, Ns, Kc,s}Ec 服务器返回客户随机数和会话密钥作为响应,还有自己的一次性随机数 Ns(挑战),都用客户的公钥加密后发给客户。 3. c s:{Ns}Kc,s 客户用会话密钥加密服务器的随机数作为响应。
公钥安全分发问题 利用公钥密码系统可以构造基本的挑战/响应认证协议,但其前提是双方必须事先知道对方的公钥。 公钥不保密,通信双方是否可以在网上交换公钥呢? 在开放的网络环境,如Internet中,如何确保A获得的B的公钥真正属于B呢?
中间人攻击 A 攻击者H的公钥 攻 击 者 H B的公钥 B H的公钥加密数据 B的公钥加密数据 攻击者对A发往B的信息的截获,另一方向类似。
公钥基础设施 PKI 公钥安全分发的一个方法是建立大家都信任的第三方,由它来参与公钥的分发。公钥基础设施 PKI (Public Key Infrastructure)就是基于这种思想。 Internet标准组织中正在制订PKI标准的工作组是 PKIX (Internet X.509 Public Key Infrastructure)。PKIX 使用X.509v3公钥证书。
X.509协议 ITU-T的X.509协议是1988年发布,1993年修订,1995年起草了第3版,即 X.509v3。 X.509基于公钥加密和数字签名,没有专门指定公钥加密算法,推荐使用RSA。数字签名要求使用散列函数,没有专门指定散列算法。
X.509证书 X.509中最重要的部分是公钥证书结构。每个用户有一个各不相同的名字。大家都信任的第三方:证书权威机构 CA (Certification Authority) 给每个用户分配一个唯一名字,生成并签发一张包含用户名和用户公钥的证书。 公钥证书放在公共目录服务器中,用户从它获取其它人的公钥。
X.509证书—结构 版本 证书序列号 签名算法标识 第1版 第2版 第3版 签发者名 有效(起、止)期 主体名 主体的公钥信息 签发者唯一标识 主体唯一标识 版本3扩展域 CA签名
X.509证书—结构(续) 版本:默认是版本1,有扩展部分必是版本3。 证书序列号:一个CA签发的每个证书有唯一整数值。 有效(起、止)期:证书的生效和失效日期。 主体名:持有此证书的用户名。
X.509证书—结构(续) 主体的公钥信息:主体的公钥、公钥算法标识、算法的相关参数。 签发者唯一标识:若签发者名已被不同的实体重用,用此可选位串唯一标识签发者CA。 主体唯一标识:若主体名已被不同实体重用(本单位有两个张三),用此可选位串唯一标识主体。 版本3扩展字段:在版本3中引入可选扩展信息。 CA签名:证书其它所有字段的散列码,用CA的私钥加密,即CA签名。
X.509证书—说明 签发者名或用户名,是指它们的X.500 格式的唯一名DN(Distinguished Name),DN通常包括C(国家, Country)、O(机构, Organization)、OU (机构部门, Organizational Units)、CN(通用名, Common Name)和 E (Email地址)。 例如:清华的 CA 给用户签发证书时,用户的唯一名DN中的C=cn,O=tsinghua。
X.509证书—说明(续) X.509v3证书的扩展字段为用户、公钥、证书管理提供附加的属性。主要的扩展字段有: 私钥用途(key usage):指明主体私钥使用目的,包括(密钥)加密, (抗抵赖)数字签名, 证书签名等。 证书类型:限制证书应用范围。 证书策略(certificate policies): 基本约束(basic constraints):是否CA证书,... 名字约束(name constraints) 策略约束(policy constraints)
X.509证书—用户证书例 版本:3 证书序列号:19 签名算法标识:md5WithRSAEncryption 签发者名:CN=TUNET Root CA, O=tsinghua.edu.cn 有效期:Not Before:Apr 17 09:44:30 2001 GMT Not After:Apr 17 09:44:30 2002 GMT 主体名:Email=zhangsan@cs.tsinghua.edu.cn,CN=Zhang San,OU=Computer Science Dep,
X.509证书—用户证书例(续) O=tsinghua.edu.cn 主体的公钥信息:… X.509v3 扩展域: 基本约束:CA:FALSE (不是CA证书) 证书类型:SSL Client,S/MIME 私钥用途:数字签名,抗抵赖,密钥加密 策略注释:TUNET User Certificate ... 18:80:b7:81:1c:ea:f0:42:0b:98:5c:13:ca:9a:d8:c5:...
PKI组成及框架 PKIX标准包括PKI的框架, 实现及管理。PKI框架: 证书和CRL发布系统 端实体 RA CA 获取证书/CRL 证书申请/撤销 PKI用户 PKI管理 发布证书 RA 发布证书/CRL CA
PKI组成及框架(续) PKI包括下列部件: 证书权威 CA (Certification Authority) 证书注册权威 RA (Registration Authority) (证书撤销列表CRL (Certificate Revocation List)) 证书及CRL发布系统 (PKI管理实体) 端实体:客户(Web浏览器,邮件系统客户等),服务器。证书主体,以及证书的使用者。
证书权威CA 在网络环境中公钥以电子证书的形式签发,由所谓的证书权威机构 CA 生成和签发。 CA 是大家都信任的第三方。 通信双方通过对CA的共同信任来建立信任关系:A和B都信任CA,因为CA信任B,于是A也信任B;同样因为CA信任A,于是B也信任A。 这是一种信任传递关系。在现实社会中,人与人的信任关系…。
A与B通过CA建立信任关系 CA B A 基于第三方的信任关系
证书权威CA—主要功能 接受 (端实体通过) RA的签发、撤销和更新证书请求。 为端实体生成密钥对,密钥托管和恢复。 用户可自己生成密钥对, 私钥自己保存, 向CA提交公钥。也可由CA生成,并保存在秘密存储库,称密钥托管(数字签名的私钥不能托管)。 签发、撤销和更新证书。 发布证书和证书撤销列表CRL。 制订证书策略。
证书权威CA(续) 证书中最主要的是主体的公钥 和CA的签名。除了CA,没有任何人能不被察觉地更改证书。 用户如何验证证书的有效性?
CA证书例 版本:3 证书序列号:0 签名算法标识:md5WithRSAEncryption 签发者名:CN=TUNET Root CA, O=tsinghua.edu.cn 有效期:Not Before:Apr 6 08:50:30 2001 GMT Not After:Apr 6 08:50:30 2003 GMT 主体名:CN=TUNET Root CA, O=tsinghua.edu.cn
CA证书例(续) 主体的公钥信息:... X.509v3扩展域: 基本约束:CA:TRUE,pathLenConstraint 私钥用途:证书签名,CRL签名 68:84:ed:bb:67:f0:e6:d9:82:6f:6a:2b:19:dc:b2:... 注意:该证书的主体和签发者是完全相同的,表明这是自签名的CA证书。从基本约束也可看出这是CA证书。
证书注册权威RA 按PKIX标准RA是代表CA执行某些功能的可选系统,其主要功能: 接受端实体的签发、撤销和更新证书请求。 负责对端实体 (证书申请者) 进行身份鉴定。 为证书主体指定名字。 向CA提交签发、撤销和更新证书请求。 发布CA签发的证书和CRL。 通知用户获取证书。
证书撤销列表CRL 证书有效期一般为1~2年,一般在老证书即将过期前签发一个新证书(更新),但有时基于以下原因,需要在证书过期前撤销证书: 用户的私钥已泄漏。 用户不再由这个CA签发证书,例如用户离职。 CA的私钥泄漏。 每个CA要保存一个所有已撤销,但尚未过期的证书表,这就是证书撤销列表CRL(Certificate Revocation List),俗称“黑名单”。
证书撤销列表CRL(续) 签名算法标识 签发者名 本次更新日期 下次更新日期 已撤销证书 用户证书序号 撤销日期 ... 已撤销证书 CA签名
证书撤销列表CRL(续) CRL的主要内容就是被提前撤销的证书序列号。 CA要对CRL进行签名以防伪造。 定期获取CRL不能保证信息新鲜性,PKIX还定义了在线查询CRL,但这要求发布系统的负载能力和性能比较高。
证书撤销列表CRL(续) CRL是PKI中最难管理的。当前CRL存在一些未解决的问题,比如: 如何确定CRL更新频度。 当证书数目较大且有效期较长时,CRL会变得很长,查询性能和存储需求会成为问题。可对证书进行分类,便于查询和管理。Delta-CRL... 证书用户需经常访问最新的CRL才能保证信息的新鲜性,这会给CRL发布系统造成沉重负担。
证书及CRL发布系统 证书及CRL的发布是让用户获得CA签发的本人或他人的证书和最新发布的CRL。 PKIX标准中推荐使用轻量级目录服务LDAP (Light-weight Directory Access Protocol)作为证书及CRL发布系统。 PKIX也允许使用WWW服务,电子邮件或文件传输来发布证书和CRL。
关于LDAP LDAP是网上的公共目录服务。它不是用来代替关系数据库或文件系统,是为了替代X.500。 LDAP的特点是优化的快速查找功能。它采用了层次式结构,而不是关系式结构来存放数据。它不具有关系式查询语言SQL。 LDAP目录是简单的树状结构,根结点是学校、公司、机构的域名,下面是机构各部门的域名,再下面是每个成员的属性和值表。 LDAP充分利用缓存(cache)原理,把最常访问的目录数据放在内存。
PKI系统 一个CA通常给一个有限的用户团体签发证书,这样的用户团体被称为安全域(security domain)。 PKI 是在网络环境中提供使用公钥系统和X.509证书的安全服务,PKI产品和服务允许使用者在网络上建立一个安全域,在该域中可以签发、管理证书和密钥。例如银行可为其客户进行银行业务建立一个安全域。 当用户多了,有多个CA可能更切合实际。 单CA系统看作一个安全域,多CA系统可以看作多个安全域。如何建立CA之间跨域信任?
多CA的跨域认证 关于多CA的跨域信任问题,提出了几种方案: 自上而下层次式(top-down hierarchy) 将CA组织成自上而下层次结构,有一个根CA。CA可以签发CA证书和用户证书,上一级CA为 下一级CA签发证书。在不同CA下的用户可以从根CA出发,通过一系列的CA证书验证对方证书的可信性,这一系列的证书称为证书路径 (certification path)。
多CA的跨域认证 交叉证明(cross-certification) 交叉证明采用交叉证书,所谓交叉证书是CA之间互相签发的证明对方身份的证书。交叉证书是由一个CA(如CA1)向另一CA(如CA2)提出请求,由后者签发的。所以这张证书的主体是CA1,证书的签发者是CA2。由于CA2信任CA1, 于是CA2安全域中的用户也将信任CA1,也将信任CA1安全域中的用户,这样CA1安全域中的用户就可以进行跨域访问。交叉证书一般是互相签发的。交叉证明灵活,但扩展性差。
交叉证明 CA1 CA2 A B C X Y Z X, Y, Z可以从CA2的发布目录服务器得到CA2给CA1签发的交叉证书,得到CA1的公钥,就可验证并信任CA1签发的 A, B, C 证书。
PKI系统结构 当前Internet上的PKI系统可以分成几类,主要结构类型有: 无政府结构(anarchy) 单CA结构 单CA多RA结构
无政府结构 A B F E D C G
无政府结构(续) 无政府结构中,每个用户都可以看作本人的CA,每个用户给自己的信任者签发证书,再通过Email或公共数据库获得他人证书,这样用户间的信任关系通过网络传播开来,从而扩大信任范围,但规模的扩大和路径的增长意味不安全因素增多。如图A信任B、B信任F、F信任G,A就信任G,这行吗?在规模扩大后搜索信任路径会比较困难。无政府结构只能在有限的群体使用。
单CA结构 CA A B C
单CA多RA结构 CA RA1 RA2 A B C D
多CA层次式结构 CA1 CA2 CA3 A CA4 CA5 B C D E F G H I
多CA层次式结构(续) 层次式结构扩大了证书的信任域范围,而且证书路径通常是唯一的,计算简单。但随着证书路径的增长安全性会受到威胁。严格的层次结构过于复杂,并不符合所有的实际应用情况。让每个需要使用证书的人都要信任一个最高层的超级证书权威是不合适的。 签发CA证书涉及的标准证书扩展字段有: 基本约束:它描述是否CA证书,若是则用 pathLenConstraint 限制证书路径长度; 名字约束:证书路径中允许和排除的名字子树。
多CA网状结构 CA 交叉证书 CA CA CA 交叉证书 CA CA CA A B C D E F G H I J K L
PKI系统结构(续) 当前Internet上使用最普遍的是网状结构,即层次式和与交叉证明相结合。两个CA互相签发CA证书,在两个CA所在安全域之间建立信任关系。这种结构灵活,在没有层次关系的独立部门可以通过交叉证书建立域间信任关系,可缩短信任路径提高安全性,但管理使用复杂。 签发交叉证书前必须审核对方的证书策略是否满足本域的安全要求,要说明两个信任域之间证书策略的对应关系。
PKI的管理 PKI系统的安全运行需要PKI的管理机制,它包括策略管理、实体管理、证书管理。 证书用户面对的是证书,他获得策略信息最直接的方式是通过证书本身的内容,这涉及证书策略。 X.509v3证书中可包含证书策略说明。