zoukankan      html  css  js  c++  java
  • 公钥、私钥、数字签名、数字证书

    【参考文章】:数字签名是什么?
    【参考文章】:对称加密、非对称加密、摘要、数字签名、数字证书

    1.加密方式

    1.对称加密

    对消息进行加密和解密使用的同一个秘钥
    常见的有AES、DES加密算法
    优点:加密速度快
    缺点:安全性不高
    问题:秘钥被截获后,通信的所有信息都将被窃取。

    2.非对称加密

    包括一个公钥和私钥,总是成对出现。公钥加密的消息可以用私钥解密,私钥加密的消息可以用公钥解密。
    常见的有RSA加密算法
    优点:安全性较高
    缺点:加密速度慢
    问题:可以防止消息被窃取,不能防止伪造消息。使用公钥加密消息后,黑客可以截获消息,然后伪造消息,用公钥进行加密,把伪造的消息发送给接收方。
    私钥不被窃取,消息就是安全的

    3.两者结合

    通信之前,双方使用非对称加密方式传输对称加密算法,然后使用堆成加密算法进行加密通信

    2.消息的完整性

    2.1摘要

    通过摘要算法对一段信息进行加密得到一串字符串,一般通过摘要判断信息是否被篡改过。
    常用的有MD5、SHA算法

    2.2.数字签名

    数字签名就是对摘要进行加密后的信息。
    一般将信息和数字签名一起发送。接收方通过对信息计算出摘要,然后用公钥解密数字签名得到发送方计算的摘要,通过比对两个摘要信息就可以确定信息是否有被篡改。
    问题:不能防止伪造的公钥。发送公钥时被截获后,黑客将自己的公钥发送给接收方,然后伪装为对端身份进行通信

    3.数字证书

    由证书的权威机构(CA)用自己的私钥对用户公钥及相关信息(公钥、拥有者、有效期、证书编号等)进行加密,得到一个数字证书(包含一个CA的数字签名),然后接收方持有权威机构的公钥。
    发送消息时将数字签名和数字证书一同发送接收方,然后接收方使用权威机构的公钥解密数字证书,得到发送方的公钥及相关信息,就可以确认这个公钥是不是发送方的公钥
    通过数字证书中的CA签名,判断数字证书的内容有没有内篡改过
    然后再用解密的公钥对消息进行解密,然后再对消息计算摘要;然后把数字签名用公钥解密数字签名得到发送方的摘要,对比摘要就可以确认消息是否被篡改。

    数字证书在发送的过程中也可能被截获,如何保证数据安全呢?
    SSL认证时会客户端随机生成一个字符串,然后用公钥加密发送给服务端,服务端用私钥解密,再把该字符串发送给客户端,此时客户端通过比对随机字符串即可确定服务端是不是整正的服务器

    如果文章对您有所帮助,可以点一下推荐哦
  • 相关阅读:
    工厂方法模式
    代理模式
    观察者模式
    策略模式
    单例模式
    简单工厂模式
    lintcode:等价二叉树
    lintcode:被围绕的区域
    lintcode:二叉树的所有路径
    lintcode:快乐数
  • 原文地址:https://www.cnblogs.com/virgosnail/p/14624159.html
Copyright © 2011-2022 走看看