首页 > 其他分享 >ssh原理与实践(二)

ssh原理与实践(二)

时间:2023-07-22 20:55:28浏览次数:32  
标签:协商 实践 服务端 SSH 密钥 Key 原理 ssh 客户端

主页

引言

在上一篇文章【ssh原理与实践(一)】中我们详细介绍了SSH两种常用的认证方式,在认证流程中,我们简单提到了建立安全通道的流程,安全通道的建立是客户端和服务端通信安全的基础,本文我们将主要介绍安全通道建立的流程。

本文内容组织结构如下:

  1. SSH安全通道简介
  2. SSH1安全通道的建立
  3. SSH2安全通道的建立

SSH安全通道简介

SSH协议提供了一种在不可信网络建立安全通信的方式,保证了SSH客户端和服务端在通信过程中数据的安全性。SSH建立安全通信的过程,其实就是客户端和服务端协商会话密钥的过程, 后文我们简称为密钥协商

SSH协议目前主要有SSHv1SSHv2两个版本,这两个版本在密钥协商流程上存在着较大的差异。在介绍具体协议之前,我们首先介绍下密钥协商过程中用到的几个关键密钥:

名称 生命周期 创建者 密钥类型 用途
User Key 永久 用户/客户端 非对称 客户端身份标识
Host Key 永久 管理员/服务端 非对称 服务端身份标识
Server Key 临时(定时更新) 服务端 非对称 加密会话密钥(仅用于SSH1)
Session Key 临时(会话) 客户端和服务端 对称 保密通信

说明:

  • User Key:客户端SSH公钥,由用户生成,代表SSH客户端身份,用于客户端身份认证,存储在~/.ssh/id_rsa
  • Host Key:服务端SSH公钥,由管理员生成,代表服务端身份,用于服务端身份认证,存储在/etc/ssh/ssh_host_rsa
  • Server Key:仅在SSH1中使用,定时更新(一般为一个小时),主要用于保证通信消息的前向安全, 存储在内存
  • Session Key:会话密钥与会话绑定,只在客户端和服务端本次会话中有效,用于加密通信数据。在SSH1中会话密钥为一个对称密钥,在SSH2中为一组密钥,逻辑功能上与SSH1会话密钥一致,但是提供了更高的安全性。存储在内存

上述密钥在SSH中存储和应用示意图:

  • User Key、Host Key、Server Key用于密钥协商
  • Session Key用于加密通信

SSH1安全通道的建立

SSH1密钥协商流程如下:

  1. 客户端Client访问服务端Server,触发密钥协商
  2. 客户端和服务端对SSH协议版本进行协商,并进行兼容性检查,如果不兼容,则密钥协商失败。
  3. 服务端生成Server Key和随机数,这里的Server Key用于保证前向安全,随机数用于防止重放攻击
  4. 服务端将Host Key公钥、Server Key公钥以及随机数发送给客户端,同时基于上述数据本地生成会话ID(会话ID用于标识本次会话,在【ssh原理与实践(一)】的公钥认证流程中有应用)
  5. 客户端本地生成会话ID和会话密钥(在SSH1密钥协商中,会话密钥由客户端生成,并发送给服务端)
  6. 客户端对会话密钥加密,并发送给服务端。(这里的加密用到了服务端的Server Key,由于Server Key为临时密钥,每次协商会变化,因此即使服务端Host Key被窃取,也无法恢复历史会话密钥,解密通信数据)
  7. 服务端首先使用Server Key私钥解密密文,然后使用Host Key私钥进一步解密,得到会话密钥
  8. 服务端发送确认消息,并使用会话密钥加密;客户端进行解密验证
  9. 密钥协商成功后,后续通信使用会话密钥进行加密通信

SSH2安全通道的建立

由于SSH2在安全性、扩展性以及架构上具有更大的优势,目前服务器已广泛支持SSH2版本,这里我们重点介绍下SSH2的密钥协商流程:

  1. 客户端和服务端对SSH协议版本进行协商,并进行兼容性检查,如果不兼容,则密钥协商失败。
  2. 客户端和服务端对加密套件进行协商,对后续使用的签名算法、加密算法、MAC算法进行共识。该步骤中客户端和服务端会分别发送临时随机数Cookie(Cookie用于生成会话ID)
  3. 客户端本地生成EC密钥对,并将公钥(DH密钥协商参数)发送给服务端
  4. 服务端本地生成EC密钥对,并基于客户端DH参数生成DH共享密钥(运行DH算法得到,略),最后基于DH共享密钥生成一组会话密钥,该组会话密钥又分为3组:
    • 对称加密算法的初始向量IV
    • 对称算法的密钥
    • MAC算法密钥

