上周,有同事给我们介绍了什么是数字证书及其工作原理,于是我决定结合自己的理解把这个原理记录下来。

为什么会用到数字证书

在我们上网的时候,为了防止我们的信息被某些钓鱼网站截取,所以我们在与对方进行通信的时候,需要验证对方的身份。那么如何验证对方的身份是真实可靠的呢,就需要对方能够提供数字证书,而且该证书能够被验证是权威的CA颁发的。
举个栗子,比如你要招聘一名清华大学的毕业生,那么你如何确定对方是清华大学毕业的?那么就需要对方提供他的毕业证,而且毕业证上的编号确实是能够在权威网站“学信网”上查到。

什么是数字证书、数字签名及CA

数字签名的过程分为2步:它是由发送方做的,首先把要传送的内容通过哈希算法算出一个固定长度的摘要(一个hash值),如果摘要相同,则说明信息相同。然后发送方用自己的私钥对摘要进行加密,再把公钥发送给接收方。
数字签名验证过程也分为2步:它是由接收方完成的,首先用发送方发过来的公钥去解之前的摘要密文,这样就得到一个哈希值hash1,然后再当场通过哈希算法计算出明文内容的哈希值hash2,如果hash1=hash2,那么就说明内容没有被篡改(摘要一致),而且内容是由发送方发过来的,不可抵赖(密钥能用对方的公钥解开)
这个过程可以通俗地理解成:
比如A想给B写一封信,但是又想让B确定这个信是A写的,且信的内容没有被别人篡改,那么A先把信的内容写好,然后A通过哈希算法生成一个摘要(digest),接着A再用自己的私钥对摘要进行加密,就形成了数字签名(digital signature),最后A把信和签名一同发送给B。B在收到A的信后,用A的公钥解密数字签名,得到摘要,然后再把信件的内容通过哈希算法得到一个哈希值,再与之前得到的摘要进行对比,如果一致,那么说明信件确实是A发送的,且信件内容没有被修改。
那么问题来了。。。。
(1)摘要已经是内容的hash值了,为什么还要对摘要进行加密后再发送呢?
答:摘要是不能反推出内容,但是有些不怀好意的人可能根本不想知道信件的内容,他就是想让你相信内容是他发送的而已。但是如果摘要需要进行加密,不怀好意的人用他自己的私钥进行加密后,你用真实发送方的公钥是解不开的。所以数字签名可以保证内容确实是由发送方发送的,而且内容没有被篡改。
(2)如果不怀好意的人将你的公钥替换成自己的公钥了该怎么办呢?
答:上面说了,如果你用公钥将文件解密了,那么你就确定这个文件是由对方发过来的,但是如果这个公钥被人做了手脚了呢?比如C偷偷使用了B的电脑,用自己的公钥替换了A的公钥,然后C用自己的私钥做成数字签名,再写信给B,B就用假的公钥解密了假的数字签名。为了解决这个现象,数字证书就诞生了。
数字证书(digital certificate)是由CA(Certification Authority)签发的一种较为权威与公正的电子文档。证书的内容包括:CA的信息,公钥用户的信息,公钥,CA的签名和有效期等等。
CA是颁发数字证书的权威机构,是受大家信任的第三方。如果一个用户想要得到一份属于自己的数字证书,他应先向CA提出申请。在CA判明申请者的身份后,便为他分配一个公钥,并且CA将该公钥与申请者的身份信息绑定在一起,并为之签字,便形成证书发给申请者。
由于B不确定自己拥有的公钥是否来自于A,所以他要求A去权威中心为公钥做认证,CA用自己的私钥,对A的公钥和一些相关信息一起加密,生成数字证书并签名。所以之后如果A再想给B写信,他只需要在签名的同时,再附上数字证书就可以了。B收到信件后,用CA的公钥解开数字证书,就可以拿到A真实的公钥了,然后就能证明信件确实是A发送的。
从下图中可以看出由CA签发的数字证书大概包含什么内容。

根证书(Root Certificate)是由根证书颁发机构(root CA)颁发的公钥证书,也就是说它是自己发给自己的证书,是信任链的起点。一般来说,我们的电脑上面会安装一些信任的证书,windows可以在开始运行中输入certmgr.msc来查看自己的电脑里安装了哪些证书。
有根证书,那么就有中间证书(Intermediate Certificate),中间证书和根证书是层级关系,可以有多个中间证书。可以通过证书中对应的域找到它的上一级证书。
比如你想通过https访问百度,百度不仅会把自己的证书发过来,还会把给它签发证书的CA的证书发过来。如下图所示。

如果这个证书或者这个证书的根证书在你的电脑里有安装,那么你访问的网站就被认为是安全的网站,反之,浏览器就会弹出安全证书有问题。

有些网站的证书是自己给自己颁发的根证书,而它并不是权威的CA,如果你信任这些网站,就需要在自己的电脑上下载他们的证书安装,比如某些银行的网站,经常需要先安装证书。。。

