Encryption

使用後如何銷毀隨機生成的密鑰?

  • August 24, 2022

例如,我有一個這樣的加密程序:

**輸入:**一條消息,M; 我的公鑰Kpub

**第 1 步:**隨機生成一個對稱(例如 AES)密鑰,K

**第二步:**使用K加密M

**第三步:**使用Kpub加密K

**第四步:**銷毀K

第4步,如何銷毀K?我們可以給變數分配一個隨機值(例如,0)嗎?這安全嗎?謝謝!

很多時候,鍵被認為是一個字節數組。128/192/256 位變數可能不可用。較低級別的函式有時使用 4、6 或 8 個 32 位字的 32 位字數組。只要密鑰在記憶體中,只需將數組歸零就可以了。

無論您做什麼,都不要使用十六進製或其他文本表示,因為它們通常很難從記憶體中刪除。如果您的執行時可能,絕對建議將記憶體鎖定到位。解密結束後應立即刪除;等待一個永遠不會到來的解構子呼叫不是一個好主意。

如果密鑰在儲存中,問題會變得更加困難(所以請確保密鑰沒有被換出或類似的東西。一旦在 SSD 或 HDD 上,即使在將密鑰值歸零後也可能達到該值,儘管那絕對需要專業知識,可能還需要一些實驗室設備。隨機化值被認為是一種好的做法,但請注意,即使是隨機化也可能會留下一些殘留資訊。

銷毀消息也可能更難。如果數據特定鍵不在記憶體中,但數據本身在記憶體中,那麼您可能沒有完成那麼多。密鑰銷毀很棒,但不要忘記管理對系統的訪問可能更有價值 - 物理訪問和邏輯訪問。

引用自:https://crypto.stackexchange.com/questions/101599