目录
- 一、公钥算法与私钥算法
- 二、公钥加密
- 三、数字签名
- 四、数字证书
- 五、数字签名和数字证书的区别
- 1、数字签名:
- 2、数字证书:
- 3、两者区别
- (1) 鲍勃有两把钥匙,一把是公钥,另一把是私钥。
- (2)鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。
- (3)苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果
- (4)鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。
- (5)鲍勃给苏珊回信,决定采用 "数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)
- (6)然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)。
- (7) 鲍勃将这个签名,附在信件下面,一起发给苏珊。
- (8)苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。
- (9)苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。
- (10)道格想欺骗苏珊
- (11)苏珊发现了异常
- (12)鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。
- (13)苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的。
- 4、案例
- 5、总结
- 五、总结:
参考:
https://zhuanlan.zhihu.com/p/393961699
https://blog.51cto.com/jsahz/2178599(
https://zhuanlan.zhihu.com/p/583984434
https://baike.baidu.com/item/%E5%85%AC%E9%92%A5/6447788?fr=ge_ala
https://baike.baidu.com/item/%E5%85%AC%E9%92%A5/6447788?fr=ge_ala
https://baike.baidu.com/item/%E7%A7%81%E9%92%A5/8973452?fr=ge_ala
https://baike.baidu.com/item/%E6%95%B0%E5%AD%97%E7%AD%BE%E5%90%8D/212550?fr=ge_ala
https://baike.baidu.com/item/%E6%95%B0%E5%AD%97%E8%AF%81%E4%B9%A6/326874?fr=ge_ala
一、公钥算法与私钥算法
1、私钥算法——对称加密算法
私钥加密算法,又称 对称加密算法,因为这种算法解密密钥和加密密钥是相同的。也正因为同一密钥既用于加密又用于解密,所以这个密钥是不能公开的。
2、公钥算法——非对称加密算法
公钥加密算法,也就是 非对称加密算法,这种算法加密和解密的密码不一样,一个是公钥,另一个是私钥:
- 公钥和私钥成对出现
- 公开的密钥叫公钥,只有发布公钥者自己知道的叫私钥
- 用私钥加密的数据只有对应的公钥可以解密(公钥加密)
- 用公钥加密的数据只有对应的私钥可以解密(数字签名)
- 如果可以用公钥解密,则必然是对应的私钥加的密
- 如果可以用私钥解密,则必然是对应的公钥加的密
公钥和私钥是相对的,两者本身并没有规定哪一个必须是公钥或私钥。
二、公钥加密
1、选择非对称算法的原因
要实现数据的安全传输,当然就要对数据进行加密了。
如果使用对称加密算法,加解密使用同一个密钥,除了自己保存外,对方也要知道这个密钥,才能对数据进行解密。如果你把密钥也一起传过去,就存在密码泄漏的可能。
所以我们使用非对称算法,过程如下:
- 首先 接收方 生成一对密钥,即私钥和公钥;
- 然后,接收方 将公钥发送给 发送方;
- 发送方用收到的公钥对数据加密,再发送给接收方;
- 接收方收到数据后,使用自己的私钥解密。
2、非对称算法的流程
由于在非对称算法中,公钥加密的数据必须用对应的私钥才能解密,而私钥又只有接收方自己知道,这样就保证了数据传输的安全性。
3、简单示意图
4、公钥和私钥理解
- 公钥和私钥成对出现
- 公开的密钥叫公钥,只有自己知道的叫私钥
- 用公钥加密的数据只有对应的私钥可以解密
- 用私钥加密的数据只有对应的公钥可以解密
- 如果可以用公钥解密,则必然是对应的私钥加的密
- 如果可以用私钥解密,则必然是对应的公钥加的密
5、公钥私钥算法的结合使用
(1)公钥算法的缺点
现实中,公钥机制也有它的缺点,那就是效率非常低,比常用的私钥算法(如 DES 和 AES)慢上一两个数量级都有可能。所以它不适合为大量的原始信息进行加密。
(2)为了同时兼顾安全和效率,我们通常结合使用公钥算法和私钥算法:
--首先,发送方使用对称算法对原始信息进行加密。 --接收方通过公钥机制生成一对密钥,一个公钥,一个私钥。 --接收方 将公钥发送给 发送方。 --发送方用公钥对对称算法的密钥进行加密,并发送给接收方。 --接收方用私钥进行解密得到对称算法的密钥。 --发送方再把已加密的原始信息发送给接收方。 --接收方使用对称算法的密钥进行解密。
(3)混合算法的流程
三、数字签名
1、关于数字签名
除了保证数据的安全传输之外,公钥体系的另一个用途就是对数据进行签名。
通常“数字签名”是用来验证发送方的身份并帮助保护数据的完整性。
例如:一个发送者 A 想要传些资料给大家,用自己的私钥对资料加密,即签名。这样一来,所有收到资料的人都可以用发送者的公钥进行验证,便可确认资料是由 A 发出来的了。(因为只有A使用私钥签名得到的信息,才能用这个公钥来解)
2、采用数字签名,可以确认两点:
(1)发送者身份真实性(服务器端是发起者)
保证信息是由签名者自己签名发送的,签名者不能否认或难以否认。
(2)数据完整性
保证信息自签发后到收到为止未曾作过任何修改。
之所以可以确认这两点,是因为用公钥可以解密的必然是用对应的私钥加的密,而私钥只有签名者持有。
3、概念再理解
数字签名并不是签一个字来证明这个东西是我的,而是做了一个数学计算。
数字签名(Digital Signature)是 先对消息内容做Hash得到一串数字,然后用私钥对这个数字进行加密。
数字签名就两个目的:证明这消息是你发的;证明这消息内容确实是完整的。(认证和完整性)。
对消息做一次哈希(md5或者sha1都行),然后用你的私钥加密这段哈希作为签名,并一起公布出去
4、结构图
5、签名过程:
(1)发送报文时,发送方用一个哈希函数从报文文本中生成报文摘要(如对报文内容生成了一个md5值), (2)然后用发送方的私钥对这个摘要进行加密,这个加密后的摘要将作为报文的数字签名和报文一起发送给接收方, (3)接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要(如果数据未被修改过是正确的,则计算的MD5值是一样的) (4)接着再公钥来对报文附加的数字签名进行解密 (5)如果这两个摘要相同、那么接收方就能确认该报文是发送方的。
6、数字签名有两种功效:
一是能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。
二是数字签名能确定消息的完整性。
因为数字签名的特点是它代表了文件的特征,文件如果发生改变,数字摘要的值也将发生变化。
不同的文件将得到不同的数字摘要。 一次数字签名涉及到一个哈希函数、接收者的公钥、发送方的私钥。
7、案例
假如 Alice 向 Bob 传送数字信息,为了保证信息传送的保密性、真实性、完整性和不可否认性,需要对传送的信息进行数字加密和签名,其传送过程为:(注:Alices是私钥拥有者,公钥发布者)
Alice 准备好要传送的数字信息(明文); Alice 对数字信息进行哈希运算,得到一个信息摘要; Alice 用自己的私钥对信息摘要进行加密得到 Alice 的数字签名,并将其附在数字信息上; Alice 随机产生一个加密密钥,并用此密码对要发送的信息进行加密,形成密文; Alice 用 Bob 的公钥对刚才随机产生的加密密钥进行加密,将加密后的DES密钥连同密文一起传送给Bob; Bob 收到 Alice 传送来的密文和加密过的 DES 密钥,先用自己的私钥对加密的 DES 密钥进行解密,得到 Alice随机产生的加密密钥; Bob 然后用随机密钥对收到的密文进行解密,得到明文的数字信息,然后将随机密钥抛弃; Bob 用 Alice 的公钥对 Alice 的数字签名进行解密,得到信息摘要; Bob 用相同的哈希算法对收到的明文再进行一次哈希运算,得到一个新的信息摘要; Bob 将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。
在这BOb接收到Alice的过程,若其他黑客截取了alice的信息,通过Alice公布的秘钥解开了Alice的信息,因为不知道Alice的私钥,所以无法对内部的信息进行二次解密后更改并再冒名传给Bob,如此实现了发布者的真实性和数据的安全性。
但仍然会有一个风险,如果有第三者Park把Bob电脑系统上的公钥换成了Park自己的,然后Park用自己的私钥给Bob传送消息,Bob因为可以正确解密,所以放心的和Park沟通,最终仍然是有风险的。
此时便有了数字证书的作用。
四、数字证书
1、概念
数字证书这一名词并非是我国原有,而是来自于英文digital certificate的翻译。数字证书从本质上来说是一种电子文档,是由电子商务认证中心(以下简称为CA中心)所颁发的一种较为权威与公正的证书,对电子商务活动有重要影响,例如我们在各种电子商务平台进行购物消费时,必须要在电脑上安装数字证书来确保资金的安全性。
CA中心采用的是以数字加密技术为核心的数字证书认证技术,通过数字证书,CA中心可以对互联网上所传输的各种信息进行加密、解密、数字签名与签名认证等各种处理,同时也能保障在数字传输的过程中不被不法分子所侵入,或者即使受到侵入也无法查看其中的内容。
如果用户在电子商务的活动过程中安装了数字证书,那么即使其账户或者密码等个人信息被盗取,其账户中的信息与资金安全仍然能得到有效的保障。数字证书就相当于社会中的身份证,用户在进行电子商务活动时可以通过数字证书来证明自己的身份,并识别对方的身份,在数字证书的应用过程中CA中心具有关键性的作用,作为第三方机构,必须要保证其具有一定的权威性与公平性,当前阶段我国的CA中心的从业资格是由国家工业与信息化部所颁发,全国范围内只有约50家企业具有数字认证的从业资格。
2、原理
数字证书的基本架构是公开密钥PKI,即利用一对密钥实施加密和解密。
其中密钥包括私钥和公钥,私钥主要用于签名和解密,由用户自定义,只有用户自己知道;公钥用于签名验证和加密,可被多个用户共享。
3、数字证书的基本工作原理主要体现在:
第一,发送方在发送信息前,需先与接收方联系,同时利用公钥加密信息,信息在进行传输的过程当中一直是处于密文状态,包括接收方接收后也是加密的,确保了信息传输的单一性,若信息被窃取或截取,也必须利用接收方的私钥才可解读数据,而无法更改数据,这也有利保障信息的完整性和安全性。
第二,数字证书的数据签名类似于加密过程,数据在实施加密后,只有接收方才可打开或更改数据信息,并加上自己的签名后再传输至发送方,而接收方的私钥具唯一性和私密性,这也保证了签名的真实性和可靠性,进而保障信息的安全性。
4、数字证书有很多格式版本
主要有X.509v3(1997)、X509v4(1997)、X.509v1(1988)等。比较常用的版本是TUTrec.x.509V3,由国际电信联盟制定,内容包括证书序列号、证书有效期和公开密钥等信息。不论是哪一个版本的数字证书,只要获得数字证书,用户就可以将其应用于网络安全中。 [3]
五、数字签名和数字证书的区别
1、数字签名:
将 报文按双方约定的HASH 算法计算得到一个固定位数的 报文摘要。在 数学上保证:只要改动报文中任何一位,重新计算出的 报文摘要值就会与原先的值不相符。这样就保证了报文的不可更改性。
将该报文摘要值用发送者的私人密钥加密,然后连同原报文一起发送给接收者,而产生的报文即称数字签名
2、数字证书:
数字证书就是互联网通讯中标志通讯各方身份信息的一系列数据,提供了一种在Internet上验证您身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个由权威机构-----CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。
3、两者区别
英文版见:What is a Digital Signature?
(1) 鲍勃有两把钥匙,一把是公钥,另一把是私钥。
(2)鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。
(3)苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果
(4)鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。
(5)鲍勃给苏珊回信,决定采用 "数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)
(6)然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)。
(7) 鲍勃将这个签名,附在信件下面,一起发给苏珊。
(8)苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。
(9)苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。
复杂的情况出现了。
(10)道格想欺骗苏珊
他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成"数字签名",写信给苏珊,让苏珊用假的鲍勃公钥进行解密。
(11)苏珊发现了异常
苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。
(12)鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。
(13)苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的。
4、案例
我们看一个应用"数字证书"的实例:https协议。这个协议主要用于网页加密。
(1) 首先,客户端向服务器发出加密请求。
(2)服务器用自己的私钥加密网页以后,连同本身的数字证书,一起发送给客户端。
(3)客户端(浏览器)的"证书管理器",有"受信任的根证书颁发机构"列表。客户端会根据这张列表,查看解开数字证书的公钥是否在列表之内。
(4)如果数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告。
(5)如果这张数字证书不是由受信任的机构颁发的,浏览器会发出另一种警告
(6)如果数字证书是可靠的,客户端就可以使用证书中的服务器公钥,对信息进行加密,然后与服务器交换加密信息。
5、总结
数字签名 就是使用个人私密和加密算法加密的摘要和报文,是私人性的。而数字证书是由CA中心派发的.
五、总结:
1、公钥和私钥
每个用户都有一对私钥和公钥。
- 私钥用来进行解密和签名,是给自己用的。
- 公钥由本人公开,用于加密和验证签名,是给别人用的。
- 当该用户发送文件时,用私钥签名,别人用他给的公钥解密,可以保证该信息是由他发送的。即数字签名。
2、当该用户接受文件时,别人用他的公钥加密,他用私钥解密,可以保证该信息只能由他看到。
即安全传输。
3、数字签名
就是使用个人私密和加密算法加密的摘要和报文,是私人性的。