百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

数字证书与数字签名_数字证书与数字签名的关系

liebian365 2025-02-19 12:50 5 浏览 0 评论

非对称加密是现代通讯安全的基础。简单的说,就是通过算法产生一对密钥,秘钥A和秘钥B。秘钥A加密的内容,只有秘钥B才能解密,秘钥B加密的内容,只有秘钥A才能解密。如果两个人分别持有秘钥A和秘钥B,他们两个人就可以通过加密解和密通话内容进行秘密的通话。

技术上,秘钥就是密码算法的输入参数。

那什么是公钥?什么是私钥?

如果其中一把密钥被公开,它就被称为公钥,另一把没有被公开的密钥就被称为私钥。所以,公钥加密的内容只有私钥才能解密,私钥加密的内容,只有公钥可以解密。

推论:只要用公钥成功的解密了一份消息,那么就可以断定,这份消息就一定是由配对的那把私钥加密的,而不是别的什么私钥加密的。我们假设私钥的拥有者是期望的信息发送者,他会妥善保管私钥,不会弄丢私钥,那么,我们上面的推论就可以改为:如果用公钥成功的解密了一份消息,那么这份消息就一定是期望的发送者发过来的。这叫做对发送者的身份识别

比如你拥有一把公钥,你的朋友张三拥有一把配对的私钥。张三给你发了一份用私钥加密的消息,你用公钥成功的解密了这份消息。此时你就可以确认,这份消息的确是你的朋友张三发来的,而不是骗子发来的。

用同样的方式,你可以确认一份消息是不是从某个银行发来的,你可以确认消息是不是从某个公司发来的,总之,你可以确认该消息是不是由某个你期望的个人或组织发来的。

如此这般,通过私钥加密公钥解密的方式,你可以确认发来消息的人是谁,也就是确认了发送者的身份。这就是非对称加密的第一个用途:识别发送者身份

识别发送者身份是安全通讯中非常重要的一步。Https通讯时,客户端要识别服务器的身份,就要对服务器的证书进行验证,而验证的过程就包括对证书上的数字签名进行校验,数字签名的校验过程包含着“私钥加密,公钥解密”的过程。

什么是数字签名?

简单的说,签名=消息的哈希值被私钥加密的结果。

从技术上讲,数字签名就是对消息体先做哈希(Hash)计算再用私钥加密后得到的一段信息。什么是哈希?哈希函数或者说哈希计算就是将一串数据按照一定的算法进行计算,结果得到一段固定长度(比如128位)的值,谓之哈希值。不同的数据,其哈希值很难是一样的(如果碰巧一样,这称为hash碰撞,几率很低)。我们就认定:一个消息数据对应着一个哈希值,消息数据如果改变,它的hash值一定也会改变。反过来说,如果它的哈希值改变了,意味着原始数据也改变了。

同时,Hash是不可逆的,你不可能通过Hash值来反过来计算出Hash算出之前的原始数据。

通常,哈希计算用于将一个很大的数据映射成一个很短的数据,将一段长文本映射成一段很短的字符串,总之,就是将一个大的取值空间映射到一个小的取值空间。

所以,哈希也常被称为摘要。

数字签名,是对哈希值的加密,为什么对哈希值加密而不是对原文加密?

因为对哈希值这个很短很小的数据加密比对很长的原始信息加密要快的多。

哈希算法有三类MD(md2,md4,md5) SHA(sha1,sha2,sha3) MAC

签名验证的过程是怎么样的?

比如我们收到了一份数据(这个数据可能是一段文本,一个可执行程序,一个数字证书等,我们姑且叫它A)后,附着在这份数据上的签名会被先拿下来,因为签名是私钥加密的值,所以系统会用你手里对应的公钥解密签名,如果成功,说明是期望的人发过来的,不是骗子发来的。解密签名后的值是B,接着我们对消息体再做一遍哈希计算,得到C,然后比较B和C,如果B=C,则说明消息没有被篡改过。

上述数字签名验证做了两件事:1,识别签署人身份。2,保证信息完整性。

如果A是数字证书,上述过程就是对数字证书的验证过程,验证成功,就说明这个证书是在正经的地方签发的,并且是没有被篡改和替换的,你是可以相信的。

