Asutorufaのブログ

こんにちは

离散对数问题

发布于 2022-08-15|更新于: 2022-08-15|分类 Crypto

前置知识 欧拉, 欧拉定理, 模反元素(模逆元) 可参见: RSA加密

由欧拉定理可知,若 n,an,a 为正整数,且 n,an,a 互素(即 gcd(a,n)=1\gcd(a,n)=1),则

aφ(n)1(modn)a^{\varphi(n)}\equiv 1\pmod n

因此满足同余式

am1(modn)a^m\equiv 1\pmod n

最小正整数 mm 存在,这个 mm 称作 aann 的阶,记作 δ(n,a)\delta(n,a)

原根

n,an,a 为正整数,且 n,an,a 互质,如果 gcd(a,n)=1\gcd(a,n)=1δ(n,a)=φ(n)\delta(n,a)=\varphi(n),则称 aa 为模 nn 的原根。
简单来说,使该式成立的 dd 可能有很多个值,又由欧拉定理可知 δ(n,a)=φ(n)\delta(n,a)=\varphi(n) 一定是满足的,如果此时所有 δ(n,a)\delta(n,a) 的可能取值中 φ(n)\varphi(n) 是最小的,那么就称 aa 为模 nn 的原根。

eg:

a=3, n=7a=3,\ n=7
可知 3,73,7 互质,所以

φ(n)=71=6\varphi(n)=7-1=6

可得

361(mod7)3^6\equiv 1\pmod 7

计算 31,32,33,34,35(mod7)3^1,3^2,3^3,3^4,3^5\pmod 7 都不等于 11,所以 66 为满足

ax1(modn)a^x\equiv 1\pmod n

的最小正整数。

δ(7,3)=6=φ(7)\delta(7,3)=6=\varphi(7)

可得 33 为模 77 的原根。

性质

  • δ(n,a)\delta(n,a) 一定能整除 φ(n)\varphi(n)
  • 若一个数 mm 有原根,则它的原根个数为 φ(φ(m))\varphi(\varphi(m))

离散对数

如果对于一个整数b和质数p的一个原根a,可以找到一个唯一的指数i,使得:

bai(modp),0ip1b\equiv a^i\pmod p,\quad 0\le i\le p-1

成立,那么指数i称为b的以a为基数的模p的离散对数。

离散对数难题是指:
当已知一个大质数p和它的一个原根a,如果给定一个b,要计算i的值是相当困难的。
常将i作为私钥, b作为公钥,即使知道b和a也无法求出i。

应用

  • DH密钥交换

取一质数 77,计算出其原根 33,同时质数 77 和其原根 33 是公开的。

Alice:

  • 取一个随机数 33 作为自己的私钥
  • 计算

336(mod7)3^3\equiv 6\pmod 7

  • 66 作为公钥发送给 Bob

Bob:

  • 取一个随机数 11 作为自己的私钥
  • 计算

313(mod7)3^1\equiv 3\pmod 7

  • 33 作为公钥发送给 Alice

Alice 使用 33 计算出共享密钥:

336(mod7)3^3\equiv 6\pmod 7

Bob 使用 66 计算出共享密钥:

616(mod7)6^1\equiv 6\pmod 7

  • Elgamal加密

接上面DH密钥交换

获取到公共密钥 66 之后,Alice 和 Bob 都可以使用公共密钥 66 来加密信息。

plaintext: 66

加密:

6×61(mod7)6\times 6\equiv 1\pmod 7

密文为 11
解密:

1×616(mod7)1\times 6^{-1}\equiv 6\pmod 7

其中 616^{-1} 是指 66 关于模 77 的逆元。

上面的写的感觉不太对,完整过程

Alice 取一质数 77,计算出其原根 33,选一数 33 作为自己的私钥,

336(mod7)3^3\equiv 6\pmod 7

{7,3,6}\{7,3,6\} 作为公钥公开。

Bob 想传递信息 66 给 Alice。

Bob 选一数 55 作为自己的私钥:

  • 加密密钥:

355(mod7)3^5\equiv 5\pmod 7

  • 公钥:

355(mod7)3^5\equiv 5\pmod 7

  • 密文:

6×(65)1(mod7)6\times(6^5)\equiv 1\pmod 7

  • (5,1)(5,1) 作为密文发送给 Alice

Alice 解密:

  • 计算解密密钥:

536(mod7)5^3\equiv 6\pmod 7

  • 解密:

1×616(mod7)1\times 6^{-1}\equiv 6\pmod 7

此处 616^{-1} 是指 66 关于模 77 的逆元(模反元素)。

0 条评论

©2026Asutorufa