· 抽象代数(区块链密码学向)

2 · 环与域(Ring & Field)

群只关注一种运算;环和域同时有加法和乘法。密码学里「模质数 p 运算」的舒适环境,本质就是一个域。

群(一个集合配上一种可逆运算)只关注一种运算。但整数、多项式、模 p 剩余这些对象都同时有加法和乘法——要描述它们需要更丰富的结构:环和域。区块链与密码学里「模质数 p 运算」的舒适环境,本质就是一个域。


一、环(Ring)

集合配上两种运算(加、乘),满足:

例子:整数 Z\mathbb{Z}、多项式 Z[x]\mathbb{Z}[x]、模 n 剩余 Zn\mathbb{Z}_n 都是环。环里乘法不要求有逆元——这是环和域的分界点。

二、域(Field)

域是「最完美」的环:非零元素对乘法也成群(人人有乘法逆元)。于是加减乘除四则运算都能做。

结构加法群乘法非零元有逆
结合+分配不一定
结合+分配+交换

例子:有理数 Q\mathbb{Q}、实数 R\mathbb{R}、复数 C\mathbb{C} 是无限域;Fp\mathbb{F}_p(p 质)是最重要的有限域

三、为什么 Zn\mathbb{Z}_n 是域 ⟺ n 是质数

关键结论:Zn\mathbb{Z}_n 是域 当且仅当 n 是质数。

这解释了为何密码学总选质数模数:只有质数才能保证「人人可除」,线性代数那套(解方程、求逆)才能在上面跑。

四、特征与 Fpn\mathbb{F}_{p^n}

有限域的元素个数只能是 pnp^n(质数幂)。Fpn\mathbb{F}_{p^n} 不是「模 pnp^n」,而是用一个不可约多项式来构造(取系数在 Fp\mathbb{F}_p 上的多项式,模一个不可分解的多项式)。AES 用的 F28\mathbb{F}_{2^8}(256 个元素)就是这种。「特征为 2」意味着 1+1=01+1=0,加法就是异或,硅实现极快。

五、数字例题(步步算)

F5\mathbb{F}_5 中求 33 的乘法逆元。

找 x 使 3x1(mod5)3x\equiv1\pmod5:逐个试,3×2=613\times2=6\equiv1。所以 31=23^{-1}=2。验证:3×2=6=5+113\times2=6=5+1\equiv1 ✓。

再看合数反例:Z6\mathbb{Z}_6 中 2 的逆元?2×{0..5}={0,2,4,0,2,4}2\times\{0..5\}=\{0,2,4,0,2,4\} 永远凑不出 1→ 无逆元,所以 Z6\mathbb{Z}_6 不是域。

六、Python 代码

p = 5
# 验证 F_p 里每个非零元都有逆元
for a in range(1, p):
    inv = next(x for x in range(1, p) if (a*x) % p == 1)
    print(f"{a}^(-1) = {inv} (mod {p})")

# 对比:Z_6 里 2、3、4 找不到逆元
n = 6
for a in range(1, n):
    inv = [x for x in range(1, n) if (a*x) % n == 1]
    print(f"Z_6: {a} 的逆元 = {inv or '无'}")

# F_{2^8} 特征 2:加法 = 异或
print("AES 域里 0xAB + 0xCD =", hex(0xAB ^ 0xCD))

七、动手想一想

  1. Zn\mathbb{Z}_n 里哪些元素有乘法逆元?(提示:与 n 的关系)
  2. 为什么有限域元素个数不能是 6?
  3. AES 用 F28\mathbb{F}_{2^8} 而不用 Z256\mathbb{Z}_{256},为什么?

答案:(1) 与 n 互质的元素(共 φ(n)\varphi(n) 个)。(2) 6=2×3 不是质数幂,不存在 6 元域。(3) Z256\mathbb{Z}_{256} 不是域(256 非质),很多元素无逆元,S 盒需要可逆变换,所以必须用真正的域 F28\mathbb{F}_{2^8}

小结:环有加乘但不保证人人可除;域连除法也能做。密码学之所以执着于质数模数与有限域,就是为了要那个「人人有逆元」的完美性质。