数字证书及相关知识

首先看一下基本概念:
1、公钥密码体制(public-key cryptography)

公钥密码体制分为三个部分,公钥、私钥、加密解密算法,它的加密解密过程如下:

  • 加密:通过加密算法和公钥对内容(或者说明文)进行加密,得到密文。加密过程需要用到公钥。
  • 解密:通过解密算法和私钥对密文进行解密,得到明文。解密过程需要用到解密算法和私钥。注意,由公钥加密的内容,只能由私钥进行解密,也就是说,由公钥加密的内容,如果不知道私钥,是无法解密的。

公钥密码体制的公钥和算法都是公开的(这是为什么叫公钥密码体制的原因),私钥是保密的。大家都以使用公钥进行加密,但是只有私钥的持有者才能解密。在实际的使用中,有需要的人会生成一对公钥和私钥,把公钥发布出去给别人使用,自己保留私钥。

 

2、对称加密算法(symmetric key algorithms)

在对称加密算法中,加密使用的密钥和解密使用的密钥是相同的。也就是说,加密和解密都是使用的同一个密钥。因此对称加密算法要保证安全性的话,密钥要做好保密,只能让使用的人知道,不能对外公开。这个和上面的公钥密码体制有所不同,公钥密码体制中加密是用公钥,解密使用私钥,而对称加密算法中,加密和解密都是使用同一个密钥,不区分公钥和私钥。

 

        // 密钥,一般就是一个字符串或数字,在加密或者解密时传递给加密/解密算法。前面在公钥密码体制中说到的公钥、私钥就是密钥,公钥是加密使用的密钥,私钥是解密使用的密钥。

 
3、非对称加密算法(asymmetric key algorithms)

在非对称加密算法中,加密使用的密钥和解密使用的密钥是不相同的。前面所说的公钥密码体制就是一种非对称加密算法,他的公钥和是私钥是不能相同的,也就是说加密使用的密钥和解密使用的密钥不同,因此它是一个非对称加密算法。

 

4、RSA简介及加密过程

简介:RSA密码体制是一种公钥密码体制(加密算法)。公钥公开,私钥保密,它的加密解密算法是公开的。 由公钥加密的内容可以并且只能由私钥进行解密,并且由私钥加密的内容可以并且只能由公钥进行解密。私钥都可以用来加密和解密,并且一方加密的内容可以由并且只能由对方进行解密

 

5、怎么样才算安全通信

要达到安全通信,必须确定两个因素:

  • 保证通信双方的真实性
  • 保证通信内容的准确性

 

 

现在来看看使用非对称机制的使用过程:

假设A向B发消息。

这是一般的非对称加密通信过程。公钥加密,私钥解密。

但这是有问题的,因为B的公钥是公开的,任何人都能用公开的公钥发送请求给B获得信息,那怎么解决呢?

那就是建立两套非对称加密的机制(即两对公私钥密钥对),在第一套非对称加密基础上发送另外一套非对称加密机制,保证密钥安全。通信双方分别用两套公私钥对来加密内容和加密验证信息,通过匹配验证信息,就可以保证通信内容和通信双方的准确性。这个问题就解决了。这就是数字签名。

 

先来看一个例子:

“客户”->“服务器”:你好

“服务器”->“客户”:你好,我是服务器

“客户”->“服务器”:向我证明你就是服务器

“服务器”->“客户”:你好,我是服务器 {你好,我是服务器}[私钥|RSA]    //第一次使用非对称加密,客户端用服务器的公钥加密,服务器用自己的私钥解密。

“客户”->“服务器”:{我们后面的通信过程,用对称加密来进行,这里是对称加密算法密钥}[公钥|RSA]      //蓝色字体部分是第二次使用到的加密算法和密钥的具体内容,客户把它们发送给服务器。

“服务器”->“客户”:{OK,收到!}[密钥|对称加密算法]

“客户”->“服务器”:{我的帐号是aaa,密码是123,把我的余额的信息发给我看看}[密钥|对称加密算法]

“服务器”->“客户”:{你的余额是100元}[密钥|对称加密算法]

在上面的通信过程中,“客户”在确认了“服务器”的身份后,“客户”自己选择一个对称加密算法和一个密钥,把这个对称加密算法和密钥一起用公钥加密后发送给“服务器”。注意,由于对称加密算法和密钥是用公钥加密的,就算这个加密后的内容被“黑客”截获了,由于没有私钥,“黑客”也无从知道对称加密算法和密钥的内容。

