公钥机制面临的问题-假冒身份发布公钥

采用公钥机制进行加密传输面临的一个问题是公钥的发布。任何一个用户都可以通过网络向所有人发布伪造的公钥,如果某个用户假冒真正用户的名义发布一个公钥,在该假冒者被揭穿以前,他可以解读所有发向真正用户的加密消息,还可以通过签名冒充真正用户的身份。

用户A假冒用户B的身份发布一个公钥

其他用户使用假冒的公钥与用户B通信,信息内容被用户A窃取

数字证书-验证公钥所属的用户身份

在日常生活中,如果我们要验证一个人的身份,通常的做法是查看他的身份证。我们信任身份证颁发机构即政府机构的公信力,因此只要验证一个人的身份证不是伪造的,我们就相信这个人的身份和身份证上所描述的是一致的。

数字证书就是一个人或者组织在网络世界中的身份证,其发证机关是证书管理机构(certificate authority,CA)。CA用自己的私钥对用户的身份信息(主要是用户名和该用户的公钥)进行签名,该签名和用户的身份信息一起就形成了证书。

使用用户身份信息生成数字签名

用户身份信息和数字签名一起组成数字证书

备注:除用户信息外,数字证书中还包括证书机构名称,证书有效期,证书的序列号,签名使用的哈希算法,公钥使用的加密算法等相关信息,参见rfc标准:RFC 2459 Internet X.509 Public Key Infrastructure

用户A把自己的证书发送给用户B。用户B使用CA的公钥对证书的签名进行验证,由于只有CA才能生成该证书,因此只要证书验证正确,即说明证书是由CA发布的,证书中用户A的公钥是值得信赖的。用户B以后就可以使用该公钥验证用户A的签名或者进行和A进行加密通信。

使用证书验证用户的身份,获取用户公钥

如何验证证书机构的公钥-证书的证书

这里有一个有趣的问题,用户B使用证书机构的公钥来验证用户A的数字证书,但如何又能够知道用户B拿到的证书机构的公钥不是伪造的呢?解决办法是再找一个 证书机构对该证书机构的公钥颁发一个证书,这样形成了一个公钥证书的嵌套循环,该循环的终点就是根证书机构。根证书机构较少,其公钥可以通过安全的方式发 布,如通过USB拷贝、书面文件当面移交。

数字证书认证链

一个数字证书的例子

Certificate:

Data:

<span style="color:#FF0000;">证书标准版本号</span>

Version: 1 (0x0)

<span style="color:#FF0000;">该证书的唯一编号</span>

Serial Number: 7829 (0x1e95)

<span style="color:#FF0000;">该证书的签名算法</span>

Signature Algorithm: md5WithRSAEncryption

<span style="color:#FF0000;">颁布本证书的证书机构</span>

Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc,

OU=Certification Services Division,

CN=Thawte Server CA/emailAddress=server-certs@thawte.com

<span style="color:#FF0000;">证书有效期</span>

Validity

Not Before: Jul  9 16:04:02 1998 GMT

Not After : Jul  9 16:04:02 1999 GMT

<span style="color:#FF0000;">证书持有人的姓名、地址等信息</span>

Subject: C=US, ST=Maryland, L=Pasadena, O=Brent Baccala,

OU=FreeSoft, CN=www.freesoft.org/emailAddress=baccala@freesoft.org

<span style="color:#FF0000;">证书持有人的公钥</span>

Subject Public Key Info:

Public Key Algorithm: rsaEncryption

RSA Public Key: (1024 bit)

Modulus (1024 bit):

00:b4:31:98:0a:c4:bc:62:c1:88:aa:dc:b0:c8:bb:

33:35:19:d5:0c:64:b9:3d:41:b2:96:fc:f3:31:e1:

66:36:d0:8e:56:12:44:ba:75:eb:e8:1c:9c:5b:66:

70:33:52:14:c9:ec:4f:91:51:70:39:de:53:85:17:

16:94:6e:ee:f4:d5:6f:d5:ca:b3:47:5e:1b:0c:7b:

c5:cc:2b:6b:c1:90:c3:16:31:0d:bf:7a:c7:47:77:

8f:a0:21:c7:4c:d0:16:65:00:c1:0f:d7:b8:80:e3:

d2:75:6b:c1:ea:9e:5c:5c:ea:7d:c1:a1:10:bc:b8:

e8:35:1c:9e:27:52:7e:41:8f

Exponent: 65537 (0x10001)

<span style="color:#FF0000;">证书机构对该证书的数字签名</span>

Signature Algorithm: md5WithRSAEncryption

93:5f:8f:5f:c5:af:bf:0a:ab:a5:6d:fb:24:5f:b6:59:5d:9d:

92:2e:4a:1b:8b:ac:7d:99:17:5d:cd:19:f6:ad:ef:63:2f:92:

ab:2f:4b:cf:0a:13:90:ee:2c:0e:43:03:be:f6:ea:8e:9c:67:

d0:a2:40:03:f7:ef:6a:15:09:79:a9:46:ed:b7:16:1b:41:72:

0d:19:aa:ad:dd:9a:df:ab:97:50:65:f5:5e:85:a6:ef:19:d1:

5a:de:9d:ea:63:cd:cb:cc:6d:5d:01:85:b5:6d:c8:f3:d9:f7:

8f:0e:fc:ba:1f:34:e9:96:6e:6c:cf:f2:ef:9b:bf:de:b5:22:

68:9f

作者 呦呦鹿鸣,食野之芩

转载于:https://www.cnblogs.com/trustnature/articles/3230529.html

CA验证数字证书的有效性相关推荐

  1. PKI/CA与数字证书

    写在前面 现在开始接触CA相关的内容,对一些名词还是不甚了解,在遇到一些问题的时候也不能理解,刚好最近看了一本<PKI/CA与数字证书技术大全>,里面介绍的比较系统全面,也对刚接触这方面的 ...

  2. CA与数字证书的自结

    1.CA CA(Certificate Authority)是数字证书认证中心的简称,是指发放数字证书.管理数字证书.废除数字证书的权威机构. 2.数字证书 如果向CA申请数字证书的单位为A.则他申请 ...

  3. https:浏览器如何验证数字证书

    浏览器和服务器建立https连接的过程中,浏览器首先会向服务器请求数字证书,之后浏览器要做的第一件事情就是验证数字证书: 验证数字证书的有效期 验证数字证书是否被吊销 验证数字证书是否是合法CA机构颁 ...

  4. 初识PKI/CA和数字证书

    一.首先,说一下经常听到但又不太了解的数字证书. 在现实生活中,如何证明我是谁,这时候我掏出我的身份证,足以证明.那么在网络世界中,数字证书就是这么一张"身份证".身份证上有一个人 ...

  5. 如何从CA获取数字证书

    从CA 获取数字证书 1.打开虚拟机,在服务器管理器中添加角色,找到"Activity Directory 证书服务"(具体步骤如下) 2.除了默认的证书颁发机构外,还需要安装&q ...

  6. PKI/CA与数字证书概述

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

  7. PKI/CA与数字证书技术大全

    最近工作中需要使用数字证书,以前对证书有些许了解,但不深入.所以真正使用的时候,发现有些欠缺,尤其认识了熟知这方面内容的同学后,更觉得知识匮乏. 其实证书相关内容很宽泛,为了更好的指导自己的工作,有必 ...

  8. 基于开源CA系统ejbca community 6.3.1.1构建私有CA管理数字证书

    最后更新于2017年01月24日 一.为什么 为什么写这篇文章?ca是什么?数字证书是什么?ejbca又是什么? 让我们从http与https说起.http是超文本传输协议(HyperText Tra ...

  9. 数字签名和数字证书使用详解

    目录 1.数字签名 (1)数字签名的应用场景 (2)数字签名的实现原理 (3)如何进行数字签名和验证 (4)使用数字签名的优点和缺点 2.数字证书 (1)如何对数字证书进行颁发和管理 (2)颁发数字证 ...

最新文章

  1. mac pro下安装gdb和delve调试器
  2. 爬虫:获取页面 -- request库的使用
  3. C语言程序设计之最大公约数与最小公倍数算法
  4. DO、DTO、BO、AO、VO、POJO定义
  5. mysql获取一个表的数据作为值插入_请问如何在mysql中得到一个即将插入数据表中的那条数据的id值(id自增长)?...
  6. 操作系统的SPOOLING技术
  7. $SVN代码版本管理工具的使用
  8. Kalman Fuzzy Actor-Critic Learning Automaton Algorithm for the Pursuit-Evasion Differential Game
  9. 转载-谈谈我这些年的互联网赚钱经历
  10. Tensorflow - 训练中出现 Nan 值
  11. 古人为什么不发明计算机,成语是汉语言文学中的经典,为何古人能够发明,现代却很少发明?...
  12. SequoiaDB巨杉数据库-配置
  13. 深入理解Java虚拟机——魔数与Class文件的版本
  14. 如何设置payjs的微信jsapi支付目录
  15. 人体解析任务 和 Look into Person数据集 (附源码分享)
  16. 行人重识别的大体介绍
  17. 金蝶ERP系统的实施对企业的重要性
  18. Android问题集锦之十五 可笑的unauthorized错误
  19. golang 学习(二十六)第三方包的下载和安装
  20. 医疗转运和储存柜的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

热门文章

  1. python自学用什么书好-适合python基础学习的好书籍
  2. python网课什么平台好-python网课什么平台好
  3. python脚本实例手机端-用Python实现自动化操作Android手机
  4. python输出print到txt-pycharm实现print输出保存到txt文件
  5. 计算机二级python用什么书-计算机二级python考什么?
  6. pythonurllib模块-Python urllib模块 网络资源访问安装下载
  7. python基础教程 下载-Python基础教程第3版中国PDF电子书免费下载
  8. python代码大全表解释-python文件及目录操作代码汇总
  9. python编程实例下载-python网络编程之文件下载实例分析
  10. 精通python设计模式-浅谈Python设计模式 - 原型模式