公钥、私钥和证书

理解公钥和私钥首先要区分加密认证这两个概念!

加密和认证:

加密是将数据资料加密,使别人即使获取加密资料,也无法获取正确的资料内容,重点在于数据的安全性。

认证是确定数据的真实发送方,使别人无法伪造或冒充,重点在于用户的真实性。

公钥和私钥:

公钥和私钥就是俗称的不对称加密方式,是对称加密(使用用户名与密码)方式的提高。

使用公钥与私钥的目的是为了安全的数据传输,必须实现如下目的:

  • 我发送给你的内容必须加密,在数据传输过程中不能被别人看到真实数据内容。
  • 接收数据方能确定是我发送的数据,不是别人冒充我的。

首先解释公钥和私钥的意义和作用:

  • 公钥:是公布出去的给别人用的,可以被很多人获取。用来加密和验章。
  • 私钥:只能自己持有,并且不可以被其他人知道。用来解密和签章。

 

公钥与私钥的作用是:用公钥加密的内容只能用私钥解密,用私钥加密的内容只能用公钥解密。

公钥和私钥有以下原则:(注意:密钥包括公钥和私钥)

  • 一个公钥对应一个私钥;
  • 密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥;
  • 如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密;
  • 如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密;

要达到数据安全传输的目的,必须发送方和接收方都持有对方的公钥和自己的私钥,即任意一方持有自己的私钥和对方的公钥。

如 A 给 B 发送数据:

  • 为了数据的安全性,A 需要使用 B 的公钥来给数据加密,这样只有 B 的私钥才可以解密数据,别人无法解密,这样保证了数据的安全性。这是数字签名。
  • 为了保证数据发送方的真实性,A 需要使用自己的私钥来给数据加密,这样其他人用 A 的公钥进行解密,由于只有 A 的私钥加密的数据,A 的公钥才能解密,所以他人用 A 的公钥若能解密此数据,则证实了此数据是由 A 发送的,若不能解密,则证明此数据不是用 A 的私钥加密的,即不是 A 发送的,这样保证了发送方的真实性。

证书:

证书是为公钥做认证,为了使公钥真实可信,防止他人伪造公钥;证书颁发机构(证书中心CA)会用自己的私钥对用户的公钥和相关信息进行加密,生成”数字证书“,然后证书中心会公布自己的公钥给所有人,用来让用户使用此公钥验证”数字证书“是否由CA颁发,即是否真实可信,产生证书是因为如下场景:

A 给 B 发信息:

1. 首先 A 用 Hash 函数对要发送的数据实体生成摘要(digest),这个过程是不可逆的。

2. A 使用自己的私钥对这个摘要进行加密,生成数字签名(signature),并将此签名连同要发送的数据实体一起发送给 B 。

3. B 收到 A 发送过来的数据后,首先用 A 的公钥对数字签名进行解密,得到摘要,从而证明数据确实来自 A,因为只有 A 有私钥。

4. B 再对接收到的数据实体进行 Hash 函数,如果得到的结果和上一步摘要一致,则证明数据实体没有被篡改过。

如上,如果 C 偷偷将 B 持有的 A 公钥换成自己的公钥,而 B 不知道公钥已被替换,那么以后 C 就可以使用冒充 A 来给 B 信息,而 B 会相信此信息是来自 A。

为了解决这一问题,需要对 B 持有的 A 公钥做认证,从而确定此公钥确实是 A 的公钥,而不是其他人篡改过的!而这个认证机构必须是第三方可信赖的,就是CA!由此,发送过程变成如下:

A 发给 B 数据的时候,除了要发送签名和数据实体,还要发送CA颁发的证书。

B 接收到 A 发送过来的数据后,首先用 CA 的公钥去解密证书,如果能解,表明这个证书里的信息可信赖,从而得到证书里 A 的公钥,然后 B 再用得到的公钥去做下一步动作。

注意:

以上前提必须是 CA 是可信赖的,CA 证书是不可伪造的!

上边 A 给 B 发送数据只实现了身份确认,数据未被修改过,但是没有保证数据是安全的,即数据传输过程中可以被第三人看到数据内容,要想实现安全的数据传输,A 还要做一步工作,即用 B 的公钥给数据加密,这样只有 B才可以解密,从而保证了数据的安全性。

由上再次总结:

证书分为公钥证书和私钥证书,每个人的公钥、私钥证书是不一样的,但是肯定是一一对应的。

加密技术:公钥证书加密、私钥证书解密;

签名技术:私钥证书加密、公钥证书解密;

对于一方来说,持有对方公钥(即证书,因为公钥放在证书里),就可以验证对方身份,并且保证发给对方数据的安全性。对方对己方要也想做到这一点,则也要持有己方的公钥,即:

加密和签名技术相结合才能实现,机密性、完整性、不可否认性。

证书是为了保证密钥的真实性!没有证书,谈不上非对称加密。

时间: 2024-08-30 07:45:09

公钥、私钥和证书的相关文章

OpenSSL与公钥私钥证书签名的千丝万缕

导语 人对任何事物的认识都是阶段性的,从无知到知晓,从懵懂到半知半解,从误解到将信将疑,从晕头转向到下定决心吃透. 介绍 OpenSSL是一个强大的命令行工具,它可以用来处理许多种跟PKI(Public Key Infrastructure)即:公钥基础建设.HTTPS(HTTP以及TLS)等相关的技术.这篇提纲挈领式的随笔文章可以提供快速的OpenSSL相关技术的命令咨询,这对于IT软件开发技术人员的日常工作来说非常的有必要. 这里主要包含了OpenSSL的一些例子,有:如何生成私钥(priv

公钥,私钥,证书

Bob,Alice和数字证书 网络安全中最知名的人物大概就是Bob和Alice了,因为很多安全原理阐述中都用这两个虚拟人物来进行实例说明. 我们来看看Bob是怎么从CA中心获得一个数字证书的: 1.Bob首先创建他自己的密钥对(key pair),包含公钥和私钥: 2.Bob通过网络把他的公钥送到CA中心,公钥中包含了Bob的个人鉴别信息(他的名字.地址.所用设备的序列号等等).这些信息是证书所必需的: 3.这个证书申请在CA中心服务器上会一直处于等待(pending)状态,直到CA中心的某人开

加密解密(2)*客户端,服务器,CA(Certificate Authority),公钥,私钥,证书,签名,验证

加密解密(2)*客户端,服务器,CA(Certificate Authority),公钥,私钥,证书,签名,验证 各角色比喻 客户端:通常为请求方,要验证服务器的身份. 服务器:通常为响应方,有时也要验证客户端的身份. C     A :全拼为Certificate Authority,就是第三方验证机构.客户端与服务器只有在CA申请了证书之后才能证明身份合法. 加   密 :客户端或服务器把数据放在箱子里,然后用钥匙(公钥或私钥)将箱子锁上,再放到网络上传输,只有有用钥匙的人才能打开箱子. 根

苹果证书和公钥私钥加密

今天看了点关于公私钥加密的内容,赶快记下省的忘记了. 这里有几个概念:公钥,私钥,加密,认证,认证中心(CA),数字证书. 公钥和私钥是属于非对称性加密,公钥和私钥是完全不同的,但是相互对应的.一把私钥只能对应一把公钥.顾名思义,公钥是对外开放的,所有人都可以获得,私钥是自己保管的. 加密与认证 基于公钥的加密 加密的目的是保证密文只能由特定人读取,其他人都不能获知里面的内容.公钥的作用就是加密.举例说明:Alices发信息给Bob.她会用Bob给的公钥对明文进行加密.Bob得到密文后,用自己的

使用keytool生成公钥、私钥、证书并且读取出来,使用私钥签名jar并验证(转)

参考链接:http://happyqing.iteye.com/blog/2139504 :https://blog.csdn.net/arjelarxfc/article/details/52461828 :https://blog.csdn.net/yangxt/article/details/1796965 在看书的时候涉及到了Java的安全加密技术,然后发现生成私钥公钥证书用的是keytool这个jdk自带插件 keytool的主要用法: keytool的几个常用的命令. 1.创建证书

https 及证实公钥私钥理解

1.发送人私钥加密,接收人公钥解密.可证明 接收人接受到的信息来源于 真正的发送人. 2.发送人用公钥加密, 接收人用私钥解密. 只要私钥未泄露,则可保证 发送的信息是安全的. 3.ca证书中心, 由于 接收人接收到的公钥有可能是假的公钥,这样会导致 接收人接收到的信息不是真的来源于持有真正私钥的发送人. 所以就引入了 第三方证书结构, 用 第三方证书机构的私钥 加密 发送方的公钥 生产 数字证书, 然后 接收人收到 数字证书后用证书机构的公钥解密 数字证书, 获取到 发送方的公钥,再用公钥验证

用openssl生成SSL使用的私钥和证书,并自己做CA签名(转)

本 文记叙的是一次基于SSL的socket通讯程序开发中,有关证书,签名,身份验证相关的步骤. 我们的场景下,socket服务端是java语言编写的,客户端是c语言.使用了一个叫做matrixssl的c语言库.自己做CA签名,不等同于“自签 名”. 自签名的情况,RSA的公钥私钥只有一对,用私钥对公钥证书做签名.而我们的场景是,自己做CA,有一个CA的公钥私钥对. 而socket的服务端也有一个公钥私钥对. 用CA的私钥对socket服务端的公钥证书做签名. openssl genrsa -ou

公钥私钥与SSL的握手协议(转)

一,公钥私钥1,公钥和私钥成对出现2,公开的密钥叫公钥,只有自己知道的叫私钥3,用公钥加密的数据只有对应的私钥可以解密4,用私钥加密的数据只有对应的公钥可以解密5,如果可以用公钥解密,则必然是对应的私钥加的密6,如果可以用私钥解密,则必然是对应的公钥加的密明白了? 假设一下,我找了两个数字,一个是1,一个是2.我喜欢2这个数字,就保留起来,不告诉你们,然后我告诉大家,1是我的公钥. 我有一个文件,不能让别人看,我就用1加密了.别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有

公钥私钥 ssl/tsl的概念

一,公钥私钥1,公钥和私钥成对出现2,公开的密钥叫公钥,只有自己知道的叫私钥3,用公钥加密的数据只有对应的私钥可以解密4,用私钥加密的数据只有对应的公钥可以解密5,如果可以用公钥解密,则必然是对应的私钥加的密6,如果可以用私钥解密,则必然是对应的公钥加的密明白了? 假设一下,我找了两个数字,一个是1,一个是2.我喜欢2这个数字,就保留起来,不告诉你们,然后我告诉大家,1是我的公钥. 我有一个文件,不能让别人看,我就用1加密了.别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有