密碼學中的數(shù)學知識

康樂
密碼學算法中很多地方都有提到群,域,有限域等概念,如RSA,ECC,AES中均有提到群操作,有限域等內(nèi)容,一直對這塊內(nèi)容比較迷糊,專門來梳理一下。

2345截圖20200908083720.png

1密碼學中的數(shù)學知識

密碼學算法中很多地方都有提到群,域,有限域等概念,如RSA,ECC,AES中均有提到群操作,有限域等內(nèi)容,一直對這塊內(nèi)容比較迷糊,專門來梳理一下。

2群(Group)

群指的是元素集合G及G內(nèi)任意兩個元素的聯(lián)合操作。群的部分公理如下,

1)單位元:Identify Element,在群內(nèi)存在一個元素e,使得群中任意元素a滿足ae=ea=a成立。單位元與群內(nèi)其他元素結(jié)合,不會改變那些元素。

2.)逆元:對于每個屬于群G的元素a,都存在一個元素a^(-1),使得a*a^(-1)=1。a^(-1)就是a的逆元,逆元也屬于群G。

3域(Field)

域是擁有特定元素集合。如實數(shù)集合R是一個域,每個實數(shù)a都有一個逆元。在密碼學中,提到最多的是有限域,有限域就是指有限個元素的集合,域內(nèi)所包含的元素稱為這個域的階。常用的2個域是素域GF(p)和擴展域GF(2^m)。

4素域(Prime Field)

假設p是一個素數(shù)(prime),則素域表示為GF(p)。在素域GF(p)內(nèi)所有的非零元素都存在逆元,在GF(p)內(nèi)的加法和乘法都要做模p操作(mod p將計算結(jié)果限制在有限域內(nèi)),即,

加法定義:a+b=(a+b)mod p

乘法定義:a•b=(a•b)mod p

素域GF內(nèi),加法單位元是0,乘法單位元是1。

素域內(nèi)的加法逆元定義為a+(-a)=0 mod p。素域內(nèi)的任何一個非零元素a的乘法逆元定義為a*a^(-1)=1 mod p。

例子1有限域GF(5)

如對于有限域GF(5)=,在此有限域內(nèi)的加法和乘法結(jié)果,以及域內(nèi)加法逆元和乘法逆元。如下圖,計算的理解參考圖中標注,其中取模的作用就是將計算結(jié)果限制在有限域GF(5)之內(nèi)。

2345截圖20200908083720.png

例子2有限域GF(2)

GF(2)是一個最小的有限域,也是一個比較好玩的域,GF(2)=,在此域內(nèi)的運算都是通過mod 2實現(xiàn)的。

2345截圖20200908083720.png

GF(2)的加法,即模2加法,域異或(XOR)門等價。GF(2)乘法與邏輯與(AND)門等價。GF(2)域?qū)ES而言至關重要。

5擴展域GF(2^m)

又叫二元擴域,m>1的域稱為擴展域。在擴展域GF(2^m)中,元素使用多項式表示,多項式的系數(shù)為GF(2)中的元素。

擴展域GF(2^m)內(nèi),零元0用全零比特串表示,乘法單位元1用比特串(00...001)表示。

AES中使用域GF(2^8),在域內(nèi)的數(shù)字表示為,A(x)=a7 x^7+...+a1 x+a0,其中系數(shù)a0~a7均屬于GF(2)=。在GF(2^8)中共256個元素,因此有256個對應的多項式。

擴展域中的加減法

《SM2橢圓曲線密碼學中的定義》擴展域內(nèi)兩個域元素加法定義為比特串按比特異或運算。如下圖就是將x冪次相同的系數(shù)進行加減法操作,

2345截圖20200908083720.png

按照對應系數(shù)做異或運算,因此計算結(jié)果中消去了x^4和x^0項。

擴展域中的乘法

擴展域內(nèi)乘法定義為a•b=a(x)b(x)mod f(x),其中f(x)稱為不可約多項式,擴展域乘法對不可約多項式取模。

什么是不可約多項式呢?

類似于素數(shù)p,不能夠進行因式的多項式稱為不可約多項式。如多項式x^4+x^3+x+1是可約的,因為x^4+x^3+x+1=(x^2+x+1)(x^2+1),可以做因式分解。AES使用的不可約多項式為x^8+x^4+x^3+x+1。

乘法舉例:

計算GF(4)中A(x)=x^3+x1和B(x)=x^2+x相乘,不可約多項式P(x)=x^4+x+1。

首先計算A(x)x B(x)=x^5+x^3+x^2+x,然后對P(x)取模,可用豎式乘法計算,

2345截圖20200908083720.png

余數(shù)x^3即為乘法結(jié)果。

擴展域內(nèi)的逆操作

給定有限域GF(2^m)和不可約簡的多項式P(x),任何一個屬于GF(2^m)內(nèi)的元素A的逆元定義為:A^(-1)*A=1 mod P(x)。A^(-1)就是A的乘法逆元。計算乘法逆元一般使用擴展歐幾里得算法。

6 AES中的S-Box

AES加解密算法中SubBytes字節(jié)替換中使用的S-Box盒中包含了GF(8)模P(x)=x^8+x^4+x^3+x+1()的逆元。

由于計算逆元比較復雜,因此AES算法中直接給出了S-Box和逆S-Box(可參考FIPS 197),加解密過程中通過查表法使用。

對S-Box具體計算感興趣的小伙伴可參考[4]的6.3.1小節(jié),或者參考[5]的鏈接,此處不給出計算過程。

S-Box

2345截圖20200908083720.png

Inverse S-Box

2345截圖20200908083720.png

7參考

《SM2橢圓曲線公鑰密碼學》第一章.

Understanding Cryptography-A Textbook for Students and Practitioners,Christof paar.

FIPS PUB 197 Specification for the Advanced Encryption Standard(AES),NIST.

Cryptography and Network Security,Principle and Practice,7th Edition

https://blog.csdn.net/u011516178/article/details/81221646

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論