SSL/TLS 和 SSH 先容以及他们的区别

[复制链接]
发表于 2025-10-10 03:36:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
SSL/TLS

干啥的? :SSL(Secure Sockets Layer) 和 TLS(Transport Layer Security) 是一种用于在网络通讯中提供安全性的协议。它们的告急目标是在客户端(如欣赏器)和服务器之间创建加密毗连,确保数据传输的安全性和隐私性。
SSL 是早期的安全协议,TLS 是 SSL 的继任者,修复了 SSL 中的许多安全毛病。提供了更安全和高效的通讯机制。
SSL有多个版本(SSL 1.0、2.0、3.0),但因安全性标题,SSL 3.0 及以下版本已被废弃。
TLS版本包罗 TLS 1.0、1.1、1.2 和 1.3。当前保举使用 TLS 1.2 或更高版本,由于它们提供了更好的安全性。
SSL/TLS工作原理的焦点步调

握手阶段(Handshake Protocol)

(1)客户端向服务器发送一个 ClientHello 消息,包罗以下信息:
● 支持的 SSL/TLS 版本(如 TLS 1.2 或 TLS 1.3)。
● 支持的加密套件列表(Cipher Suites),包罗加密算法和哈希算法。
● 客户端随机数(Client Random),用于后续密钥天生。
● 可选的扩展字段(如支持的压缩方法、ALPN 协议等)。
(2)服务器选择一个双方都支持的加密套件,并返回一个 ServerHello 消息,包罗以下信息:
● 确定的 TLS 版本。
● 选定的加密套件。
● 随机数(Server Random),用于后续密钥天生。
● 可选的会话 ID(Session ID),用于会话规复。
(3)服务器证书(Server Certificate)
服务器向客户端发送其数字证书,包罗公钥和其他身份信息。
(4)客户端验证证书
(5)Server Key Exchange(可选)
假如选定的加密套件必要额外的密钥参数(如 Diffie-Hellman 参数),服务器会发送 Server Key Exchange 消息。
(6)Server Hello Done
服务器发送 Server Hello Done 消息,体现服务器已完成握手消息的发送。
(7)预主密钥互换(Key Exchange)
   预主密钥(Pre-Master Secret)→ 主密钥(Master Secret)→ 会话密钥(Session Keys)
● 预主密钥的作用:作为初始的机密值,提供一个随机且安全的变量因子天生主密钥。
● 主密钥的作用:作为中心密钥,提供更高的安全性和随机性扩展。
● 会话密钥的作用:现实用于数据加密息争密。
为啥不消预主密钥 直接天生 会话密钥,非要引入 主密钥呢?
1、加强安全性:预主密钥(Pre-Master Secret) + 客户端随机数(Client Random)+ 服务器随机数(Server Random)天生主密钥(Master Secret),增长了复杂性和不可猜测性。
2、提供随机性扩展:预主密钥的长度通常是固定的(比方 48 字节),而主密钥可以通过 PRF 扩展为恣意长度。
客户端随机数 + 服务器随机数 可以很容易被获取,天生主密钥为啥还用他?
固然客户端随机数(Client Random)和服务器随机数(Server Random)在握手阶段会被明文传输,看似容易被获取,但它们在主密钥天生中的作用是不可更换的。
1、这些值本身是动态天生的,而且每次毗连都会差别。这种动态性使得攻击者无法提前猜测或重用之前的密钥天生过程。
2、客户端随机数和服务器随机数确保了每次毗连的唯一性。假如攻击者试图重放之前的通讯数据,新的随机数会使得天生的主密钥和会话密钥完全差别,从而制止重放攻击。
3、支持前向安全性,纵然长期密钥(如服务器私钥)被泄漏,攻击者也无法推导出之前的主密钥和会话密钥。
  常用密钥互换算法
   ● RSA 密钥互换
