加密101-異或(xor)

描述

異或(xor)是邏輯運算符,符號是⊕。當輸入同時爲真或同時爲假時,輸出爲假。否則,輸出爲真。

xor可以叫做“可編程反向器”:一個輸入bit位決定要不要對另一個輸入bit位取反。



異或(xor)操作的圖示如上,在圖示左邊Pi是明文文本(plaintext)的bit位,i是bit位的索引,因爲我們要處理不止一個bit位。在圖示上方是Ki,代表密鑰(key)的bit位,用來決定是否反轉Pi。在右側生成密文(ciphertext)Ci,也就是異或操作生成的結果。

異或的一些性質

當有一個輸入爲1而另一個輸入不爲1,輸出爲1。

可以從上圖推出一些運算性質:

  1. Xor運算符合交換率,a ⊕ b = b ⊕ a;
  2. 如果輸入相同,輸出0。a ⊕ a = 0;   0 ⊕ 0 = 0,1 ⊕ 1 = 0;
  3. 和0做異或運算,輸出爲它本身。 a ⊕ 0 = a; 0 ⊕ 0 = 0, 1 ⊕ 0 = 1;

計算 a ⊕ b ⊕ a =  b?

a ⊕ b ⊕ a a⊕ab(性質1)
                = 0b(性質2)
                = b(性質3)  
以上性質通常用來xor加密,第一步是加密過程,對b進行加密。第二步是解密過程。

假設你要加密的內容爲a,密鑰爲b,則可以用異或加密:

c=a ⊕ b

在數據中保存c就行了。

用的時候:

a=b ⊕ c

即可取得原加密的內容,所以只要知道密鑰,就可以完成加密和解密。

異或運算

我們已經定義了一個bit的異或運算,通常我們需要處理多個bit。大部分編程語言都提供了異或運行符(^)。

一次性密碼本

在19世紀發明的一次性密碼本(one-time pad)可以用異或實現。一次性密碼本的密鑰由隨機選擇的二進制串組成,該密鑰串與明文消息有相等的長度。該密鑰與明文消息做異或運算以生成密文消息。
正確使用一次性密碼本進行加密,在理論上是無法破解的。需要注意的是,許多對稱式加密算法本質上是通過一定的算法來將密鑰作爲僞隨機數發生器的種子來產生(近似於)一次性密碼本的序列,因此類似的問題也需要予以重視:不要重複使用同一個一次性密碼本(或密鑰)來加密不同的明文數據。
假設我們有明文文本的二進制序列,並且隨機密碼本的二進制序列在發送者和接受者中共享。我們可以通過異或取得密文(Ci)。
如果攻擊者看到密文,他們在沒有密碼本(Ki)是不可能解密出明文的。(Eve:監聽者)

關於破解

一次性密碼本安全的兩個必要條件:
  1. 使用真隨機數作爲密鑰;
  2. 不要反覆使用同一個密碼本,或者同一個對稱密鑰;

重用

假設攻擊者截獲了兩個用同樣密碼本加密的密文,攻擊者可以對兩個密文進行異或運算,相當於對兩個明文進行了異或運算。

最終結果並不能單獨得到P1和P2,而是P1^P2。爲了單獨得到P1或P2,你需要抵消異或運算,也就是必須知道其中一個明文,這是不可能的。但是我們可以知道兩個明文共同的一些信息。如下圖所示:


a,b代表明文信息,c,d是a,b分別用同一個密鑰e生成的密文,f是兩個密文進行異或運算的結果。

Crib-dragging方法

假設我們有一些用同一個密鑰K生成的密文Ci。如果我們能正確的猜出其中一個Cj密文對應的明文Pj,就可以求出共享密鑰K。

因爲共享密鑰K已知,我們現在可以解密其他所有密文:

不幸的是我們並不能猜出整個密文,但是可以猜出其中一小部分密文(hard work)。
假設我們猜出了部分明文bit位Pi
k=Ci ⊕ Pi
所有密文處在同一個偏移位置的密鑰都是k,求出同一偏移位置的所有明文:
Pi = Ci⊕ k。
猜中一部分明文文本要比猜中所有明文文本要簡單的多,假設我們的明文文本是英文,下面是找一組常見的英文單詞。通常來說,the, to, then 這樣的單詞出現的頻率非常高,因此,以它們作爲突破口。如果我們更瞭解加密的文本就可以進行更靠譜的猜測,例如,HTML,要猜Content-Type等等。
那怎麼知道我們猜的是正確的呢?如果我們的猜測是正確的,那麼看密文在同一偏移位置解密出來的明文是否有意義。
對於每一條明文的同一個位置的內容,假定明文內容是空格,可以得到密鑰可能是(密文)XOR(0x20),然後用這個可能的密鑰去解其它的密文。假如解出來的明文都是字母,數字,標點或空格的話,則說明這個密鑰很可能就是真正的密鑰。用程序可以迅速對此作出判斷。
假設成功猜出了5個字母 ␣the␣ ,在另一個文本中解出了對應 t␣thr ,可以查字典查找以thr開始的單詞,例如through。重複過程。

遺留問題

一次性密碼本在正確使用時很安全,但在現實中確很少使用,因爲它是不切實際的:
密鑰key和需要加密傳輸的數據一樣長,而且還要保證密鑰key交換的方便和安全。

即使有這些缺陷,它還是有用武之地的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章