Encryption
使用後如何銷毀隨機生成的密鑰?
例如,我有一個這樣的加密程序:
**輸入:**一條消息,
M
; 我的公鑰Kpub
**第 1 步:**隨機生成一個對稱(例如 AES)密鑰,
K
**第二步:**使用
K
加密M
**第三步:**使用
Kpub
加密K
**第四步:**銷毀
K
第4步,如何銷毀
K
?我們可以給變數分配一個隨機值(例如,0)嗎?這安全嗎?謝謝!
很多時候,鍵被認為是一個字節數組。128/192/256 位變數可能不可用。較低級別的函式有時使用 4、6 或 8 個 32 位字的 32 位字數組。只要密鑰在記憶體中,只需將數組歸零就可以了。
無論您做什麼,都不要使用十六進製或其他文本表示,因為它們通常很難從記憶體中刪除。如果您的執行時可能,絕對建議將記憶體鎖定到位。解密結束後應立即刪除;等待一個永遠不會到來的解構子呼叫不是一個好主意。
如果密鑰在儲存中,問題會變得更加困難(所以請確保密鑰沒有被換出或類似的東西。一旦在 SSD 或 HDD 上,即使在將密鑰值歸零後也可能達到該值,儘管那絕對需要專業知識,可能還需要一些實驗室設備。隨機化值被認為是一種好的做法,但請注意,即使是隨機化也可能會留下一些殘留資訊。
銷毀消息也可能更難。如果數據特定鍵不在記憶體中,但數據本身在記憶體中,那麼您可能沒有完成那麼多。密鑰銷毀很棒,但不要忘記管理對系統的訪問可能更有價值 - 物理訪問和邏輯訪問。