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,主要指远程登录

     

     

  • 相关阅读:
    DHTML【11】--DOM
    sql 查询强制使用HASH连接性能测试比较
    Winform开发框架之读卡器和条码扫描枪的数据接收处理
    DevExpress的XtraReport和微软RDLC报表的使用和对比
    sql server日期时间转字符串
    C#在线更新程序[下载程序、解压缩程序、控制台程序]
    C# 定时器事件(设置时间间隔,间歇性执行某一函数,控制台程序)
    用C#用C#实现窗体在规定时间弹出,例如:10:00.弹出后关闭。并在5分钟后再次弹出。5次后停止。最好有具体代码实现窗体在规定时间弹出,例如:10:00.弹出后关闭。并在5分钟后再次弹出。5次后停止。最好有具体代码
    C#多线程学习之(五)使用定时器进行多线程的自动管理
    C# 文件与目录的基本操作(System.IO)
  • 原文地址:https://www.cnblogs.com/ppybear/p/12462449.html
Copyright © 2011-2022 走看看