由于是用公钥加密的,只有私钥能够解密,这样就可以保证只有服务器可以知道对称加密算法和密钥,而其它人不可能知道(这个对称加密算法和密钥是“客户”自己加密的,所以“客户”自己当然知道内容)。这样“服务器”和“客户”就可以用对称加密算法和密钥来加密通信的内容了。

这样既保证了双方的真实性,也保证了信息不被泄露。

 

数字签名的过程:

数字签名的过程跟下面的例子很接近了。服务器收到客户端发送来的公钥,用来解密客户端发来的签名(验证信息,通过客户端私钥加密),由于客户端用服务器的公钥加密的具体通信内容其他人都不可解密(公私钥加密解密不可逆性),只需验证客户端身份,服务器就可用自己的私钥解密客户端发来的内容。

消息摘要:可将消息哈希转换成一个固定长度的值唯一的字符串。值唯一的意思是不同的消息转换的摘要是不同的,并且能够确保唯一。该过程不可逆,利用这一特性,可以验证消息的完整性。

简单解释:

A:将明文进行摘要运算后得到摘要(消息完整性),再将摘要用A的私钥加密(身份认证),得到数字签名,将密文和数字签名一块发给B。

B:收到A的消息后,先将密文用自己的私钥解密,得到明文。将数字签名用A的公钥进行解密后,得到正确的摘要(解密成功说明A的身份被认证了)。

对明文进行摘要运算,得到实际收到的摘要,将两份摘要进行对比,如果一致,说明消息没有被篡改(消息完整性)。

 

看似完美了,数据终于安全地进行通信了。但你有没有考虑过,任何人都能生成密钥对,也就是公钥和私钥,因此“黑客”只需要自己生成一对公钥和私钥,然后把公钥发送给“客户”,自己保留私钥,这样由于“客户”可以用黑客的公钥解密黑客的私钥加密的内容,“客户”就会相信“黑客”是“服务器”,从而导致了安全问题。这里问题的根源就在于,大家都可以生成公钥、私钥对,无法确认公钥对到底是谁的。

为了解决这个问题,数字证书出现了,它包含下面的具体内容:

  • 证书的发布机构
  • 证书的有效期
  • 公钥
  • 证书所有者(Subject)
  • 签名所使用的算法
  • 指纹以及指纹算法

数字证书是由权威机构——CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。数字证书可以保证数字证书里的公钥确实是这个证书的所有者(Subject)的,或者证书可以用来确认对方的身份。

 

示例:

×××××××××××××××证书内容开始×××××××××××××××××

Issuer : SecureTrust CA

Subject : ABC Company

Valid from : 某个日期

Valid to: 某个日期

Public Key : 一串很长的数字

…… 其它的一些证书内容……

{证书的签名和签名算法}[SecureTrust CA的私钥|RSA]      //这个就是"SecureTrust CA"对这个证书的一个数字签名,表示这个证书确实是他发布的,{} 表示RSA加密后的内容,[ | ]表示用什么密钥和算法进行加密。这些证书发布机构在操作系统层面就是被认可的。

   

 
数字证书的颁发过程:

CA与系统根证书
可能大家经常要听到CA这个词,那什么是CA呢,CA就是上图中的证书颁发机构,因为证书颁发机构关系到所有互联网通信的身份安全,因此一定要是一个非常权威的机构。所以这样的专门管理和颁发证书的机构就是CA机构。
CA证书可以具有层级结构,CA建立自上而下的信任链,下级CA信任上级CA,下级CA由上级CA颁发证书并认证。 如:


如果说CA保证互联网交易安全的根本保证,那么系统根证书就是个人PC安全的根本保证。系统根证书里保存了受信任的CA证书的根证书,用户验证一个数字证书的正确性都是从系统根证书开始的。
如上图中: google.com.hk的ssl证书由 Google Internet Authority G2这个CA来验证。而Google Internet Authority G2由 GeoTrust Global CA来验证; GeoTrust Global CA由系统根证书Equifax Secure Certificate Authority来验证。

如果系统根证书被篡改,系统的安全性就受到威胁。所以,不要轻易的信任根证书,除非你是开发者,了解自己的所作所为

HTTPS加密过程:

 

 

参考整理自:

http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html

http://www.cnblogs.com/SirSmith/p/4985571.html

http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

https://blog.cnbluebox.com/blog/2014/03/24/shu-zi-zheng-shu/

转载于:https://www.cnblogs.com/xiaoshengge/p/7723478.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值