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

 

 

原文地址:https://www.cnblogs.com/ppybear/p/12462449.html