Algorithm-Design

為什麼“異或”是線性運算,而普通的“加法”不是?

  • July 13, 2016

我是密碼學的新手,並嘗試閱讀該領域的一些文章。這些文章中的許多文章都討論了非線性 S-box,而沒有更多關於它們的非線性意味著什麼。

我有一個簡單的問題,我認為可以指導我解決問題:

  • 為什麼異或運算是線性的,而普通的加(+)卻不是‽
  • 線性度的定義是什麼?

線性度的定義是什麼?

線性是為向量空間之間的映射定義的。如果你有一個欄位 $ F $ 和兩個向量空間 $ U $ 和 $ V $ 在場上 $ F $ , 一張地圖

$$ T:U\rightarrow V $$據說是線性的,如果$$ T(\gamma_1\odot u_1\oplus\gamma_2\odot u_2)=\gamma_1 \odot T(u_1)\oplus\gamma_2\odot T(u_2) $$每當 $ \gamma_1,\gamma_2\in F $ 和 $ u_1,u_2\in V $ . 這裡, $ \oplus $ 和 $ \odot $ 表示向量的加法及其乘以標量(欄位的元素)。 對於不同的向量空間,你會得到不同的線性映射。

讓我們考慮 $ U $ 作為所有 8 位整數的集合,即之間的整數 $ 0 $ 和 $ 255 $ . 其中每一個都可以使用以 2 為基數的數字系統表示為正好 8 位的字元串。例如, $ 13 $ 變成 $ 00001101 $ , 自從

$$ 0\cdot2^7+0\cdot2^6+0\cdot2^5+0\cdot2^4+1\cdot2^3+1\cdot2^2+0\cdot2^1+1\cdot2^0=8+4+1=13. $$ 一種看待的方式 $ U $ 正在考慮將其元素作為向量 $ {0,1}^8 $ . 例如,數字 $ 13 $ 成為向量 $ (0,0,0,0,1,1,0,1) $ . 在這種情況下,定義兩個向量之和的自然方法是模加法 $ 2 $ ,逐個組件。這導致總和是兩個加數的異或。什麼時候 $ F={0,1} $ , $ U $ 變成一個向量空間 $ F $ .

為什麼異或運算是線性的,而普通的加(+)卻不是‽

因為向量空間中的和是異或,而不是模加法。映射 $ x\mapsto x\oplus c $ (這裡, $ \oplus $ 是異或)實際上是一個仿射變換,通常稱為線性外線性代數。

引用自:https://crypto.stackexchange.com/questions/12634