請解釋一下什麼是選擇明文攻擊及選擇密文攻擊?

密碼,信息安全


以對稱加密體系為例說明(實際對於非對稱加密體系也是同理)

實際在我們的網路安全模型中一般假設所有的加密演算法都是公開的,密碼體系的安全性依賴於秘鑰的安全性,秘鑰只有發送方和接收方知道,一旦第三方得知這個秘鑰,那他們的通信就被攻破了。

單說選擇明文攻擊和選擇密文攻擊你可能體會不深,所以我把攻擊強度不同的五種攻擊方式都寫出來對比一下你就可以明白這二者有何不同。

這裡我們首先假設通信雙方,Sharon和Christopher已經完成了秘鑰交換,秘鑰k是雙方已知的,開始進行如下通信:

那麼通信過程中一共產生的消息是三組明密文對left( {{p_1},{c_1}} 
ight)left( {{p_2},{c_2}} 
ight)left( {{p_3},{c_3}} 
ight)

  • 唯密文攻擊:只知道密文,也就是c_1,c_2,c_3,那隻能通過統計特性分析其中有什麼規律了
  • 已知明文攻擊:得到了一些給定的明文和對應的密文,在這裡可以是left{ {left( {{p_1},{c_1}} 
ight),left( {{p_2},{c_2}} 
ight),left( {{p_3},{c_3}} 
ight)} 
ight}的任意非空子集。
  • 選擇明文攻擊:除了上面的基礎,攻擊者還可以任意創造一條明文比如「Excited」,並得到其加密後的密文。比如用一定的手段滲透Sharon的系統,但是不能直接攻破秘鑰,於是只能以她的身份發「Excited」,然後用抓包或者別的方法得到她發送出來的加密的消息。
  • 選擇密文攻擊:除了已知明文攻擊的基礎,攻擊者還可以任意製造或者選擇一些密文,並得到其解密後的明文。比如用一定的手段在通信過程中偽造消息替換真實消息,然後竊取Sharon獲得並解密的結果,有可能正好發現隨手偽造的密文解密結果是有意義的,比如naive。
  • 選擇文本攻擊:可以製造任意明文/密文並得到對應的密文/明文,就是上面兩者的結合。

以上攻擊強度自上至下由弱到強。選擇密文攻擊和選擇明文攻擊的不同之處就是加解密方向不同。實際上這些攻擊都是Cryptanalyze,使用哪一種取決於攻擊者(cryptanalyst)掌握的資源和手段。

很慚愧,只做了一些微小的工作。

References

[1] Stallings, William, et al. "Cryptography and Network Security Principles and Practice." (2001).


就是說,你有了一定的許可權,可以隨便說點什麼讓人家加密以後再給你,這是選擇明文攻擊;你有了另一種許可權,可以選擇一段密文讓人家解密以後給你看,這是選擇密文攻擊。


我猜測題主可能忽略了一個前提,那就是在加密中,明文和密文不是相互獨立的。你確定了一個明文,加密後,你能得到的密文也就確定了,而且是唯一確定的,若不是唯一確定,那就沒有辦法解密了。

在這個前提下,我們設計兩種情景來說明已知明文攻擊和選擇明文攻擊。

假設作為攻擊者的你在對方加密者和解密者那裡都安插了間諜,兩個間諜都可以通過種種手段,獲知到加密和解密的信息,但是加密哪些信息,間諜無法控制,所以只能被動的獲知明文和密文以及明文和密文之間的對應。這種攻擊強度,稱為已知明文攻擊。

當安插在加密方的間諜逐步接近了權利中心,他可以悄悄地在要加密的文件中加入他想測試的明文,比如他在最前面加了一句,希特勒萬歲,這樣他就能獲得特定的明文和該明文對應的密文。顯然這種攻擊對於攻擊者的能力要求更高。一個加密方法如果能抵抗選擇明文攻擊,則必然可以抵抗已知明文攻擊。

在實際密碼分析手段中,最著名的差分攻擊是一種選擇明文攻擊,因為你為了獲得特定的差分輸出,需要精心選擇兩個明文以獲得特定的差分輸入。如果你不能控制明文的選擇,那麼就不能獲得你想要的明文差分,差分攻擊也就無法實施。

而另一種著名的分析方法,線性攻擊,則是已知明文攻擊,原因在於,攻擊者要獲得線性逼近表達式,只需要獲得足夠多的明密文對就可以啦,對明文密文對沒有特殊的要求。

爪機實在無力,如果覺得哪裡說的不清楚,我可以去電腦端來個圖文並茂的補充。@@


選擇密文攻擊

以RSA公鑰加密演算法,非對稱密碼為例,即公鑰公開,私鑰加密,發送方通過公鑰加密給接收方T發送信息,B通過自己持有的私鑰對密文進行解密,其他人不知道私鑰是什麼,只有B知道。

所謂「選擇密文攻擊」,就是密碼分析者並不知道解密的密鑰,但是給出任意的消息,密碼分析者都可以將其加密,再解密。或者說,密碼分析者能獲得解密服務。

設攻擊者為A,密文接受者為T,公鑰對為(e, n),私鑰為d,T收到的密文為c,c對應的明文為m。

現在A想知道m = c^d mod n,但是他不想分解n。於是T找了一個隨機數r,r &< n。他進行如下計算:

x = r^e mod n (對r用T的公鑰加密,得到臨時密文x)

y = (x * c) mod n (將臨時密文x與密文c相乘)

t = r^(-1) mod n

A利用了RSA加密和解密過程的特點,即:

如果x = r^e mod n,那麼 r = x^d mod n

現在A要做的是使T用d對t簽名:u = t^d mod n。A需要獲得u,然後計算

m = (t * u) mod n

計算結果是這樣推導的:

t *u mod n = [r^(-1) * y^d] mod n

= [r^(-1) * x^d * c^d] mod n

= c^d mod n

= m

摘自RSA選擇密文攻擊_bbspicker_新浪博客


推薦閱讀:

今天網易被黑,國內網路安全行不行?
請問晶元旁路攻擊分析與防禦的前景?
如何評價 Diffie 和 Hellman 獲 2016 年圖靈獎?
有限域的階為什麼一定是素數的整數次冪?
量子計算機出現之後,取代數字密碼的將會是圖形類的密碼嗎?

TAG:信息安全 | 密碼 | 信息安全和密碼學 |