源代碼加解密網(wǎng)關(guān)對(duì)于git提交的上傳解密下載加密分析
之前對(duì)解密網(wǎng)關(guān)做過詳細(xì)的分析介紹,弊端及好處都有分析,今天來介紹一下解密網(wǎng)關(guān)對(duì)git的一些技術(shù)分析。
首先我們要了解一下,解密網(wǎng)關(guān)的技術(shù)原理,對(duì)于git來說,能實(shí)現(xiàn)上傳解密及下載加密,第一種方式,是通過客戶端做策略實(shí)現(xiàn),git上傳解密下載加密。第二種是能過網(wǎng)絡(luò)分析數(shù)據(jù)包的形式來實(shí)現(xiàn)。
那我們先來普及一下
Git傳輸數(shù)據(jù)協(xié)議
HTTP 啞協(xié)議(Dump Protocol)
在 Git 1.6.6 版本之前是只提供啞協(xié)議的,啞協(xié)議只需要一個(gè)標(biāo)準(zhǔn)的 HTTP 靜態(tài)文件服務(wù),這個(gè)服務(wù)只需要能夠提供文件的下載即可,Git 客戶端會(huì)自動(dòng)進(jìn)行文件的遍歷和拉取。
HTTP 智能協(xié)議(Smart Protocol)
HTTP 智能協(xié)議與啞協(xié)議最大的區(qū)別在于:?jiǎn)f(xié)議在獲取想要的數(shù)據(jù)的時(shí)候要自行指定文件資源的網(wǎng)絡(luò)地址,并且通過多次的下載操作來達(dá)到目的;而智能協(xié)議的主動(dòng)權(quán)則掌握在服務(wù)端,服務(wù)端提供的 info/refs 可以動(dòng)態(tài)更新,并且可以通過客戶端傳來的參數(shù),決定本次交互客戶端所需要的最小對(duì)象集,并打包壓縮發(fā)給客戶端,客戶端會(huì)進(jìn)行解壓來拿到自己想要的數(shù)據(jù)
Git && SSH 傳輸協(xié)議
Git 協(xié)議以及 SSH 協(xié)議都是四層的傳輸協(xié)議,而 HTTP 則是七層的傳輸協(xié)議,受限于 HTTP 協(xié)議的特點(diǎn),HTTP 在 Git 相關(guān)的操作上存在傳輸限制、超時(shí)等問題,這個(gè)問題在大倉(cāng)庫(kù)的傳輸中尤為明顯,相比與 HTTP 而言,Git 以及 SSH 協(xié)議在傳輸上更簡(jiǎn)單而且更穩(wěn)定。
?
以上三種傳輸協(xié)議啞協(xié)議現(xiàn)在版本的git已經(jīng)不用了,用的最多是智能協(xié)議及gitssh私有協(xié)議。如果需要對(duì)加密的文件在網(wǎng)絡(luò)中解密或加密,就需要解密網(wǎng)關(guān)先把這幾種協(xié)議給解析出來。當(dāng)協(xié)議解析出來后,找到傳輸?shù)奈募M(jìn)行解密或加密。解密網(wǎng)關(guān)的原理是這樣的。
但是對(duì)git來講,這是非常難的首先,git協(xié)議是私有協(xié)議安全性極高要想從網(wǎng)絡(luò)中解析出來是非常困難的。第二如果真的解析出來了,找到git提交文件了,我們知道git提交時(shí),并不是提交的源代碼文件,是對(duì)代碼文件進(jìn)行差異化比對(duì)后,生成差異文件,然后根據(jù)自己的加密方式進(jìn)行加密,在提交到服務(wù)器上。
綜上所述,解密網(wǎng)關(guān)通過網(wǎng)絡(luò)中控制git的上傳解密下載加密,是不可以實(shí)現(xiàn)的,如果有實(shí)現(xiàn)也是在客戶端本地控制的。安秉網(wǎng)盾源代碼防泄密方式,建議客戶對(duì)源代碼保護(hù)時(shí),用git服務(wù)器保存密文方式,有效解密客戶源代碼不被泄漏問題。