原理:客户端天生一个随机的预主密钥(Pre-Master Secret)。使用服务器的公钥(从证书中提取)加密预主密钥,并发送给服务器。服务器使用本身的私钥解密,得到预主密钥。
长处:实现简朴,易于摆设。
缺点:假如服务器私钥泄漏,全部汗青通讯都大概被解密。
● Diffie-Hellman 密钥互换(DH 、ECDH、ECDHE)
Diffie-Hellman 加密协议先容 (DH,DHE,ECDHE)
  (8)天生会话密钥(Key Derivation)
● 盘算主密钥(Master Secret)
预主密钥(Pre-Master Secret) + 客户端随机数(Client Random)+ 服务器随机数(Server Random),通过特定算法盘算出主密钥(Master Secret)。
    主密钥盘算的位置
客户端 和 服务器 各自独立完成主密钥(Master Secret)的盘算。
为什么不在一个地方盘算?
安全性:假如主密钥只在一方盘算,另一方必要通过网络吸收主密钥,这会增长被窃听或篡改的风险。
假如不同等怎么办?
主密钥盘算完成后,客户端和服务端会进一步使用主密钥派生出会话密钥,并用这些会话密钥加密后续的通讯数据。假如主密钥不同等,天生的会话密钥会差别,加解密会出标题,从而检测到标题。
  ● 派生出会话密钥(Session Keys)
主密钥派生出其他秘钥
● 会话密钥 用于 数据加密
● MAC密钥 用于 完备性验证
(9)更改加密状态(ChangeCipherSpec)
ChangeCipherSpec 消息本身非常简朴,只包罗一个字节的数据。其值固定为 0x01,体现“切换加密模式”的指令。
客户端和服务器分别发送 ChangeCipherSpec 是用来关照对方 “我已经预备好使用我们协商好的加密算法和密钥举行加密通讯了。”
SSL/TLS 协议规定:
● 假如 ChangeCipherSpec 消息在网络中丢失或乱序,TCP 层会主动重传或重新排序。
● 客户端必须先发送 ChangeCipherSpec 和 Finished 消息。服务器在吸收到这些消息后,才会发送本身的 ChangeCipherSpec 和 Finished 消息。
1、客户端发送 ChangeCipherSpec
客户端完成密钥协商后,发送 ChangeCipherSpec 消息,体现将切换到加密状态。
2、客户端发送 Finished 消息
紧接着 ChangeCipherSpec,客户端发送加密的 Finished 消息。(Finished消息是第一个使用协商好的加密算法和会话密钥掩护的消息)
3、服务器吸收并处理惩罚
● 服务器吸收到客户端的 ChangeCipherSpec 后,切换到加密状态。
● 服务器实行解密客户端的 Finished 消息。假如解密乐成且验证Finished消息乐成,则阐明:客户端已经完成了密钥协商且和服务端秘钥同等。且客户端发送了 ChangeCipherSpec 消息,并切换到了加密状态。
4、服务器发送 ChangeCipherSpec
服务器完成密钥协商后,发送 ChangeCipherSpec 消息给客户端,体现将切换到加密状态。
5、服务器发送 Finished 消息:
紧接着 ChangeCipherSpec,服务器发送加密的 Finished 消息。
6、客户端吸收并处理惩罚:
● 客户端吸收到服务器的 ChangeCipherSpec 后,切换到加密状态。
● 客户端实行解密服务器的 Finished 消息。假如解密乐成且验证Finished消息乐成,则阐明:服务器已经完成了密钥协商且和客户端秘钥同等。且服务端已经发送了 ChangeCipherSpec 消息,并切换到了加密状态。
    服务器切换到加密状态的机会
第一次切换:当服务器吸收到客户端的 ChangeCipherSpec 消息后,切换到加密状态以解密客户端的 Finished 消息。
第二次切换:当服务器发送本身的 ChangeCipherSpec 消息后,再次确认切换到加密状态以发送加密的 Finished 消息。
服务器的加密状态切换是双向的,既依靠于客户端的活动(吸收到客户端的 ChangeCipherSpec),也依靠于自身的动作(发送本身的 ChangeCipherSpec)。这种筹划确保了握手过程的安全性和同等性。
客户端切换到加密状态的机会
第一次切换:当客户端完成密钥协商后,发送本身的 ChangeCipherSpec 消息时,切换到加密状态以发送加密的 Finished 消息。
第二次切换:当客户端吸收到服务器的 ChangeCipherSpec 消息后,再次确认切换到加密状态以解密服务器的加密消息。
    假如一方没有收到对方的 ChangeCipherSpec 消息怎么办?
