HTTPS的加密問題
上海聚搜信息技術有限公司是阿里云的代理商網址:http://www.4526.cn/可以直接在網站上聯系阿里云代理商客服進行咨詢服務器架構和配置以及優惠價格!(聚搜營銷介紹鏈接:http://m.zqzyfl.com.cn/meiyou/)是一家致力于搜索引聚搜營銷及全網營銷,致力于為客戶提供搜索營銷領域的服務,幫助廣告客戶在搜索引聚搜獲取的投資回報,包括搜索引聚搜競價服務(SEM),搜索引聚搜優化服務(seo)和搜索營銷代運營服務,能夠有效為廣告主帶來高效的投放回報,我們的理念一直是:讓搜索營銷營銷具有價值。
聚搜營銷團隊于2015年在上海成立,團隊核心均來自百度搜索部門和國內知名服務商的成員,有非常豐富的產品和項目優化經驗,這兩年來,服務于國內很多大中型企業和很多初創公司,通過我們多年的經驗和服務,幫助他們在搜索營銷領域上取得了不斷的成功。
1.加密相關的幾個概念
1)對稱加密
概念:采用單鑰密碼系統的加密方法,同一個密鑰可以同時用作信息的加密和解密,這種加密方法稱為對稱加密,也稱為單密鑰加密。
使用一個公式來描述:
加密:f(key,data) = X
解密:g(key,X) = data
data為我們想要加密的內容,key就是對稱加密使用的單秘鑰,X為加密后的內容。f為加密,g為解密。
常見的對稱加密算法有DES、3DES、AES等,目前用得比較多的是AES加密。
概念:非對稱加密算法需要兩個密鑰來進行加密和解密,這兩個密鑰是公開密鑰(public key,簡稱公鑰)和私有密鑰(private key,簡稱私鑰)。
使用一個公式來描述:
A-->B方向:
加密:f(pk,data) = X
解密:g(sk,X) = data
B-->A方向:
加密:f(sk,data) = Y
解密:g(pk,Y) = data
假設A是客戶端,B是服務器。
當A向B發數據時,A使用公鑰(pk)加密,得到加密后的數據X。
B收到X后,使用私鑰(sk)解密。
當B向A發數據時,B使用私鑰(sk)加密,得到加密后的數據Y。
A收到Y后,使用公鑰(pk)解密。
注意:所有能夠與B服務器交換數據的客戶端都可以持有公鑰,而服務器持有私鑰(只有服務端B有私鑰)。可以參考SSH協議中的私鑰和公鑰。
常見的非對稱加密算法有:RSA、DSA、ECDSA等。
3)HASH散列
概念:HASH散列是把任意長度的輸入(又叫做預映射pre-image)通過散列算法變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,也就是,散列值的空間通常遠小于輸入的空間,不同的輸入可能會散列成相同的輸出,所以不可能從散列值來確定唯一的輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。
hash散列有什么作用?
我們一般使用哈希值來比較一個文件或一段內容是否被篡改。例如在我們使用迅雷或其他下載工具下載了一個軟件,我們想驗證是否下載完整則可以使用它的散列值進行比對,如果一致則下載完整,如果不一致則內容有問題。
常用的Hash散列算法有:MD4、MD5、SHA1、SHA-256等。
2.只使用對稱加密的情況
我們在HTTP的基礎上讓客戶端(瀏覽器)和服務器只使用對稱加密,如下圖所示:
從圖中可以看出,客戶端和服務器之間如果只使用對稱加密技術,則始終需要商議一個加密用的秘鑰(key,例如一個隨機字符串)。在這個商議的過程中,黑客就可以介入進行截取,只要黑客獲取到這個key,那么后面的對稱加密就完全失效了。
3.只使用非對稱加密的情況
在HTTP上只使用非對稱加密的技術,如下圖所示:
可以看到,黑客可以截取到公鑰以及之后傳輸的數據,并可以解密服務器發給客戶端的數據,同樣存在數據安全的問題。(這里只討論數據加密的安全問題,中間人攻擊在后面討論)
4.同時使用對稱加密和非對稱加密的情況
既然只使用對稱加密和只使用非對稱加密都無法避免數據被黑客截取,那么我們可以將對稱加密和非對稱加密結合起來使用,如下圖:
從圖中可以看到,我們使用非對稱加密算法來協商對稱加密的秘鑰key。客戶端拿到服務器的公鑰后,產生一個隨機的key,然后使用公鑰對其進行加密,并發送給服務器。
由于公鑰加密的內容只有私鑰才能解密,也就是說黑客即便截取到了公鑰,也無法獲取到key。
所以之后的數據使用key進行對稱加密是絕對安全的。
從以上過程我們可以看到,使用對稱加密+非對稱加密的方式可以使黑客無法通過截取的方式來獲取數據,看似已經很安全了,但是我們還要討論一種情況,就是中間人欺騙攻擊。
5.中間人欺騙攻擊
在第4節的基礎上,可能出現以下情況,如圖:
黑客在中間充當一個中間人,讓客戶端以為自己是服務器,讓服務器以為自己是客戶端。
他使用一套假的非對稱加密秘鑰來與客戶端進行通訊,而使用服務器給的真的公鑰與服務器進行通訊,從中將數據解密并重新加密,起到兩邊欺騙的效果。
那么,如何防范這種中間人欺騙的攻擊呢?
那就需要服務器能夠證明自己的身份。客戶端從服務器拿到公鑰的同時,還要能夠確定當前通訊的服務器的身份是正確的(從而才能確保拿到的公鑰是正確的,使用該公鑰加密,只有正確的服務器才能解密)。

kf@jusoucn.com
4008-020-360


4008-020-360
