ssh非對稱加密詳解(git)

2021-09-11 19:01:43 字數 2338 閱讀 9245

git主要使用四種協議來進行資料的傳輸:

1)本地傳輸

2)git協議

3)ssh協議

4)http協議

其中ssh協議和http協議是最常見的兩種協議了。

ssh協議則是唯一同時支援讀寫操作的協議,很多企業內部在架設git伺服器的時候,都會提供ssh協議來傳輸資料。

ssh協議的安全性體現在其使用了公鑰加密,而其實用性和安全性的另外乙個體現,則是提供了公鑰登陸的機制。

只要將我們的公鑰放上伺服器,由git伺服器進行管理,我們就不用每一次推送都要輸入密碼,方便了我們的推送操作。

在gitlab或者csdn的code上面,都有乙個ssh公鑰管理頁面,如下:

那麼ssh公鑰到底是什麼,為什麼要新增ssh公鑰呢,怎麼生成ssh公鑰呢?

公鑰私鑰,是非對稱加密中的概念,是相對於對稱加密而言的。

所謂加密,就是將人人都能看懂的內容變成了莫名奇妙的內容,但是你跟我能夠去解讀它,而其他人則不行。

這就等於給內容加上了一把鎖。

而你跟我,手上都有一把鑰匙,所以我們都能去開啟這把鎖,從而看到裡面的裡容。那麼這把鑰匙,就是對應的金鑰。

比如下面這個例子:

我:

wygdlkd

pejf

ktqn 。

你:。。。

我:五筆!

你:哦!

在這裡,「五筆」就是一種金鑰。你只要知道了這個金鑰,你馬上就能夠知道我在說什麼了。

如果加密解密都是用同乙個金鑰,就叫做對稱加密。

不過在網路傳輸中,如果你不把這個金鑰也傳給對方的話,對方也就無法知道你在說什麼了。

但如果你將金鑰也通過網路傳輸出去,金鑰就有可能被別人擷取,那麼你的內容也就有可能被破解了。

而在非對稱加密中,則會產生一對金鑰,比如說keya和keyb,滿足下面兩條規則:

1)用keya加密過的內容,只有keyb能夠解密。

2)用keyb加密過的內容,則只有keya能夠解密。

而我們會將其中乙個金鑰(比如keya)公開給外面的人使用,這就叫公鑰。

另外乙個金鑰(比如keyb)則由自己私人儲存著,這就叫私鑰。

我們假設每個人都有這樣一對公鑰跟私鑰,我們都知道彼此的公鑰。

那麼,如果我要傳資料給你,我就會拿你的公鑰來對這些資料進行加密。這樣,這些加密過的資料就只有你能解開了,因為只有你有私鑰。

同樣的,如果你要傳資料給我,你就可以拿我的公鑰來加密,然後再傳給我,這樣也不怕別人擷取,因為它們也解不開。

利用非對稱加密的公鑰私鑰,我們就可以只傳輸資料,而不用去傳輸解密的金鑰,從而避免了對稱加密的不足。

ssh的安全性就在於其利用了公鑰加密這種機制。

上面所說的,是用公鑰加密來保證資料在傳輸中的安全性。而用私鑰加密則可以幫助我們進行乙個身份的驗證,而這也就是ssh公鑰登陸的原理。

根據非對稱加密的規則,用其中乙個金鑰加密的資料只有另外乙個金鑰才能解開。

也就是說,如果我收到你傳過來的乙份資料,能夠用你的公鑰解開,這說明,這資料是用你的私鑰來加密的,而這個私鑰只有你乙個人有,那麼就說明這份資料的確就是你的。

這就正好驗證了你的身份。

git伺服器的ssh公鑰管理機制正是利用這一點來實現身份的檢查了。

1)首先我們會將公鑰儲存在git伺服器上。

2)當客戶端連線git伺服器的時候,伺服器會隨機生成一串字串,並將其傳送給客戶端。

3)我們的私鑰是儲存在本地的。當客戶端收到伺服器傳回來的隨機字串的時候,客戶端會利用本地的私鑰進行加密,並將加密後的資料傳回給伺服器。

4)伺服器收到客戶端加密的資料,會利用該使用者事先儲存的公鑰進行解密,如果解密成功,並且跟原先的字串一致,則驗證了該使用者的身份,連線建立。

上面這幾步,其實就是ssh公鑰登陸的機制。

而從其他的角度來說,這種利用私鑰加密的過程,其實就是在對資料進行簽名,所以也叫數字簽名。

我們可以利用ssh-keygen命令來生成一對金鑰:

passphrase是對使用這個金鑰的密碼,可以留空,也可以輸入。

而命令完成之後,就會在當前目錄下生成一對key,其中以.pub結尾的檔案,則是我們對應的公鑰了,可以將其放到git伺服器上了。

關於非對稱加密,其實還涉及到很多其他方面的知識,比如我現在想傳一些資料給你,想拿你的公鑰來加密,但是我應該去哪拿你的公鑰呢?我又怎麼知道我拿到的公鑰就真的是你的呢?這就涉及到ca證書機構等方面的知識了。。。

結束。

SSH協議(從對稱加密到非對稱加密)

ssh 為 secure shell 的縮寫,由 ietf 的網路小組 network working group 所制定 ssh 為建立在應用層基礎上的安全協議。ssh 是目前較可靠,專為遠端登入會話和其他網路服務提供安全性的協議。利用 ssh 協議可以有效防止遠端管理過程中的資訊洩露問題。簡單來...

對稱加密 非對稱加密

區別在於加密金鑰和解密金鑰是否一樣,一樣則是對稱加密,不一樣則是非對稱加密。對稱加密計算量小,但若不同的客戶端使用不能的金鑰時,伺服器的複雜大。常用的對稱加密包括 des 3des aes des 3des使用的架構為feistel。des金鑰長度為56位,3des相容des,可設定3個56位密碼,...

對稱加密 非對稱加密

1 對稱加密 對稱加密採用了對稱密碼編碼技術,它的特點是檔案加密和解密使用相同的金鑰,即加密金鑰也可以用作解密金鑰,這種方法在密碼學中叫做對稱加密演算法,對稱加密演算法使用起來簡單快捷,金鑰較短,且破譯困難,除了資料加密標準 des 另乙個對稱金鑰加密系統是國際資料加密演算法 idea 它比des的...