Encryption
使用密碼塊大小而不是填充是否安全?
我正在使用這種技術而不是填充密碼緩衝區(這裡是虛擬碼):
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 ,則需要將長度包含在經過身份驗證的數據中。
通常都很好,除了你不應該認為一個替代另一個的事實:最好的做法是同時使用兩者,但使用其中一個總比不使用任何東西要好。他們在安全方面互相幫助,他們是不同的東西。