zoukankan      html  css  js  c++  java
  • RSA和AES 的区别, 及ssh工作原理

    1. AES 对称加密

    (1)加密方和解密方适用同一个秘钥

    (2)加密解密的速度比较快,适合数据比较长时使用

    (3)秘钥传输过程不安全,而且秘钥管理也麻烦

    2.RSA 非对称加密

    (1)算法强度复杂,其安全性依赖于算法与秘钥

    (2)加密解密的速度远远低于对称加密算法,不适用于数据量较大的情况

    (3)非对称加密算法有两种密钥,其中一个是公开的,所以在密钥传输上不存在安全性问题,使得其在传输加密数据的安全性上又高于对称加密算法。

    3. RSA + AES

    SSH即利用的RSA+AES

    (1)RSA被用来在会话初始化阶段为通信双方进行会话秘钥的协商。

    (2)由于非对称加密的计算量开销比较大,因此一旦双方的会话秘钥协商完成,后续的加密都将采用AES加密进行

    使用tcpdump+wireshark抓包并查看ssh建联过程如下:

    SSH的实现:

    (1)基于口令的认证:

    第一次登录的时候,client要对server的公钥进行认证。(https中可以通过CA进行公正,可是SSH的publish key和private key都是自己生成的,没法公正,只能通过Client端自己对公钥进行确认),确认的信息提示如下

     Client输入确认输入yes之后

    该host已被确认,并被追加到文件known_hostszhong ,然后就需要输入密码, 进行验证之后就登陆成功了。

    (2)基于公钥认证

    口令认证,每次登陆都需要输入密码。基于公钥认证,不需要输入口令密码,但是需要Client端手动copy public key到Server端。然后进行认证

     

    1.生成秘钥操作:ssh-keygen是用于生产密钥的工具

           ~/.ssh中的四个文件:

           

      • id_rsa:保存私钥
      • id_rsa.pub:保存公钥
      • authorized_keys:保存已授权的客户端公钥
      • known_hosts:保存已认证的远程主机ID

      四个角色的关系

      

      注意:一台主机可能既是Client,也是Server。所以会同事拥有authorized_keys和known_hosts

           1.Client将自己的公钥存放在Server上,追加在文件authorized_keys中。

    2.Server端接受到Client端的请求后,会在authorized_keys中匹配到Client的公钥pubkey,并生成随机数R

    用Client的公钥对该随机数加密得到pubKey(R),然后将加密后信息发送给Client

    3.Client通过私钥解密得到R。然后对 R 和本次会话SessionKey利用MD5生成摘要Digest1,发给Server端

    4.Server端也会对R 和SessionKey利用同样算法生成Digest1

    5.Server端比对Digest1和Digest2是否相同,完成认证过程

     

     

    (3)ssh工具

    a.server端:sshd,端口22

    b.client端:ssh user@host

    c.批量执行:pssh

    pssh - 在过个主机上并行运行命令

    pscp - 把文件并行复制到多个主机上

    prsync - 通过rsync协议吧文件高效并行复制到多个主机上

    pslurp - 把文件并行地从多个远程主机复制到中心主机上

    pnuke - 并行地在多个远程主机上杀死进行

    (4)SSH和HTTPS的区别

    a. SSH的原理和HTTPS差不多,都是基于TCP和非对称加密进行的应用层协议

    b. HTTPS通过数字证书和数字证书认证中心来防止中间人攻击

        SSH服务器的公钥没有人公正,只能通过Client人工确认Server端的公钥指纹来确认身份

     

    (5)总结

    本文涉及到的SSH,主要指远程登录

     

     

  • 相关阅读:
    建造者(Builder)模式
    模板方法模式(Tempalte Method Pattern)
    NIO Socket编程实例
    Java NIO概述
    转:Java中的Clone()方法详解
    调停者(Mediator)模式
    门面(Facade)模式
    struts2中方法拦截器(Interceptor)的中的excludeMethods与includeMethods的理解
    Struts2默认拦截器配置
    struts2的json-default和struts-default的区别
  • 原文地址:https://www.cnblogs.com/ppybear/p/12462449.html
Copyright © 2011-2022 走看看