title: ssl Diffie-Hellman弱密碼問題
date: 2017-08-16 16:41:55
categories: 網絡安全
tags: ssl Diffie-Hellman
開發相關
- tomcat8
- jdk1.8
- springboot
- 掃描軟件 Nessus
異常信息
關於Diffie-Hellman
Diffie-Hellman:一種確保共享KEY安全穿越不安全網絡的方法,它是OAKLEY的一個組成部分。Whitefield與Martin Hellman在1976年提出了一個奇妙的密鑰交換協議,稱為Diffie-Hellman密鑰交換協議/算法(Diffie-Hellman Key Exchange/Agreement Algorithm).這個機制的巧妙在於需要安全通信的雙方可以用這個方法確定對稱密鑰。然后可以用這個密鑰進行加密和解密。但是注意,這個密鑰交換協議/算法只能用於密鑰的交換,而不能進行消息的加密和解密。雙方確定要用的密鑰后,要使用其他對稱密鑰操作加密算法實際加密和解密消息。
原因及方案
Diffie-Hellman group長度過短,目前NSA已破解1024位Diffie-Hellman
第一步:生成多位數Diffie-Hellman group
openssl dhparam -out dhparams.pem 2048
第二步:使用安全的密碼套件
這里舉tomcat為例,因為我們用的就是tomcat,其他的服務器nginx,iis,apache等看第一篇參考資料
Apache Tomcat
server.xml (for JSSE)
<Connector
ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_DSS_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_SHA256,TLS_ECDHE_RSA_WITH_AES_128_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_SHA,TLS_ECDHE_RSA_WITH_AES_256_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_SHA384,TLS_ECDHE_RSA_WITH_AES_256_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_SHA,TLS_DHE_RSA_WITH_AES_128_SHA256,TLS_DHE_RSA_WITH_AES_128_SHA,TLS_DHE_DSS_WITH_AES_128_SHA256,TLS_DHE_RSA_WITH_AES_256_SHA256,TLS_DHE_DSS_WITH_AES_256_SHA,TLS_DHE_RSA_WITH_AES_256_SHA"
/>
因為我采用的是springboot內置tomcat方法,沒有server.xml 去springboot官網 可以在application.properties配置
server.ssl.ciphers=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_DSS_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_SHA256,TLS_ECDHE_RSA_WITH_AES_128_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_SHA,TLS_ECDHE_RSA_WITH_AES_256_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_SHA384,TLS_ECDHE_RSA_WITH_AES_256_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_SHA,TLS_DHE_RSA_WITH_AES_128_SHA256,TLS_DHE_RSA_WITH_AES_128_SHA,TLS_DHE_DSS_WITH_AES_128_SHA256,TLS_DHE_RSA_WITH_AES_256_SHA256,TLS_DHE_DSS_WITH_AES_256_SHA,TLS_DHE_RSA_WITH_AES_256_SHA
針對老版本jdk,為了能夠使用256位AES密碼,有必要安裝JCE無限強度管理策略文件,具體地址在這里
參考資料
https://weakdh.org/sysadmin.html
https://baike.baidu.com/item/Diffie-Hellman/9827194?fr=aladdin