padding oracle attack相關之CBC模式
前段時間遇到一個挺有意思是的題目,用到了padding oracle attack的相關知識,於是惡補了一下padding oracle attack相關內容,本著取之於民用之於民同時也可以方便自己以後複習的心態,我決定整理一下這幾天的所學所得,也算是留下點什麼hhh。
先碼一下原題吧:
In thisassignment, you must decrypt a challenge ciphertext generated using AES inCBC-mode with PKCS #5 padding. (Note: technically this is PKCS #7 padding,since the block size of AES is 16 bytes. But the padding is done in exactly thesame way as PKCS #5
padding.) To do so, you will be given access to a server thatwill decrypt any ciphertexts you send it (using the same key that was used togenerate the challenge ciphertext)...but that will only tell you whether or notdecryption results in an error!
大概要求就是,給你一串CBC模式下使用AES演算法加密的密文(密文按照PKCS #5標準填充)以及一個可以解密傳送的任何密文的伺服器(使用的金鑰與生成密文的金鑰相同)並且這個伺服器會告訴我們密文解密是否錯誤,嘗試解密得到明文(明文編碼對應的ascii字元可以組成有意義的資訊)。原題題目還提示我們使用padding oracle attack來進行解密工作,因此理解padding oracle attack的工作原理是解決這個問題的關鍵。
在說padding oracle attack之前,先簡單介紹一下CBC模式以及PKCS #5的相關知識。
首先是CBC模式:CBC模式是一種分組連結模式,目的是為了使原本獨立的分組密碼加密過程形成迭代,使每次加密的結果影響到下一次加密。這可以強化加密演算法的”敏感性”,即實現所謂的”雪崩效應”,在香濃理論中這就是”擾亂原則”。加密過程直接看下圖:
解密過程就是加密過程的逆過程,如下圖:
採用不同的加密演算法,密文塊(Block Cipher)的長度會不一樣,具體看分組密碼演算法的要求,以AES演算法為例,每個分組的長度為16位元組。CBC模式下的AES加密過程簡單說就是提交一個IV值(長度為16位元組)和金鑰key,將待加密的內容每十六位元組分為一塊劃分為n塊,然後第一塊與IV值異或,第二塊和第一塊異或...第n塊和第n-1塊異或,將異或得到的值作為明文輸入,用AES演算法進行加密,金鑰都是key,這樣就可以得到密文了。
解密過程是加密過程的逆過程,還是接著上面的例子,以AES演算法為例,將密文每十六位元組一組劃分開,然後用AES演算法進行解密,解密後得到中間值(Intermediary Value
),第一塊中間值與加密時提交的IV值異或,第二塊中間值與第一塊密文異或...第n塊中間值與第n-1塊密文異或,異或得到的結果便是明文。
相關文章
- padding oracle attack相關之padding oracle attackpaddingOracle
- padding oracle attack相關之PKCS #5填充paddingOracle
- 我對Padding Oracle Attack的分析和思考paddingOracle
- Java DES 加解密("DES/CBC/PKCS5Padding")Java解密padding
- AES-CBC 模式加密模式加密
- padding模式padding模式
- PHP 實現 AES-128-CBC-PKCS5Padding 加密PHPpadding加密
- 使用AES 128位加解密,加解密模式採用CBC,填充模式採用PKCS5Padding的Java工具方法示例解密模式paddingJava
- Oracle相關Oracle
- oracle 相關Oracle
- oracle之 調整 I/O 相關的等待Oracle
- Oracle相關命令Oracle
- Oracle synonym 相關Oracle
- Oracle相關收集Oracle
- oracle sga相關Oracle
- width和padding之間的關係介紹padding
- Oracle Log Miner相關Oracle
- ORACLE db相關nameOracle
- oracle job_相關Oracle
- Oracle 密碼相關Oracle密碼
- oracle維護相關Oracle
- 面試之 Memcache 相關面試
- Oracle GoldenGate系統之----相關引數說明OracleGo
- oracle關於分割槽相關操作Oracle
- 常回家看看之largebin_attack
- Oracle 相關知識點Oracle
- oracle awr相關知識Oracle
- Oracle Standby系統相關Oracle
- oracle 連線數相關Oracle
- oracle Metrics相關檢視Oracle
- oracle asmlib包相關OracleASM
- oracle相關內容索引Oracle索引
- Oracle 11g RAC之HAIP相關問題總結OracleAI
- 設計模式的相關介紹設計模式
- ASM之ASM相關概念ASM
- 統計學三大相關係數之Pearson相關係數、Spearman相關係數
- Oracle相關基礎知識Oracle
- oracle最大連線數相關Oracle