2017-02-21 123 views
1

我有2個NodeJS應用程序,他們交換一些數據。數據通過AES加密。 目前AES KEY在客戶端和服務器的JavaScript代碼中進行了硬編碼。在哪裏存儲有關數據?

問題是:什麼是最佳實踐?我在哪裏存儲客戶端/服務器的密鑰?這兩款應用都是100%的控制檯應用。 (沒有用戶/瀏覽器交互)。

更新:我用術語客戶端/服務器。因爲 - 對我和關於應用程序。邏輯它的服務器/客戶端關係。但是,但應用程序。實際上是在兩個獨立的AWS服務器實例上運行的。我甚至可以在兩個實例之間進行IP限制。因此,任何人都不能訪問其他AWS RDP帳戶以及通過兩個實例通過端口進行通信的實例...

它們通過Web套接字連接交換數據,有時它們還訪問運行在第三例......多數民衆贊成在所有......這是足夠安全的鑰匙硬編碼或我應該把它們放在哪裏?

+0

公鑰和私鑰。爲客戶提供公鑰。在只有管理員可以訪問私鑰的服務器上。然後,你們都成了。如果您知道目標操作系統,您可以嘗試在密鑰存儲區中進行設置。 – Tschallacka

+0

如果存在任何rootkit風險(總是存在),請儘量多做,以防止它首先發生。然後,您可以添加密碼並在啓動時使用readline讀取它。確保所有敏感信息僅在用戶可讀的情況下才能讀取,如果無法防止將其存儲在文件中。保持它們不在應用程序目錄中。 –

回答

1

你應該有一個隨機的密鑰而不是修復的密鑰,因爲如果有人得到它,那麼他們可以在中間人攻擊中使用一個人。

嘗試在服務器上生成密鑰並將其發送給客戶端。在客戶端存儲這個地方(最好在一個範圍內),當你需要讀或寫消息時,你可以簡單地使用它。

此外,你應該爲每個客戶端有不同的密鑰,如果可能的話,你應該定期更換密鑰。

如果您知道如何將其轉換回來,即使使用混淆器(幾乎總是可以反混淆),一切都是非常開源的。擁有硬編碼的密鑰是有用的,因爲根本沒有密鑰。