假如一方没有及时收到对方的 ChangeCipherSpec 消息,通常会有以下几种处理惩罚方式:
超时重传:假如一方在公道的时间内没有收到对方的 ChangeCipherSpec 消息,它大概会重新发送 ChangeCipherSpec 消息,大概触发握手超机会制,重新发起握手。
握手失败:假如多次重传后仍未收到对方的相应,握手将被视为失败,毗连会被关闭。
  (10)握手完成(Finished)
Finished 消息包罗一个基于主密钥,标签,握手汗青的哈希值,用于验证完备性,确保握手未被篡改。
● 标签是一个固定的字符串,客户端:“client finished”,服务器:“server finished”
● 握手消息(Handshake Messages)是指从 Client Hello 到 Change Cipher Spec 之间的全部握手消息的拼接内容。
具体流程
参考上文ChangeCipherSpec的流程,假如双方的 Finished 消息匹配,则握手乐成,进入加密通讯模式。
    怎样验证Finished消息?
1、客户端吸收到服务器发送的 Finished 消息后,提取此中的 VerifyData。
2、客户端使用雷同的 PRF 算法,团结(主密钥,标签,握手汗青纪录)重新盘算 VerifyData:
3、假如客户端盘算出的 VerifyData 与吸收到的 VerifyData 同等,则阐明:
● 服务器使用的主密钥精确。
● 握手过程中全部消息未被篡改。
同样地,服务器验证客户端的 Finished 消息也如上步调。假如任一方的验证失败,握手将停止,毗连会被关闭。
  加密通讯阶段(Encrypted Communication Phase)

(1)对称加密
使用握手阶段天生的会话密钥(Session Key)对数据举行加密息争密。
(2)消息认证码(MAC)
每条消息都附带一个 MAC,用于确保数据的完备性。
(3)重新协商(可选)
假如客户端和服务器渴望在未来的毗连中快速规复会话,可以使用会话 ID 或会话单子(Session Ticket)机制。
会话规复制止了重新实行完备的握手过程,从而进步了性能。
会话规复(Session Resumption)

为了进步服从,SSL/TLS 提供了会话规复机制,制止每次毗连都重新举行完备的握手。
(1)会话 ID
在握手阶段,服务器分配一个唯一的会话 ID。
客户端可以在后续毗连中使用该会话 ID 来规复之前的会话。
(2)会话单子(Session Ticket)
服务器可以将加密的会话状态存储在客户端(称为会话单子)。
客户端在后续毗连中提交会话单子以规复会话。

SSH

Secure Shell Protocol(安全外壳协议),SSH 可以创建一个加密的“隧道”,将其他非加密协议(如 HTTP、SMTP)封装在此中,确保数据传输的安全性。
SSH 加密机制的焦点步调

1)创建 TCP 毗连
客户端与服务器通过 TCP 协议创建初始毗连。这是全部后续通讯的底子。
2)版本协商
双方互换 SSH 协议版本信息(如 SSH-2.0),确保双方使用雷同的协议版本。
3)算法协商
客户端和服务器协商以下参数:
● 密钥互换算法: 如 Diffie-Hellman(DH)、ECDH 等。
● 加密算法: 如 AES、ChaCha20 等。
● MAC 算法: 如 HMAC-SHA256 等。
● 压缩算法: 如 zlib 等。
4)密钥互换
(1)天生共享密钥
使用 DH 或 ECDH 算法举行密钥互换。双方基于公钥暗码门生成一个共享的机密值(Shared Secret)。
(2)盘算会话密钥
根据共享的机密值、互换的随机数以及其他参数,派生出会话密钥(Session Key)。会话密钥用于后续的对称加密通讯。
    怎样验证共享机密的同等性?
1、共享机密被用来派生出会话密钥,假如双方可以大概乐成解密对方的消息,则阐明共享机密同等。(这条能阐明不能解密那么他们肯定是不同等的,但是能解密不愿定就代表是同等的,由于不愿定包管解密内容是对的的)
2、消息认证码(MAC):每条消息附带一个 MAC 值,用于验证消息的完备性和共享机密的同等性。(MAC能包管解密内容也是对的,团结第一条,既能解密,解密内容又是对的,如许就包管了共享机密肯定是同等的)
  4)客户端验证服务器的身份
1、服务器向客户端发送本身的公钥证书(通常是基于 RSA 或 ECDSA 的公钥)。
2、客户端验证服务器的公钥是否可信(通常通过 CA 或当地信托存储)。
3、假如验证失败,毗连将被停止。
5)客户端向服务器证实本身的身份
● 暗码认证: 用户输入暗码,服务器验证暗码是否精确。
● 公钥认证:
1、服务器天生一段随机数据(挑衅数据),并将其发送给客户端。
2、客户端收到挑衅数据后,用本身的私钥对这段数据举行署名。
3、客户端将署名发送回服务器。
4、服务器用客户端的公钥(私钥生存在客户端,公钥上传到服务器,这就是我们寻常设置的公钥)解密署名,得到原始的哈希值。服务器重新盘算挑衅数据的哈希值,并与解密后的哈希值举行比力。假如两者同等,则证实署名有效,客户端身份验证乐成。假如不同等,则验证失败。
    为什么必要挑衅数据?
防止重放攻击:每次认证过程中的数据都是唯一的,攻击者无法通过重放旧的署名来通过认证。
验证私钥持有者:只有拥有对应私钥的客户端才气天生有效的署名,从而证实本身是合法用户。
  ● 其他方式: 如键盘交互认证、GSSAPI 认证,单点登录(SSO)等。
6)加密通讯
客户端和服务器开始使用协商好的对称加密算法和共享的秘钥(session key)加密全部后续通讯。
具体包罗:
● 数据加密: 全部传输的数据都颠末对称加密,确保机密性。
● 消息认证: 每条消息都附带 MAC(消息认证码),确保数据的完备性和防止篡改。
● 序列号: 每条消息都有唯一的序列号,防止重放攻击。
SSH长处
● 安全性高,得当私有数据的传输。
● 提供机动的身份验证方式。
● 支持双向通讯(既可读取也可写入)。
SSH缺点
● 设置较复杂(私钥生存在客户端,公钥上传到服务器)。
● 大概受防火墙限定(必要开放 SSH 端口,默以为 22)。
SSH使用场景
1、远程登录:体系管理员可以通过 SSH 登录到远程服务器,实行各种管理任务。 告急由于:SSH确保在客户端与服务器之间传输的全部数据(包罗登录根据、下令和输出)都颠末加密。纵然网络环境不安全(如公共 Wi-Fi),也能包管通讯的安全。
2、文件传输:SSH 提供了基于其加密通道的文件传输协议(SFTP),可以安全地上传或下载文件。 告急由于:和1缘故原由同等。
3、SSH 支持端口转发功能 : 告急由于:SSH 协议本身提供了一个安全的加密通道,全部通过该通道传输的数据都会被加密。当使用端口转发时,SSH 将其他协议的流量(如 HTTP、SMTP)封装到其加密通道中举行传输。这种加密机制确保了转发的流量在传输过程中不会被窃听或篡改。
SSH 和 SSL 区别

SSL/TLSSSH使用证书机制验证服务器身份使用证书机制验证服务器身份密钥互换算法包罗 RSA、DH、ECDH 等密钥互换算法包罗 DH 或 ECDH支持多种用户身份验证方式(如暗码、公钥、键盘交互)握手完成后进入加密通讯阶段握手完成后进入加密通讯阶段中心层协议,可以封装恣意应用层协议特定的应用场景(如远程登录、文件传输)更注巨大规模数据传输的性能优化更注意交互式会话的性能优化
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表