Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >了解SSH加密和连接过程【官方推荐教程】

了解SSH加密和连接过程【官方推荐教程】

作者头像
Jean
发布于 2019-05-23 14:50:42
发布于 2019-05-23 14:50:42
3K0
举报
文章被收录于专栏:Web行业观察Web行业观察

介绍

SSH或安全shell是一种安全协议,是安全管理远程服务器的最常用方法。使用多种加密技术,SSH提供了一种机制,用于在双方之间建立加密安全连接,向另一方验证每一方,以及来回传递命令和输出。

在其他指南中,我们讨论了如何配置基于SSH密钥的访问如何使用SSH进行连接以及一些SSH提示和技巧

在本指南中,我们将研究SSH采用的基础加密技术以及它用于建立安全连接的方法。此信息可用于了解各种加密层以及形成连接和验证双方所需的不同步骤。

对称加密,非对称加密和哈希

为了确保信息的传输,SSH在事务中的各个点采用了许多不同类型的数据操作技术。这些包括对称加密形式,非对称加密和散列。

对称加密

加密和解密数据的组件的关系确定加密方案是对称的还是非对称的。

对称加密是一种加密类型,其中一个密钥可用于加密对方的消息,也可用于解密从另一个参与者接收的消息。这意味着拥有密钥的任何人都可以加密和解密持有该密钥的任何其他人的消息。

这种类型的加密方案通常称为“共享秘密”加密或“秘密密钥”加密。通常只有一个密钥用于所有操作,或者一对密钥,其中关系易于发现,并且导出相反的密钥是微不足道的。

SSH使用对称密钥来加密整个连接。与某些用户假设的相反,可以创建的公共/私有非对称密钥对仅用于身份验证,而不是用于加密连接。对称加密允许对密码认证进行保护以防止窥探。

客户端和服务器都有助于建立此密钥,并且外部各方从不知道所产生的秘密。密钥是通过称为密钥交换算法的过程创建的。这种交换导致服务器和客户端通过共享某些公共数据并用某些秘密数据操纵它们而独立地到达相同的密钥。稍后将更详细地解释该过程。

此过程创建的对称加密密钥是基于会话的,并构成服务器和客户端之间发送的数据的实际加密。一旦建立,其余数据必须使用此共享密钥进行加密。这是在验证客户端之前完成的。

SSH可以配置为使用各种不同的对称密码系统,包括AES,Blowfish,3DES,CAST128和Arcfour。服务器和客户端都可以根据优先顺序决定其支持的密码列表。服务器上可用的客户端列表中的第一个选项用作两个方向的密码算法。

Ubuntu 14.04中,客户端和服务器都默认这样的:aes128-ctraes192-ctraes256-ctrarcfour256arcfour128aes128-gcm@openssh.comaes256-gcm@openssh.comchacha20-poly1305@openssh.comaes128-cbcblowfish-cbccast128-cbcaes192-cbcaes256-cbcarcfour

这意味着如果两台Ubuntu 14.04计算机相互连接(不通过配置选项覆盖默认密码),它们将始终使用aes128-ctr密码加密其连接。

不对称加密

非对称加密与对称加密的不同之处在于,为了在单个方向上发送数据,需要两个相关的密钥。其中一个密钥称为私钥,而另一个称为公钥

公钥可以与任何一方自由共享。它与其配对密钥相关联,但私钥不能从公钥中派生。公钥和私钥之间的数学关系允许公钥加密只能由私钥解密的消息。这是一种单向能力,这意味着公钥无法解密它写入的消息,也无法解密私钥可能发送的任何内容。

私钥应保密,绝不应与另一方共享。这是公钥范式的关键要求。私钥是唯一能够解密使用关联公钥加密的消息的组件。凭借这一事实,任何能够解密这些消息的实体已经证明它们可以控制私钥。

SSH在几个不同的地方使用非对称加密。在用于建立对称加密(用于加密会话)的初始密钥交换过程中,使用非对称加密。在这个阶段,双方都生成临时密钥对并交换公钥,以便产生将用于对称加密的共享密钥。

使用SSH进行非对称加密的更好讨论来自基于SSH密钥的身份验证。SSH密钥对可用于向服务器验证客户端。客户端创建密钥对,然后将公钥上载到其希望访问的任何远程服务器。它位于远程服务器上用户帐户主目录中authorized_keys~/.ssh目录中调用的文件中。

在建立对称加密以保护服务器和客户端之间的通信之后,客户端必须进行身份验证以允许访问。服务器可以使用此文件中的公钥来加密到客户端的质询消息。如果客户端可以证明它能够解密此消息,则表明它拥有相关的私钥。然后,服务器可以为客户端设置环境。

哈希

