Protocol-Design
我可以在 JavaScript 中使用可信庫安全地實現可信協議嗎?
僅適用於閱讀本文的任何人:不要滾動您自己的算法。
除此之外,使用受信任的算法和庫來實現受信任的協議是一個好主意嗎?這可能會像滾動你自己的加密貨幣一樣失敗嗎?經過足夠的同行評審後,這可以用於生產嗎?(我知道滾動自己的加密貨幣絕對不安全)
假設我正在嘗試實現一個簡單的 JavaScript 網站,該網站生成 RSA 密鑰對、RSA 加密和簽名,以及 AES 加密數據(例如,非對稱密鑰交換而不是對稱對話;最簡單的協議)。如果我使用受人尊敬的庫、受人尊敬的算法(即 AES 和 RSA)並對網站進行同行評審,這是否可能存在漏洞?
(我們忽略了 JavaScript 程式碼中的所有真實性問題)(另外,我沒有實現我自己的算法,即 AES,以保持清晰)
如果您必須實現或設計和實現自己的協議,那麼使用完善的庫通常是實現它的方法。JavaScript 是一個龐大的生態系統。對於這樣的生態系統,不建議為您需要的低級功能實施您自己的(部分)“危險材料”庫。更有可能的是那裡有更安全的東西。
當然,如果已經有更高級別的協議或協議實現,那麼您絕對應該嘗試使用或改進它。開發傳輸安全性——這通常是用 JavaScript 嘗試的——非常困難。這就是為什麼大多數時候最好的解決方案是在下面使用 TLS。