PKI/CA与数字证书概述_panamera12的博客-程序员宝宝

参考《PKI/CA与数字证书技术大全》,里面介绍的比较系统全面。

1. PKI

所有与数字证书相关的各种概念和技术,统称为PKI( Public Key Infrastructure 公钥基础设施)。

PKI通过引入CA,数字证书,LDAP,CRL,OCSP等技术并制定相应标准,有效地解决了公钥与用户映射关系,集中服务性能瓶颈,脱机状态查询等问题。同时为促进并提高证书应用的规范性,还制定了很多与证书应用相关的各种标准。

所以以下我们提到的CA,数字证书,OCSP等名词都是在PKI下的,即PKI里面包含了这些东西。那么这些名词每个都是为了解决某个问题而产生的,所以当我们了解后看到这些名词的时候,就能反应出它们是什么意思,是要解决什么问题的。

1.1 PKI体系框架

这里写图片描述

PKI体系框架主要包含三个内容:

这里写图片描述

1.1.1 数字证书与私钥

关于数字证书

用户或系统只有拥有自己的公钥和私钥后,才能实现数字签名和加密解密功能,由于公钥是随机产生的,因此从公钥无法直接判断属于哪个用户。

为解决公钥与用户映射关系问题,PKI引入了数字证书。数字证书里包含了用户身份信息,用户公钥信息(两者用于确定用户)和CA的私钥数字签名(使用CA的公钥可判断证书是否被篡改)

私钥一般被保存在硬件密码设备中(像U盾之类的)。

1.1.2 数字证书的管理

关于CA

为了解决数字证书的签发问题,PKI引入了CA(Certificate Authority), 对数字证书进行集中签发。
它实际是一种特殊的公钥管理中心,对数字证书的全生命周期进行管理,包括:数字证书的签发和更新,数字证书的作废,冻结和解冻,查询或下载,状态查询等。
像广州CA,深圳CA就属于这类,可去他们的官网上进行相关了解。

关于KMC

为解决私钥的备份与恢复问题,PKI引入了KMC(Key Management Center)。
用户公私钥对由KMC产生,KMC对私钥做备份;公私钥也可由用户自己产生,并将私钥安全提交给KMC做备份。

关于双证书

为防止用户身份被冒用,应保证用户私钥的唯一性,不允许备份恢复;为防止公钥加密后的数据无法解密,应提供用户私钥的备份恢复机制

为解决这两种矛盾需求,PKI引入了双证书机制:签名证书和加密证书。
签名证书的公私钥对由用户自己产生,KMC不备份私钥;加密证书密钥对由KMC产生,且KMC对加密私钥进行备份。

关于LDAP

为解决对CA证书的查询或下载的性能问题,PKI引入 LDAP(Light-weight Directory Access Protocol 轻量目录访问协议)技术。

DAP(Directory Access Protocol 目录访问协议)是对数据管理的读取功能进行特殊优化的技术,适合快速响应和大容量的查询服务,应用系统只需通过X.500协议就能对数据进行快速查询。但由于该协议过于复杂,国际组织对其进行简化,形成了LDAP标准。

关于CRL和OCSP

为解决对CA证书有效性方面的查询,PKI引入了CRL(Certificate Revocation List)和OCSP(Online Certificate Status Protocol) 技术。前者需要用户按时定期下载,可用于脱机使用;后者则可实时在线查询。

关于RA

为对用户提供 面对面 的证书业务服务,负责用户证书办理/作废申请,用户身份审核,制作证书并移交用户等功能。PKI引入了RA(Registry Authority)

关于电子认证服务机构

为保证CA系统在数字证书管理方面的规范性、合规性和安全性,PKI引入了电子认证服务机构,以第三方运营的方式对外提供数字证书相关服务。

这里写图片描述

1.1.3 数字证书的应用

基于数字证书可实现四种基本安全功能:身份认证,保密性,完整性和抗抵赖性。

