zoukankan      html  css  js  c++  java
  • 加密解密(2)*客户端,服务器,CA(Certificate Authority),公钥,私钥,证书,签名,验证

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

     

    各角色比喻 


    客户端:通常为请求方,要验证服务器的身份。

    服务器:通常为响应方,有时也要验证客户端的身份。

    C     A :全拼为Certificate Authority,就是第三方验证机构。客户端与服务器只有在CA申请了证书之后才能证明身份合法。  

    加   密 :客户端或服务器把数据放在箱子里,然后用钥匙(公钥或私钥)将箱子锁上,再放到网络上传输,只有有用钥匙的人才能打开箱子。

    根据非对称密码学的原理,每个证书持有人(在CA认证过的人)都有一个公钥和私钥,它们成对出现,这两把密钥可以互相解密。

    证    书: 数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机构的公章)后形成的一个数字文件。

    私    钥: 私有,只能解开本公钥加密的数据(用于解密),用它加密的数据只能被本公钥解密(用于签名)。

    公    钥: 公有,只能解开本私钥加密的数据(用于验证),用它加密的数据只能被本私钥解密(用于加密)。

    签    名: 用私钥加密,签上自己的名,证明自己合法。

    验    证: 用公钥解密,验证别人是否合法。

    加密和解密:
      发送方利用接收方的公钥对要发送的明文进行加密,接受方利用自己的私钥进行解密,
      其中公钥和私钥匙相对的,任何一个作为公钥,则另一个就为私钥.但是因为非对称加密技术的速度比较慢,所以,一般采用对称加密技术加密明文,
      然后用非对称加密技术加密对称密钥,即数字信封技术.
    签名和验证:
      发送方用特殊的hash算法,由明文中产生固定长度的摘要,然后利用自己的私钥对形成的摘要进行加密,这个过程就叫签名。
      接受方利用发送方的公钥解密被加密的摘要得到结果A,然后对明文也进行hash操作产生摘要B.最后,把A和B作比较。
      此方式既可以保证发送方的身份不可抵赖,又可以保证数据在传输过程中不会被篡改。

    公钥私钥加密原理 


    1,公钥和私钥成对出现
    2,公开的密钥叫公钥,只有自己知道的叫私钥
    3,用公钥加密的数据只有对应的私钥可以解密
    4,用私钥加密的数据只有对应的公钥可以解密
    5,如果可以用公钥解密,则必然是对应的私钥加的密
    6,如果可以用私钥解密,则必然是对应的公钥加的密 

    举例


      服务器为S,它有1把私钥,4把公钥(因为公开,别人可以获取)

      客户端为C1,C2,C3,C4,它们各有一把S的公钥。

      C1 用S的公钥加密数据后,若对方能解开,说明通它是S。这样可验证服务器身份(原理2,6)

      如果C2想冒充S,它给C1发数据,C1用公钥无法解开,因为C2没有S的私钥,说明C2不合法。(原理4,5)

    公钥加密举例

      假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥。

      我有一个文件,不能让别人看,我就用1加密了。别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有我可以用
      数字2,就是我的私钥,来解密。这样我就可以保护数据了。

      我的好朋友x用我的公钥1加密了字符a,加密后成了b,放在网上。别人偷到了这个文件,但是别人解不开,因为别人不知道2就是我的私钥,
      只有我才能解密,解密后就得到a。这样,我们就可以传送加密的数据了。

    私钥签名举例

      如果我用私钥加密一段数据(当然只有我可以用私钥加密,因为只有我知道2是我的私钥),结果所有的人都看到我的内容了,因为他们都知
    道我的公钥是1,那么这种加密有什么用处呢?防止冒充,如下

      我的好朋友x说有人冒充我给他发信。怎么办呢?我把我要发的信,内容是c,用我的私钥2,加密,加密后的内容是d,发给x,再告诉他
    解密看是不是c。他用我的公钥1解密,发现果然是c。
    这个时候,他会想到,能够用我的公钥解密的数据,必然是用我的私钥加的密。只有我知道我得私钥,因此他就可以确认确实是我发的东西。
    这样我们就能确认发送方身份了。这个过程叫做数字签名。当然具体的过程要稍微复杂一些。用私钥来加密数据,用途就是数字签名

     

    总结一下


    1,公钥私钥成对出现
    2,私钥只有我知道
    3,大家可以用我的公钥给我发加密的信了
    4,大家用我的公钥解密信的内容,看看能不能解开,能解开,说明是经过我的私钥加密了,就可以确认确实是我发的了。
    5,用公钥加密数据,用私钥来解密数据
    6,用私钥加密数据(数字签名),用公钥来验证数字签名。


    在实际的使用中,公钥不会单独出现,总是以数字证书的方式出现,这样是为了公钥的安全性和有效性。

  • 相关阅读:
    Linux监控平台、安装zabbix、修改zabbix的admin密码
    LVS DR模式搭建、keepalived+lvs
    负载均衡集群相关、LVS介绍、LVS调度算法、LVS NAT模式搭建
    集群相关、用keepalived配置高可用集群
    mysql基础
    MySQL主从、环境搭建、主从配制
    Tomcat配置虚拟主机、tomcat的日志
    Tomcat介绍、安装jdk、安装Tomcat、配置Tomcat监听80端口
    FTP相关、用vsftpd搭建ftp、xshell使用xftp传输文件、使用pure-ftpd搭建ftp服务
    HTTP Status 500
  • 原文地址:https://www.cnblogs.com/zhangtan/p/5825464.html
Copyright © 2011-2022 走看看