SSH利用的另一种形式的数据操作是加密散列。加密散列函数是创建简洁“签名”或一组信息摘要的方法。它们的主要区别在于它们永远不会被逆转,它们几乎不可能以可预测的方式影响,它们实际上是独一无二的。

使用相同的散列函数和消息应该产生相同的散列; 修改数据的任何部分应该产生完全不同的哈希。用户应该能够从给定的哈希生成原始消息,但是他们应该能够判断给定的消息是否产生给定的哈希。

鉴于这些属性,散列主要用于数据完整性目的并验证通信的真实性。SSH中的主要用途是使用HMAC或基于散列的消息验证代码。这些用于确保收到的消息文本完整且未经修改。

作为上面概述的对称加密协商的一部分,选择消息认证码(MAC)算法。通过完成客户端可接受的MAC选择列表来选择算法。将使用服务器支持的列表中的第一个。

协商加密后发送的每条消息都必须包含MAC,以便对方可以验证数据包的完整性。MAC根据对称共享密钥,消息的分组序列号和实际消息内容计算。

MAC本身作为数据包的最后部分发送到对称加密区域之外。研究人员通常建议首先加密数据,然后计算MAC。

SSH如何工作?

您可能已经基本了解SSH的工作原理。SSH协议使用客户端 - 服务器模型来验证双方并加密它们之间的数据。

服务器组件侦听指定的端口以进行连接。它负责协商安全连接,验证连接方,并在接受凭证时生成正确的环境。

客户端负责开始与服务器的初始TCP握手,协商安全连接,验证服务器的身份是否与先前记录的信息匹配,以及提供身份验证的凭据。

SSH会话分两个阶段建立。首先是同意并建立加密以保护未来的通信。第二阶段是对用户进行身份验证,并发现是否应授予对服务器的访问权限。

协商会话加密

当客户端建立TCP连接时,服务器会使用它支持的协议版本进行响应。如果客户端可以匹配其中一个可接受的协议版本,则继续连接。服务器还提供其公共主机密钥,客户端可以使用它来检查这是否是预期的主机。

此时,双方使用称为Diffie-Hellman算法的某种版本协商会话密钥。该算法(及其变体)使得每一方能够将他们自己的私有数据与来自另一系统的公共数据组合以得到相同的秘密会话密钥。

会话密钥将用于加密整个会话。用于此部分过程的公钥和私钥对与用于向客户端验证客户端的SSH密钥完全分开。

经典Diffie-Hellman的这个程序的基础是:

  1. 双方都同意一个大的素数,它将作为种子价值。
  2. 双方都同意加密生成器(通常是AES),它将用于以预定义的方式操纵值。
  3. 独立地,每一方都提出另一个素数,该号码对另一方保密。此号码用作此交互的私钥(与用于身份验证的私有SSH密钥不同)。
  4. 生成的私钥,加密生成器和共享素数用于生成从私钥派生但可以与另一方共享的公钥。
  5. 两个参与者然后交换他们生成的公钥。
  6. 接收实体使用他们自己的私钥,另一方的公钥和原始共享素数来计算共享密钥。虽然这是由各方独立计算的,但使用相反的私钥和公钥,它将产生相同的共享密钥。
  7. 然后,共享密钥用于加密随后的所有通信。

用于其余连接的共享秘密加密称为二进制数据包协议。上述过程允许每一方平等地参与生成共享秘密,这不允许一端控制秘密。它还完成了生成相同的共享秘密的任务,而无需通过不安全的通道发送该信息。

生成的秘密是对称密钥,这意味着用于加密消息的相同密钥可用于在另一侧解密它。这样做的目的是将所有进一步的通信包装在一个无法被外人破译的加密隧道中。

建立会话加密后,用户身份验证阶段开始。

验证用户对服务器的访问权限

下一阶段涉及验证用户和决定访问权限。根据服务器接受的内容,可以使用几种不同的方法进行身份验证。

最简单的可能是密码验证,其中服务器只是提示客户端输入他们尝试登录的帐户的密码。密码通过协商加密发送,因此对外方是安全的。

即使密码将被加密,由于密码复杂性的限制,通常不建议使用此方法。与其他身份验证方法相比,自动脚本可以非常轻松地破坏正常长度的密码。

最受欢迎和推荐的替代方案是使用SSH密钥对。SSH密钥对是非对称密钥,这意味着两个关联密钥服务于不同的功能。

公钥用于加密只能使用私钥解密的数据。公钥可以自由共享,因为尽管它可以加密私钥,但是没有从公钥导出私钥的方法。

