對稱加密算法的特點是加密密鑰和解密密鑰是同壹把密鑰K,且加解密速度快,典型的對稱加密算法有DES、AES等
對稱加密算法加密流程和解密流程
非對稱加密算法的特點是加密密鑰K1和解密密鑰K2是不壹樣的,他們是壹對可互為加解密的密鑰,壹個可以公開,叫公鑰;壹個自己保留,不能讓其他人知道,叫私鑰。這樣就能比較好的解決信息傳遞的安全性,相對來說加解密速度較慢,典型的非對稱加密算法有RSA、DSA等。問題是如何保證加密用的接收者的公鑰,即如何安全的傳遞公鑰。
非對稱加密算法加密流程和解密流程
F(M) = D E(D)=S
F是單向散列函數:即如果已知x,很容易計算F(x),但已知F(x),卻很難算出x
數字簽名就是用私鑰將摘要加密的結果,這樣能夠保證數據的完整性、防篡改、以及不可抵賴性。
摘要算法及數字簽名過程
乙方把接收到的發送方的明文用單向哈希函數取得摘要值與甲方的公鑰解密甲方的數字簽名而得到的摘要值進行比較,如果壹樣說明信息完整,未受篡改,如果不壹樣說明受到篡改
檢驗數據完整性過程
在發送過程中首先將甲方的明文取摘要值,再將此摘要值用甲方的私鑰加密得到甲方的簽名,然後將甲的明文、數字簽名和數字證書合在壹起用甲方隨機生成的對稱密鑰加密得到密文;第二步是將這壹隨機生成的對稱密鑰用乙方的公鑰加密後得到數字信封;最後將密文和數字信封壹起發送給乙方。
在乙方接收過程中,首先將收到數字信封用乙方的私鑰解密,得到隨機生成的對稱密鑰,第二步是解密得到的隨機生成的對稱密鑰將密文解密,得到甲方的明文、數字簽名和數字證書;第三步將甲方的明文取摘要值與甲方的數字簽名用甲方的公鑰解密得到的摘要進行比較,從而驗證簽名和檢驗數據的完整性。這壹流程同時用到對稱算法和非對稱算法,是比較安全的流程
數字證書在這裏起到的作用有:提供甲方的公鑰,保證發送信息方的不可抵賴性。
嚴密的數字加解密、數字簽名和驗證流程
為了保證證書的壹致性,國際電信聯盟設計了壹套專門針對證書格式的標準X.509,其核心提供了壹種描述證書的格式。
X.509數字證書不僅包括用戶名和密碼,而且還包含了與用戶有關的其他信息,通過使用證書,CA可以為證書接收者提供壹種方法,使他們不僅信任證書主體的公鑰,而且還信任有關證書主體的其他信息
X.509證書有有效期限、證書在期滿後就會失效。期間CA可能會出於某些原因吊銷證書。要吊銷證書,CA保存並分發壹個吊銷證書的列表,即證書吊銷列表CRL。網絡用戶可以訪問CRL以確定證書的有效性
目前, X.509標準已在編排公***密鑰格式方面被廣泛接受,用戶許多網絡安全的應用程序,其中包括Ipsec, SSL, SET, S/MIME(安全多媒體Internet郵件擴展)
證書中主要域
HTTPS(Hypertext Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講就是HTTP的安全版。其實現是在HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。
SSL協議位於TCP/IP協議與各種應用協議之間,是壹種國際標準的加密及身份認證通信協議,為TCP提供壹個可靠的端到端的安全服務,為兩個通訊個體之間提供保密性和完整性。SSL層所處位置如下
SSL示意圖
①SSL協議可用於保護正常運行與TCP之上的任何應用協議,如HTTP、FTP、SMTP或Telent的通信,最常見的是用戶SSL來保護HTTP通信
②SSL協議的優點在於它是應用層協議無關的。高層的應用協議能透明的建立於SSL協議之上
③SSL協議的應用層協議之前就完成加密算法、通信密鑰的協商以及服務器的認證工作。在此之後應用層協議所傳送的數據都會被加密。從而保證通信的安全性。
④SSL協議使用通信雙方的客戶證書以及CA根證書。允許客戶/服務器應用以壹種不能被偷聽的方式通信,在通信雙方建立起了壹條安全的、可信任的通信通道。
⑤該協議使用密鑰對傳送數據加密,許多網站都是通過這種協議從客戶端接收信用卡編號等保密信息。常用於交易過程
Sl工作基本流程圖如下所示
SSl工作基本流程圖
SSL協議既用到了非對稱加密技術又用到了對稱加密技術。對稱加密技術雖然比公鑰加密技術的速度快,可是非對稱加密技術提供的更好的身份認證技術。SSL的握手協議非常有效的讓客戶端和服務器之間完成相互之間的身份認證。其主要過程如下:
1)客戶端向服務器傳輸客戶端的SSL協議版本號,支持的加密算法的種類,產生的隨機數Key1及其他信息
2)服務器在客戶端發送過來的加密算法列表中選取壹種,產生隨機數Key2,然後發送給客戶端
3)服務器將自己的證書發送給客戶端
4)客戶端驗證服務器的合法性,服務器的合法性包括:證書是否過期,發行服務器證書的CA是否可靠,發行者的公鑰能否正確解開服務器證書的”發行者的數字簽名”,服務器證書上的域名是否和服務器的實際域名相匹配,如果合法性驗證沒有通過,通信將斷開,如果合法性驗證通過,將繼續向下進行;
5)客戶端隨機產生壹個Pre-Master-Key,然後用服務器的公鑰(從證書中獲得)對其加密,然後將該Pre-Master-Key發送給服務器
6)服務器接收到Pre-Master-Key,則使用協商好的算法(H)計算出真正的用戶通信過程中使用的對稱加密密鑰Master-Key=H(C1+S1+PreMaster);
7)至此為止,服務器和客戶端之間都得到Master-Key,之後的通信過程就使用Master-Key作為對稱加密的密鑰進行安全通信;
針對SSL的中間人攻擊方式主要有兩類,分別是SSL劫持攻擊和SSL剝離攻擊
SSL劫持攻擊即SSL證書欺騙攻擊,攻擊者為了獲得HTTPS傳輸的明文數據,需要先將自己接入到客戶端和目標網站之間;在傳輸過程中偽造服務器的證書,將服務器的公鑰替換成自己的公鑰,這樣,中間人就可以得到明文傳輸帶Key1、Key2和Pre-Master-Key,從而竊取客戶端和服務端的通信數據;
但是對於客戶端來說,如果中間人偽造了證書,在校驗證書過程中會提示證書錯誤,由用戶選擇繼續操作還是返回,由於大多數用戶的安全意識不強,會選擇繼續操作,此時,中間人就可以獲取瀏覽器和服務器之間的通信數據
這種攻擊方式也需要將攻擊者設置為中間人,之後將HTTPS範文替換為HTTP返回給瀏覽器,而中間人和服務器之間仍然保持HTTPS服務器。由於HTTP是明文傳輸的,所以中間人可以獲取客戶端和服務器傳輸數據