Cryptanalysis

儲存純數據長度是否會洩漏有關加密方案的基本資訊?

  • April 19, 2018

考慮下面的函式:

def dec args=password, iv, encrypted
   decipher = OpenSSL::Cipher.new('aes-128-cbc')
   decipher.decrypt
   decipher.padding = 0
   decipher.key = Digest::SHA256.hexdigest(password) # just for simplicity;  use PBKDF2 for real applications
   decipher.iv = Base64.decode64(iv)
   plain = decipher.update(Base64.decode64(encrypted)) + decipher.final
   return plain
 end

該函式將正確破譯文本,但可能會添加額外的不可見字元,具體取決於原始純文字的大小。然後,必須與和length一起儲存在文件中,解密函式變為:encrypted``iv

def dec args=password, iv, encrypted, length
   decipher = OpenSSL::Cipher.new('aes-128-cbc')
   decipher.decrypt
   decipher.padding = 0
   decipher.key = Digest::SHA256.hexdigest(password) # just for simplicity;  use PBKDF2 for real applications
   decipher.iv = Base64.decode64(iv)
   plain = decipher.update(Base64.decode64(encrypted)) + decipher.final
   return plain[0..(length-1)]
 end

我懷疑在加密文件中儲存長度是一個加密弱點。解決它的正確方法是什麼?

我懷疑在加密文件中儲存長度是一個加密弱點。

它不是。加密通常被認為是安全的,只要密文允許攻擊者推斷出除了其大小之外的任何其他內容。明文長度不被視為秘密。

雖然這不會保護使用一個符號塊大小加密的未填充的“是”/“否”消息,但這是整個通信方案的弱點(使用兩個字元串別名來傳達布爾值),而不是算法。對於實際的塊大小,長度也可用於辨識影片文件。但這完全超出了加密保護的範圍。

如果您必須保護明文長度,請使用任何安全加密方案的填充。

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