在建立对称加密之后,使用SSH密钥对进行身份验证,如上一节所述。程序如下:

  1. 客户端首先向服务器发送要进行身份验证的密钥对的ID。
  2. 服务器检查authorized_keys客户端尝试登录密钥ID的帐户的文件。
  3. 如果在文件中找到具有匹配ID的公钥,则服务器生成随机数并使用公钥加密该号码。
  4. 服务器向客户端发送此加密消息。
  5. 如果客户端实际上具有关联的私钥,则它将能够使用该密钥解密消息,从而显示原始号码。
  6. 客户端将解密的数字与用于加密通信的共享会话密钥组合,并计算该值的MD5哈希值。
  7. 然后,客户端将此MD5哈希值发送回服务器,作为加密号码消息的答案。
  8. 服务器使用相同的共享会话密钥和发送给客户端的原始编号来自行计算MD5值。它将自己的计算与客户端发回的计算进行比较。如果这两个值匹配,则证明客户端拥有私钥并且客户端已经过身份验证。

如您所见,密钥的不对称性允许服务器使用公钥加密到客户端的消息。然后,客户端可以通过正确解密消息来证明它拥有私钥。使用的两种类型的加密(对称共享密钥和非对称公钥 - 私钥)都能够利用它们在此模型中的特定优势。

结论

