本文介绍区块链中的密码学知识。

哈希函数

一文读懂 SHA256 算法原理及其实现

群环域

参考 群环域

有限域

参考 有限域

循环群

循环群(Cyclic Group)是一个代数结构,通常用于抽象代数、数论和密码学中。循环群由一个生成元生成,它可以被重复地乘以自身,产生群中的所有元素。以下是循环群的定义和性质:

  1. 生成元(Generator): 循环群的核心是生成元,通常表示为 g。生成元是群中的一个元素,通过重复乘法可以生成群中的其他元素。也就是说,对于一个给定的生成元 g,通过不断计算 $g^1、g^2、g^3$ 等等,可以生成整个群中的元素。
  2. 群操作: 循环群是一个乘法群,通常使用乘法运算 $\ast$ 来定义群操作。对于群中的两个元素 a 和 b,它们的群操作结果是 $c = a* b$ ,其中 c 也属于群。
  3. 群的阶(Order): 循环群的阶是群中元素的数量,通常表示为 $|G|$。如果一个循环群由生成元 g 生成,那么它的阶等于生成元 g 的幂运算重复次数,即 $|G| = ord(g)$。
  4. 子群(Subgroup): 循环群中可以存在子群,这是一个子集,也是一个满足群的性质的群。子群通常由生成元的幂运算生成。
  5. 周期性: 循环群的元素具有周期性,即存在某个正整数 $n$ ,使得 $g^n = e$,其中 e 表示群的单位元素(乘法群中的单位元素是 1)。这个 n 称为生成元的阶,也是群的阶。

循环群是抽象代数中的一个重要概念,具有许多应用,特别是在密码学中。在密码学中,大素数上的离散对数问题通常基于循环群,以实现安全的加密、数字签名和密钥交换协议。因为循环群的阶可以非常大,所以基于它们的密码算法对于破解来说是非常困难的。

离散对数

离散对数(Discrete Logarithm)是一个数学概念,通常在代数结构中出现,涉及到在一个离散的数学对象(通常是有限域、整数模数、椭圆曲线等)上解决类似于实数域中的对数问题。

具体来说,假设有一个有限群 G,其中包含元素 g 和某个元素 y,离散对数问题就是要找到一个整数 x,使得 $g^x = y$。这里,$g^x$ 表示 g 自身连续相乘 x 次的结果。

离散对数问题的解通常表示为 $x = log_g(y)$,其中 x 是离散对数,g 是基底,y 是所要求的结果。这个问题在密码学和数学中都有广泛的应用,特别是在公钥密码学中,其中安全性通常依赖于找到离散对数问题的困难性。

在公钥密码学中,通常使用大素数和有限域上的离散对数问题来构建加密算法、数字签名和密钥交换协议。这是因为目前为止,最快的算法需要超级计算机数年的时间才能破解大素数和离散对数问题,因此提供了安全性。

总之,离散对数问题涉及在离散的数学结构中找到一个整数 x,使得基底 g 的 x 次幂等于给定的结果 y。这个问题在密码学中起着重要作用,因为它的困难性为许多密码系统提供了安全性。

同态操作

同态操作是一种数学运算,它在代数结构中具有特殊的性质。同态操作保留代数结构中的某种关系或性质,通常是在两个代数结构之间进行映射,使得在映射后的结果上进行操作与在原始结构上进行操作之间存在某种对应关系。这种性质对于代数、数论、密码学和计算机科学等领域都具有重要意义。以下是同态操作的一些基本概念和性质

  • 同态映射(Homomorphism): 同态操作通常涉及到一个同态映射,该映射将一个代数结构的元素映射到另一个代数结构的元素。形式上,如果有两个代数结构 A 和 B,以及它们上的操作 *#,那么映射 $φ:A → B$ 被称为同态映射,如果对于 A 中的任何元素 x 和 y,满足以下条件:$φ(x*y) = φ(x) # φ(y)$。这表示在映射下,操作 *# 之间的关系得以保留。

  • 同态性质:同态操作具有保持代数结构性质的特性。例如,如果一个同态映射存在于两个群之间,那么它将保持群的性质,如单位元素、逆元素和结合性等。同样,如果映射存在于环、域或其他代数结构之间,也会保持相应的性质。