如果A是一段文本,上述过程就是对这段文本的验证过程,验证成功,就说明这段文本是正经的人签署的,并且文本是没有被篡改和替换的,你是可以相信的。

如果A是一个可执行程序,道理也是一样。

数字签名对原文的保密性没有要求,数字签名的主要的作用是认证签署人身份,换句话说就是证明这个签名是我签的,这段附着我的签名的文档或邮件是我写的,不是别人写的,同时我也无法抵赖说这不是我写的。同时证明了文档或邮件没有被替换,没有被篡改。

数字签名不负责对消息保密。

什么是数字证书?

首先,数字证书就是一个文件,扩展名常见的有filename.cer, filename.der, filename.pkcs,这代表了它们的编码格式不同。前两种格式的文件在window下可以直接打开,出现一个证书窗口,显示出证书里的各种信息。你也可以用文本编辑器打开证书文件,会发现,其内容就是一段Base64编码的文本,Base64编码格式就是它的存储格时使用的格式。你把这段文本copy下来保存为.cer文件 (微博里不允许粘贴这个文件的文本),就可以在window下双击打开,就能查看这个证书的信息。

-----BEGIN CERTIFICATE-----

MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G

A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp

Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1

MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG

A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI

hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL

v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8

eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq

tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd

C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa

zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB

mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH

V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n

bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG

3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs

J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO

291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS

ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd

AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7

TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==

-----END CERTIFICATE-----

其次,数字证书是对公钥的封装,而公钥是需要公开出去的,所以数字证书也是公开的。比如,我们访问需要安全认证的网站时,网站会要求我们安装它们的证书,每个访问网站的人都会获取其证书,网站是公开的,其证书也是公开的,这样,接下来就可以拿着证书里的公钥和网站服务器的私钥通过加密解密的方式进行安全通信了。

最后,除了公钥,数字证书里围绕这公钥又增加了一些其它信息,比如证书的有效期,证书发布机构,证书的所有者等。数字证书由权威机构签发,实际上,签发过程就是对申请数字证书的公钥做数字签名,这样你就知道这个证书是不是权威机构签发的;验证过程就是对数字证书的签名做验证。

做签名验证的前提是你已经安装了权威机构的根证书。

现在我们的脑子里有两个证书,一个是数字证书,一个是根证书。数字证书里有公钥,根证书里也有公钥。那么这两种公钥的作用有什么区别?

根证书的里公钥用来验证数字证书的签名,保证数字证书安全(所以,前面有个例子里的公钥X,是指根证书的公钥。)

数字证书里的公钥用来保证通讯安全。

接下来我们认识一下根证书的作用与工作流程。

比如,你安装了权威认证中心A公司的根证书,也就意味着你有了A公司的公钥。某宝网的证书也是在A公司签发的,也就意味着某宝网的证书用A公司的私钥做了哈希后加密。你访问某宝网,某宝网会发给你它的证书,你的系统会验证这个证书。验证的过程是用你根证书里的公钥去解密签名,再做哈希对比,发现这个证书没有被篡改过,就算是对该证书验证成功。你可以相信某宝网的证书了。

下图就是证书验证过程,图中的Signer就是权威认证中心A 公司,Verifier就是安装了A公司的根证书的客户端。

证书+数字签名+根证书,基本就堵住了各种安全漏洞。

  • 通信数据是安全的,因为用证书里的公钥和服务器的私钥对通讯内容做了加密 (具体加密细节会多一些协商对称秘钥的环节,此时不必理会,让我们先从整体上理解它)。黑客没有服务器私钥,所以无法解密对称秘钥,也就无法解密通讯内容。
  • 证书是安全可靠的,因为证书有数字签名,数字签名的用途之一就是识别签署人身份,签署人身份安全可靠,证书就安全可靠。证书安全可靠,证书里的公钥就安全可靠,就可以排除公钥伪造。也就是说,黑客无法篡改数字证书的内容,如果篡改了,数字证书的签名验证就会失败。
  • 根证书是安全可靠的,因为根证书是从权威认证中心拿来的,windows操作系统还内置了一些根证书。