由于SSH2中不同方向使用的会话密钥不同,因此密钥协商一共

标签:协商,实践,服务端,SSH,密钥,Key,原理,ssh,客户端
From: https://www.cnblogs.com/informatics/p/17573764.html

相关文章

  • python多态的执行原理
    Python多态的执行原理介绍多态是面向对象编程中的一个重要概念,它允许不同类型的对象对同一方法做出不同的响应。在Python中,多态是通过方法重写和继承来实现的。本文将介绍Python中多态的执行原理,并通过代码示例来帮助理解。多态的执行流程下面是多态的执行流程,可以用表格形式展......
  • SpringCloud-Nacos配置中心实现原理(转)
    原文:https://blog.csdn.net/Zong_0915/article/details/113089265作者:Zong_0915 一.NacosConfig实现原理解析首先,NacosConfig针对配置的管理提供了4种操作):获取配置,从NacosConfigServer中读取配置。监听配置:订阅感兴趣的配置,当配置发生变化的时候可以收到一个事件。发布......
  • Llama2开源大模型的新篇章以及在阿里云的实践
    Llama一直被誉为AI社区中最强大的开源大模型。然而,由于开源协议的限制,它一直不能被免费用于商业用途。然而,这一切在7月19日发生了改变,当Meta终于发布了大家期待已久的免费商用版本Llama2。Llama2是一个由MetaAI开发的预训练大语言模型,它可以接受任何自然语言文本作为输入,并生成文......
  • 【Spring】@RequestBody的实现原理
    @RequestBody注解可以用于POST请求接收请求体中的参数,使用方式如下:@ControllerpublicclassIndexController{@PostMapping(value="/submit",produces=MediaType.APPLICATION_JSON_VALUE)publicvoidsubmit(@RequestBodyUserInfouserInfo){Sy......
  • LCD1602原理与应用
    LCD1602原理写程序要遵循硬件电路->硬件接口->软件编程三部分。LCD1602可以显示2行16个字符,用用16个引脚,主要控制端口为RS,R/W,EN。通过RS,R/W可以选择不同的读写操作:RSR/W操作00写命令01读取BUSYFlag及AC地址10写数据11读数据结合EN,可分为下......
  • ssh连接设置更改数据库名不起效果,连接127.0.0.1更换127.0.0.22也不报错
    ssh连接设置更改数据库名不起效果,连接127.0.0.1更换127.0.0.22也不报错 浏览器缓存清除后也一样。更换浏览器一样tomcat重启无效work目录全部删除无效myeclipse重新build工程无效重启myeclipse无效tomcat程序不指向工程下的webroot改为发布到webapp无效更换端口为8081的tomcat6无......
  • MapReduce原理浅析(转)
    MapReduce原理浅析 -------------------------每天学习一点点^_^-------------------------- 一个简单的应用了Map/Reduce模式的例子:http://wiki.apache.org/hadoop/WordCount   用Mapeduce来处理大数据集的过程,这个MapReduce的计算过程简而言之,就是将大数据集分解为......
  • Spring Boot中内置Tomcat最大连接数、线程数与等待数 实践调优
    在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。Tomcat是Apache基金下的一个轻量级的Servlet容器,支持Servlet和JSP。Tomcat服务器本身具有Web服务器的功能,可以作为独立的Web服务器来使用。一、SpringBoot应用......
  • springboot原理
    SpringApplication.run()执行流程:1.初始化监听器、自定义监听器。2.发布ApplicationStartedEvent事件(监听ApplicationStartedEvent方法:1、实现ApplicationStartedEvent  2、SpringApplication.addListener())3.装配参数和环境,确定是web环境还是非web环境。4.装配完环境后,......
  • GPIO工作原理
     有FT的引脚,表示可接受5V电压。1.1GPIO工作方式参考帖子:https://blog.csdn.net/k666499436/article/details/123845466?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168957959916800182714620%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D......