Encryption

使用密碼塊大小而不是填充是否安全?

  • December 25, 2015

我正在使用這種技術而不是填充密碼緩衝區(這裡是虛擬碼):

struct {
  int size;         //size of cipher buffer
  byte[32] vector; //random IV (block size is 256 bits)
  byte[] buffer;    //encrypted buffer
}

使用帶有 CBC 連結的分組密碼加密的密碼數據,使用 IV 指定為vector

我“按原樣”儲存這個結構,為了解密它,逐塊解密緩衝區,然後將緩衝區切割為size.

問題是:它安全嗎?任何提示/批評?

是的,這很好。

如果您不需要以明文形式儲存大小,則使用空間存在實際缺點。大小欄位通常佔用 32 或 64 位,而典型的填充平均增加一個字節。此外,如果您使用encrypt-then-MAC ,則需要將長度包含在經過身份驗證的數據中。

通常都很好,除了你不應該認為一個替代另一個的事實:最好的做法是同時使用兩者,但使用其中一個總比不使用任何東西要好。他們在安全方面互相幫助,他們是不同的東西。

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