美文网首页
对称加密,非对称加密,数字签名,数字证书,SSL握手

对称加密,非对称加密,数字签名,数字证书,SSL握手

作者: 雪山飞狐_91ae | 来源:发表于2018-06-21 20:15 被阅读119次

    对称密钥加密技术

    比如说有一种加密算法是把字母循环右移三位,那么如果要加密的明文是abc,则经过加密算法加密后的密文是def,这里把字母循环右移就是一种加密算法,而右移N位中的N则被称为密钥
    对称密钥加密技术即编码时所使用的密钥和解码时所使用的密钥相同。

    • 对称密钥加密技术的缺点之一就是发送者和接受者在互相对话之前一定要有一个共享的保密密钥
      这个缺点就会导致一个问题,假设A,B,C三个客户端都要和服务器X通信,那么A和,B和,C和X都要建立自己的保密密钥,然后然后各自之间才能进行安全通信。如果有N个节点,每个节点都要与其他N-1个节点通信,那么总共将需要N*N个保密密钥,这将是一个管理噩梦。

    公开密钥加密技术

    公开密钥加密技术简单的讲就是加密和解密使用的密钥不一样:一个用来对主机报文编码,一个用来对主机报文解码。编码密钥是众所周知的,但是只有主机才知道私有的解码密钥。这样每个人都能找到某个特定主机的公开密钥,密钥的建立变得更加简单。但是解密密钥是保密的,因此只有接收端才能对发送给给它的报文进行解码。


    publickey.png

    如图中节点X可以将其加密密钥ex公之于众。现在任何想向节点X发送报文的人都可以使用相同的公开密钥了,公开密钥技术避免了对称密钥加密技术中成对密钥数目的N*N的扩展问题。
    尽管每个人都可以用同一个密钥对发给X的报文进行编码,但除了X,其他人都无法对报文X进行解码,因为只有X才有解码的私有密钥。将编码密钥和解码密钥分割开来可以让所有人都能够对报文进行编码。这样,个节点向服务器安全的发送报文就变得容易了,因为他们只要查到服务器的公开密钥就可以了。

    数字证书和数字签名

    我们通过爱丽丝和鲍勃两个人来解释公开密钥加密技术:

    爱丽丝:鲍勃我要给你发一段消息,把你的公钥给我吧。
    鲍勃:OK,这是我的公钥:234nkjdfdhjbg324
    爱丽丝:收到公钥,我给你发送的消息经过公钥加密之后是这样的:@#@!$%*(@
    鲍勃:好的,收到你的密文了,我来用我的密钥解密。

    这个过程安全吗?看似很安全。即使查理截取了密文和公钥,没有私钥还是不能对密文解密。
    但是如果查理收到了爱丽丝要给鲍勃发送消息并询问公钥这个消息,然后冒充鲍勃给爱丽丝发送自己的公钥,那么爱丽丝就会用查理给的公钥加密自己的密文,这样查理就可以用自己的私钥来对密文进行解密。这样不就泄漏信息了嘛。因此我们需要知道这个公钥到底是不是鲍勃提供的。于是就有了数字证书的概念。
    数字证书的内容如下:

    • 证书格式版本号
    • 证书序列号
    • 证书签名算法
    • 证书颁发机构
    • 有效期
    • 对象名称
    • 对象的公钥
    • 数字签名
      其中的证书颁发者一般是某个受信任的组织,也就是这个具有权威的受信任的组织来担保这个证书的可信度。
      证书中还包含要证明的这个对象所使用的公钥。
      为了证明数字证书没有被修改过,于是就有了数字签名的概念。
      数字签名就是对整个证书利用证书签名算法生成一个hash值hash-a,然后证书颁发机构利用自己的私钥对hash-a加密得到数字证书。如果别人截取了证书然后更改了内容,那么这个证书传到了客户端手里,客户端利用证书签名算法对整个证书计算得到hash-b,然后利用证书签名机构的公钥对数字签名进行解密得到hash-a,如果hash-a=hash-b,则数字证书没有被修改过,否则被修改过。
      梳理一下整个过程是这样的:
    • 当爱丽丝第一次开启一个浏览器去访问鲍勃的时候,鲍勃会先让爱丽丝安装一个数字证书,这个数字证书里面的主要信息就是证书颁发机构的公钥。
    • 然后鲍勃送来了证书颁发机构送个自己的数字证书,爱丽丝利用数字证书中的证书签名算法对整个证书计算得到hash-b,然后利用第一步中得到的证书颁发机构的公钥对数字签名进行解密得到hash-a,如果hash-a=hash-b,则没有被修改。

    SSL协议的握手过程

    • 1.爱丽丝给出SSL协议版本,客户端支持的加密方法,一个客户端随机数random1.
    • 2.鲍勃收到消息后,确认加密算法,返回一个数字证书,并产生一个服务器端随机数random2给爱丽丝。
    • 3.爱丽丝确认数字证书的有效性后 生成一个客户端随机数random3,并利用数字证书中的公钥对随机数加密,送个哦鲍勃。
    • 4.鲍勃使用自己的私钥解密爱丽丝发来的随机数random3。(3,4步已经用了公开加密技术)。
    • 5.爱丽丝和鲍勃使用约定的加密方法,使用random1,random2,random3生成对话密钥,用来加密接下来的通信内容。
      SSL握手过程.png
      参考:SSL协议之数据加密过程详解

    相关文章

      网友评论

          本文标题:对称加密,非对称加密,数字签名,数字证书,SSL握手

          本文链接:https://www.haomeiwen.com/subject/hxpcyftx.html