檔案加密方案

2021-07-03 07:10:28 字數 1815 閱讀 2032

使用者輸入密碼,軟體驗證密碼是否正確。

傳統的對稱加密演算法,給出密文,隨意給出乙個金鑰,使之來解密。

演算法都是可以繼續的,即使解密出來的資訊是亂的。

如何驗證使用者的密碼是否正確?

最差的解決方案

把使用者的檔案先加密,然後將使用者的密碼儲存到檔案末尾。

解密時,驗證使用者輸入的金鑰是否和檔案末尾相同,如果相同則進行解密。

否則,提示密碼不正確。

這樣一來,所有人都能看到金鑰是什麼,只要他能讀取檔案。

不安全!!

稍好一點的解決方案

把使用者的檔案先加密,先利用使用者輸入的金鑰進行檔案加密,然後將使用者的密碼做hash,儲存hash值到檔案末尾。

解密時,先將使用者輸入做hash,將得到的hash值和檔案末尾的hash值比較,相同則解密,不同則提示密碼錯誤。

雖然其他人可以讀取到hash值,但是無法獲取原始金鑰。

然而,現在有許多**在收集一些常見字串的hash值,也就是說,通過hash值可以查到某些原始字串。比如」f447b20a7fcbf53a5d5be013ea0b15af」就是123456經過md5摘要演算法得到的結果。因此,上述方案仍有隱患。

更好的方案

把使用者的檔案先加密,先利用使用者輸入的金鑰進行檔案加密,然後將使用者的密碼做兩次hash,儲存兩次hash值到檔案末尾。

解密時,先將使用者輸入做兩次hash,將得到的hash值和檔案末尾的hash值比較,相同則解密,不同則提示密碼錯誤。

很好的避免了上面提到的問題,然而,該方案仍然不完美。

想象對資料夾加密的應用場景,使用者輸入乙個金鑰,希望對資料夾下所有檔案使用相同的金鑰進行加密,這樣以來,攻擊者就會發現每個檔案的末尾都是相同的,那麼他就可以斷定該資料夾下所有檔案都是用同乙個金鑰加密的。

略帶瑕疵的方案

把使用者的檔案先加密,先利用使用者輸入的金鑰進行檔案加密,然後將使用者的密碼和檔名做某種運算(拼接或異或等),之後再對結果做兩次hash,儲存兩次hash值到檔案末尾。

解密時,先將使用者輸入的密碼和檔名做某種運算,之後再進行兩次hash,將得到的hash值和檔案末尾的hash值比較,相同則解密,不同則提示密碼錯誤。

由於資料夾下每個檔案的名字都是不一樣的,因此每個加密後的檔案末尾都是不一樣的,故無法推斷是否用了同乙個金鑰加密。

但是,該方案仍然有瑕疵,因為沒有對檔名進行加密。

攻擊者仍然可以看到檔名,推斷出檔案可能的資訊。

由於解密時需要還原檔名,故檔名肯定不能使用摘要演算法。

而驗證金鑰正確性時,只能看到加密後的檔名,而加密時是對明文檔名做的hash,這樣金鑰驗證肯定不會通過,也就無法解密檔案。

差不多可以的方案

將源檔名附加到檔案末尾,作為檔案的一部分,利用使用者密碼進行檔案內容加密

加密之後的檔名為源檔名兩次hash之後的值

將使用者密碼和加密之後的檔名做某種運算,之後進行一次hash,儲存hash值到加密之後的檔案末尾

加密之後的檔案中儲存了使用者原始金鑰和源檔名,但是攻擊者無法利用加密之後的資訊來反推關於金鑰的任何資訊

資料加密方案

資料加密又稱密碼學,它是一門歷史悠久的技術,指通過加密演算法和加密金鑰將明文轉變為密文,而解密則是通過解密演算法和解密金鑰將密文恢復為明文。資料加密目前仍是計算機系統對資訊進行保護的一種最可靠的辦法。它利用密碼技術對資訊進行加密,實現資訊隱蔽,從而起到保護資訊的安全的作用。資料加密技術要求只有在指定...

Paillier加密方案

carmichael函式 n in z forall a in z n 若能滿足 a x equiv 1 mod n 的最小x,記為 n 稱為carmichael函式 定理 n in z 設 n n 1 n 2 且 n 1,n 2 1,則 n n 1 n 2 證明.forall a in z n a...

CKKS加密方案

本文內容來自 protecting privacy throughhomomorphic encryption 主要學習裡面的ckks部分。ckks是一種同態加密方案,其安全性依賴於rlwe問題。明文是實數向量,表示為定點型別計算方式 實數表示方法 浮點計算和定點計算 該方案很支援以simd方式在這...