同态操作的应用: 同态操作在密码学、编码理论和计算机科学中具有广泛的应用。例如,在密码学中,同态加密是一种允许在加密状态下执行操作的加密技术,其中操作在密文上执行,然后通过解密来获取结果,而不是在明文上执行。这有助于实现安全的数据处理和隐私保护。

总之,同态操作是一种重要的数学和计算概念,它涉及在代数结构之间保持操作关系的映射。这种性质在各种领域中具有广泛的应用,特别是在保护隐私和安全数据处理方面。同态操作的理论和技术对于实现安全通信、加密、数字签名和安全多方计算等任务都具有关键作用。

双线性性质

双线性性质(Bilinear Property)是一个数学性质,通常在代数结构中出现,特别是在椭圆曲线配对和抽象代数中。这个性质涉及到两个集合(或代数结构)之间的二元映射,满足以下两个基本条件:

  1. 线性性质: 对于两个元素集合 X 和 Y,以及一个映射函数 f:X × Y → Z(其中 Z 是另一个集合),如果对于 X 和 Y 中的任意元素 x1、x2 和 y1、y2,以下等式成立:

    $f(x_1 + x_2, y) = f(x_1, y) + f(x_2, y)$ (对于 X 中的元素的加法)

    $f(x, y_1 + y_2) = f(x, y_1) + f(x, y2) (对于 Y 中的元素的加法)

    这表明映射函数在 X 和 Y 中的每个集合上都是线性的,即它满足加法性。

  2. 双线性性质: 双线性性质是线性性质的扩展,它进一步要求映射函数 f 满足以下性质:

    $f(k*x, y) = k* f(x, y)$ (对于 X 中的元素的标量乘法,k 是标量)

    这表示映射函数对 X 中的元素的标量乘法是线性的,也就是说,可以将标量乘法提取到函数的外部。

双线性性质的一个重要应用是在椭圆曲线密码学中的椭圆曲线配对(Elliptic Curve Pairing)。在椭圆曲线配对中,有两个椭圆曲线上的点,通过配对操作映射到一个特殊的数学群中的元素。这个配对操作通常满足双线性性质,使得可以在加密状态下进行一些复杂的计算,同时保持线性性质,以便于数学运算。这在许多密码学协议中非常有用,如零知识证明、身份认证和隐私保护。

总之,双线性性质是一种数学性质,要求一个映射函数同时满足线性性质和标量乘法的线性性质。它在代数结构、椭圆曲线密码学和其他数学领域中都有广泛的应用。

双线性映射

双线性映射(Bilinear Mapping)是一个数学映射,它将两个群(通常是代数结构中的群)中的元素映射到另一个群中的元素。这个映射满足双线性性质,也就是说,它同时保持了两个输入群中元素的乘法运算的线性性质。

具体来说,双线性映射满足以下性质:

  1. 线性性质: 对于两个输入群 G 和 H,以及一个映射函数 $e:G × H → Z$(其中 Z 是另一个群),双线性映射要求在 G 和 H 中的每个元素上都是线性的。也就是说,对于 G 中的元素 a、b 和 H 中的元素 c、d,满足以下条件:

    $e(a + b, c) = e(a, c) + e(b, c)$ (对于 G 中的元素的加法)

    $e(a, c + d) = e(a, c) + e(a, d)$ (对于 H 中的元素的加法)

    这表示映射函数在 G 和 H 中的每个集合上都是线性的,即它满足加法性。

  2. 双线性性质:双线性映射的双线性性质要求映射函数 e 还满足下面的性质:

    $e(ka, b) = e(a, kb) = k * e(a, b)$ (其中 k 是标量)

    这表示映射函数对于 G 中的元素的标量乘法是线性的,也就是说,标量可以提取到函数的外部。

推论一

$e(aP, bQ) = ab * e(P, Q)$

用途

