OpenSSL 应用

一.数字指纹

作用:可以保证数据的完整性(也称为消息摘要)
描述:顾名思义,指纹是用来确定人的身份的,数字指纹也是用来确定在网络通信中通信双方的身份的一项机制
原理:将发送数据进行散列计算,得到一个散列值,将原数据和散列值一同发往对端,对端收到后,同样对原数据进行散列,将本地得到的散列值与收到的散列值进行比对,若一致,则证明数据没有被修改
常见算法:MD5,SHA
 

二.数字签名

作用:验证数据的来源 (和证书是一套)和完整性(防篡改)

数字签名使用的是发送者的密钥对,用发送者的私钥加密发送信息的数字摘要,接收者由发送者的公钥解密,如果被篡改,解密会失败;类似签名;其实现过程为:

  (1)信息发送者使用单向Hash函数把明文生成一个定长的数字摘要。 单向Hash函数是单向不可逆的,采用相同的单向Hash函数,不同 的明文生成的数字摘要总是不同的,相同的明文其数字摘要必定一致, 数字摘要可用来验证数据传输的完整性。

  (2)信息发送者使用自己的私钥加密数字摘要,形成数字签名。

(3)信息发送者把原始明文和数字签名一起发送给接收者。  接收者利用发送者的公钥对数字签名解密,得到数字摘要;同时对 收到的明文用同样的单向Hash函数产生一个数字摘要;将两个数字摘 要进行对比,如两者一致,说明传送过程中信息没有被破坏或篡改过。 数字签名不仅与签名者的私钥有关,而且与报文的内容有关,报文 不同,数字摘要一定不同,数字签名也不同,因此不能将签名者对一份 报文的签名复制到另一份报文上,能够防止报文的篡改,保证信息传输 的完整性。

三.数字信封

作用:兼容速度加密

数字信封使用的是接收者的密钥对,用接收者的公 钥加密,只能由接收者的私钥解密,其实现过程为:

  (1)信息发送者发送信息时,首先生成一个共享的对称密钥,用该 对称密钥加密要发送的明文,形成DES密文;

  (2)信息发送者用接收者的公钥加密此对称密钥,形成密钥密文; (3)信息发送者将(1)和(2)的结果结合在一起,形成数字信封,一 并传给信息接收者。 信息接收者接到密文后,使用自己的私钥解密密钥密文,得到共享 的对称密钥;再用此对称密钥解密DES密文,得到真正的原始明文。 数字信封结合了非对称密钥算法安全性高和对称密钥算法速度快 的优点,数据在网络上是以密文形式传输的,保证了信息传输的机密 性,避免Internet上黑客窃取明文数据。

四.数字证书

作用:用来证明数据发送者的身份的

数字签名:有可能会全部替换,不能真正证实来源,只能证实过程有没有被篡改;

字证书简称证书,它是由证书颁发机构签发的电子数据,是PKI技术的基础,数字证书是网络上实体的×××明,证明某一实体身份和公钥的合法性以及实体与公钥的匹配关系。证书是公钥的载体,证书上的公钥与唯一实体身份绑定。

数字证书简称CA,它由权威机构给某网站颁发的一种认可凭证,这个凭证是被大家(浏览器)所认可的,为什么需要用数字证书呢,难道有了数字签名还不够安全吗?有这样一种情况,就是浏览器无法确定所有的真实服务器是不是真的是真实的,举一个简单的例子:A厂家给你们家安装锁,同时把钥匙也交给你,只要钥匙能打开锁,你就可以确定钥匙和锁是配对的,如果有人把钥匙换了或者把锁换了,你是打不开门的,你就知道肯定被窃取了,但是如果有人把锁和钥匙替换成另一套表面看起来差不多的,但质量差很多的,虽然钥匙和锁配套,但是你却不能确定这是否真的是A厂家给你的,那么这时候,你可以找质检部门来检验一下,这套锁是不是真的来自于A厂家,质检部门是权威机构,他说的话是可以被公众认可的(呵呵)。

同样的, 因为如果有人(张三)用自己的公钥把真实服务器发送给浏览器的公钥替换了(钓鱼网站),于是张三用自己的私钥执行相同的步骤对文本Hash、数字签名,最后得到的结果都没什么问题,但事实上浏览器看到的东西却不是真实服务器给的,而是被张三从里到外(公钥到私钥)换了一通。那么如何保证你现在使用的公钥就是真实服务器发给你的呢?我们就用数字证书来解决这个问题。数字证书一般由数字证书认证机构(Certificate Authority)颁发,证书里面包含了真实服务器的公钥和网站的一些其他信息,数字证书机构用自己的私钥加密后发给浏览器,浏览器使用数字证书机构的公钥解密后得到真实服务器的公钥。这个过程是建立在被大家所认可的证书机构之上得到的公钥,所以这是一种安全的方式。

证书的使用可以避免这种问题,看一下证书的使用过程:

颁发过程
1.用户A首先获得 CA的根证书,即CA的公钥信息
2.用户A提交自己的公钥,身份信息等消息
3.CA对用户A提交的公钥进行哈希计算得到散列值,然后用CA自己的私钥对得到的散列值进行签名
4.CA将用户的公钥,签名和用户信息放入证书中下发给用户A

使用过程
1.用户将自己的证书发送给B
2.用户B拥有CA的公钥,所以他会对证书中的签名进行解密,得到散列值,将两个散列值进行比较,若两个散列值相同,则表明公钥可靠
 

小结:

  1. 数字签名是用来表明数据发送者身份的,有了签名就说明这个数据是发送都发出来的。为什么?因为可以用你的公钥打开你的签名信息,获取明文的HASH值。
  2. 数字信封,被公钥加密后的对称密码被称为数字信封,用于对称密钥的交换。
  3. 数字证书,用来证明数据发送者的身份的。为什么能证明呢?因为大家都要信任可信CA,证书是由可信CA颁发的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恋恋西风

up up up

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值