顧宏久
在互聯(lián)網(wǎng)中,上網(wǎng)經(jīng)常用HTTPS協(xié)議的網(wǎng)站。
下面討論一下HTTPS的工作方式
信息防護(hù)主要涉及兩個方面:信息竊取和信息篡改。對稱/非對稱加密算法能夠避免信息竊取,而消息摘要算法能夠避免信息篡改。
目前常用的加密算法主要分成三類:
· 對稱加密算法
· 非對稱加密算法
· 消息摘要算法
一、對稱加密
基本概念
· 采用單鑰密碼系統(tǒng)的加密方法,同一個密鑰可以同時(shí)用作信息的加密和解密,這種加密方法稱為對稱加密,也稱為單密鑰加密。
· 速度快,對稱性加密通常在消息發(fā)送方需要加密大量數(shù)據(jù)時(shí)使用
· 所謂對稱,就是采用這種加密方法的雙方使用方式用同樣的密鑰進(jìn)行加密和解密
· 密鑰是控制加密及解密過程的指令
· 算法是一組規(guī)則,規(guī)定如何進(jìn)行加密和解密
在對稱加密中,數(shù)據(jù)發(fā)送方將明文(原始數(shù)據(jù))和加密密鑰一起經(jīng)過特殊加密算法處理后,使其變成復(fù)雜的加密密文發(fā)送出去。接收方收到密文后,若想解讀原文,則需要使用加密密鑰及相同算法的逆算法對密文進(jìn)行解密,才能使其恢復(fù)成可讀明文。在對稱加密算法中,使用的密鑰只有一個,發(fā)收信雙方都使用這個密鑰對數(shù)據(jù)進(jìn)行加密和解密。
常用算法:
在對稱加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK、AES等。
不同算法的實(shí)現(xiàn)機(jī)制不同,可參考對應(yīng)算法的詳細(xì)資料。
優(yōu)缺點(diǎn):
· 對稱加密算法的優(yōu)點(diǎn)是算法公開、計(jì)算量小、加密速度快、加密效率高。
· 對稱加密算法的缺點(diǎn)是在數(shù)據(jù)傳送前,發(fā)送方和接收方必須商定好秘鑰,然后使雙方都能保存好秘鑰。
· 其次如果一方的秘鑰被泄露,那么加密信息也就不安全了。
· 另外,每對用戶每次使用對稱加密算法時(shí),都需要使用其他人不知道的唯一秘鑰,這會使得收、發(fā)雙方所擁有的鑰匙數(shù)量巨大,密鑰管理成為雙方的負(fù)擔(dān)。
二、非對稱加密
基本概念
· 對稱加密算法在加密和解密時(shí)使用的是同一個秘鑰;而非對稱加密算法需要兩個密鑰來進(jìn)行加密和解密,這兩個秘鑰是公開密鑰(public key,簡稱公鑰)和私有密鑰(private key,簡稱私鑰)。
· 公開密鑰與私有密鑰是一對,如果用公開密鑰對數(shù)據(jù)進(jìn)行加密,只有用對應(yīng)的私有密鑰才能解密
· 如果用私有密鑰對數(shù)據(jù)進(jìn)行加密,那么只有用對應(yīng)的公開密鑰才能解密
· 因?yàn)榧用芎徒饷苁褂玫氖莾蓚€不同的密鑰,所以這種算法叫作非對稱加密算法。
加密解密過程:
1、乙方生成一對密鑰(公鑰和私鑰)并將公鑰向其它方公開。
2、得到該公鑰的甲方使用該密鑰對機(jī)密信息進(jìn)行加密后再發(fā)送給乙方。
3、乙方再用自己保存的另一把專用密鑰(私鑰)對加密后的信息進(jìn)行解密。乙方只能用其專用密鑰(私鑰)解密由對應(yīng)的公鑰加密后的信息。
在傳輸過程中,即使攻擊者截獲了傳輸?shù)拿芪模⒌玫搅艘业墓€,也無法破解密文,因?yàn)橹挥幸业乃借€才能解密密文。
同樣,如果乙要回復(fù)加密信息給甲,那么需要甲先公布甲的公鑰給乙用于加密,甲自己保存甲的私鑰用于解密。
常用算法:
· 在非對稱加密中使用的主要算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(橢圓曲線加密算法)等。
三、消息摘要算法可以驗(yàn)證信息是否被篡改。
在數(shù)據(jù)發(fā)送前,首先使用消息摘要算法生成該數(shù)據(jù)的簽名,然后簽名和數(shù)據(jù)一同發(fā)送給接收者。接收者收到數(shù)據(jù)后,對收到的數(shù)據(jù)采用消息摘要算法獲得簽名,最后比較簽名是否一致,以此來判斷數(shù)據(jù)在傳輸過程中是否發(fā)生修改。
HTTPS其實(shí)是有兩部分組成:HTTP + SSL / TLS,也就是在HTTP上又加了一層處理加密信息的模塊。服務(wù)端和客戶端的信息傳輸都會通過TLS進(jìn)行加密,所以傳輸?shù)臄?shù)據(jù)都是加密后的數(shù)據(jù)。具體是如何進(jìn)行加密,解密,驗(yàn)證的。
客戶端發(fā)起HTTPS請求
,就是用戶在瀏覽器里輸入一個https網(wǎng)址,然后連接到server的443端口。
服務(wù)端的配置
采用HTTPS協(xié)議的服務(wù)器必須要有一套數(shù)字證書,可以自己制作,也可以向組織申請。區(qū)別就是自己頒發(fā)的證書需要客戶端驗(yàn)證通過,才可以繼續(xù)訪問,而使用受信任的公司申請的證書則不會彈出提示頁面(startssl就是個不錯的選擇,有1年的免費(fèi)服務(wù))。
傳送證書
這個證書其實(shí)就是公鑰,只是包含了很多信息,如證書的頒發(fā)機(jī)構(gòu),過期時(shí)間等等。
客戶端解析證書
這部分工作是有客戶端的TLS來完成的,首先會驗(yàn)證公鑰是否有效,比如頒發(fā)機(jī)構(gòu),過期時(shí)間等等,如果發(fā)現(xiàn)異常,則會彈出一個警告框,提示證書存在問題。如果證書沒有問題,那么就生成一個隨即值。然后用證書對該隨機(jī)值進(jìn)行加密。
傳送加密信息
這部分傳送的是用證書加密后的隨機(jī)值,目的就是讓服務(wù)端得到這個隨機(jī)值,以后客戶端和服務(wù)端的通信就可以通過這個隨機(jī)值來進(jìn)行加密解密了。
服務(wù)段解密信息
服務(wù)端用私鑰解密后,得到了客戶端傳過來的隨機(jī)值(私鑰),然后把內(nèi)容通過該值進(jìn)行對稱加密。所謂對稱加密就是,將信息和私鑰通過某種算法混合在一起,這樣除非知道私鑰,不然無法獲取內(nèi)容,而正好客戶端和服務(wù)端都知道這個私鑰,所以只要加密算法夠彪悍,私鑰夠復(fù)雜,數(shù)據(jù)就夠安全。
傳輸加密后的信息
這部分信息是服務(wù)段用私鑰加密后的信息,可以在客戶端被還原
客戶端解密信息
非對稱加密算法的性能是非常低的,原因在于尋找大素?cái)?shù)、大數(shù)計(jì)算、數(shù)據(jù)分割需要耗費(fèi)很多的CPU周期,所以一般的HTTPS連接只在第一次握手時(shí)使用非對稱加密,通過握手交換對稱加密密鑰,在之后的通信走對稱加密。