了解SSH中的连接协商步骤和加密层可以帮助您更好地了解登录到远程服务器时发生的情况。希望您现在能够更好地了解各种组件和算法之间的关系,并了解所有这些组件如何组合在一起。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Retrofit/Okhttp API接口加固技术实践(下)
上篇加固介绍了APi单纯Post用对称加密(文中用Base64 为简单列子)加密方式,这种加密方式还是存在一定的风险,加密效率虽高,但易破解,本节将介绍怎么用非对称加密 来加解密okhttp的数据,本文采用RSA加密算法为栗子。
开发者技术前线
2020/11/23
7360
Retrofit/Okhttp API接口加固技术实践(下)
科普:什么是SSH?
SSH(Secure Shell,安全外壳)是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。传统远程登录或文件传输方式,例如Telnet、FTP,使用明文传输数据,存在很多的安全隐患。随着人们对网络安全的重视,这些方式已经慢慢不被接受。SSH协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的登录和其他安全网络服务。作为Telnet和其他不安全远程shell协议的安全替代方案,目前SSH协议已经被全世界广泛使用,大多数设备都支持SSH功能。 目录 SSH端口号是什么?SS
程序猿DD
2022/04/24
1.2K0
科普:什么是SSH?
苹果强制使用HTTPS传输后APP开发者必须知道的事
作者asher,加入腾讯多年,主要负责腾讯CDN和云业务的HTTPS开发和运营工作。
WeTest质量开放平台团队
2018/10/29
1.4K0
SSH的工作原理
SSH简介 传统的网络服务程序,比如FTP,POP,Telnet,本质上都是不安全的,因为它们在网络上用明文传送数据、用户账号和用户口令,很容易受到中间人攻击方式的攻击,攻击者会冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。 为了满足安全性的需求,IETF的网络工作小组制定了Secure Shell(缩写为SSH),这是一项创建在应用层和传输层基础上的安全协议,为计算机上的Shell提供安全的传输和使用环境。 SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协
大蟒传奇
2018/06/20
1.4K0
HTTPS终于搞懂了
近些年来,越来越多的网站使用 HTTPS 协议进行数据传输,原因在于 HTTPS 相较于 HTTP 能够提供更加安全的服务。
捡田螺的小男孩
2023/02/22
9410
HTTPS终于搞懂了
SSH初认识:了解加密、端口和连接
SSH(即安全外壳协议)是一种远程管理协议,允许用户通过 Internet 访问、控制和修改其远程服务器。SSH 服务是作为未加密 Telnet 的安全替代品而创建的,并使用加密技术来确保与远程服务器之间的所有通信都以加密方式进行。它提供了一种对远程用户进行身份验证、将输入从客户端传输到主机以及将输出中继回客户端的机制。
Lemon黄
2023/11/23
2.1K0
SSH初认识:了解加密、端口和连接
HTTPS 是如何进行安全传输的 ?
对称型密钥加密的基本原理是将明文数据通过一个加密算法和一个密钥转换成密文,然后接收方使用相同的密钥和解密算法将密文还原成原始的明文。由于加密和解密都使用同一个密钥,因此被称为对称加密。对称型密钥加密算法的特点是算法简单、速度快,适合于大量数据的加密。常见的对称型密钥加密算法包括:AES (Advanced Encryption Standard)、DES (Data Encryption Standard)、3DES (Triple DES)。
phoenix.xiao
2024/05/10
1890
HTTPS 是如何进行安全传输的 ?
深入解析HTTPS:安全机制全方位剖析
提升编程效率的利器: 解析Google Guava库之集合篇RangeSet范围集合(五)
公众号:码到三十五
2024/03/19
5460
深入解析HTTPS:安全机制全方位剖析
https通信流程
在HTTPS连接建立的过程中,SSL/TLS握手起到了至关重要的作用。它不仅是为了验证通信双方的身份,而且还要确立加密参数和会话密钥。以下是该过程的详细说明:
johnhuster的分享
2024/04/20
3060
HTTPS 是如何保证传输安全的?
HTTPS 是一种基于 SSL/TLS 加密协议的安全传输协议,用于保护在互联网上传输的数据的机密性、完整性和身份验证。HTTPS 可以有效地保护客户端与服务器之间的通信,是现代网络应用程序中广泛使用的一种安全协议。
用户1289394
2023/08/22
9910
HTTPS 是如何保证传输安全的?
了解SSH加密和连接过程 转
SSH或安全shell是安全协议,也是安全管理远程服务器的最常用方式。通过使用多种加密技术,SSH提供了一种机制,用于在双方之间建立加密安全连接,对彼此进行身份验证,以及来回传递命令和输出。
wuweixiang
2018/08/14
1.2K0
即时通讯安全篇(十一):IM聊天系统安全手段之传输内容端到端加密技术
本文由融云技术团队分享,原题“互联网通信安全之端到端加密技术”,内容有较多修订和改动。
JackJiang
2022/08/29
2.1K0
即时通讯安全篇(十一):IM聊天系统安全手段之传输内容端到端加密技术
HTTP和HTTPS的区别,看完后随便吊打面试官
下面我们来一起学习一下 HTTPS ,首先问你一个问题,为什么有了 HTTP 之后,还需要有 HTTPS ?我突然有个想法,为什么我们面试的时候需要回答标准答案呢?为什么我们不说出我们自己的想法和见解,却要记住一些所谓的标准回答呢?技术还有正确与否吗?
淘课之家
2020/03/15
3.7K1
HTTP和HTTPS的区别,看完后随便吊打面试官
HTTP原理与通信流程
HTTP是不会对请求的双方进行身份验证的,服务器不会校验客户端的身份,谁都可以向服务器发送请求,任何人都的请求都会进行响应; 客户端也不会验证响应的数据是否是由自己请求的目标服务器所发出。
vimsudoers
2020/02/29
1.1K0
Linux网络-HTTPS协议
HTTPS 零、前言 一、HTTPS协议 二、加密方式 三、中间人攻击 四、PKI 五、数字签名技术 零、前言 本章是继HTTP协议后的一篇关于HTTPS协议的拓展 一、HTTPS协议 概念及介绍: HTTP请求无论是用GET方法还是POST都是不安全的,使用HTTP协议传输的数据都是在网络里面裸奔(可以通过抓包工具抓到) HTTPS是身披SSL外壳的HTTP,是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,对数据包进行加密和解密 HT
用户9645905
2022/11/15
1.5K0
Linux网络-HTTPS协议
HTTP与HTTPS的区别,详细介绍[通俗易懂]
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
全栈程序员站长
2022/07/01
4.8K0
HTTP与HTTPS的区别,详细介绍[通俗易懂]
Spring Cloud Gateway 数字签名、URL动态加密就该这样设计!
在网络传递数据的时候,为了防止数据被篡改,我们会选择对数据进行加密,数据加密分为对称加密和非对称加密。其中RSA和AES,TLS等加密算法是比较常用的。
码猿技术专栏
2023/12/13
9890
Spring Cloud Gateway 数字签名、URL动态加密就该这样设计!
安全如何为数据库选择最佳加密方法
介绍 加密是对消息或信息进行编码以便只有授权方可以看到它的过程。加密已经进行了几个世纪。例如,在第二次世界大战中,盟军使用不成文的纳瓦霍语发送加密代码,日本人无法解码。
埃文科技
2022/05/23
7090
【HTTP】HTTPS TLS 1.2
在个人过去的读书笔记中已经介绍过一次,在这一篇文章中介绍了HTTP1.1的缺点,以及SSL、TLS的历史,之后介绍了有关SSL加密的主要加密方案:公开密钥加密 和 共享密钥加密,最后简单介绍了HTTPS的交互过程,但是书中的过程比较粗,这节我们讲细一点点。
阿东
2022/09/12
1.3K0
透视HTTPS建造固若金汤的城堡
为什么有 HTTPS?因为 HTTP 不安全! 现在的互联网已经不再是 “田园时代”,“黑暗森林” 已经到来。上网的记录会被轻易截获,网站是否真实也无法验证,黑客可以伪装成银行网站,盗取真实姓名、密码、银行卡等敏感信息,威胁人身安全和财产安全。
Bug开发工程师
2020/09/22
5110
透视HTTPS建造固若金汤的城堡
相关推荐
Retrofit/Okhttp API接口加固技术实践(下)
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档