GF( p^n) 伽罗瓦域

数学术语

异或: 相同则为0, 不同则为1
与: 有一个为0, 结果为0

以下符号说明
•表示一种运算
+ 表示加法运算,
* 表示乘法运算
这里的加法和乘法都是一种运算, 并不是特指整数中的加法和乘法

设G是一个非空集合, 且存在一种运算"•".如果它满足:
(1)结合律: ( a • b ) • c = a • ( b • c )
(2)存在恒等元e: e • a = a • e = a
(3)存在逆元素: a • b = b • a = e
则称G为群, 如果•为加法, 则称为加法群

举例,
对于整数中的加法运算来说,
e=0, 很显然满足以下条件
( a + b ) + c = a + ( b + c)
0 + a = a + 0 = a
a + (-a) = (-a) + a = 0

对于实数中的乘法法运算来说,
e = 1
( a * b ) * c = a * ( b * c )
1 * a = a * 1 = a
a * 1/a = 1/a * a = 1

整数, 是一个加法群, 但不是乘法群, 因为没有乘法逆元

设R有两种运算操作,分别为+, *, 即加法操作和乘法操作, 并且是一个加法群, 且满足以下条件

  1. ( a * b ) * c = a * ( b * c )
  2. 分配律
    a * ( b + c ) = a * b + a * c
    ( b + c ) * a = b * a + c * a

则称R为环
显然, 整数, 实数, 复数都是环

交换环

如果还满足以下条件
a * b = b * a
则称为交换环

如果交换环还满足以下条件
(1)存在e元素: e • a = a • e = a
(2)存在逆元素: a • b = b • a = e
那就称为

整数不是一个

有限域

定义

如果果域中的元素是有限的, 则称为有限域, 设它的元素的个数为n

特性:

  1. 有限域的元素的个数必为一个素数. (不清楚为什么, 估摸着是跟费马小定理有关)
  2. 对于乘法恒等元e1和加法恒等元e0,
    e1 + e1 + e1 + … + e1 = e0 , (即n个e1相加)

举例1

以同余运算为例, 设a mod p, b mod p, c mod p分别为a, b, c对p的取模
它的加法规则如下
( a mod p ) + ( b mod p ) = ( a + b ) mod p
显然, 加法操作满足域的定义
它的乘法规则如下
( a mod p ) * ( b mod p ) = (a * b ) mod p
显然, 乘法操作满足交换律

以下用%代替mod符号
加法恒等元为0%p
乘法恒等元为1%p

取一个质数, 假设为11, 那么这样的一个数集(取p=11)
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
先看看它满足哪些特性, 以下用%代替mod

  1. 11个1%11相加, 结果为11%11, 等于0%11
  2. 每个非零元素都有逆元, 如
    1%11 * 1%11 = 1%11
    2%11 * 6%11 = 12%11 = 1%11
    3%11 * 4%11 = 12%11 = 1%11
    5%11 * 9%11 = 45%11 = 1%11
    7%11 * 8%11 = 56%11 = 1%11
    10%11 * 10%11 = 100%11 = 1%11
    即就是从1到10的每个元素都存在乘法逆元. (好奇妙)

举例2

再看一个极端的例子, 取p=2
{0, 1}
加法的性质
1%2 + 1%2 = 0%2
0%2 + 0%2 = 0%2
1%2 + 0%2 = 1%2
加法规律是: 相同为0, 不同为1, 计算机上称这个运算为异或运算

再看乘法的性质
1%2 * 1%2 = 1%2
0%2 * 0%2 = 0%2
1%2 * 0%2 = 0%2
乘法规律是: 其中一个元素为0, 则结果为0, 计算机上称这个运算为运算

GF(q)

GF(q)的定义:

  1. q = pn, p为素数
  2. 它的元素用一堆多项式来表达.
    即由{1, x1, x2, x3 …, xn-1}进行各种组合.
  3. 它的加法运算规则非常特殊, 为同次项的系数进行异或运算, 然后再对一个n次多项式M取模
  4. 它的乘法运算规则, 先按普通的多项式乘法, 然后再对一个n次多项式M取模
  5. 这样的多项式M, 称为本原多项式, 它是怎么找出来的?我也不知道, 靠枚举?靠猜?, 反正网上可以找到一此已经计算好的

举例说明
设p=2, n=3, 那么{1, x1, x2} 进行各种组合之后, 再加上零0, 得到一个GF(8)
{0, 1, x, x+1, x2, x2 + 1, x2 + x, x2 + x + 1}
M = x3 + x + 1 . (这是别人已经找好的)

  1. 加法运算规则举例
    现在验证加法运算(其实是异或运算)
    x + x = 0 (系数相同, 值为0), 逆运算就 0 - x = x , 即-x=x, 也就是说, GF(q)中元素的加法逆元就是它本身
    x + x + 1 = 1
    x + x2 = x2 + x
    x + x2 + x = x2

  2. 乘法运算规则举例
    x * ( x2 + 1 ) % M = (x3 + x) %M = ( (x3 + x + 1) + 1 ) %M = 1
    ( x + 1 ) * ( x2 + x ) % M = ( x3 + x2 + x2 + x ) %M = (x3 +x ) %M = ( x3 + x + 1 + 1) %M = 1
    同理有
    x2 * ( x2 + x + 1 ) %M = 1
    可以看出, 每个非零元素都有乘法逆元

用计算机中的bit来表示
x2 + x1 + x0 表示为 111
x2 表示为 100
x1 表示为 010
那么GF(8)可以写成
{000, 001, 011, 100, 101, 110, 111}
M = 1011
010 * 101 = 001
011 * 110 = 001
100 * 111 = 001

在计算机中的应用

1个字节8bit, 可以生成GF(28)域
它的本原多项式为x8 + x4 + x3 + x + 1
https://en.wikipedia.org/wiki/Finite_field_arithmetic#Rijndael.27s_finite_field

你可能感兴趣的:(加密)