身份认证

如网络身份证。

保密性

如不泄露信用卡信息。

完整性

如已签订的合同不会被某一方私自修改。

抗抵赖性

如发生交易纠纷时,可通过验证对方的私钥签名来确认。

1.2 PKI信任模型

首先了解一下几个概念:

  1. 信任:在ITU X.509规范中,“信任”定义为“当实体A认为实体B的行为与A所预期的完全一致时,则称实体A信任实体B”。

  2. 用户信任CA中心是指,用户相信该CA中心的所有数字证书管理行为均符合政策法规,运营规范和信息安全等要求。

  3. 用户信任数字证书是指,用户相信该数字证书持有人的身份是真是有效地,并不等于用户信任该数字证书的持有人。

  4. 从信任CA中心到信任其签发的用户数字证书,这种信任传递关系的前提是,该用户数字证书必须通过以下四个方面的合法性验证:
    4.1 验证该数字证书是否伪造。使用CA证书中公钥即可脱机验证。
    4.2 验证该数字证书中信息是否正确。由CA中心在签发数字证书时已保证。
    4.3 验证该数字证书是否与持证人一致。可要求持证人使用私钥对特定数据进行加密或签名,然后使用数字证书中的公钥来解密或验签。
    4.4 验证该数字证书是否在黑名单上。通过CRL或OCSP实现。

  5. 信任锚:CA中心是信任的产生来源或信任起点。

  6. 认证路径:一条从信任锚到数字证书之间构建的信任关系传递路径,也叫证书路径或信任链。

1.2.1 根CA信任模型

最上级CA中心只有一个,成为根CA,其它CA称为子CA。根CA的数字证书由自己签发,属于自签名证书,子CA的数字证书由上级CA证书签发。信任锚可以是根CA,也可以是子CA。

以下图为例:用户X可信任用户A证书,信任链为根CA——子CA1——用户A证书。

这里写图片描述

1.2.2 交叉认证信任模型

根CA之间可以互相签发交叉认证证书。

以下图为例,用户Y就可以信任用户J证书。信任链为根CA2——根CA2(1)——根CA1——子CA12——用户J证书

这里写图片描述

1.2.3 桥CA信任模型

在这里引入独立的桥CA中心,等同于虚拟的根CA。所有根CA与桥CA之间互相签发交叉认证证书。与交叉认证信任模型类似。

这里写图片描述

1.2.4 信任列表信任模型

使用户可以有多个信任锚。

这里写图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wteruiycbqqvwt/article/details/102468291

智能推荐

nopCommerce_4.40.3 功能实现详解---- 第11章 轮子与开源_zhoujian_911的博客-程序员宝宝

在程序开发发展的初期,按照2/8法则,主导程序开发的属性是其科学属性,一个天才型的人物决定了整个行业的规则和发展进程序,其中最有名的就有图灵。当今一个实用性的程序,虽然有大量的新思想、新科学和新技术会被反映和集成在程序中,但是按照2/8法则,当今决定实用性程序,主导程序开发的属性是其工程属性,其间虽然依然有天才型的人物在程序开发中作出了改变,但是工程属性是实用性程序的决定属性这一条再也没有受到挑战。 实用性程序作为一个特殊工业工程产品,它即具有其特殊性,也有工程产品的共性。下面将会工程这个决定着程...

Progressive Reconstruction of Visual Structure for Image Inpainting之环境搭建——简记——【ICCV 2019】_墨理学AI的博客-程序员宝宝

2019 Progressive Reconstruction of Visual Structure for Image InpaintinggitHub官方代码-pytorch题外话:以下三篇论文,均出自于:武汉大学 Sigma ( Sensing IntelliGence and MAchine learning group) —— 智能感知与机器学习组;2019–Progressive Reconstruction of Visual Structure for Image Inpai.

JS中DOM0级和DOM2级以及IE的区别_宇宙超级美少女的博客-程序员宝宝

