550 likes | 748 Views
第 4 讲 公钥基础设施( PKI ). 周福才 教授 博导 东北大学信息学院计算机应用所 fczhou@mail.neu.edu.cn. 1. 数字证书的引入 2.PKI 体系结构 3. 数字证书的生命周期. 2014/9/6. 1. 1. 1. 数字证书的引入. 2014/9/6. 2. 2. 安全结构. 安全传输协议 SSL/TLS, SSH …. 数字证书 &PKI. 密码学应用 对称加密、非对称加密、消息摘要、数字签名、消息认证码、密钥协商. 密码学理论. 2014/9/6. 3. 3. 挑战 - 应答.
E N D
第4讲 公钥基础设施(PKI) 周福才 教授 博导 东北大学信息学院计算机应用所 fczhou@mail.neu.edu.cn
1.数字证书的引入 • 2.PKI体系结构 • 3.数字证书的生命周期 2014/9/6 1 1
1.数字证书的引入 2014/9/6 2 2
安全结构 安全传输协议SSL/TLS, SSH … 数字证书&PKI 密码学应用 对称加密、非对称加密、消息摘要、数字签名、消息认证码、密钥协商 密码学理论 2014/9/6 3 3
挑战-应答 • 客户向认证服务器发出请求,要求进行身份认证 • 认证服务器从用户数据库中查询用户是否是合法的用户,若不是,则不做进一步处理 • 认证服务器内部产生一个随机数,作为“提问”,发送给客户 • 客户将用户名字和随机数合并,使用单向Hash函数(例如MD5算法)生成一个字节串作为应答 • 认证服务器将应答串与自己的计算结果比较,若二者相同,则通过一次认证;否则,认证失败 • CRP(Challenge-Response Protocol)可以使用对称密钥或非对称密钥 • 对称密码:验证者和示证者共享一个秘密(share asecret key) • 公钥密码体制:秘密值为示证者的私钥(private key)
Alice 公钥 挑战-应答 Alice Bob Request Enc(c) Hash(Alice,c)
挑战-应答 需要解决的问题 • 在基于非对称密钥的CRP中,验证者需要用示证者的公钥对挑战值加密 • 验证者如何确定:这个公钥与示证者的身份是对应的? • 在SSL中也有同样的问题 • SSL客户端如何能确定数字证书中的公钥与服务器是关联的?
数字证书 • 通过由可信认证机构签发的数字证书,验证者可以确定证书中包含的公钥是属于该用户的。证书需要有合适的有效期限 证书主体身份信息 将身份与公钥绑定在一起,这个身份可以是一个用户或组织的名称、也可以是其它信息如地址、年龄等 证书主体公钥 CA身份信息 CA私钥签名 颁发者的数字签名
X.509证书格式 • 版本: 一般为V1,V2和V3,目前常用V3。 • 序列号:是由CA分配给证书的唯一的数字型标识符。 • 签名算法标识:对证书进行签名的算法和算法所需的参数。 • 颁发者:为PCA的名称。 • 有效期:定义证书有效的起始日期和结束日期。 • 证书主体:为证书持有者的唯一识别名称(DN)。 • 证书主体的公开密钥:信息包括算法名称、需要的参数和公开密钥。 • 颁发者唯一标识:可选项不推荐使用。防止颁发者的名字出现重用。 • 主体唯一标识:可选项不推荐使用。防止主体的名字出现重用。 • 扩展项:用于其它扩展内容。 • 签名:对整个证书的散列值的签名。任何一方都能认证证书是否有效(必须知道CA的公钥)。
CA签发的数字证书 • 一个数字证书:包含数字签名证书的发证机关;任何人都可以验证数字证书的真实性。 • 任何人都可以验证了示证者的证书真假,CA的公钥必须是尽人皆知的。 • 由CA签发的数字证书含有示证者的公钥。
自签名证书 • 自签名证书包括: • 证书所有者的公钥、信息和签名 • 使用非对称密钥,上面所说的秘密值就是证明者的私钥 • 什么时候、如何使用自签名证书? • 视安全需求而定 • 如果需要完成重要软件的组件之间最高级别的认证,则不能使用自签名证书 • 在创建与安装由认证机构签名并颁发的证书之前,自签名证书可以用来测试SSL的设备配置。
如何生成、储存、颁发、使用、撤销公钥和数字证书?如何生成、储存、颁发、使用、撤销公钥和数字证书? 公钥基础设施(PKI)
PKI动机 • 公钥技术 • 如何提供数字签名功能 • 如何实现不可否认服务 • 公钥和身份如何建立联系 • 为什么要相信这是某个人的公钥 • 公钥如何管理 • 方案:引入证书(certificate) • 通过证书把公钥和身份关联起来
2.PKI体系结构 2014/9/6 14 14
PKI(Public Key Infrastructure) • 定义 • 用公钥原理和技术实施和提供安全服务的具有普适性的安全基础设施 • 一个完整的PKI应该包括 • 认证机构(CA) • 证书库 • 证书注销 • 密钥备份和恢复 • 自动密钥更新 • 密钥历史档案 • 交叉认证 • 支持不可否认 • 时间戳 • 客户端软件
PKI的关键点: • 性能:尽量少用公钥加解密操作,在实用中,往往结合对称密码技术,避免对大量数据作加解密操作;除非需要数据来源认证才使用签名技术,否则就使用MAC或者HMAC实现数据完整性检验 • 在线/离线模型 • 签名的验证可以在离线情况下完成(off line) • 用公钥实现保密性也可以在离线情况下完成(off line) • 离线模式的问题:无法获得最新的证书注销信息 • 证书中所支持算法的通用性 • 在提供实际的服务之前,必须协商到一致的算法 • 个体命名:如何命名一个安全个体,取决于CA的命名登记管理工作
PKI主要组成 CA 认证机构(CA):证书颁发者 签名者:该证书主体的身份(或其它信息)与公钥绑定 证书颁发 证书是否有效? 验证者 证书申请者 证书交互 验证者:出于认证目的使用证书的一方 签名者与验证者都称作终端实体
PKI主要组成(细化) PKI用户 证书下载与查询 证书申请者 验证者 用户注册 证书&CRL 数据库 认证机构 RA 发布证书 发布证书及CRL CA 证书认证业务声明/证书政策协议(CPS/CPA) 发布CRL CRL发布者 CA之间交互 证书撤销列表 CA PKI管理实体
认证机构(CA) • 认证: • 将一个身份信息与一个公钥绑定的行为 • 例如:颁发证书 • 认证机构:负责认证的实体 • CA运行按照证书认证业务声明(CPS) • CPS描述了CA的操作规程 • 证书按照证书政策协议(CPA)颁发给终端实体 • CPA描述了在该政策下证书的颁发和使用规则
证书数据库 只通过CA对证书进行发布是不够的,验证者需要比 较容易地找到对应于不同签名者的公钥 • 需要证书数据库(CR) • CR可以由以下几种方式实现: • 轻量级目录管理协议( LDAP ) • Web服务器 • DNS • 共用数据库
证书撤销以及CRL数据库 • 验证者通过证书撤销机制可以得知一个证书是否被作废 • 证书撤销与证书过期 • 证书过期是指过了有效期后证书自动失效(如驾照的有效期) • 证书撤销是某事件发生,使得公钥与主体身份之间的绑定关系失效,如: • 主体身份发生改变(如女人婚后姓氏发生改变) • 私钥泄露 • 非法用户(如司机违章,驾照被吊销) • 撤销证书由CRL发布者发布到CRL数据库中
证书的注销机制 • 由于各种原因,证书需要被注销 • 比如,私钥泄漏、密钥更换、用户变化 • PKI中注销的方法 • CA维护一个CRL(Certificate Revocation List) • 基于Web的CRL服务 • 检查CRL的URL应该内嵌在用户的证书中 • 可以提供安全途径(SSL)访问URL • 返回注销状态信息 • 其他的用法由浏览器决定
3.数字证书的生命周期 2014/9/6 24 24
公钥证书生命周期 密钥/证书 生成 密钥/证书 使用 密钥/证书 失效
密钥/证书生成过程 • 初始化过程 主要包括: • 证书主体注册 • 密钥生成 • 证书生成与密钥/证书发布 • 证书传播 • 密钥备份(如果需要的话)
证书主体注册 • 一个独立用户或进程的身份被建立并验证 • 对于该过程控制的强度取决于CPS/CP: • 证书认证业务声明(CPS)描述CA的操作规程 • 证书政策(CP)指定了如何应用某公私钥对(数字签名、数据加密、网站一致性验证等)。该信息应由CA发布。
证书主体注册 主体 (终端实体) 注册机构 (RA) 认证机构 (CA) 1.注册请求 4.注册建立请求 2.注册回复 3.注册提交 5.注册建立结果 6.注册结果 7.证书请求 8.证书回复
密钥生成 • 密钥对可以在不同的地点产生: • 终端实体(如用户的PC主机) • RA • CA • 可信的第三方密钥生成设备 • 需要考虑的因素: • 性能(例如在移动电话中产生密钥) • 确定性 • 密钥用途(例如机密性、不可否认性)
密钥生成 • 密钥用途(例如机密性、不可否认性) • 下面的原则是对于不同的用途使用不同的密钥 • 用于数字签名(相应的证书成为验证证书) • 用于数据加密(相应的证书成为加密证书) • 密钥用途对于密钥产生地点有影响 • 如果密钥用于实现不可否认性,则应由终端实体产生,私钥只能该实体拥有 • 作为PKI系统中最可信的实体CA,也可以知道私钥,对于这一点有争议。
密钥生成 • Java环境:KeyTool • 用于创建、储存、管理密钥 • 功能: • 生成公私钥对 • 将X.509中V1、V2、V3版本的证书作为文件储存,并能够输入、输出 • 生成自签名证书 • 发布证书(PKCS#10)请求给CA • 输入证书恢复(从CA得到) • 将公钥证书标记为可信
证书生成 • 证书生成: • 由CA生成 • 如果公钥是由终端实体而不是CA产生,则该公钥应通过安全方式传给CA • 最终实体得到证书
认证机构 发布证书及CRL 证书 证书申请 证书 公钥 公钥 公钥 公钥 私钥 一般的证书产生流程 证书资料库 状态查询 注册机构RA
密钥/证书发布 • 公钥和证书的交付 • 直接交给证书拥有者(主体) • 交给远程数据库(证书和CRL数据库) • 以上两种都交付 • 向CA请求并接收证书的过程需要安全的协议 • RFC2510互联网X.509公钥基础设施证书管理协议(CMP) • RFC2511互联网X.509证书请求管理格式(CRMF)
证书传播 • 如何让验证者得到证书 • 面对面,手递手,物理上隐秘交付 • 将证书发送到公开的数据库中 • 要求具有在线恢复功能 • 在某个域内按协议分发(如安全的电子邮件)
公钥证书生命周期 密钥/证书 生成 密钥/证书 使用 密钥/证书 失效
密钥/证书的使用 • 证书恢复(从证书数据库中) • 需要验证者的请求 • 证书验证(需要验证者请求) • 验证证书完整性(如验证颁发者数字签名,需要相应CA的公钥) • 证书是否过期 • 证书是否被撤销 • 密钥恢复 • 对于终端实体忘记私钥的情况,便于恢复 • 密钥更新 • 当证书邻近有效期时,发布新的密钥对
认证路径 • 开始的时候,签名者掌握的CA公钥数量是有限的 • 如果用户得到某CA颁发的证书,而该CA的公钥用户不掌握,则还需要额外的证书来得到该公钥 • 这样就需要一个证书链,包括一个CA给用户颁发的证书,可能还有多个CA的证书,这些证书是由其他的CA颁发的(认证路径)
PKI信任模型 • 需要解决的问题: • 哪些实体的证书可以被信任? • 这样的信任如何被建立? • 在给定的环境下,这种信任能够被限制和控制的情况有哪些?
PKI信任模型 • 几种信任模型: • CA层次结构 • 基于政策的CA层次 • 分布式信任结构 • 四角模型 • 网状模型 • 当第一个实体作出假定:第二个实体总是按照它所期望的方式运作,则说第一个实体信任第二个实体
CA层次结构 自签名证书 顶级CA 认证机构 终端实体 认证
CA层次结构 • 顶级CA(TLCA)—也被称作根CA • TLCA颁发一个自签名证书,作为该层次结构中每个实体的信任基础 • TLCA认证下属每个CA • 以此类推,每个CA都认证各自下属的CA • 从第二层到最后一层的CA可以认证终端实体 • 结构中每个实体都必须拥有TLCA的公钥 • 在该模型中,TLCA的公钥是日后实体认证、证书处理的基础
CA层次结构 • 如果两个用户同属一个CA,则认为它们都拥有该CA的公钥 • 各个CA必须呈层次结构 • 结构中链接的每一方都能验证所有CA • 每个CA都有上层和下层实体的证书 • 每个实体都信任上层实体的证书 • 这种结构使得用户能够认证该结构中任何CA颁发的任何证书
自签名证书 • 自签名证书包括: • 公钥、证书拥有者的信息和拥有者的签名 • 有一个私钥,但不用来通过第三方CA验证该证书的来源
公钥证书生命周期 密钥/证书 生成 密钥/证书 使用 密钥/证书 失效
密钥/证书失效 • 证书过期—CA可以进行如下三种操作: • 无操作,该终端实体不再在该PKI中注册 • 证书延期,原来的公钥被放到一个新的证书中,拥有新的有效期 • 证书更新,生成新的密钥对并颁发新的证书 • 证书撤销 • 一个已颁发的证书未过期,却不能再使用 • 怀疑私钥泄露 • 原来终端实体状态变化
证书撤销 • 由谁、如何管理证书撤销(Who、How)? • WHO: • CA负责发布撤销信息 • 验证者必须确定证书未被撤销 • CA可以通过证书撤销列表(CRL)发布撤销信息 • 在线查询机制:在线证书状态查询(OCSP)
PKI有关的标准 • Certificates —— X.509 v.3 • 交叉认证 —— PKIX group in IETF(RFC 2459) • 智能卡/硬件插件 PKCS #11 • PKCS系列 • 目录服务LDAP • 安全套接层SSL协议 • SET协议 • 其他:IPSec、S/MIME、时间戳、XML
PKCS(公钥密码系统标准)系列标准 • PKCS #1 • RSA Encryption Standard • PKCS #3 • Diffie-Hellman Key-Agreement Standard • PKCS # 5 • Password-Based Encryption Standard • PKCS #6 • Extended-Certificate Syntax Standard • PKCS #7 • Cryptographic Message Syntax Standard • PKCS #8 • Private-Key Information Syntax Standard