金鑰和金鑰管理

雖然 JCE 可以保護加密操作和金鑰生成,但開發人員可以實際管理金鑰。這裡需要提供更多資訊。

在執行時處理金鑰的一種普遍接受的最佳實踐是將它們僅儲存為 byte 陣列,而不是作為字串儲存。這是因為 Java 字串是不可變的,不能在記憶體中手動清除清零; 雖然可以刪除對字串的引用,但確切的字串將保留在記憶體中,直到其記憶體段被垃圾收集並重用。攻擊者會有一個大視窗,他們可以在其中轉儲程式的記憶體並輕鬆找到金鑰。相反,byte 陣列是可變的,可以將其內容覆蓋到位; 一旦你不再需要鍵,你就可以將鍵清零