在我的服務器上,我有用戶可以存儲和加密文件。加密的文件與密碼衍生的密碼...如果用戶忘記密碼怎麼辦
用戶密碼是SHA512散列,所以我不能將其解密/解密。 用戶的文件使用在我的數據庫中加密的隨機file_key進行加密,知道文件的file_key的唯一方法是使用用戶的密碼來解密file_key。我這樣做是因爲我不希望每次用戶更改密碼時都要重新加密所有文件,而只是使用用戶的新密碼重新加密file_key並將其重新存儲在數據庫中。
生成一個密鑰來加密用戶的數據;將其稱爲「內容 加密密鑰」。從用戶密碼中獲取密鑰;將此稱爲 「密鑰加密密鑰」。使用 「密鑰加密密鑰」加密「內容加密密鑰」。將加密的密鑰與salt以及用於密鑰推導的迭代次數一起存儲。
如果他們更改密碼,請使用舊密碼 解密內容加密密鑰,然後使用從新密碼導出的密鑰對其進行重新加密。您應該爲新密碼選擇一種新鹽,並確保將其與新的加密密鑰一起存儲。
我已經開始想到一個小問題,事實上,如果用戶忘記密碼並要求重置密碼,我將失去所有加密文件,因爲這對我來說是不可能的訪問加密文件,沒有原始密碼..
是否有任何的加密策略來處理用戶可能忘記了密碼,因此,我將能夠解密文件的可能性?
我認爲這是最好的主意,考慮保持良好的安全級別。謝謝你這個偉大的答案@timdev! – raphjutras