HTTPS是基於HTTP與SSL建立而成的,因http是爲明文信息傳輸方式,容易被嗅探、竊取信息導致不安全的因素,所以漸漸誕生出一種能將傳輸過程進行加密的一種方式,是爲HTTPS。
HTTPS有兩種作用:一種是建立一個信息安全通道,來保證數據傳輸的安全;另一種就是確認網站的真實性,凡是使用了 https 的網站,都可以通過點擊瀏覽器地址欄的鎖頭標誌來查看網站認證之後的真實信息,也可以通過 CA 機構頒發的安全簽章來查詢。
HTTPS和HTTP的區別主要爲以下四點:
一、https協議需要到ca申請證書,一般免費證書很少,需要交費。
二、http是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。
三、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,後者是443。
四、http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全
HTTPS的作用:
C I A(confidentiality integrity availability)
1、機密性:內容加密,不容易破解
2、完整性:防止數據被篡改、竊取
3、可用性:合法的用戶,對有權限訪問的資源是可用的
#該作用都是作用於傳輸過程中的,解決的是信息傳輸過程中數據被篡改、竊取。
三個要素全部基於加密算法:
1、對稱加密:加密解密相同密鑰
2、非對稱加密:一次數學計算生成一對密鑰,一對密鑰有一個是拿出來發的:公鑰;另一個是所有者嚴密保存在本機的:私鑰
3、單向加密:hash計算
而對於HTTPS攻擊方法大致三種:
1、降級攻擊(攻擊者將高安全級別的cipher suite降低,然後解密)
2、解密攻擊(明文、證書僞造)
3、協議漏洞、實現方法的漏洞、配置不嚴格
對於SSL:(Secure socket layer)
它是保證網絡通信安全的加密協議,1994年由Netscope開發成爲統一標準(但其協議本身存在漏洞),直到1999年TLS(transport layer security)取代SSL v3(不安全) (但如今仍叫ssl),同時近年來發現的SSL協議漏洞使業界內認爲其漏洞已不軟件修復。
TLS/SSL、HTTPS、HTTP over SSL通俗上表示同一含義。
但因可能用戶使用xp等老版本機器,而這些機器不支持TLS,所以很多企業爲防止客戶流失,不得已在網站上兼容SSL v3等老協議,這也是推廣全站https面臨的嚴峻問題。
SSL/TLS也被用於其他場景的傳輸通道加密:
1、郵件傳輸(服務器間、客戶端與服務期間),走SMTP協議(明文)
2、數據庫服務器間(比如執行sql查詢語句等儘量隱蔽)
3、LDAP身份認證服務器間(企業中)
4、SSL VPN(連接到公司內網)
5、遠程桌面RDP通信過程中的加密和身份認證
WEB通信中的SSL加密:
基於公鑰證書實現(受信任的第三方證書頒發機構簽名頒發),像一些機構:VeriSign、Thawte、GlobalSign、Symantec等。
訪問https網站的加密過程:
1、握手
2、協商加密算法(即加密套件:cipher suite(一個對稱加密、非對稱加密、hash算法、密鑰交換算法組合爲一個suite))
3、獲取公鑰證書(生成對稱密鑰給服務器:因爲會生成對稱密鑰,但防止被嗅探,所以再引入非對稱算法,將發給服務器的對稱密鑰使用服務器公鑰進行加密,到達服務器後服務器私鑰再解密,再得到發送的公鑰)
4、驗證公鑰證書
5、交換會話密鑰
6、加密信息傳輸(使用對稱會話密鑰加密,形成密文,再對密文進行hash計算生成一串固定長度的字符串,再用公鑰證書裏的公鑰在加密,生成加密的密文信息,最後會把加了密的信息及hash值還有加了密的hash值三部分一起傳給服務器,到服務器它會用自己的私鑰解開加了公鑰密的hash值,拿這個hash值與客戶端發的hash進行比較相等的話沒被串改,完整性是有保障的,再用交換了的對稱密鑰解開加了密的信息,對這個信息再做個hash計算,拿這個hash值對解密出來的hash值進行比較,比較一致的話,數據完整性未被破壞,用對稱密鑰解出對稱密鑰加密的密文信息,再對解出來的明文計算hash值,拿這個hash與用私鑰加密後的hash進行比較,沒有變化,有保障,另外是由公鑰加密的信息,那就實現了一個驗證)
#對於瀏覽器、系統默認、服務器證書之間的交互:安裝系統就會有受信任的根證書,凡是由這些根證書頒發機構頒發給網站的或者給任何網站的證書都會有這個頒發機構的私鑰簽名的一個簽名信息,當拿到這個證書,在自己系統上,如果用這個根證書裏面的私鑰,把這個簽名解密驗證前後值是匹配的,那麼網站提供的這個證書是由我信任的這個證書頒發機構頒發的,認可他了。
常見的一些算法:
非對稱加密算法:只適合加密小量的數據
1、Diffie-Hellman key exchange
2、Rivest Shamir Adleman (RSA)
3、Elliptic Curve Cryptography (ECC)
對稱加密算法:
1、Data Encryption Standard (DES) / 3DES
2、Advance Encryption Standard (AES)
3、International Data Encryption Algorithm (IDEA)
4、Rivest Cipher 4 (RC4) :WEP、TLS/SSL、RDP、Secure shell基本存在
單向加密算法(HASH)(加密的hash值固定):
就SHA-2談一談:
SHA-2是TLS 1.2 唯一支持的單向加密算法(hash值長度可變):雖然是加密算法,但依然可能存在碰撞攻擊,即兩個不同的文件生成相同的HASH值。
#碰撞攻擊針對單向加密算法(一個證書,裏面有簽名的hash值,生成一個文件或者僞造證書,讓hash值跟真正的證書hash值相同,基本可以生成證書(MD5、SHA-1))
SSL的弱點:
1、SSL是不同的對稱、非對稱、單向加密算法的組合加密實現(cipher suite)
2、協商過程中強迫降級加密強度
3、現代處理器計算能力可以在可接受的時間內破解過時加密算法
4、購買雲計算資源破解(超級計算)
最後:
針對於SSL的檢測機制做一個補充,常用的工具就:Openssl、SSLScan、SSLyze、Nmap,簡單說明命令使用:
Openssl:(直接調用openssl庫識別目標服務器支持的SSL/TLS cipher suite)
舉例:
openssl s_client connect www.baidu.com:443
openssl s_client -tls1_2 -cipher 'ECDH-RSA-RC4-SHA' -connect www.taobao.com:443
#ECDH-RSA-RC4-SHA爲:密鑰交換-身份認證-數據加密-HASH算法,隨機一種的組合形式
openssl s_client -tls1_2 -cipher “NULL,EXPORT,LOW,DES” -connect www.taobao.com:443
#協商低安全級別cipher suite
可被破解的cipher suite查詢:
openssl ciphers -v "NULL,EXPORT,LOW,DES"
Openssl需要大量密碼學相關知識,命令複雜,結果可讀性差
SSLScan:(自動識別SSL配置錯誤、過期協議、過時cipher suite和hash算法)
#默認會檢查CRIME、heartbleed漏洞,綠色表示安全’紅色黃色需要引起注意
TLS支持的cipher suite舉例:
sslscan --tlsall www.taobao.com:443
分析證書詳細信息舉例:
sslscan --show-certificate --no-ciphersuites www.taobao.com:443
SSLyze:(Python語言編寫、檢查SSL過時版本、檢查尋在的弱點的cipher suite 、掃描多站點時,支持來源文件、檢查是否支持會話恢復)
舉例:
sslyze --regular www.taobao.com:443
Nmap:(Nmap自帶的掃描腳本有很多,其中就有關於掃描SSL信息的)
舉例:
nmap --script=ssl-enum-ciphers.nse www.taobao.com
除了由上面的工具去檢測,還可以用一個網站去檢測,而且隱藏ip要方便的多:
https://www.ssllabs.com/ssltest
關於https的其他內容,在網絡上依然存在,具體可以參考一下官方解釋:HTTPS