有 Https 就安全了嗎?
由於2014年許多 SSL 的漏洞被發現,SSL被廣泛的應用在 HTTPS 的網路資料傳輸。這篇文章主要說明網站在佈署HTTPS可能會遇到的潛在風險,注意事項、如何線上自我檢測的簡單方法與佈署上建議參考。
HTTPS (SSL/TLS)注意事項
因此,對於網站使用SSL提供 HTTPS來說,有沒有什麼要檢查的列表呢?
- 加密的金鑰至少要128bits 長
- SSL V2 因為已知的風險較多,必須要設定為取消。建議使用TLS 1.2
- X.509 certificates金鑰長度至少要 1024 bits
- Secure Renegotiation應該要支援
- MD5 或是 RC4 較弱的加密演算法應該不要被使用
- TLS compression的支援設定必須要取消.
- 網站伺服器應該要支援 “Forward Secrecy”
什麼是 “Forward Secrecy “?
SSL 建立連線的時 handshake 主要利用 Web Server 的 private key 來做
- 驗證是否來源 Web site 身分
- 加密之後資料傳輸的金鑰
由於,Step 1 身分驗證僅用在一開始建立連線,
Step 2資料加密會用在連線建立之後的資料溝通
因此,對於Step 2,如果不採用原本 private key 來做金鑰加密,而採用別的方式加密,這樣的方式就稱為 “Forward Secrecy”
“Forward Secrecy” 相對比較安全,原因主要在於多把不同加密金鑰的使用
在建立連線時採用一組加密金鑰,
建立連線後,資料傳輸的加密採用另外一組加密金鑰。
2014/2015知名的 HTTS 安全風險
POODLE attack 與 Heartbleed研究發現 HTTPS的加密金鑰是有機會被破解的!
因此建議採用更新到最新的 TLS 1.2.
Poodle Attack是什麼?
簡單來說是一種 man in the middle 竊取資料的方法。
HeatBleed又是什麼?
簡單來說就是駭客用來竊取網站伺服器私密金鑰的一種方法。
拿到網站伺服器私密金鑰之後,該網站所有的加密都可以輕易的被解密破解。
如何檢測網站 HTTPS風險呢?
筆者建議一個簡單的方式可以檢測HTTPS 是否有相關潛在資訊安全風險
https://www.ssllabs.com/ssltest/
使用上只要將網站的網址輸入,就會得到測試結果報告。如下:
SSL/TLS 網站佈署的建議?
https://www.ssllabs.com/downloads/SSL_TLS_Deployment_Best_Practices.pdf
- Use 2048-bit Private Keys
- Protect Private Keys
- Hostname Coverage
- Reliable CA
- TLS v1.2
- Cipher Suites
- Support Forward Secrecy
- Disable Client-Initiated Renegotiation
- Disable TLS compression
- Disable RC4
- Disable SSL v3
- Secure Cookies
- Deploy HTTP Strict Transport Security
- Disable Caching of Sensitive Content
參考資料
- SSL/TLS Deployment Best Practices
- https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet