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

因此满足同余式

am≡1(modn)a^m\equiv 1\pmod n

的最小正整数 mm 存在,这个 mm 称作 aa 模 nn 的阶,记作 δ(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)=7−1=6\varphi(n)=7-1=6

可得

36≡1(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 为满足

ax≡1(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,使得:

b≡ai(modp),0≤i≤p−1b\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 作为自己的私钥
  • 计算

33≡6(mod7)3^3\equiv 6\pmod 7

  • 将 66 作为公钥发送给 Bob

Bob:

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

31≡3(mod7)3^1\equiv 3\pmod 7

  • 将 33 作为公钥发送给 Alice

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

33≡6(mod7)3^3\equiv 6\pmod 7

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

61≡6(mod7)6^1\equiv 6\pmod 7

  • Elgamal加密

接上面DH密钥交换

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

plaintext: 66

加密:

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

密文为 11。
解密:

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

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

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

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

33≡6(mod7)3^3\equiv 6\pmod 7

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

Bob 想传递信息 66 给 Alice。

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

  • 加密密钥:

35≡5(mod7)3^5\equiv 5\pmod 7

  • 公钥:

35≡5(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 解密:

  • 计算解密密钥:

53≡6(mod7)5^3\equiv 6\pmod 7

  • 解密:

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

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

0 条评论

©2026Asutorufa