在已知私鑰的條件下,如何編程(C/C++)實現SSL數據解密?

當我已知SSL私鑰時,通過wireshark可以解密並查看SSL數據。但這個過程是手動的,無法批量自動化處理。目前我有一大批SSL加密數據,也有其對應的私鑰,SSL版本可能不同,加密演算法也可能不一樣,但都有指示可以明確。我想通過編程實現數據的自動化解密,大家有沒有現成的解決方案,在此感謝!

如果C/C++實現困難,用別的語言能做成標準C能調用的庫,或是獨立可執行的命令行參數的可執行程序也可以,方便C程序調用就好


開源庫抄啊


不考慮ssl數據的抓包,IP數據包解析這些過程,那問題並不難。題主可以研究一下crypto++這個庫,裡面提供了各種常用的密碼學演算法,直接用公私鑰做參數調用rsa解密即可,或者直接使用openssl庫,這個庫可能複雜一點,但是處理ssl協議它是專業的。

另外,我同意王邈同學的回答。如果雙方使用dh協議協商密鑰,那即使你有公私鑰對也沒有辦法解密密鑰協商以後得數據。因為公私鑰只是用來加密密鑰協商階段的數據,雙方協商好一個密鑰後,以後得通信都用這個密鑰加密,私鑰就可以扔一邊去了。難道樓主有其他辦法或黑科技能得到雙方協商的密鑰?或者是我對ssl協議理解的不透徹?


apt install openssl ……


linzhenhua/rsa_http_test?

github.com圖標

以前寫過RSA的加解密,看下是否有幫助


已知私鑰不一定能完成解密。例如,如果雙方協商會話密鑰是通過 DH (或 ECDHE),協商過程用你得到的私鑰簽名,這樣依然能完成通信,但是即使獲得私鑰,也不能在事後解密。


wireshark在已知私鑰的情況下可以解密ssl包括tls流量。

https://support.citrix.com/article/CTX135121


推薦閱讀:

解決Fiddler無法抓取ios端HTTPS請求的問題
什麼是ssl證書?
實現全站HTTPS的要點
HTTPS加密時代已經來臨,你的網站安裝SSL證書了嗎?
瀏覽器是如何檢查SSL證書正常工作的?

TAG:SSL | HTTPS | OpenSSL | CC | 加密解密 |