公钥、私钥、证书的基本概念和使用

本文章参考了

http://www.cnblogs.com/jimshen/archive/2009/11/09/1599347.html

http://blog.csdn.net/allwtg/archive/2009/12/09/4969543.aspx

公钥和私钥的概念

在现代密码体制中加密和解密是采用不同的密钥(公开密钥),也就是公开密钥算法(也叫非对称算法、双钥算法)”,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。

证书的概念

数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机 构的公章)后形成的一个数字文件。CA完成签发证书后,会将证书发布在CA的证书库(目录服务器)中,任何人都可以查询和下载,因此数字证书和公钥一样是公开的。实际上,数字证书就是经过CA认证过的公钥。

原则:

    1、一个公钥对应一个私钥。

    2、密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。

    3、如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。

    4、如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。

    5、非对称密钥密码的主要应用就是公钥加密和公钥认证,而公钥加密的过程和公钥认证的过程是不一样的

 

基于公开密钥的加密过程

比如有两个用户Alice和Bob,Alice想把一段明文通过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:

    1、Bob将他的公开密钥传送给Alice。

    2、Alice用Bob的公开密钥加密她的消息,然后传送给Bob。

    3、Bob用他的私人密钥解密Alice的消息。

基于公开密钥的认证过程

身份认证和加密就不同了,主要用户鉴别用户的真伪。这里我们只要能够鉴别一个用户的私钥是正确的,就可以鉴别这个用户的真伪。还是Alice和Bob这两个用户,Alice想让Bob知道自己是真实的Alice,而不是假冒的,因此 Alice只要使用公钥密码学对文件签名发送给Bob,Bob使用Alice的公钥对文件进行解密,如果可以解密成功,则证明Alice的私钥是正确的,因而就完成了对Alice的身份鉴别。整个身份认证的过程如下:

    1、Alice用她的私人密钥对文件加密,从而对文件签名。

    2、Alice将签名的文件传送给Bob。

    3、Bob用Alice的公钥解密文件,从而验证签名。

公钥、私钥、证书的生成

    1、一个HTTPS服务器首先创建他自己的密钥对(key pair),包含公钥和私钥。

    2、通过网络把他的公钥送到CA中心,公钥中包含了个人鉴别信息(他的名字、地址、所用设备的序列号等等)。

    3、CA中心创建并签署一个包含公钥及个人信息的证书,从而保证密钥的确实性。

    4、使用该证书的人可以通过检验CA中心的签名(检验CA签名需要CA的公钥)来验证证书的确实性。

公钥、私钥、证书的使用

在HTTPS协议的握手阶段是公钥、私钥、证书的典型使用场景。HTTPS握手的典型时序图如下:

绘图1 

上图中实线部分是必须的,虚线部分是可选的。该流程完成了两个任务:服务器身份的验证、加密传输对称加密密钥。

1、client hello和 server hello表示双方要建立一个加密会话。

2、服务器把数字证书传输给客户端,证书中包含服务器公钥,客户端用公钥解析证书中的数字签名,可以验证服务器的身份。

3、Server Hello Done表示hello 流程结束。

4、客户端生成一个对称加密密钥,用于实际数据的加密传输,并用服务器的公钥加密,把对生成的密钥传递给服务器。同时携带一个用刚刚生成的加密密钥加密的“client finished”。

5、服务器收到对称加密密钥,并尝试用该密钥解密加密字段,如能得到明文“client finished”,认为该密钥有效,可以用于之后的数据加密传输。同时用该密钥加密“server finished”,传递给客户端。

6、客户端用对称机密密钥解密,如能得到明文“server finished”,客户端认为该服务器已经正确的接收到对称密钥。

7、加密数据传输开始。

虚线部分是服务器端要求验证客户身份。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值