双线性映射在密码学、数学、计算机科学和工程领域等各个领域都有广泛的应用。在密码学中,双线性映射常用于构建安全的协议和机制,例如:

  1. 椭圆曲线配对(Elliptic Curve Pairing): 在椭圆曲线密码学中,双线性映射允许在椭圆曲线上的点之间执行复杂的数学操作,同时保持线性性质。这在零知识证明、身份认证、隐私保护计算等协议中非常有用。

  2. 身份基于加密(Identity-Based Encryption,IBE): IBE 协议使用双线性映射来构建基于用户身份的加密方案,允许用户使用其身份信息来加密和解密数据。

  3. 可验证随机函数(Verifiable Random Function,VRF): VRF 使用双线性映射来生成可验证的伪随机函数,用于数据签名和验证。

二次约束

“二次约束(quadratic constraints)” 是一个数学和计算机科学领域的术语,通常用于描述某些问题或方程具有二次性质的情况。

二次约束的含义: 二次约束指的是一种数学或逻辑约束,其中涉及到问题的变量或方程的二次幂项(平方项)。这意味着问题或方程中的变量之间的关系或限制是通过平方项来表示的。通常,这些约束会导致问题的求解变得更加复杂,因为二次项引入了非线性性质。

例子: 一个简单的例子是二次规划(Quadratic Programming)问题,其中目标函数和约束是二次的。在这种情况下,目标是最小化或最大化一个带有二次项的二次函数,同时满足一组线性或二次约束条件。

优化问题中的应用: 二次约束在优化问题中经常出现。例如,一个机器学习模型的损失函数可能包含二次项,表示模型的拟合程度。或者在工程领域,某些设计问题可能包括二次约束,以确保设计的性能和安全性。

求解困难性: 由于引入了二次项,与线性约束相比,具有二次约束的问题通常更难求解。这可能需要使用更复杂的数值方法或优化算法来找到问题的最优解。

总之,二次约束指的是涉及问题变量或方程的二次幂项的数学或逻辑约束。这种类型的约束通常在优化问题和非线性问题中出现,因为它们引入了问题求解的非线性性质,使得问题的求解更具挑战性。

无穷大的重数

在数学中,“无穷大的重数”(Multiplicity of Infinity)是一个用来描述函数在无穷远点附近的增长速度或性质的概念。它通常与极限理论和复函数论有关,用于描述函数的渐近行为。让我更详细地解释:

  1. 无穷远点(Infinity): 在数学中,无穷远点表示在数轴上无限远的地方,通常用符号 ∞ 表示。这不是一个具体的数,而是表示数轴末端的概念。在复平面中,无穷远点表示复数的模(绝对值)趋于无穷大。
  2. 重数(Multiplicity): 重数是一个与多项式根或函数零点的性质相关的概念。它表示根或零点出现的次数。例如,多项式 (x - 3)² 有一个重数为 2 的根,因为 x = 3 是一个两次重复的根。
  3. 无穷大的重数: 无穷大的重数用来描述一个函数在无穷远点附近的增长速度。它指的是函数 f(x) 在 x 趋于无穷大时的渐近性质。通常,我们用 n 来表示无穷大的重数,其中 n 可能是一个正整数。这表示函数 f(x) 在无穷大附近的增长速度类似于 x 的 n 次幂。
    • 例如,如果一个函数在无穷大点附近的渐近性质类似于 x³,那么它具有无穷大的重数为 3。
    • 如果一个函数在无穷大点附近的渐近性质类似于 x²,那么它具有无穷大的重数为 2。
    • 如果一个函数在无穷大点附近的渐近性质类似于 x,那么它具有无穷大的重数为 1。

重数告诉我们函数在无穷大点附近的增长速度有多快。在复函数论中,无穷大的重数也与复函数的奇点(如极点或本性奇点)有关,用于描述函数在奇点附近的性质。

总之,无穷大的重数是用来描述函数在无穷远点附近的增长速度或性质的概念,通常表示为一个正整数 n。这个概念在分析函数的渐近性质和复函数论中非常重要。

延伸阅读