数字签名、数字证书与CA相关推荐

  1. [搬运]数字证书及 CA 的扫盲介绍

    本文转载自大神编程随想的博客.阅读原文需要科学上网,建议有条件者直接阅读原文,本文转载只为方便墙内阅读与存档学习. 原文传送门:数字证书及 CA 的扫盲介绍 @ 编程随想的博客 数字证书及 CA 的扫 ...

  2. 网络安全--数字签名/数字证书

    对称加密: 未加密的信息+秘钥 --> 加密的黑盒子 --> 加密后的信息 加密后的信息+秘钥 --> 解密的黑盒子 --> 未加密的信息 非对称加密: 未加密的信息+公钥 - ...

  3. 一文了解加解密、哈希函数、MAC、数字签名、证书、CA等

    引言: 哪里有信息,哪里就有信息安全问题,那么在网络安全系统中我们经常听到的加解密.哈希.数字签名.证书.CA等是怎么发展而来的呢,本篇就是从所以然的角度介绍一下现代密码系统各个部分是怎么来的(并非历 ...

  4. 数字证书、CA、CA证书,傻傻分不清楚?这一篇看懂!

    电子合同得到越来越多人的关注,而电子合同的安全性,更是人们关注的焦点.在电子合同领域,我们经常会听到这么3个词:数字证书.CA.CA证书,而且经常傻傻分不清楚它们到底是什么东西. 那么,今天小编就给大 ...

  5. 什么是 数字签名 数字证书 数字信封

    1,数字签名 数字证书 数字信封 当A和B进行通信时,将A发送的消息的hash值先用A的私钥进行加密(数字签名),B存储A的公钥,B收到信息之后利用公钥进行解密,保证信息的完整性和保密性来自于A 存在 ...

  6. 数字证书、CA、CA证书、SSL证书、CA锁 简单介绍

    1.数字证书是什么? 数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名).其作用类似于现实生活中司机的驾驶执照或日常生活中的身份证. 2.CA是什 ...

  7. SSL数字证书之CA根证书、CA中间证书和SSL证书

    [前言] 说一下大背景吧,我们的一个后台服务需要部署在一个没法上外网的环境,但是我们的后台服务需要访问七牛云进行对象存储,于是乎,需要一个代理来完成这个访问,我门采用nginx七层来做这个代理,因为七 ...

  8. 数字证书及CA的扫盲介绍

    先说一个通俗的例子 考虑到证书体系的相关知识比较枯燥.晦涩.俺先拿一个通俗的例子来说事儿. ◇ 普通的介绍信 想必大伙儿都听说过介绍信的例子吧?假设 A 公司的张三先生要到 B 公司去拜访,但是 B ...

  9. 数字证书认证(CA)中心

    CA(Certification Authorith):证书颁发机构. 证书引入:要开车得先考驾照,驾照上面有本人得照片,姓名,出生日期等个人信息,以及有效期,准驾车辆得类型等信息,并由公安局在上面盖 ...

最新文章

  1. 交叉分解(Cross decomposition)、典型关联分析(Canonical Correlation Analysis,CCA)、偏最小二乘回归PLS
  2. python语言程序设计教程-Python语言程序设计(视频教程)
  3. Flutter Android/iOS包大小分析
  4. 018_Spring+ActiveMQ(消息中间件)
  5. Mastering the Java CLASSPATH
  6. WPF 的Listbox 滚动处理
  7. 22岁少年破解史上最严重网络攻击,拯救全球互联网,三个月后却被FBI逮捕
  8. php中修改元素值为5,php怎么改变元素数组的值
  9. zoj 3211 - Dream City
  10. html标记详解博客,HTML表格标记详解8:表格嵌套
  11. 萌新分享打印当前目录下的所有文件和打印出里面java文件的代码
  12. 需求调研报告模板_精准摸底,把握需求:名师工作室开展培训活动调研报告
  13. Java实现随机抽奖
  14. 概率图模型在图像处理中的应用
  15. DWL文件能改成DWG文件打开吗?
  16. 修复计算机u盘,u盘损坏怎么修复 u盘损坏修复方法
  17. DID会固定年份吗_互助问答第31期:固定效应与随机效应选择和面板数据处理
  18. 基于RK3399PRO的蜂鸣器驱动移植文档
  19. checkpoints are occurring too frequently
  20. mysql笔记--03DML

热门文章

  1. c语言小明每天有10元,C语言IQ题
  2. Linux重要指令讲解
  3. Java:ews-java-api获取Outlook/Exchange Web Services (EWS)会议日程
  4. obs多推流地址_还在为拿不到推流地址而烦恼吗?三分钟让你用上OBS进行高清直播...
  5. 2021最新spass数据分析教程 论文spass数据分析教程 数据分析怎么做spass教程
  6. golang教程推荐
  7. Winform GIS编辑器,C#地理信息编辑器,.NET地理信息编辑器
  8. 20180710-A · Craft Beer USA · ggplot2 geom_col 条形图 facet_geo theme 字体设置 画图 图例 · R 语言数据可视化 案例 源码
  9. 如何减少压力--重塑心灵
  10. [已解决]关于html的script没有生效的问题