來自UCLouvain的Fran?ois Michel 和Olivier Bonaventure在研究中思考了一個(gè)問題:如果使用最新的網(wǎng)絡(luò)技術(shù)來重新設(shè)計(jì)SSH協(xié)議,那新協(xié)議會(huì)是什么樣子呢?
Secure Shell (SSH) 協(xié)議專為遠(yuǎn)程登錄會(huì)話和其他網(wǎng)絡(luò)服務(wù)提供安全性,利用 SSH 協(xié)議可以有效防止遠(yuǎn)程管理過程中的信息泄露問題。SSH 構(gòu)建在未加密的 TCP 協(xié)議之上,提出了自己的機(jī)制來建立安全通道并執(zhí)行用戶身份驗(yàn)證。
近年來,傳輸協(xié)議設(shè)計(jì)取得了重大進(jìn)展,諸如 QUIC 等新協(xié)議提出了 TCP 的快速、安全替代方案。到 2023 年底,也就是在 SSH 協(xié)議設(shè)計(jì)出來近 30 年后,F(xiàn)ran?ois Michel 和Olivier Bonaventure根據(jù) QUIC ( RFC 9000 )、TLS 1.3 ( RFC 8446 ) 和 HTTP/3 ( RFC 9114 ) 等最新協(xié)議重新審視了 SSH 協(xié)議。與 SSHv2 相比,該新協(xié)議的功能集有所增強(qiáng)。
2023 年 12 月,《Towards SSH3: how HTTP/3 improves secure shells》論文正式發(fā)表,該研究論文提出了 SSH 協(xié)議新迭代的候選方案——SSH3。該候選方案能否成為 SSH 的第三個(gè)版本,或是成為一個(gè)單獨(dú)名稱的獨(dú)立協(xié)議,還猶未可知,需要在IETF討論之后決定。(文末附論文下載)
簡(jiǎn)而言之,SSH3 使用 QUIC 和 TLS1.3 來建立安全通道,并使用 HTTP 授權(quán)(RFC 9114、RFC 9110)機(jī)制進(jìn)行用戶身份驗(yàn)證。其中,SSH3 改進(jìn)了以下方面:
更快的會(huì)話建立;
除了傳統(tǒng)的 SSH 用戶身份驗(yàn)證之外,還包括 OAuth 2.0 ( RFC 6749 ) 和OpenID Connect (OIDC) 等 HTTP 身份驗(yàn)證方法;
對(duì)端口掃描攻擊的魯棒性,可以使 SSH3 服務(wù)器對(duì)其他互聯(lián)網(wǎng)用戶不可見;
除了經(jīng)典的 TCP 端口轉(zhuǎn)發(fā)之外,還有 UDP 端口轉(zhuǎn)發(fā);
包含現(xiàn)代 QUIC 協(xié)議允許的所有功能,包括連接遷移和多路徑連接。
為了理解這些改進(jìn)是如何實(shí)現(xiàn)的,先看一下最近標(biāo)準(zhǔn)化的 HTTP/3 協(xié)議及其提供的現(xiàn)代機(jī)制。
01
HTTP/3
HTTP/3 在 QUIC 之上提供了 HTTP/2 的特性,而不是傳統(tǒng)的 TCP 和 TLS 的經(jīng)典組合。QUIC 提供無縫連接遷移,并且很快將提供多路徑通信 ( draft-ietf-quic-multipath-06 ),實(shí)現(xiàn)平滑的網(wǎng)絡(luò)切換,從而避免 TCP 連接中斷。
Extended CONNECT HTTP 擴(kuò)展 ( RFC 9220 ) 允許應(yīng)用程序直接使用底層 QUIC 流來發(fā)送任意協(xié)議數(shù)據(jù)。HTTP 最吸引人的地方是它對(duì)用戶身份驗(yàn)證的支持。SSH 協(xié)議的關(guān)鍵部分在于會(huì)話建立,尤其是用戶身份驗(yàn)證過程。HTTP 已經(jīng)提供了一套可靠的機(jī)制來執(zhí)行用戶身份驗(yàn)證,這些機(jī)制已經(jīng)在銀行和電子商務(wù)等敏感用例中實(shí)施和使用了多年。
02
重新審視 SSH 協(xié)議架構(gòu)
有一些建議是考慮在 QUIC 協(xié)議上運(yùn)行 SSH,但這些提議僅限于在 QUIC 流中攜帶經(jīng)典的 SSH 機(jī)制 ( draft-bider-ssh-quic-09 )。與這些主張相反,SSH3 是在 HTTP/3 之上構(gòu)建的,而不是直接在 QUIC 之上構(gòu)建的,并且重新考慮了整個(gè)協(xié)議架構(gòu)。
減少會(huì)話建立
由于 QUIC 使用 TLS 1.3 進(jìn)行協(xié)議握手,SSH3 提供了比 SSHv2 快得多的會(huì)話建立速度。使用 SSHv2 建立新會(huì)話可能需要5到7個(gè)RTT:
TCP 握手;
密鑰交換和加密算法協(xié)商;
切換到用戶身份驗(yàn)證協(xié)議;
實(shí)際用戶身份驗(yàn)證;
切換到 SSH 連接協(xié)議。
依靠QUIC和HTTP/3,這個(gè)時(shí)間可以顯著減少。SSH3 可以通過以下步驟建立會(huì)話:
QUIC 握手,包括密鑰交換(在單次往返中包含了SSHv2 的步驟 1 和 2)。
等待 ENABLE_CONNECT_PROTOCOL HTTP 設(shè)置幀。
發(fā)送帶有授權(quán)標(biāo)頭集的 HTTP CONNECT 方法(包括 SSHv2 的步驟 3、4 和 5)。
當(dāng)與已知的支持基于 HTTP/3 的 SSH 的服務(wù)器通信時(shí),可以忽略步驟 2。
SSHv2會(huì)話建立(左)、SSH3會(huì)話建立(右)
這大大減少了會(huì)話建立時(shí)間,如下圖所示,在ping時(shí)間為100毫秒的網(wǎng)絡(luò)環(huán)境下,將SSH3和經(jīng)典的OpenSSH進(jìn)行了比較。
在100ms RTT的網(wǎng)絡(luò)上比較SSH3和SSH
論文中還評(píng)估并比較了 OpenSSH SSHv2 實(shí)現(xiàn)和 SSH3 原型的會(huì)話建立時(shí)間。運(yùn)行單命令非交互式 SSH 會(huì)話,并記錄建立會(huì)話、運(yùn)行單個(gè)命令和退出所需的時(shí)間。運(yùn)行的三個(gè)命令顯示在下圖的 x 軸上。
非交互式會(huì)話的完成時(shí)間
SSHv2 是經(jīng)典的 OpenSSH 實(shí)現(xiàn),而 SSHv2-nodelay 是 OpenSSH 的一個(gè)版本,研究人員對(duì)其進(jìn)行了修改,以強(qiáng)制執(zhí)行 TCP_NODELAY Linux 內(nèi)核選項(xiàng),進(jìn)一步減少 SSHv2 的會(huì)話建立時(shí)間。運(yùn)行的三個(gè)命令平均具有不同的輸出大小:df為 582 字節(jié),sysctl為 35kB , ls為 131kB 。對(duì)于每個(gè)運(yùn)行命令,與 SSHv2 和 SSHv2-nodelay 相比,SSH3 大大縮短了會(huì)話完成時(shí)間。
URL復(fù)用
HTTP/3 的一個(gè)優(yōu)勢(shì)是它提供了 URL 級(jí)別的多路復(fù)用,這是單獨(dú)使用 QUIC 無法實(shí)現(xiàn)的??梢酝ㄟ^特定 URL 訪問 SSH3 實(shí)例。首先,它可以使 SSH3 對(duì)掃描攻擊具有魯棒性。與許多基于 TCP 的應(yīng)用程序一樣,SSHv2 也會(huì)受到端口掃描攻擊。攻擊者可以通過掃描每個(gè) TCP 端口,找到響應(yīng) SSH 會(huì)話建立的端口來輕松發(fā)現(xiàn) SSH 公共服務(wù)器。一旦攻擊者發(fā)現(xiàn)公共 SSH 端點(diǎn),他們就可以嘗試對(duì)密碼進(jìn)行字典攻擊。
公共SSHv2服務(wù)器每隔幾秒鐘就會(huì)收到惡意連接嘗試
基于 HTTP/3,SSH3 服務(wù)器可以通過僅響應(yīng)在 HTTP CONNECT 請(qǐng)求中輸入特定值的 SSH3 客戶端來避免被公開發(fā)現(xiàn)。在web應(yīng)用程序中,像這樣將受保護(hù)的資源置于秘密鏈接后面是一種常見行為。然而,它只是對(duì)用戶身份驗(yàn)證過程的補(bǔ)充。SSH3 原型已經(jīng)允許將服務(wù)器放置在一個(gè)秘密鏈接后面。
SSH3 對(duì)于使用秘密 URL 的掃描攻擊具有魯棒性。不知道秘密 URL 的攻擊者無法區(qū)分 SSH3 服務(wù)器和經(jīng)典 HTTP 服務(wù)器。服務(wù)器還可以配置為丟棄主機(jī)名不正確的 QUIC 連接嘗試。
另一個(gè)優(yōu)勢(shì)是它允許 HTTP/3 代理作為 SSH3 網(wǎng)關(guān),根據(jù) CONNECT 請(qǐng)求中指定的 URL 路徑連接到不同的物理服務(wù)器。使用 HTTP 授權(quán)機(jī)制將用戶身份驗(yàn)證材料附加到請(qǐng)求。這允許在 HTTP 代理后面定位大量虛擬機(jī)或容器,并通過其特定 URL 訪問它們,如下圖所示。除了 URL 之外,還可以基于 HTTP 主機(jī)名進(jìn)行多路復(fù)用。
SSH3 原型目前僅允許基于主機(jī)名的多路復(fù)用,因?yàn)榉聪虼硇枰来韰f(xié)議才能根據(jù) URL 路徑正確轉(zhuǎn)發(fā)請(qǐng)求。
話雖如此,SSH3 用戶已經(jīng)可以依靠服務(wù)器名稱指示 (SNI) 多路復(fù)用,將其 SSH3 服務(wù)器與傳統(tǒng) HTTP/3 服務(wù)器共置在端口 443 上。基于 SNI 的多路復(fù)用還允許定義虛擬主機(jī),而無需解密 QUIC 流量,從而確保 SSH3 客戶端和服務(wù)器之間完整的端到端通信,無需充當(dāng)中間機(jī)器的代理。
基于 HTTP 的身份驗(yàn)證
SSH3 使用通用 HTTP 授權(quán)機(jī)制,并將用戶身份驗(yàn)證資料放入 CONNECT 請(qǐng)求的授權(quán)標(biāo)頭中。如果提供的標(biāo)頭足以對(duì)用戶進(jìn)行身份驗(yàn)證和授予訪問權(quán)限,則服務(wù)器將響應(yīng)200 OK HTTP響應(yīng)。SSH3 原型實(shí)現(xiàn)了三種身份驗(yàn)證技術(shù):
使用基本 HTTP 方案 ( RFC 7617 ) 的基于密碼的經(jīng)典身份驗(yàn)證。
經(jīng)典的基于公鑰的身份驗(yàn)證使用Bearer HTTP方案(RFC 6750),發(fā)送一個(gè)由用戶私鑰簽名的HTTP JWTBearer 令牌(RFC 7519)。
OIDC 身份驗(yàn)證,使用 Bearer HTTP 方案。
HTTP身份驗(yàn)證是靈活的,允許多種身份驗(yàn)證機(jī)制
SSH3 原型原生支持 OIDC,允許用戶通過其公司的身份提供商或使用自己的 Google/Microsoft/Github/… 帳戶進(jìn)行連接。
SSH3 with OIDC
未來還可以使用其他認(rèn)證方案,并且可以添加新的標(biāo)準(zhǔn)化方案,而無需太多的實(shí)現(xiàn)工作,例如最近在簽名HTTP認(rèn)證方案互聯(lián)網(wǎng)草案中提出的簽名方案。
考慮到HTTP/3協(xié)議棧的現(xiàn)代特性,該論文對(duì)SSH協(xié)議的設(shè)計(jì)進(jìn)行了重新思考。SSH3通過重用TLS 1.3的安全機(jī)制和標(biāo)準(zhǔn)HTTP認(rèn)證機(jī)制,降低了協(xié)議設(shè)計(jì)和實(shí)現(xiàn)的復(fù)雜性。與SSHv2相比,它大大減少了連接建立時(shí)間,提供了靈活的新方式來驗(yàn)證用戶,還提供了諸如UDP端口轉(zhuǎn)發(fā)和連接遷移新的功能。
審核編輯:劉清
-
TCP
+關(guān)注
關(guān)注
8文章
1353瀏覽量
79074 -
加密算法
+關(guān)注
關(guān)注
0文章
215瀏覽量
25549 -
RFC
+關(guān)注
關(guān)注
0文章
16瀏覽量
10107 -
SSH協(xié)議
+關(guān)注
關(guān)注
0文章
5瀏覽量
1612 -
TLS
+關(guān)注
關(guān)注
0文章
44瀏覽量
4251
原文標(biāo)題:假如 SSH 協(xié)議基于 HTTP/3 構(gòu)建,會(huì)是什么樣?
文章出處:【微信號(hào):SDNLAB,微信公眾號(hào):SDNLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論