群、環和域
- 群是兩個元素作二元運算得到的一個新元素,需要滿足群公理。
- 環在阿貝爾群(也叫交換群)的基礎上,添加一種二元運算乘法 \(·\)(雖叫乘法,但不同於初等代數的乘法)。一個代數結構是環\((R, +, ·)\),需要滿足環公理。
- 域在交換環的基礎上,還增加了二元運算除法,要求元素(除零以外)可以作除法運算,即每個非零的元素都要有乘法逆元。
逆元的存在是為了解密。因此,密碼學要以域為研究對象。
由此可見,域是一種可以進行加減乘除(除0以外)的代數結構,是數域與四則運算的推廣。整數集合,不存在乘法逆元(\(\frac{1}{3}\)不是整數),所以整數集合不是域。有理數、實數、復數可以形成域,分別叫有理數域、實數域、復數域。
- 在密碼學中為什么采用有限域?
所有的加密算法都涉及整數集上的算術運算。如果某種算法使用的運算之一是除法,那么我們就必須使用定義在域上的運算。
加密算法需要明文與密文一一映射關系,而密文是有限的,無限域存在浪費。 - 為什么采用模運算?
模運算能夠造出有限域(定義除法)
有限域和\(GF(2^n)\)的形式的有限域
有限域即含有有限個元素的域。
元素個數為\(p^n\)的有限域一般記為\(GF(p^n)\)。
運用\(GF(2^n)\)的原因是:加密運算要求將整數平均地映射到自身且構造的整數集合必須是一個域。
為了使資源不浪費,不使用直接的模運算而是使用既約多項式模運算。
- 為什么密碼學采用\(GF(2^n)\)形式的有限域,而不采用\(GF(p)\)形式的有限域?
為了方便實用和提高效率,希望這個整數集中的數與給定的二進制位數能夠表達的信息一一對應而不出現浪費,即希望整數集的范圍是\([0,2^n-1]\)。
素數
素數(質數)是指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數。
任意正整數可由素數的乘積來表示。
同余會使得多個明文對應同一個密文(即二義性),雖更安全但失去了可用性。因而多數情況下選擇對一個素數進行模運算。
Fermat定理和推論
定理
若\(p\)是素數,\(m\)是正整數且不能被\(p\)整數,則
推論
Fermat定理的另一種有用表示:若\(p\)是素數,\(m\)是任意正整數,則
理解為乘了一個\(m\)即可。
Euler函數
Euler函數\(\phi(n)\),指小於\(n\)且與\(n\)互素的正整數的個數。
- 對於素數\(p\)有:
- 由此,對於素數\(p\)和\(q\),\(p\neq q\),那么對\(n=pq\),有:
Euler定理和推論
定理
對於任意互素的\(m\)和\(n\),有:
另一種有用表示:
本質就是將Euler函數運用在Fermat定理上。
推論
給定兩個素數\(p\)和\(q\),整數\(n=pq\),對於小於\(n\)的任意正整數\(m\ (0<m<n)\),有以下關系式成立:
另一種表達形式:
離散對數
本原根
如果使得\(a^m\equiv 1\ mod\ n\)成立的最小正冪\(m\)滿足\(m=\phi(n)\),則稱\(a\)是\(n\)的本原根。 其中\(\phi(n)\)為歐拉函數。
- 若\(a\)是\(n\)的本原根,則\(a\)的\(1\)到\(\phi(n)\)次冪模\(n\)是各不相同的,且均與\(n\)互素。
- 若\(p\)為素數時,若\(a\)是\(n\)的本原根,則\(a\)的\(1\)到\((p-1)\)次冪模\(p\)是各不相同的。
- 模\(p\)的本原根共有\(\phi(p-1)\)個
本質上講本原根的意思就是該數的\(1\)到\(n\)次方逐個\(mod\ n\),結果各不相同且均\(∈[1,n-1]\)。所以\(n\)的本原根應該就是指模\(n\)的本原根。
參考:密碼學基礎 本原根
- 示例
定義
對於某素數\(p\),\(p\)的本原根為\(a\);
對於任何整數\(b\),\(b\equiv r\ mod\ p\);
存在唯一的整數\(i\),\(0≤i≤(p-1)\),使得
\(i\)稱為以\(a\)為底\(b\)的指標\(ind_{a,p}(b)\),也記為離散對數,記為\(dlog_{a,p}(b)\)
性質
離散對數和一般的對數有着相類似的性質:
計算
\(y\equiv g^x\ mod\ p\)
已知\(g,x,p\),計算\(y\)是容易的
已知\(y,g,p\),計算\(x\)是容易的