这篇文章深入探讨了环论的基本概念,包括环、交换环、余数环和多项式环的定义和性质。作者详细阐述了抽象代数在加密学中的应用,特别是在复杂数域和有限域(Galois域)的背景下,展现了多项式环和环同态的相关知识,并通过代码示例展示了相关概念的实际应用。
环理论扩展自群论,形式化了更多关于环的代数结构。此外,本文还将探讨多项式环及其元素,即多项式。
多项式并不是在数学的单一分支中明确界定的,而是在多个分支的多个上下文中进行定义。然而,一种方法是将多项式定义为并非独立结构而是次要结构,作为多项式环的一个元素。这类似于向量通常被视为向量空间的一个元素,而不是一个独立的结构。
环是一个配备了两个二元运算的集合,通常称为加法和乘法,使得加法与该集合形成一个阿贝尔群,乘法与该集合形成一个单群,且乘法对加法具有分配性。
注意,虽然加法和乘法是最常见的,但为了抽象的目的,在latex模块中,我们定义加法为星运算符,乘法为钻石运算符。
阿贝尔群是一个配备了一个运算符的集合,其具有结合性和交换性,包含一个当应用于任何元素时不会改变该元素的单位元,并且对于每个元素,存在一个逆元素,使得该元素与其逆元素的运算返回单位元。
∀a,b,c∈S:(a⋆b)⋆c=a⋆(b⋆c)∀a,b∈S:a⋆b=b⋆a∀a∈S,∃e∈S:a⋆e=e⋆a=a∀a∈S,∃a−1∈S:a⋆a−1=a−1⋆a=e
单群是一个配备了一个运算符的集合,其具有结合性并包含一个单位元素。
∀a,b,c∈S:(a⋄b)⋄c=a⋄(b⋄c)∀a∈S,∃e∈S:a⋄e=e⋄a=a
最后,乘法(钻石)对加法(星)是可分配的。
∀a,b,c∈S:a⋄(b⋆c)=(a⋄b)⋆(a⋄c)
def associative(a, b, c, op):
return op(a, op(b, c)) == op(op(a, b), c)
def is_identity(a, e, op):
return op(a, e) == op(e, a) and op(a, e) == a
def is_inverse(a, a_inv, e, op):
return op(a, a_inv) == op(a_inv, a) and op(a, a_inv) == e
def commutative(a, b, op):
return op(a, b) == op(b, a)
def distributive(a, b, c, op_add, op_mul):
return op_mul(a, op_add(b, c)) == op_add(op_mul(a, b), op_mul(a, c))
结合环是一个乘法也满足交换律的环。
∀a,b∈S:a⋄b=b⋄a
非零结合环是一个至少有一个元素不是零元素的结合环。也就是说如下。
S≠{0}
除环又称为斜域,是指每个元素(不包括零)都可以有一个乘法逆元的环,并且乘法单位元素不为零。乘法逆元对应于除法,就像加法逆元对应于减法一样。
∀a∈S,∃a−1∈S:a⋄a−1=a−1⋄a=e
域就是一个简单的结合除环。也就是说,加法和乘法是结合的、交换的,具有单位元素,具有逆元素,并且乘法对加法是可分配的。表示一个域 F 的一种方法如下。
F=(S,+,∗,0,1)
最常见的域是实数,在加法和乘法的理解中如常见的那样。所有实数在加法和乘法下都是结合和交换的,加法单位为0,乘法单位为1,加法逆元通过加上相同数的正负形式返回零,乘法逆元通过乘以一个数 N 和 1/N 返回一。
域扩展对应于形成一个域的集合的超集。也就是说,如果一个域的集合 A 是另一个域的集合 B 的子集,那么 A 是一个子域,B 是一个域扩展。
(A,⋆A,⋄A,0A,1A)(B,⋆B,⋄B,0B,1B)A⊆B
一个常见的域扩展是复数,它用虚数扩展了实数。
R⊂C
伽罗瓦域又称有限域,是一个具有有限数量元素的域。伽罗瓦域通常是正整数集合对某个质数求模。伽罗瓦域是密码学的有价值工具,能够支持非对称加密、同态加密和 zk-SNARKS。
set_s = { 0, 1, 2, 3, 4 }
add = lambda x, y : x + y % 5
mul = lambda x, y : x * y % 5
二进制域是一个伽罗瓦域,其中质数模为二。这使得位运算和有限域算术的硬件实现高效。有趣的是,加法(星)操作对应于异或(XOR)逻辑门,而乘法(钻石)操作对应于与(AND)逻辑门,如下所示:
B={0,1}F2=(B,⊕,∧,0,1)∀a,b,c∈B:(a⊕b)⊕c=a⊕(b⊕c)∀a∈B,∃e∈B:a⊕e=e⊕a=a∀a∈B,∃a−1∈B:a⊕a−1=a−1⊕a=e∀a,b,∈B:a⊕b=b⊕a∀a,b,c∈B:a∧(b∧c)=(a∧b)∧c∀a∈B,∃e∈B:a∧e=e∧a=a∀a∈B,∃a−1∈B:a∧a−1=a−1∧a=e∀a,b,∈B:a∧b=b∧a∀a,b,c∈B:a∧(b⊕c)=(a∧b)⊕(a∧c)
B = { 0, 1 }
logical_and = lambda x, y : x & y
logical_xor = lambda x, y : x ^ y
for a in B:
for b in B:
assert associative(a, b, a, logical_xor)
assert commutative(a, b, logical_xor)
assert is_identity(a, 0, logical_xor)
assert is_inverse(a, a, 0, logical_xor)
assert associative(a, b, a, logical_and)
assert commutative(a, b, logical_and)
assert is_identity(a, 1, logical_and)
# 0从来没有乘法逆元
if not a == 0:
assert is_inverse(a, 1, 1, logical_and)
多项式环,表示为 R[X],是一个其元素为系数在 R 中的多项式的交换环,变量或称不确定量在 X 中,并且有一个将 X 映射到 R[X] 的函数。
f:X→R[X]
一个多项式 "p",作为多项式环 R[X] 的一个元素,可以表示如下。
an∈R,x∈X:p∈R[X]=∑n=0nanxn
一种更熟悉和常用的表示方式如下。
(a0+a1x1+a2x2+…anxn)∈R[X]
单变量多项式在 X 中只有一个变量,而多变量多项式在 X 中有多个变量。
多项式的度是指多项式中最高的变量指数。
首项系数(leadco)是指具有最高度的系数。
常数项(const)是指变量被指数化到0次方时的项。
degree(3x2+x+4)=2leadco(3x2+x+4)=3const(3x2+x+4)=4
注意:每个函数的名称并不一定是标准的,出于直观考虑而任意选择。
多项式插值从 n+1 个点构造 n 度多项式。拉格朗日插值寻找一个插值给定点集的多项式。
线性多项式不需要指数化,可以表示如下。
a,b∈R,x∈X:a+bx
如前所述,多项式环形成了一个环。
多项式的加法是通过相加对应变量和指数的系数来进行的。
(a0x0+a1x1+⋯+anxn)=a∈R[X](b0x0+b1x1+⋯+bnxn)=b∈R[X]((a0+b0)x0+(a1+b1)x1+…(an+bn)xn)=c∈R[X]a+b=c
多项式的乘法是相互乘以每个多项式项来进行的。也可以通过相应变量和指数的系数相加进行简化。
(a0x0+a1x1+⋯+anxn)=a∈R[X](b0x0+b1x1+⋯+bnxn)=b∈R[X]((a0b0)(x0x0)+(a1b1)(x1x1)+⋯+(anbn)(xnxn)=c∈R[X]a+b=c
由多项式形成的环如下。
∀a,b,c∈R[X]:(a+b)+c=a+(b+c)∀a∈R[X],∃e∈R[X]:a+e=e+a=a∀a∈R[X],∃a−1∈R[X]:a+a−1=a−1+a=e∀a,b,∈R[X]:a+b=b+a∀a,b,c∈R[X]:a∗(b∗c)=(a∗b)∗c∀a∈R[X],∃e∈R[X]:a∗e=e∗a=a∀a∈R[X],∃a−1∈R[X]:a∗a−1=a−1∗a=e∀a,b,∈R[X]:a∗b=b∗a∀a,b,c∈R[X]:a∗(b+c)=(a∗b)+(a∗c)
除了多项式的加法、减法和乘法,还有标量-多项式乘法,其中 R 中的标量可以与多项式中的所有系数相乘。
a,b∈R,x∈X:(a0x0+a1x1+⋯+anxn)×b=(ba0x0+ba1x1+⋯+banxn)
环同态是两个环之间的一个函数,保持加法、乘法和乘法单位。
f:A→B
如果环同态是一个双射,也就是说如果函数定义域(输出)的元素与函数的赋值域(输入)的元素一一对应,那么存在一个同构,使得元素可以从 A 映射到 B,以及从 B 映射到 A。
f:A→Bg:A→Af∘g=h:A↔B
环自同态是一个从环到其自身的环同态。
f:A→A
环理论,正如所有抽象的废话一样,相当直接。然而,群论中定义的概念以及由此扩展的环理论,是抽象化及“黑盒”功能强大的工具,从椭圆曲线到 zkSNARKS。多项式环使得在多项式上进行算术运算,以创造简洁的证明,而伽罗瓦域为椭圆曲线及其阿贝尔群的基础,后者用于非对称加密。这应该是一个有用的资源,帮助我们在未来探讨更深层的数学概念。
下次再见。
- 原文链接: jtriley.substack.com/p/r...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!