DOM0级和DOM2级在绑定事件上的区别一、dom0级1、绑定方式(用html的方式绑定)使用html属性的方式绑定,如果要调用这个函数,这个函数在js中就要处于全局作用域function queren(data) { alert(data.value)}(用匿名函数的方式绑定)var btn1=documen

linux缓存详解,Linux磁盘缓存机制详解_weixin_39774490的博客-程序员宝宝

磁盘缓存出现的原因大概有两个:一是访问磁盘的速度远慢于访问内存的速度,通过在内存中缓存磁盘内容可以提高访问速度;二是根据程序的局部性原理,数据一旦被访问过,就很有可能在短时间内再次被访问,所以在内存中缓存磁盘内容可以提高程序运行速度。简而言之,Linux磁盘缓存机制是为提高系统对磁盘中资源的访问速度。接下来我们先来详细讲解一下Linux磁盘缓存机制的两大原因:1.局部性原理程序局部性原理:程序在执...

java 1.8 ubuntu_ubuntu 安装java1.8_weixin_39703468的博客-程序员宝宝

1.进入官网下载页面http://www.oracle.com/technetwork/java/javase/downloads/index.html2.选择需要的版本,进入下载页面 下载 jdk-8u221-linux-x64.tar.gz3.下载完成解压本人安装目录是/opt/jvm下,需要cd /opt进入opt目录创建jvm文件夹,命令sudo mkdir jvm为了后续方便,将jvm目...

直播页面5:项目中的直播播放器框架GSYVideoPlayer__yao_的博客-程序员宝宝_gsyvideoplayer

代码】直播页面5:项目中的直播播放器框架GSYVideoPlayer。

随便推点

5.1.9 NoSQL数据库-Redis(键值key-value)-Redis持久化_敲代码的乔帮主的博客-程序员宝宝

目录1.写在前面2.RDB(Redis DataBase)2.1 关于RDB2.2 RDB工作原理2.3 触发机制2.3.1save命令2.3.2 触发持久化规则2.3.3bgsave2.4 RDB的优缺点3.AOF(Append Only File)3.1什么是AOF3.2 aof文件错位3.3 AOF文件重写规则3.3AOF的优点& 缺点4.RDB和AOP选择4.1 RDB 和 AOF 对比4.2如何选择使用哪种持久化方式?...

kotln的泛型问题_WheatHusks的博客-程序员宝宝

下面一段代码,Java 中不会报错,Kotlin 中却报错,请问如何解决?就是我不想关心父类有哪些泛型参数,在Java中直接继承就好了,在Kotlin中怎么做呢?JavaKotlin错误内容:One type argument expected for class BaseActivity<P : BasePresenter<,>> defined in k...

寻找第K大的数的方法总结_susandebug的博客-程序员宝宝_找出第k大的数

寻找第K大的数的方法总结     今天看算法分析是,看到一个这样的问题,就是在一堆数据中查找到第k个大的值。    名称是:设计一组N个数,确定其中第k个最大值,这是一个选择问题,当然,解决这个问题的方法很多,本人在网上搜索了一番,查找到以下的方式,决定很好,推荐给大家。     所谓“第(前)k大数问题”指的是在长度为n(n>=k)的乱序数组中S找出从大到小顺序的第(前)k个数的问题

UVa 10025 The ? 1 ? 2 ? ... ? n = k problem_Blaze Jack的博客-程序员宝宝

题意:给定一个数k,为了使这个? 1 ? 2 ? ... ? n = k式子成立,必须把问号换成+或者-。思路:先累加,累加到sum至少要超过k,然后用sum减去k,如果得到的结果是偶数的话,那么就是成功找到。解释一下原因:你把式子中的某个co数前面的符号变成减号的话,那么变化之后的sum比原来少了2*co,因为sum不仅少加了co,而且还被减去了co,所以sum-k一定是偶数。只要一

推荐文章

热门文章

相关标签