Network and Information Security 第7章 PKI技术 第7章 PKI技术 在网络通信中,需要确定通信双方的身份,这就需要身份认证技术。在信息安全的众多解决方案中,一般都要用到非对称密码技术,也就是说要用到公/私钥对。在双方甚至多方的通信过程中,通信的一方要使用其他通信方的公钥。关键的问题是如何确定通信方公钥的真实性,也就是说,如何将公钥与一个实体绑定在一起?这就需要公钥基础设施PKI。PKI通过一个可信的第三方对实体进行身份认证,并向其签发证书,将该实体与一个公钥绑定在一起。 Network and Information Security
Network and Information Security 第7章 PKI技术 7.1 PKI概述 7.1.1 公钥密码系统的问题 李四用张三的公钥验证张三的数字签名时,有一个关键 问题必须要解决。李四怎样得到张三的公钥?李四又怎样 才能确定这个公钥的确是张三的,而不是王五冒充的呢? 我们需要一个可信任的第三方,它负责验证所有人的身 份,包括某些计算机设备的身份。它一定要信誉良好,它 验证过的人和设备,我们就可以相信。这个第三方现在称 为CA(Certificate Authority),CA首先认真检查所有人 的身份,然后给他们颁发证书,当然这是数字证书。证书 包括持有人的信息和他的公钥,还可以有其他更复杂的信 息。关键的一点是证书不可被篡改,这由数字签名技术来 保证。 Network and Information Security
Network and Information Security 第7章 PKI技术 7.1.2 PKI的概念、目的、实体构成和服务 PKI是利用公钥密码技术提供一套安全基础 平台的技术和规范。从定义可以看出,PKI的 目的是给用户提供安全服务的。 Network and Information Security
Network and Information Security 第7章 PKI技术 7.2 证书权威(CA) 数字证书实质上是一段数据,就是把用户 的身份与之所持有的公钥结合。在结合之前, 由一个可信任的认证机构——证书权威(CA) 来证实用户的身份。然后由可信任的CA对该 用户身份及对应公钥相结合的证书进行数字 签名,用来证明证书的有效性。 Network and Information Security
Network and Information Security 第7章 PKI技术 7.2.1 CA的功能和组成 (1) 接收最终用户数字证书的申请。 (2) 确定是否接受最终用户数字证书的申请——证书的审批。 (3) 向申请者颁发或者拒绝颁发数字证书——证书的发放。 (4) 接收、处理最终用户的数字证书更新请求——证书的更新。 (5) 接收最终用户数字证书的查询、撤销。 (6) 产生和发布证书撤销列表(CRL)。 (7) 数字证书的归档。 (8) 密钥归档。 (9) 历史数据归档。 Network and Information Security
Network and Information Security 第7章 PKI技术 CA构成图 目录服务器 CA服务器 管理控制台 加密机 Web服务器 Internet Network and Information Security
Network and Information Security 第7章 PKI技术 7.2.2 CA对用户证书的管理 一般地,用户公/私钥对有两大类用途: 1.用于数字签名:用户用私钥对消息进行数字签名,而消息的接收者使用用户的公钥对消息的数字签名进行验证。 2.用于加密信息:消息发送者使用接收者的公钥加密机密数据,接收者使用私钥解密数据。 签名私钥绝对不能在CA做备份和存档。为了防止私钥丢失时无法解密数据,解密私钥应该在CA进行备份和存档, Network and Information Security
Network and Information Security 第7章 PKI技术 现在,一般利用浏览器申请证书,用户利用浏览器申请证书的具体过程为: 1.访问CA的网站,打开一个Web页面。 2.填写信息时重要的一项是选择密钥生成方式。用户可以选择密钥托管或不托管。 3.RA检查申请信息并且开始验证用户提供的身份信息。 4.当CA接收到RA的申请时,它根据证书操作管理规范定义的颁发规则制作证书。 5.生成的证书返还给用户。 6.如果用户自己生成密钥对,他还需将返回的证书和先前生成的私钥对应起来。这需要运行一个程序将证书和私钥建立起关联。 Network and Information Security
Network and Information Security 第7章 PKI技术 用户提出证书撤销的一般原因如下: 1.密钥泄密:证书对应的私钥泄密。 2.从属变更:某些关于证书的信息变更,如机构从属变更等。 3.终止使用:该密钥对已不再用于原用途。 CA根据与证书持有人的协议,可由于以下原因主动撤销证书: 1.知道或者有理由怀疑证书持有人私钥已经被破坏,或者证书细节不真实、不可信。 2.证书持有者没有履行其职责。 3.证书持有者死亡、违反电子交易规则或者已经被判定犯罪。 4.CA本身原因:由于CA系统私钥泄密。 Network and Information Security
Network and Information Security 第7章 PKI技术 7.2.3 密码硬件简介 密码硬件可以分为三类: 一是智能卡、USB Key等小型设备; 二是加密卡等中型设备; 三是加密机等大型设备 共同特点: 1.防篡改,如果丢失或被盗,恶意攻击者无法读出里面的敏感信息,如密钥;2.在正常使用过程中,里面存储的密钥等机密信息不被读出,操作时需将数据输入硬件设备,硬件设备加密或签名后再输出。保证了机密信息的安全。 Network and Information Security
Network and Information Security 第7章 PKI技术 7.3 数字证书和CRL 数字证书类似于现实生活中的个人身份证。身份证将个人的身份信息(姓名、出生年月日、地址和其他信息)同个人的可识别特征(照片或者指纹)绑定在一起。个人身份证是由国家权威机关(公安部)签发的。因此身份证可以用来验证持有者的合法身份信息。 同样公钥证书是将证书持有者的身份信息和其所拥有的公钥进行绑定的文件。证书文件还包含签发该证书的权威机构认证中心CA对该证书的签名。 Network and Information Security
Network and Information Security 第7章 PKI技术 7.3.1 ASN.1概述 ASN.1(Abstract Syntax Notation One)一种证书描述语言,由ITU的X.208标准定义。理解ASN.1 对于理解PKCS等密码标准起着至关重要的作用。它主要讨论如何将高层协议安排好的数据以二进制形式写到磁盘上,或者送到网络上。其主要目的是描述一种数据结构,而这种数据结构是高度抽象的,与任何软件、硬件都没有关系;然后再用某种编码方法将其编为二进制串。 Network and Information Security
Network and Information Security 第7章 PKI技术 7.3.2 X.509证书 X.509证书基本结构 Certificate ::= SEQUENCE { tbsCertificate TBSCertificate, signatureAlgorithm AlgorithmIdentifier, signature BIT STRING } TBSCertificate ::= SEQUENCE { version [0] Version DEFAULT v1(0), serialNumber CertificateSerialNumber, signature AlgorithmIdentifier, issuer Name, validity Validity, subject Name, subjectPublicKeyInfo SubjectPublicKeyInfo, issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, extensions [3] Extensions OPTIONAL Version ::= INTEGER { v1(0), v2(1), v3(2) } Network and Information Security
Network and Information Security 第7章 PKI技术 CertificateSerialNumber ::= INTEGER Validity ::= SEQUENCE { notBefore Time, notAfter Time } Time ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime } UniqueIdentifier ::= BIT STRING SubjectPublicKeyInfo ::= SEQUENCE { algorithm AlgorithmIdentifier, subjectPublicKey BIT STRING } Extensions ::= SEQUENCE OF Extension Extension ::= SEQUENCE { extnID OBJECT IDENTIFIER, critical BOOLEAN DEFAULT FALSE, extnValue OCTET STRING } Network and Information Security
Network and Information Security 第7章 PKI技术 查看Windows中的证书 Network and Information Security
Network and Information Security 第7章 PKI技术 7.3.3 证书撤销列表与在线证书状态协议 证书撤销列表 证书撤销列表CRL是Certificate Revocation List的缩写,意为证书撤销列表。这是所有已被撤销证书的名单。CRL由发布CRL的CA进行签名,以保证列表不能被修改。CRL通常与证书同时公布在一个目录中。证书用户在验证证书时从目录中下载CRL,并查询列表寻找被验证的证书序列号。CRL中只包含未出有效期而被撤销的证书,那些已超出有效期而自动失效的证书不会出现在CRL中。 Network and Information Security
Network and Information Security 第7章 PKI技术 在线证书状态协议(OCSP) 下载CRL来验证证书是否已经撤销。这种方案有两个缺点,一是CRL不是实时的,二是CRL较大。 CRL是几乎二十年前的概念,那时互联网还不普及,很少用户能做到随时在线,只能靠本机中存储的CRL来验证证书。 现在互联网已经普及,每个人都能做到随时在线。我们能通过互联网实时地向CA查询某个证书的状态,这就是在线证书状态协议(Online Certificate Status Protocol,OCSP)。 1999年发布的RFC 2560定义了OCSP。用户向CA的OCSP服务器发送一个OCSP请求,指明要验证的证书,OCSP服务器则回复一个OCSP响应,指出该证书的状态。 Network and Information Security
Network and Information Security 第7章 PKI技术 7.3.4 密码操作开发工具 编制程序进行证书及其他密码操作是非常复杂的。以制作证书为例,得到用户相关数据后,先需要调用DER编码器编码,然后对编码后的证书签名。签名过程同样复杂,首先要确定签名算法,再获得CA私钥,运行签名程序。 目前,密码函数接口有好几种,相互之间并不兼容。现在主流的密码函数接口有PKCS#11、MSCSP、JCE等。 Network and Information Security
Network and Information Security 第7章 PKI技术 7.4 信任模型 7.4.1 证书验证方法 证书验证是确定证书在某一时刻是否有效以及确认它能否符合用户意图的过程。它包括以下内容: 1.证书是否包含一个有效的数字签名。 2.颁发者(CA)的公开密钥是否有效,是否可以用来验证证书上的数字签名。 3.当前使用证书的时间是否在证书的有效期内。 4.证书(或其对应的密钥)是否用于最初签发它的目的。 5.检查证书撤销列表CRL或利用OCSP协议,验证证书是否被撤销。 Network and Information Security
Network and Information Security 第7章 PKI技术 7.4.2 信任模型 层次模型 根CA 子CA 终端用户 Network and Information Security
Network and Information Security 第7章 PKI技术 对等模型 CA1 CA2 李四 张三 Network and Information Security
Network and Information Security 第7章 PKI技术 网状模型 李四(他只信任CA4)如何验证张三的证书?可以构造一条验证路径:CA4->CA1->CA2->CA3->张三。张三(他只信任CA3)可利用如下路径来验证李四的证书:CA3->CA6->CA5->CA4->李四。 CA1 CA4 CA2 CA5 CA3 CA6 张三 李四 Network and Information Security
Network and Information Security 第7章 PKI技术 混合模型 根CA1 子CA 终端用户 根CA2 Network and Information Security
Network and Information Security 第7章 PKI技术 7.5 软件防篡改 从网上下载可执行的软件后,由于可执行的软件可以在用户的计算机上做任何事情,用户如何相信它是无害的呢?首先要看它的生产商,大公司的软件可以信赖。可是如果黑客用自己的软件冒充大公司的软件,或者篡改大公司的软件,企图危害用户时怎么办?软件生产商对软件数字签名可以解决这个问题。 Network and Information Security