zoukankan      html  css  js  c++  java
  • CA,证书,公钥,私钥,加密算法常识总结

    数据传输安全要满足的要求:

    • 发送方能够确定消息只有预期的接收方可以解密(不保证第三方无法获得,但保证第三方无法解密)
    • 接收方可以确定消息是由谁发送的(接收方可以确定消息的发送方)
    • 接收方可以确定消息在途中没有被篡改过(必须确认消息的完整性)

    加密和认证

    • 加密是将数据资料加密,使别人即使获取加密数据,也无法获取正确的资料内容,重点在于数据的安全性

    通常发送者使用自己的私钥进行加密,接收者使用发送者的公钥进行解密

    • 认证是是确定数据的真实发送方,使别人无法伪造或冒充,重点在于用户的真实性

    公钥算法和私钥算法

    • 摘要算法(散列,无需密钥)

          一般有MD5(128位)和SHA1(160位),不可逆

    • 对称加密算法(DES,AES)

          又称 对称加密算法,因为这种算法解密密钥和加密密钥是相同的。也正因为同一密钥既用于加密又用于解密,所以这个密钥是不能公开的

          但是密钥不能手把手交给对方

    • 非对称加密算法(RSA,DSA)

          这种算法加密和解密的密钥不一样,一个是公钥,另一个是私钥,安全性最高,但加解密速度慢,通常比对称加密算法慢1-2个数量级

       利用的是两个大质数相乘十分容易,而对其乘积进行因素分解十分困难。这样就可以将乘积作为密钥了

       这个乘积为N值,根据两个大质数选择e和生成d,删掉两个大质数。这样(N,e)为公钥,(N,d)为私钥

         公钥无法破解出私钥。由于非对称加密的密钥生成麻烦,所以无法做到一次一密,而且其加密速度很慢,无法对大量数据加密

         因此最常用的使用场景就是数字签名和密码传输,用作数字签名时使用私钥加密,公钥解密;用作加密解密时,使用公钥加密,私钥解密。

         大部分情况都使用对称加密,而对称加密的密钥交换时使用非对称加密来保护密钥的安全

    公钥和私钥(密钥对)

    记住这句:公钥加密,私钥解密;私钥签名,公钥验签。

    必须实现如下目的:

    • 发送方将数据加密,在数据传输过程中不能被别人看到真实数据内容
    • 接收方能确定数据是发送方发送的数据,不是别人冒充

    意义和作用:

    • 公钥:是公布出去给别人用的,可以被很多人获取。用来加密和验签
    • 私钥:只能自己持有,并且不可以被其他人知道,用来解密和签名

    关系:

    • 一个公钥对应一个私钥
    • 密钥对中,让大家都知道的是公钥,自己知道是私钥
    • 用公钥加密的数据只有对应的私钥可以解密
    • 用私钥加密的数据只有对应的公钥可以解密
    • 如果用其中一个密钥加密数据,则只有对应的那个密钥才能解密
    • 如果用其中一个密钥可以解密数据,则该数据必然由对应密钥进行加密(最后两个类似当且仅当,充分必要条件)

    CA证书:

    CA是证书的签发机构,是公钥基础设施(Public Key Infrastructure,PKI)的核心。CA是负责签发证书、认证证书、管理已颁发证书的机关。
    CA 拥有一个证书(内含公钥私钥)。网上的公众用户通过验证 CA 的签字从而信任 CA ,任何人都可以得到 CA 的证书(含公钥),用以验证它所签发的证书。

    证书主要内容:

    • 公钥
    • 权威机构的签字
    • 有效期

    证书原理:

    1、CA证书中包含公钥,公钥绑定的用户信息,机构的签名。(证书中心CA会用自己的私钥对用户的公钥和相关信息加签名,生成数字证书)
    2、密钥对包含公钥和私钥。公钥公之于众,谁都可以使用。私钥只有自己知道
    3、由公钥加密的信息只能由与之相对应的私钥解密
    4、为确保只有某个人才能阅读自己的信件,发送者要用收件人的公钥加密信件;收件人用自己的私钥解密信件
    5、同样,为证实发件人的身份,发送者要用自己的私钥对信件进行签名;收件人可使用发送者的公钥对签名进行验证,以确认发送者的身份。

    证书作用:

    保密性 - 只有收件人才能阅读信息。
    认证性 - 确认信息发送者的身份。
    完整性 - 信息在传递过程中不会被篡改。
    不可抵赖性 - 发送者不能否认已发送的信息。
    保证请求者与服务者的数据交换的安全性

    根证书:

    根证书是CA认证中心给自己颁发的证书,是信任链的起始点。安装根证书意味着对这个CA认证中心的信任。
    使用证书验证需要先验证该证书的真伪,这样会构成一条证书链,证书链由根证书终结
    根证书是一份特殊的证书,它的签发者是它本身,下载根证书就表明您对该根证书以下所签发的证书都表示信任,
    而技术上则是建立起一个验证证书信息的链条,证书的验证追溯至根证书即为结束。
    所以说用户在使用自己的数字证书之前必须先下载根证书。

  • 相关阅读:
    数据库事务隔离级别和传播
    InputStreamReader和BufferedReader的区别
    SQL Server
    java.util.List.subList ,开区间和闭区间
    java中/与%的区别
    mysql 日期比较
    intellij idea 分屏设置 与快捷键
    Java 根据年月日精确计算年龄
    IntelliJ IDEA控制台Console里没有查找快捷键
    eclipse svn同步资源库时忽略某些不需要提交文件类型和文件夹
  • 原文地址:https://www.cnblogs.com/yb38156/p/14293382.html
Copyright © 2011-2022 走看看