在密碼學中,CBC Oracle也稱為密碼學攻擊,是一種針對加密算法的攻擊。
首先,我們需要了解什么是CBC模式。CBC(Cipher Block Chaining)是一種常見的工作模式,它將消息切分成塊并進行加密,每個加密塊的輸出都會與下一個待加密塊合并生成密文。在CBC模式中,每個塊的加密都依賴于前一個塊的密文。因此,如果攻擊者可以解密先前的塊,他們可以預測下一個塊的解密輸出。
基于這個條件,我們就可以利用 CBC Oracle 實現一種攻擊方式。攻擊者發送多個由一組隨機 IV 和密文構成的詢問,然后依次獲取其對應明文比特流,再把所有的比特流組成一個字節流,就可以得到解密密鑰。下面是一個示例:
IV1 XOR plaintext1 = ciphertext1 IV2 XOR plaintext2 = ciphertext2
攻擊者得到了 ciphertext1 和 ciphertext2 的值,然后向加密器提交了兩個不同的 IV(IV1 和 IV2),以及兩個密文值(ciphertext1 和 ciphertext2)。加密器將這兩個密文解密,并返回已解密的比特流。這樣攻擊者就能獲得兩個不同的明文比特流:plaintext1 和 plaintext2。最后,攻擊者將這兩個比特流合并成一個字節流,就可以得到該加密器的解密密鑰。
當然,CBC Oracle 攻擊并非總是成立,取決于加密算法中使用的特定 IV 衍生方案。但是,在某些情況下,基于 CBC 模式和特定 IV 衍生方案的攻擊可以非常有效,因此使用 CBC 模式時需要十分小心。