第二讲 密码学的数学基础

群、环和域

  • 是两个元素作二元运算得到的一个新元素,需要满足群公理。
  • 在阿贝尔群(也叫交换群)的基础上,添加一种二元运算乘法 ·(虽叫乘法,但不同于初等代数的乘法)。一个代数结构是环(R,+,·),需要满足环公理。
  • 在交换环的基础上,还增加了二元运算除法,要求元素(除零以外)可以作除法运算,即每个非零的元素都要有乘法逆元。

逆元的存在是为了解密。因此,密码学要以域为研究对象。

由此可见,域是一种可以进行加减乘除(除0以外)的代数结构,是数域与四则运算的推广。整数集合,不存在乘法逆元(13不是整数),所以整数集合不是域。有理数、实数、复数可以形成域,分别叫有理数域、实数域、复数域

  • 在密码学中为什么采用有限域?
    所有的加密算法都涉及整数集上的算术运算。如果某种算法使用的运算之一是除法,那么我们就必须使用定义在域上的运算。
    加密算法需要明文与密文一一映射关系,而密文是有限的,无限域存在浪费。
  • 为什么采用模运算?
    模运算能够造出有限域(定义除法)

有限域和GF(2n)的形式的有限域

有限域即含有有限个元素的域。
元素个数为pn的有限域一般记为GF(pn)
运用GF(2n)的原因是:加密运算要求将整数平均地映射到自身且构造的整数集合必须是一个域。

为了使资源不浪费,不使用直接的模运算而是使用既约多项式模运算。

  • 为什么密码学采用GF(2n)形式的有限域,而不采用GF(p)形式的有限域?
    为了方便实用和提高效率,希望这个整数集中的数与给定的二进制位数能够表达的信息一一对应而不出现浪费,即希望整数集的范围是[0,2n1]

素数

素数(质数)是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
任意正整数可由素数的乘积来表示。

同余会使得多个明文对应同一个密文(即二义性),虽更安全但失去了可用性。因而多数情况下选择对一个素数进行模运算

Fermat定理和推论

定理

p是素数,m是正整数且不能被p整数,则

mp11 mod p

推论

Fermat定理的另一种有用表示:若p是素数,m是任意正整数,则

mpm mod p

理解为乘了一个m即可。

Euler函数

Euler函数ϕ(n),指小于n且与n互素的正整数的个数。

  • 对于素数p有:

ϕ(p)=p1

  • 由此,对于素数pqpq,那么对n=pq,有:

ϕ(n)=ϕ(pq)=ϕ(p) ϕ(q)=(p1)(q1)

Euler定理和推论

定理

对于任意互素的mn,有:

mϕ(n)1 mod n

另一种有用表示:

mϕ(n)+1m mod n

本质就是将Euler函数运用在Fermat定理上。

推论

给定两个素数pq,整数n=pq,对于小于n的任意正整数m (0<m<n),有以下关系式成立:

mϕ(n)+1m(p1)(q1)+1m mod n

另一种表达形式:

mkϕ(n)+1m mod n

离散对数

本原根

如果使得am1 mod n成立的最小正幂m满足m=ϕ(n),则称an的本原根。 其中ϕ(n)为欧拉函数。

  • an的本原根,则a1ϕ(n)次幂模n是各不相同的,且均与n互素。
  • p为素数时,若an的本原根,则a1(p1)次幂模p是各不相同的。
  • p的本原根共有ϕ(p1)

本质上讲本原根的意思就是该数的1n次方逐个mod n,结果各不相同且均[1,n1]。所以n的本原根应该就是指模n的本原根。
参考:密码学基础 本原根

  • 示例
    image

定义

对于某素数pp的本原根为a
对于任何整数bbr mod p
存在唯一的整数i0i(p1),使得

bai mod p

i称为以a为底b的指标inda,p(b),也记为离散对数,记为dloga,p(b)

性质

离散对数和一般的对数有着相类似的性质:

indxyindx+indy(mod ϕ(m))indxyy indx(mod ϕ(m))

计算

ygx mod p
已知gxp,计算y是容易的
已知ygp,计算x是容易的

posted @   Weisswire  阅读(1475)  评论(4编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示