HTTPS
一、加密
- HTTPS的通信過程中只在握手階段使用了非對稱加密,后面的通信過程 均使用的是對稱加密,盡管非對稱加密相比對稱加密更加安全,但也存在兩個明顯的缺點:
- CPU的計算資源消耗非常大,一次完全TSL握手,密鑰交換時的非對稱解密計算量占整個握手過程的90%以上,而對稱加密的計算量只相當于非對稱加密的0.1%,如果應用層數(shù)據(jù)也使用非對稱加解密,性能開銷很大,無法承受;
- 非對稱加密算法對加密的內(nèi)容長度有限制,不能超過公鑰長度,比如現(xiàn)在的常用的公鑰長度是2048位,意味著待加密內(nèi)容不能超過256個字節(jié);
- 所以公鑰加密目前只能用來做密鑰交換或者內(nèi)容簽名,不適合用作應用層傳輸內(nèi)容的加解密
- HTTPS如何保證安全
- 服務器可以先將非對稱加密的公鑰發(fā)給客戶端,客戶端就可以使用非對稱加密的公鑰加密對稱加密的密鑰了,然后將這個密鑰發(fā)給服務器,此時服務器就持有對稱加密的公鑰,雙方就可以通信了,所以非對稱加密可以很好的管理對稱加密的密鑰,保證每次數(shù)據(jù)加密的密鑰都不相同,這樣的及時客戶端病毒拉取到通信的緩存信息,也無法竊取到通信內(nèi)容;
- 若是在通信過程中,在三次握手或者客戶端發(fā)起HTTP請求的過程中,客戶端被中間人劫持,那么中間人就很容易偽裝,和客戶端和服務器通信,所以就出現(xiàn)了數(shù)字證書,
- 服務器首先生成公私鑰,把公鑰提供給相關機構(gòu)CA,CA將公鑰放入數(shù)字證書并將數(shù)字證書頒布給服務器,此時服務器就可以將數(shù)字證書給客戶端,數(shù)字證書中不僅僅只有公鑰還加入了一些簽名機制,保證數(shù)字證書一定是服務器發(fā)給客戶端的;
- 綜合以上三點:非對稱加密算法(公鑰和私鑰)交換對稱密鑰+數(shù)字證書驗證身份(也就是公鑰是不是假的)+利用對稱加密加解密后傳輸數(shù)據(jù)信息
二、TSL/SSL
2.1 TSL/SSL定義
- SSL(Secure Socket Layer,安全套接字層),位于可靠的面向連接的網(wǎng)絡層協(xié)議和應用層協(xié)議之間的一種協(xié)議層。SSL通過互相認證、使用數(shù)字簽名確保完整性、使用加密確保私密性,以實現(xiàn)客戶端和服務器之間的安全通訊。該協(xié)議由兩層組成:SSL記錄協(xié)議和SSL握手協(xié)議。
- TLS:(Transport Layer Security,傳輸層安全協(xié)議),用于兩個應用程序之間提供保密性和數(shù)據(jù)完整性。該協(xié)議由兩層組成:TLS記錄協(xié)議和TLS握手協(xié)議。
2.2 TSL/SSL運行過程
- 運行的過程:SSL/TSL協(xié)議采用的事公鑰加密法(也就是使用的非對稱加密,目前大部分使用的是RSA),客戶端先向服務器索要公鑰,然后使用公鑰加密,服務器收到密文后采用私鑰解密
- 索要到的公鑰是采用的數(shù)字證書的方式,這個里面不僅僅包含了公鑰而且加入了一些簽名,保證了公鑰的安全;而后面的每一次會話客戶端和服務器都生成一個對話密鑰來加密,此種方式是堆成加密大大減低了運算量;
- SSL/TLS協(xié)議的基本過程是這樣的:
- 客戶端向服務器端索要并驗證公鑰。
- 雙方協(xié)商生成"對話密鑰"。
- 雙方采用"對話密鑰"進行加密通信。
2.3 TSL/SSL區(qū)別
- 最新版本的TLS(Transport Layer Security,傳輸層安全協(xié)議)是IETF(Internet Engineering Task Force,Internet工程任務組)制定的一種新的協(xié)議,它建立在SSL 3.0協(xié)議規(guī)范之上,是SSL 3.0的后續(xù)版本。在TLS與SSL3.0之間存在著顯著的差別,主要是它們所支持的加密算法不同,所以TLS與SSL3.0不能互操作。
三、對稱加密和非對稱加密
3.1 對稱加密
- 對稱加密:加密和解密使用相同的密鑰的算法,它要求發(fā)送方和接收方通信前商定一個對稱密鑰,對稱算法的安全性完全依賴于密鑰;
- 對稱加密分為兩種模式,流加密和分組加密
- 流加密:將消息作為字節(jié)流對待,并且使用數(shù)學函數(shù)分別作用在每一個字節(jié)位上。使用流加密時,每加密一次,相同的明文位會轉(zhuǎn)換成不同的密文位。流加密使用了密鑰流生成器,它生成的字節(jié)流與明文字節(jié)流進行異或,從而生成密文。
- 分組加密:是將消息劃分為若干個分組,這些分組隨后會通過數(shù)學函數(shù)進行處理,每次一個分組;比較常用的分組加密算法有DES、3DES、AES。其中DES是比較老的加密算法,現(xiàn)在已經(jīng)被證明不安全。而3DES是一個過渡的加密算法,相當于在DES基礎上進行三重運算來提高安全性,但其本質(zhì)上還是和DES算法一致。而AES是DES算法的替代算法,是現(xiàn)在最安全的對稱加密算法之一。
- DES(Data Encryption Standard):數(shù)據(jù)加密標準,速度較快,適用于加密大量數(shù)據(jù)的場合。
- 3DES(Triple DES):是基于DES,對一塊數(shù)據(jù)用三個不同的密鑰進行三次加密,強度更高。
- AES(Advanced Encryption Standard):高級加密標準,是下一代的加密算法標準,速度快,安全級別高;
- AES算法理解:AES 算法基于排列和置換運算。排列是對數(shù)據(jù)重新進行安排,置換是將一個數(shù)據(jù)單元替換為另一個。AES 使用幾種不同的方法來執(zhí)行排列和置換運算。AES 是一個迭代的、對稱密鑰分組的密碼,它可以使用128、192 和 256 位密鑰,并且用 128 位(16字節(jié))分組加密和解密數(shù)據(jù)。與公共密鑰密碼使用密鑰對不同,對稱密鑰密碼使用相同的密鑰加密和解密數(shù)據(jù)。通過分組密碼返回的加密數(shù)據(jù)的位數(shù)與輸入數(shù)據(jù)相同。迭代加密使用一個循環(huán)結(jié)構(gòu),在該循環(huán)中重復置換和替換輸入數(shù)據(jù)
- 對稱加密的優(yōu)點:計算量小,加密速度快,加密效率高
- 對稱加密的缺點:
- 交易雙方都使用同樣密鑰,安全性得不到保障
- 每次使用對稱加密算法時,都需要使用其他人不知道的唯一密鑰,這使得雙方所擁有的密鑰數(shù)量呈幾何級數(shù)增長,密鑰管理成為負擔;
3.2 非對稱加密
- 非對稱密鑰交換算法本身非常復雜,密鑰交換過程涉及到隨機數(shù)生成,模指數(shù)運算,空白補齊,加密,簽名等,一系列及其復雜的過程;
- 官方的定義:公開密鑰加密(英語:public-key cryptography,又譯為公開密鑰加密),也稱為非對稱加密(asymmetric cryptography),一種密碼學算法類型,在這種密碼學方法中,需要一對密鑰(其實這里密鑰說法不好,就是“鑰”),一個是私人密鑰,另一個則是公開密鑰。這兩個密鑰是數(shù)學相關,用某用戶密鑰加密后所得的信息,只能用該用戶的解密密鑰才能解密。如果知道了其中一個,并不能計算出另外一個。因此如果公開了一對密鑰中的一個,并不會危害到另外一個的秘密性質(zhì)。稱公開的密鑰為公鑰;不公開的密鑰為私鑰。
- 常見的非對稱加密算法:
- RSA:由 RSA 公司發(fā)明,是一個支持變長密鑰的公共密鑰算法,需要加密的文件塊的長度也是可變的;
- DSA(Digital Signature Algorithm):數(shù)字簽名算法,是一種標準的 DSS(數(shù)字簽名標準);
- ECC(Elliptic Curves Cryptography):橢圓曲線密碼編碼學。
3.3 HASH算法
- Hash算法特別的地方在于它是一種單向算法,用戶可以通過Hash算法對目標信息生成一段特定長度的唯一的Hash值,卻不能通過這個Hash值重新獲得目標信息。因此Hash算法常用在不可還原的密碼存儲、信息完整性校驗等。
- 常見的Hash算法有MD2、MD4、MD5、HAVAL、SHA
四、HTTP與HTTPS的區(qū)別
- https需要到CA申請證書,一般免費證書很少都需要交費;
- http是超文本傳輸協(xié)議,信息是以明文傳輸,https是具有 安全性的ssl/tls加密的傳輸協(xié)議;
- http和https使用的是完全不同的連接方式,且默認的連接端口也是不一樣的,http默認80,https默認443;
- http的連接很簡單,是無狀態(tài)的,https協(xié)議是由ssl+http協(xié)議構(gòu)建的可進行加密傳輸,身份認證的網(wǎng)絡協(xié)議,比http協(xié)議安全;