SSH公鑰登錄原理(轉(zhuǎn))

在平時工作中我們經(jīng)常要遠程登錄服務器,這就要用到SSH協(xié)議:

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">$ ssh user@host</pre>

主要有兩種登錄方式:第一種為密碼口令登錄,第二種為公鑰登錄

密碼口令登錄

通過密碼進行登錄,主要流程為:

1、客戶端連接上服務器之后,服務器把自己的公鑰傳給客戶端

2、客戶端輸入服務器密碼通過公鑰加密之后傳給服務器

3、服務器根據(jù)自己的私鑰解密登錄密碼,如果正確那么就讓客戶端登錄

公鑰登錄

公鑰登錄是為了解決每次登錄服務器都要輸入密碼的問題,流行使用RSA加密方案,主要流程包含:

1、客戶端生成RSA公鑰和私鑰

2、客戶端將自己的公鑰存放到服務器

3、客戶端請求連接服務器,服務器將一個隨機字符串發(fā)送給客戶端

4、客戶端根據(jù)自己的私鑰加密這個隨機字符串之后再發(fā)送給服務器

5、服務器接受到加密后的字符串之后用公鑰解密,如果正確就讓客戶端登錄,否則拒絕。這樣就不用使用密碼了。

具體做法請參考:Linux使用ssh公鑰實現(xiàn)免密碼登錄Linux

下面主要說說RSA

先介紹兩個概念:

對稱加密:對稱加密是最快速、最簡單的一種加密方式,加密(encryption)與解密(decryption)用的是同樣的密鑰(secret key)。對稱加密有很多種算法,由于它效率很高,所以被廣泛使用在很多加密協(xié)議的核心當中。對稱加密通常使用的是相對較小的密鑰,一般小于256 bit。因為密鑰越大,加密越強,但加密與解密的過程越慢。如果你只用1 bit來做這個密鑰,那黑客們可以先試著用0來解密,不行的話就再用1解;但如果你的密鑰有1 MB大,黑客們可能永遠也無法破解,但加密和解密的過程要花費很長的時間。密鑰的大小既要照顧到安全性,也要照顧到效率。對稱加密的一大缺點是密鑰的管理與分配,換句話說,如何把密鑰發(fā)送到需要解密你的消息的人的手里是一個問題。在發(fā)送密鑰的過程中,密鑰有很大的風險會被黑客們攔截。現(xiàn)實中通常的做法是將對稱加密的密鑰進行非對稱加密,然后傳送給需要它的人。

非對稱加密:非對稱加密為數(shù)據(jù)的加密與解密提供了一個非常安全的方法,它使用了一對密鑰,公鑰(public key)和私鑰(private key)。私鑰只能由一方安全保管,不能外泄,而公鑰則可以發(fā)給任何請求它的人。非對稱加密使用這對密鑰中的一個進行加密,而解密則需要另一個密鑰。比如,你向銀行請求公鑰,銀行將公鑰發(fā)給你,你使用公鑰對消息加密,那么只有私鑰的持有人--銀行才能對你的消息解密。與對稱加密不同的是,銀行不需要將私鑰通過網(wǎng)絡發(fā)送出去,因此安全性大大提高。目前最常用的非對稱加密算法是RSA算法。雖然非對稱加密很安全,但是和對稱加密比起來,它非常的慢,所以我們還是要用對稱加密來傳送消息,但對稱加密所使用的密鑰我們可以通過非對稱加密的方式發(fā)送出去。

公鑰和私鑰:

  1. 一個公鑰對應一個私鑰。
  2. 密鑰對中,讓大家都知道的是公鑰,不告訴大家,只有自己知道的,是私鑰。
  3. 如果用其中一個密鑰加密數(shù)據(jù),則只有對應的那個密鑰才可以解密。
  4. 如果用其中一個密鑰可以進行解密數(shù)據(jù),則該數(shù)據(jù)必然是對應的那個密鑰進行的加密。

RSA算法的作用:    1、加密:公鑰加密私鑰解密

主要用于將數(shù)據(jù)資料加密不被其他人非法獲取,保證數(shù)據(jù)安全性。使用公鑰將數(shù)據(jù)資料加密,只有私鑰可以解密。即使密文在網(wǎng)絡上被第三方獲取由于沒有私鑰則無法解密。從而保證數(shù)據(jù)安全性。

      1. A在自己電腦上生成RSA鑰匙文件,一個私鑰文件一個公鑰文件,并將他的公鑰傳送給B。
      2. 此時B要傳送信息給A,于是B用A的公鑰加密他的消息,然后傳送給A?!揪W(wǎng)絡上傳輸?shù)拿芪?,沒有A的私鑰無法解密,其他人獲取之后也沒用】
      3. A用他的私鑰解密B的消息。

2、認證:私鑰加密公鑰解密

主要用于身份驗證,判斷某個身份的真實性。使用私鑰加密之后,用對應的公鑰解密從而驗證身份真實性。

A要驗證B是否是真實用戶

1、B將自己公鑰給A

                            2、B將文件用自己私鑰加密傳送給A

3、A根據(jù)B的公鑰解密,如果成功則為真實身份用戶

  SSH公鑰登錄則用的是第二種功能。

  安全性: 這種算法非常[可靠](http://en.wikipedia.org/wiki/RSA_Factoring_Challenge),密鑰越長,它就越難破解。根據(jù)已經(jīng)披露的文獻,目前被破解的最長RSA密鑰是768個二進制位。也就是說,長度超過768位的密鑰,還無法破解(至少沒人公開宣布)。因此可以認為,1024位的RSA密鑰基本安全,2048位的密鑰極其安全。所以我們在用ssh-keygen命令時候要注意密鑰長度,具體參數(shù)為:

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">-b bits
指定密鑰長度。對于RSA密鑰,最小要求768位,默認是2048位。DSA密鑰必須恰好是1024位(FIPS 186-2 標準的要求)。</pre>

至少不能少于768。一般不用寫默認就是2048了。哈哈!

  總結(jié):

公鑰與私鑰使用場景:
 (1)私鑰用來進行解密和簽名,是給自己用的。
 (2)公鑰由本人公開,用于加密和驗證簽名,是給別人用的。
(3)當該用戶發(fā)送文件時,用私鑰簽名,別人用他給的公鑰驗證簽名,可以保證該信息是由他發(fā)送的。當該用戶接受文件時,別人用他的公鑰加密,他用私鑰解密,可以保證該信息只能由他接收到。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容