padding oracle attack相關之PKCS #5填充

flurry_rain發表於2017-10-12

前段時間遇到一個挺有意思是的題目,用到了padding oracle attack的相關知識,於是惡補了一下padding oracle attack相關內容,本著取之於民用之於民同時也可以方便自己以後複習的心態,我決定整理一下這幾天的所學所得,也算是留下點什麼hhh。

前一篇介紹了CBC模式,瞭解到在進行加密前需要對待加密的內容進行分組,以AES為例,需要把待加密內容每十六位元組分為一組,但如果待加密內容不能被16整除,最後一組分組不夠16位該怎麼辦呢?這時候就需要進行填充,湊足16位,填充要遵循一定的規則標準,以AES為例,使用的是PKCS #7,因為AES的塊大小是16位元組,但填充完成方式與PKCS#5填充完全相同,所以這裡我們介紹一下PCKS #5的填充標準。

分組密碼Block Cipher需要在載入前確保每個每組的長度都是分組長度的整數倍。一般情況下,明文的最後一個分組很有可能會出現長度不足分組的長度:,如下圖:
這個時候,普遍的做法是在最後一個分組後填充一個固定的值,這個值的大小為填充的位元組總數。即假如最後還差8個字元,則填充0×08,填充八個,如下圖:

需注意,即便待加密內容正好能被分組密碼長度整除,例如採用AES演算法可以被16整除,仍需填充16個0x10。

以上,便是對PKCS #5的簡要介紹,16位元組的AES採用的是PKCS #7,只是分組長度不一樣,填充的規則基本一樣。


相關文章