现代密码学8.1--密码学所涉及的数论和群论
現代密碼學8.1--密碼學所涉及的數論和群論
- 數論
- 素數和整除
- 模運算
- 群論
- 有限群
- 群Zn?\mathcal{Z}_n^*Zn??
- 群同構和中國剩余定理
- 使用中國剩余定理進行計算
博主正在學習INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan Katz, Yehuda Lindell,做一些筆記供自己回憶,如有錯誤請指正。整理成一個系列現代密碼學,方便檢索。
博主暫時跳過私鑰加密部分,直接進入公鑰加密,從第8章開始。
8.1節介紹了密碼學所涉及的數學知識:數論和群論。其中,數論在初等數論,群論在近世代數中有較為完整深入的介紹。所以此節只簡單概述數論和群論的定理,少數進行證明。
數論
素數和整除
- a∈Z,b∈Z+a\in Z,b\in Z^+a∈Z,b∈Z+,存在唯一的整數q,rq,rq,r使得a=qb+r,0≤r≤ba=qb+r,0\le r\le ba=qb+r,0≤r≤b。
- ?X,Y∈Z,s.t.Xa+Yb=gcd(a,b)\exists X,Y\in Z,s.t. Xa+Yb=gcd(a,b)?X,Y∈Z,s.t.Xa+Yb=gcd(a,b),gcd(a,b)gcd(a,b)gcd(a,b)是可以寫成Xa+YbXa+YbXa+Yb的最小正整數。
- 如果c∣abc\mid abc∣ab,且gcd(a,c)=1gcd(a,c)=1gcd(a,c)=1,那么c∣bc\mid bc∣b。可推出,如果ppp是素數,而且p∣abp\mid abp∣ab,那么p∣ap\mid ap∣a或p∣bp\mid bp∣b。(因為p?a→gcd(a,p)=1p\nmid a\rightarrow gcd(a,p)=1p?a→gcd(a,p)=1)
- 如果a∣N,b∣N,gcd(a,b)=1a\mid N,b\mid N,gcd(a,b)=1a∣N,b∣N,gcd(a,b)=1,那么ab∣Nab\mid Nab∣N。
模運算
- 如果a=qN+ra=qN+ra=qN+r,那么[a[a[a mod N]=rN]=rN]=r
- “規約后,加、減、乘”?\leftrightarrow?“加、減、乘,再規約”;即如果a=a′a=a'a=a′ mod N,b=b′N,b=b'N,b=b′ mod NNN,則有a+b=a′+b′a+b=a'+b'a+b=a′+b′ mod N,ab=a′b′N,ab=a'b'N,ab=a′b′ mod NNN。
- 除法不一定能滿足,因為往往沒有定義。只有bbb在模NNN下是可逆的,即?c∈{1,2……N?1},s.t.bc=1\exists c\in \{1,2……N-1\},s.t. bc=1?c∈{1,2……N?1},s.t.bc=1 mod NNN,才有a/b=a′/b′=a′ca/b=a'/b'=a'ca/b=a′/b′=a′c mod NNN。而且bbb在模NNN下是可逆的?gcd(b,N)=1\leftrightarrow gcd(b,N)=1?gcd(b,N)=1。(根據擴展歐幾里得算法,gcd(b,N)=1→Xb+YN=1→Xb=1gcd(b,N)=1\rightarrow Xb+YN=1\rightarrow Xb=1gcd(b,N)=1→Xb+YN=1→Xb=1 mod N→X=b?1N\rightarrow X=b^{-1}N→X=b?1 mod NNN)
- 模NNN下的加、減、乘、逆、指數運算都可以在多項式時間內完成。
群論
有限群
- 密碼學中通常研究的是有限交換群
- 封閉性、結合性、單位元、逆元、有限、交換性
- 有限群GGG的階m=∣G∣m=|G|m=∣G∣,則?g∈G,gm=1\forall g\in G,g^m=1?g∈G,gm=1。(根據循環群:ggg的階是<g><g><g>的階,根據拉格朗日定理:<g><g><g>的階是∣G∣|G|∣G∣的因子,則ggg的階是∣G∣|G|∣G∣的因子,即若ggg的階為ddd,則有d∣md\mid md∣m,即gm=gnd=(gd)n=en=eg^m=g^{nd}=(g^d)^n=e^n=egm=gnd=(gd)n=en=e)
- 有限群GGG的階m=∣G∣m=|G|m=∣G∣,?g∈G,?x∈Z\forall g\in G,\forall x\in Z?g∈G,?x∈Z,有gx=g[xmodm]g^x=g^{[x mod m]}gx=g[xmodm]
- 有限群GGG的階m=∣G∣m=|G|m=∣G∣,e∈Ze\in Ze∈Z,函數fe:G→Gf_e:G\rightarrow Gfe?:G→G定義為fe(g)=gef_e(g)=g^efe?(g)=ge。如果gcd(e,m)=1gcd(e,m)=1gcd(e,m)=1,則fff雙射;如果d=e?1d=e^{-1}d=e?1 mod mmm,那么fdf_dfd?是fef_efe?的逆。(fd(fe(g))=fd(ge)=(ge)d=ged=g[edmodm]=g1=gf_d(f_e(g))=f_d(g^e)=(g^e)^d=g^{ed}=g^{[ed mod m]}=g^1=gfd?(fe?(g))=fd?(ge)=(ge)d=ged=g[edmodm]=g1=g,雙射通過函數的逆來證明)
群Zn?\mathcal{Z}_n^*Zn??
對于Zn={0,1……n?1}Z_n=\{0,1……n-1\}Zn?={0,1……n?1},"0"對于乘法運算沒有可逆元,把"0"除去,得到集合{1,2,……n?1}\{1,2,……n-1\}{1,2,……n?1},這個集合是否對于乘法運算滿足群的定義呢?需要判斷是否每個元素都有可逆元。
在“模運算”中闡述過:bbb在模NNN下是可逆的?gcd(b,N)=1\leftrightarrow gcd(b,N)=1?gcd(b,N)=1,也就是只有bbb和NNN互素,在模NNN下bbb才有可逆元。那么我們取這么一個集合:ZN?={b∈{1,…N?1}∣gcd(b,N)=1}Z_N^*=\{b\in\{1,…N-1\}|gcd(b,N)=1\}ZN??={b∈{1,…N?1}∣gcd(b,N)=1}。
- ZN?Z_N^*ZN??在運算?modN\cdot_{mod N}?modN?下,是交換群。
- 如果N=pN=pN=p是素數,則ZN?={1,2,……N?1},?(N)=∣ZN?∣=N?1Z_N^*=\{1,2,……N-1\},\phi(N)=|Z_N^*|=N-1ZN??={1,2,……N?1},?(N)=∣ZN??∣=N?1;
- 如果N=pqN=pqN=pq,p、qp、qp、q是素數,則對于a∈{1,2,……N?1}a\in\{1,2,……N-1\}a∈{1,2,……N?1},如果p∣ap\mid ap∣a或者q∣aq\mid aq∣a,則gcd(a,N)≠1gcd(a,N)\neq 1gcd(a,N)?=1,也就是說滿足p∣ap\mid ap∣a或者q∣aq\mid aq∣a的aaa不在ZN?Z_N^*ZN??中。這樣的aaa有{p,2p,……(q?1)p},{q,2q,……(p?1)q}\{p,2p,……(q-1)p\},\{q,2q,……(p-1)q\}{p,2p,……(q?1)p},{q,2q,……(p?1)q},共有p?1+q?1p-1+q-1p?1+q?1個,那么?(N)=N?1?(p?1+q?1)=pq?1?p+1?q+1=pq?p?q+1=(p?1)(q?1)\phi(N)=N-1-(p-1+q-1)=pq-1-p+1-q+1=pq-p-q+1=(p-1)(q-1)?(N)=N?1?(p?1+q?1)=pq?1?p+1?q+1=pq?p?q+1=(p?1)(q?1)。
- N=∏ipieiN=\prod_ip_i^{e_i}N=∏i?piei??,pip_ipi?是素數,ei≥1e_i\ge 1ei?≥1,則?(N)=∏ipiei?1(pi?1)\phi(N)=\prod_ip_i^{e_i-1}(p_i-1)?(N)=∏i?piei??1?(pi??1)。
- ?a∈ZN?,a?(N)=1\forall a\in Z_N^*,a^{\phi(N)}=1?a∈ZN??,a?(N)=1 mod NNN。
群同構和中國剩余定理
- 群GGG的運算是°G\circ_G°G?,群HHH的運算是°H\circ_H°H?,如果滿足以下兩個條件:
- fff是雙射
- ?g1,g2∈G\forall g_1,g_2\in G?g1?,g2?∈G,有f(g1°Gg2)=f(g1)°Hf(g2)f(g_1\circ_G g_2)=f(g_1)\circ_H f(g_2)f(g1?°G?g2?)=f(g1?)°H?f(g2?)
那么函數f:G→Hf:G\rightarrow Hf:G→H是GGG到HHH的同構/isomorphism,寫作G?HG\cong HG?H
- 如果存在GGG到HHH的同構fff,也一定存在HHH到GGG的同構f?1f^{-1}f?1,但有可能地,fff是可高效計算的,然而f?1f^{-1}f?1不能。
- GGG和HHH的直積:寫作G×H,?(g,h)∈G×H,g∈G,h∈H,G\times H,\forall (g,h)\in G\times H,g\in G,h\in H,G×H,?(g,h)∈G×H,g∈G,h∈H, 運算°\circ°的定義是:(g,h)°(g′,h′)=(g°Gg′,h°Hh′)(g,h)\circ(g',h')=(g\circ_G g',h\circ_H h')(g,h)°(g′,h′)=(g°G?g′,h°H?h′)。
- 中國剩余定理:N=pqN=pqN=pq,p、qp、qp、q是素數,則ZN?Zp×Zq,ZN??Zp?×Zq?Z_N\cong Z_p \times Z_q,Z_N^*\cong Z_p^*\times Z_q^*ZN??Zp?×Zq?,ZN???Zp??×Zq??,其中同構函數fff的定義域是x∈{0,……N?1}x\in\{0,…… N-1\}x∈{0,……N?1},值域是(xp,xq),xp∈{0,……p?1},xq∈{0,……q?1}(x_p,x_q),x_p\in\{0,……p-1\},x_q\in \{0,……q-1\}(xp?,xq?),xp?∈{0,……p?1},xq?∈{0,……q?1},f(x)=([xf(x)=([xf(x)=([x mod p],[xp],[xp],[x mod q])q])q])。
證明:- fff是雙射
- fff是單射
如果f(x)=(xp,xq)=f(x′)f(x)=(x_p,x_q)=f(x')f(x)=(xp?,xq?)=f(x′),那么x=x′=xpx=x'=x_px=x′=xp? mod p,x=x′=xqp,x=x'=x_qp,x=x′=xq? mod qqq,那么p∣x?x′,q∣x?x′,p\mid x-x',q\mid x-x',p∣x?x′,q∣x?x′,又因為gcd(p,q)=1gcd(p,q)=1gcd(p,q)=1,所以pq∣x?x′pq\mid x-x'pq∣x?x′,即N∣x?x′,x=x′N\mid x-x',x=x'N∣x?x′,x=x′ mod NNN。 - fff是滿射
因為函數的值域大小應該是p?qp\cdot qp?q,∣ZN∣=N=p?q=∣Zp∣?∣Zq∣|Z_N|=N=p\cdot q=|Z_p|\cdot|Z_q|∣ZN?∣=N=p?q=∣Zp?∣?∣Zq?∣,所以fff是滿射。
- fff是單射
- 定義群ZNZ_NZN?中的運算是"+N+_N+N?",直積Zp×ZqZ_p\times Z_qZp?×Zq?的運算是"°\circ°",?x1,x2∈ZN\forall x_1,x_2\in Z_N?x1?,x2?∈ZN?,有f(x1+Nx2)=f(x1)°f(x2)f(x_1+_N x_2)=f(x_1)\circ f(x_2)f(x1?+N?x2?)=f(x1?)°f(x2?)
f(x1+Nx2)=([x1+Nx2f(x_1+_N x_2)=([x_1+_N x_2f(x1?+N?x2?)=([x1?+N?x2? mod p],[x1+Nx2p],[x_1+_N x_2p],[x1?+N?x2? mod q])q])q])
=([x1+px2=([x_1+_p x_2=([x1?+p?x2? mod p],[x1+qx2p],[x_1+_q x_2p],[x1?+q?x2? mod q])q])q])
=([x1+x2=([x_1+x_2=([x1?+x2? mod p],[x1+x2p],[x_1+x_2p],[x1?+x2? mod q])q])q])
=([x1=([x_1=([x1? mod p],[x1p],[x_1p],[x1? mod q])°([x2q])\circ([x_2q])°([x2? mod p],[x2p],[x_2p],[x2? mod q])q])q])
=f(x1)°f(x2)=f(x_1)\circ f(x_2)=f(x1?)°f(x2?)
- fff是雙射
使用中國剩余定理進行計算
- 函數fff是群G→HG\rightarrow HG→H的同構,GGG的運算是°G\circ_G°G?,HHH的運算是°H\circ_H°H?。?g1,g2∈G\forall g_1,g_2\in G?g1?,g2?∈G,當計算g=g1°Gg2g=g_1 \circ_G g_2g=g1?°G?g2?時,可以通過以下3步來計算(先分別求函數值,然后在同構群上計算,得到結果再映射到原群):
- h1=f(g1),h2=f(g2)h_1=f(g_1),h_2=f(g_2)h1?=f(g1?),h2?=f(g2?)
- h=h1°Hh2h=h_1\circ_H h_2h=h1?°H?h2?
- g=f?1(h)g=f^{-1}(h)g=f?1(h)
- 直積里的元素(xp,xq)(x_p,x_q)(xp?,xq?)可以被寫成(xp,xq)=xp?(1,0)+xq?(0,1)(x_p,x_q)=x_p\cdot (1,0)+x_q\cdot (0,1)(xp?,xq?)=xp??(1,0)+xq??(0,1),1p?(1,0),1q?(0,1)1_p\leftrightarrow(1,0),1_q\leftrightarrow(0,1)1p??(1,0),1q??(0,1),也就是:(xp,xq)?[(xp?1p+xq?1q)(x_p,x_q)\leftrightarrow [(x_p\cdot 1_p+x_q\cdot 1_q)(xp?,xq?)?[(xp??1p?+xq??1q?) mod N]N]N]
總結
以上是生活随笔為你收集整理的现代密码学8.1--密码学所涉及的数论和群论的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 现代密码学2.2、2.3--由“一次一密
- 下一篇: 计算理论0--概论