根证书是信任链条的起点,一定要保证根证书是有效的、合法的。所以,正规的应用一般都是到权威认证中心下载根证书。如果你电脑染上了病毒,病毒可以替换你的根证书,你的计算机就没有任何安全性可言了。

所有上面的这一切,都是因为“非对称加密”这项技术而演化出的一套游戏规则。

相关推荐

4万多吨豪华游轮遇险 竟是因为这个原因……

(观察者网讯)4.7万吨豪华游轮搁浅,竟是因为油量太低?据观察者网此前报道,挪威游轮“维京天空”号上周六(23日)在挪威近海发生引擎故障搁浅。船上载有1300多人,其中28人受伤住院。经过数天的调...

“菜鸟黑客”必用兵器之“渗透测试篇二”

"菜鸟黑客"必用兵器之"渗透测试篇二"上篇文章主要针对伙伴们对"渗透测试"应该如何学习?"渗透测试"的基本流程?本篇文章继续上次的分享,接着介绍一下黑客们常用的渗透测试工具有哪些?以及用实验环境让大家...

科幻春晚丨《震动羽翼说“Hello”》两万年星间飞行,探测器对地球的最终告白

作者|藤井太洋译者|祝力新【编者按】2021年科幻春晚的最后一篇小说,来自大家喜爱的日本科幻作家藤井太洋。小说将视角放在一颗太空探测器上,延续了他一贯的浪漫风格。...

麦子陪你做作业(二):KEGG通路数据库的正确打开姿势

作者:麦子KEGG是通路数据库中最庞大的,涵盖基因组网络信息,主要注释基因的功能和调控关系。当我们选到了合适的候选分子,单变量研究也已做完,接着研究机制的时便可使用到它。你需要了解你的分子目前已有哪些...

知存科技王绍迪:突破存储墙瓶颈,详解存算一体架构优势

智东西(公众号:zhidxcom)编辑|韦世玮智东西6月5日消息,近日,在落幕不久的GTIC2021嵌入式AI创新峰会上,知存科技CEO王绍迪博士以《存算一体AI芯片:AIoT设备的算力新选择》...

每日新闻播报(September 14)_每日新闻播报英文

AnOscarstatuestandscoveredwithplasticduringpreparationsleadinguptothe87thAcademyAward...

香港新巴城巴开放实时到站数据 供科技界研发使用

中新网3月22日电据香港《明报》报道,香港特区政府致力推动智慧城市,鼓励公私营机构开放数据,以便科技界研发使用。香港运输署21日与新巴及城巴(两巴)公司签署谅解备忘录,两巴将于2019年第3季度,开...

5款不容错过的APP: Red Bull Alert,Flipagram,WifiMapper

本周有不少非常出色的app推出,鸵鸟电台做了一个小合集。亮相本周榜单的有WifiMapper's安卓版的app,其中包含了RedBull的一款新型闹钟,还有一款可爱的怪物主题益智游戏。一起来看看我...

Qt动画效果展示_qt显示图片

今天在这篇博文中,主要实践Qt动画,做一个实例来讲解Qt动画使用,其界面如下图所示(由于没有录制为gif动画图片,所以请各位下载查看效果):该程序使用应用程序单窗口,主窗口继承于QMainWindow...

如何从0到1设计实现一门自己的脚本语言

作者:dong...

三年级语文上册 仿写句子 需要的直接下载打印吧

描写秋天的好句好段1.秋天来了,山野变成了美丽的图画。苹果露出红红的脸庞,梨树挂起金黄的灯笼,高粱举起了燃烧的火把。大雁在天空一会儿写“人”字,一会儿写“一”字。2.花园里,菊花争奇斗艳,红的似火,粉...

C++|那些一看就很简洁、优雅、经典的小代码段

目录0等概率随机洗牌:1大小写转换2字符串复制...

二年级上册语文必考句子仿写,家长打印,孩子照着练

二年级上册语文必考句子仿写,家长打印,孩子照着练。具体如下:...

一年级语文上 句子专项练习(可打印)

...

亲自上阵!C++ 大佬深度“剧透”:C++26 将如何在代码生成上对抗 Rust?

...

取消回复欢迎 发表评论: