SSH 和 TELNET連線方式與比較

(1). 查詢SSH / telnet特點、運作方式與差別

telnet:執行Telnet程式來連線到遠端伺服器並輸入帳密讓使用者可以遠端控制主機。但是因為傳輸的資料並未加密所以容易遭到竊取,因此後來多改用較安全的SSH。


SSH:是在不安全的網路上進行安全遠端登入和其他安全網路服務的協定(RFC 4251),SSH由三個主要協定組成

1.傳輸層協定(The Transport Layer Protocol):傳輸層協定提供伺服器認證,資料機密性,資訊完整性等的支援。
傳輸層協定運行在TCP連線上。

2.使用者認證協定(The User Authentication Protocol):使用者認證協定為伺服器提供客戶端的身份鑑別。
使用者認證協定運行在傳輸層協定之上。

3.連線協定(The Connection Protocol):連線協定將加密的資訊隧道復用成若干個邏輯通道,提供給更高層的應用協定使用。
連線協定運行在使用者認證協定之上。

在一個安全的傳輸層連接(傳輸層協定)被建立後,client端發送一個服務請求。 在使用者身份驗證完成後(使用者認證協定),第二個服務請求被發出。這允許新的協議被定義並與上述協議共存。連接協議提供的通道可被用於廣泛的目的(連線協定)。提供了標準方法用於建立安全的互動式shell process以及轉發任意TCP/IP埠。


SSH的安全驗證( 取自維基 )

在客戶端來看,SSH提供兩種級別的安全驗證。

第一種級別(基於密碼的安全驗證),知道帳號和密碼,就可以登入到遠端主機,並且所有傳輸的資料都會被加密。但是,可能會有別的伺服器在冒充真正的伺服器,無法避免被「中間人」攻擊。

第二種級別(基於金鑰的 安全驗證),需要依靠金鑰(SSH Key),也就是你必須為自己建立一對金鑰,並把公有金鑰放在需要存取的伺服器上。客戶端軟體會向伺服器發出請求,請求用你的金鑰進行安 全驗證。伺服器收到請求之後,先在你在該伺服器的使用者根目錄下尋找你的公有金鑰,然後把它和你傳送過來的公有金鑰進行比較。如果兩個金鑰一致,伺服器就 用公有金鑰加密「質詢」(challenge)並把它傳送給客戶端軟體。從而避免被「中間人」攻擊。

SSH協定框架中設計了大量可延伸的冗餘能力,比如使用者自訂演算法、客戶自訂金鑰規則、高層擴充功能功能性應用協定。

SSH2 對SSH1的程式碼做了大幅度的改寫, 根據SSH公司的說法, SSH2 有 98% 的程式碼和 SSH1 的不一樣。除了 SSH1 所提供的 RSA 法之外,ssh2 也提供了另外的公開金鑰編碼法以及金鑰交換法, ssh2 預設採用 DSA 編碼以及 Diffie-Hellman 金鑰交換法。此外, 更提供了 sftp, 使我們能在 ftp 方面也得到安全的保障。

(2).查詢SSL(TLS)的運作方式與金鑰交換方式

運作:

• 當客戶端連線到支援TLS協定的伺服器要求建立安全連線並列出了受支援的密碼組合(加密密碼演算法和加密雜湊函式),握手開始。

• 伺服器從該清單中決定加密和雜湊函式,並通知客戶端。 • 伺服器發回其數位憑證,此憑證通常包含伺服器的名稱、受信任的憑證頒發機構(CA)和伺服器的公鑰。

• 客戶端確認其頒發的憑證的有效性。

• 為了生成會話金鑰用於安全連線,客戶端使用伺服器的公鑰加密隨機生成的金鑰,並將其傳送到伺服器,只有伺服器才能使用自己的私鑰解密。

• 利用隨機數,雙方生成用於加密和解密的對稱金鑰。

這就是 TLS 協定的握手,握手完畢後的連線是安全的,直到連線(被)關閉。如果上述任何一個步驟失敗,TLS 握手過程就會失敗,並且斷開所有的連線。

TLS的金鑰交換使用迪菲-赫爾曼金鑰交換

它是第一個實用的在未加密連線中建立共享金鑰方法

在最初的描述中,迪菲-赫爾曼金鑰交換本身並沒有提供通訊雙方的身份驗證服務,因此它很容易受到中間人攻擊。 一個中間人在信道的中央進行兩次迪菲-赫爾曼金鑰交換,一次和Alice另一次和Bob,就能夠成功的向Alice假裝自己是Bob,反之亦然。而攻擊者 可以解密(讀取和儲存)任何一個人的資訊並重新加密資訊,然後傳遞給另一個人。因此通常都需要一個能夠驗證通訊雙方身份的機制來防止這類攻擊。

實例: HTTPS

HTTP協定和TLS同屬於應用層(OSI模型的最高層),具體來講,TLS工作在HTTP之下,傳輸層之上

TWCA可申請憑證