Signature
使用 TLS 私鑰簽署消息是否安全?
我想使用站點的 TLS 私鑰對站點中的所有 HTML 和 JavaScript 進行簽名。
(十六進制簽名前面將帶有
<!--
對 HTML 和 JavaScript 都有效的註釋,並附在文本文件的末尾。)這樣最終使用者就可以證明惡意 JavaScript 來自我們,從而確信我們永遠不會這樣做。
將同一私鑰用於 TLS 加密和應用程序級簽名時,是否存在任何安全問題?
您可以肯定地使用伺服器 TLS 私鑰對文件進行簽名。然後在客戶端,您可以使用一些程式碼(例如我在此處編寫的 OpenSSL)檢索用於 HTTPS 連結的 TLS 證書,並驗證簽名。
但是這值得嗎?在安全方面,重新發明輪子並不是很安全。您使用的算法可能會被破壞。
確保數據在伺服器和客戶端之間不被篡改已經是 TLS 所做的事情——以一種經過審計的方式。如果某些攻擊者能夠篡改您在伺服器上的文件,他/她也有可能添加自己的證書。因此,您的整個簽名過程將變得毫無意義。
如果您確實需要驗證文件內容,我會堅持依賴 TLS,並使用單獨的證書。我只會將 TLS 私鑰用於 TLS/HTTPS,而不是其他任何東西。
術語 tls 私鑰是模棱兩可的。PRF 根據所選擇的密碼套件從協商的預主密鑰生成一大堆不同的密鑰。您可能是指用於伺服器身份驗證的證書中的私鑰。在這種情況下,您必須分析攻擊者是否可以影響您響應和簽名的內容。在某些情況下,這可以使他能夠在不知道私鑰的情況下生成被操縱消息的正確簽名。