RSA 加密算法的基础数论、基本原理与 Python 实现

Title: RSA 加密算法的基础数论、基本原理与 Python 实现


文章目录

  • 前言
  • [I. 数学原理](#I. 数学原理)
    • [1. 整数环](#1. 整数环)
    • [2. 单位元](#2. 单位元)
    • [3. 欧拉定理](#3. 欧拉定理)
  • [II. 算法原理](#II. 算法原理)
    • [1. 扩展欧几里得算法](#1. 扩展欧几里得算法)
    • [2. RSA 非对称加密算法](#2. RSA 非对称加密算法)
  • [III. 算法实现](#III. 算法实现)
    • [1. 源代码](#1. 源代码)
    • [2. 测试结果](#2. 测试结果)
  • 总结
  • 参考文献

前言

1977 年美国 MIT 的三位数学家 Ronald L. Rivest、Adi Shamir 和 Leonard M. Adleman 一起提出了著名的非对称加密算法 ------ RSA 算法. RSA 算法利用计算机无法快速实现大数的质因数分解这一事实 (当前也还成立), 确保该算法的安全性.

对 RSA 加密算法其中的数学原理感兴趣, 故整理并学习一下 ("copycat") , 最后用 python 简单实现了该算法.


I. 数学原理

1. 整数环

RSA 算法全部建立在 Module Arithmetic (模运算)[1]的基础上.

[I-1-1] 同余和模运算 Congruence and Module Arithmetic:

For a positive integer m m m and integers a a a and b b b, we follow Gauss and write
a ≡ b ( mod m ) a \equiv b \ \ (\text{mod}\ \ m) a≡b (mod m)

to mean that a a a and b b b have the same remainder upon division by m m m.

In words, the notation is read as a a a is congruent to b b b modulo m m m.

The expression a ≡ b ( mod m ) a \equiv b\ (\text{mod}\ m) a≡b (mod m) is called a congruence, and m m m is the modulus of the congruence.

12 ≡ 26 ( mod 7 ) 12 \equiv 26 \ \ (\text{mod}\ 7) 12≡26 (mod 7)

[I-1-2] 环 Ring:

A ring R {R} R is a set equipped with binary operations + + + and × \times × and elements 0 , 1 ∈ R 0, 1 \in R 0,1∈R such that R R R is an abelian group under + + +, and for all a , b , c ∈ R a, b, c \in R a,b,c∈R we have

Multiplicative identity: 1 × a = a × 1 = a 1\times a = a\times 1 = a 1×a=a×1=a

Multiplicative associativity: ( a × b ) × c = a × ( b × c ) (a\times b)\times c = a\times (b\times c) (a×b)×c=a×(b×c)

Left distributivity: a × ( b + c ) = a × b + a × c a\times (b + c) = a\times b + a\times c a×(b+c)=a×b+a×c

集合 Z 3 = { 0 , 1 , 2 } \mathbb{Z}_3 = \{0,1,2\} Z3={0,1,2}, 装备了 + + + 和 × \times × 运算

  • 0 1 2 0 0 1 2 1 1 2 0 2 2 0 1 × 0 1 2 0 0 0 0 1 0 1 2 2 0 2 1 \begin{array}{c|ccc} + &0 &1 &2 \\ \hline 0 &0 &1 &2 \\ 1 &1 &2 &0 \\ 2 &2 &0 &1 \end{array} \qquad\qquad\qquad \begin{array}{c|ccc} \times &0 &1 &2 \\ \hline 0 &0 &0 &0 \\ 1 &0 &1 &2 \\ 2 &0 &2 &1 \end{array} +012001211202201×012000010122021
    0 0 0 是加法 ( + + +) 恒等元. 集合中每个元素都有加法逆, 0 + 0 = 0 0+0=0 0+0=0 及 1 + 2 = 2 + 1 = 0 1+2 = 2+1 = 0 1+2=2+1=0. 加法满足交换律.

1 是乘法 ( × \times ×) 恒等元. 取数值可验证乘法结合律和左结合律.

故集合 Z 3 \mathbb{Z}_3 Z3 是环.

[I-1-3] 模算数环 Modular Arithmetic Rings [2]:

Let m ∈ Z m \in \mathbb{Z} m∈Z: m ≥ 2 m ≥ 2 m≥2.

Let Z m \mathbb{Z}_m Zm be the set of integers modulo m m m.

Let + m +_m +m and × m \times_m ×m denote addition modulo m m m and multiplication modulo m m m, respectively.

The algebraic structure ( Z m , + m , × m ) (\mathbb{Z}_m,+_m,\times_m) (Zm,+m,×m) is the ring of integers modulo m m m.

例\] 同上 现在在不引起歧义情况下, a × b a\\times b a×b 中乘法符号 × \\times × 可省略表示. 有时为了特别强调某一对象 a a a 是环 Z m \\mathbb{Z}_m Zm 中的元素, 可记作 \[ a \] m \[a\]_m \[a\]m, 如 Z 5 \\mathbb{Z}_5 Z5 中的 3 3 3 记作 \[ 3 \] 5 \[3\]_5 \[3\]5. 其实 Z m \\mathbb{Z}_m Zm 中的元素 \[ a \] m \[a\]_m \[a\]m 也可以看做是模运算等价类, 即 \[ a \] m = { ... , a − 2 m , a − m , a , a + m , a + 2 m , ... } \[a\]_m = \\{\\ldots,a-2m,a-m,a,a+m, a+2m, \\ldots\\} \[a\]m={...,a−2m,a−m,a,a+m,a+2m,...}. *** ** * ** *** ### 2. 单位元 > **\[I-2-1\] 环中的单位元 Ring Units**: > > A multiplicative inverse of a number n n n is a number m m m with the property that n × m = 1 n \\times m = 1 n×m=1. > > A number in a ring is called a unit in that ring if it has a multiplicative inverse in the ring. \[例\] 整数环 Z 6 \\mathbf{Z}_6 Z6 中含元素 { 0 , 1 , 2 , 3 , 4 , 5 } \\{0,1,2,3,4,5\\} {0,1,2,3,4,5}, 构建乘法表 × 0 1 2 3 4 5 0 0 0 0 0 0 0 1 0 1 2 3 4 5 2 0 2 4 0 2 4 3 0 3 0 3 0 3 4 0 4 2 0 4 2 5 0 5 4 3 2 1 \\begin{array}{c\|cccccc} \\times \&0 \&1 \&2 \&3 \&4 \&5 \\\\ \\hline 0 \&0 \&0 \&0 \&0 \&0 \&0 \\\\ 1 \&0 \&{\\color{darkred}{1}} \&2 \&3 \&4 \&5 \\\\ 2 \&0 \&2 \&4 \&0 \&2 \&4 \\\\ 3 \&0 \&3 \&0 \&3 \&0 \&3 \\\\ 4 \&0 \&4 \&2 \&0 \&4 \&2 \\\\ 5 \&0 \&5 \&4 \&3 \&2 \&{\\color{darkred}{1}} \\end{array} ×012345000000010123452024024303030340420425054321 其中 1 的乘法逆是 1 本身, 而 5 的乘法逆是 5 本身. 故 1 和 5 都是该整数环中的 unit. \[例\] 整数环 Z 7 \\mathbf{Z}_7 Z7 中含元素 { 0 , 1 , 2 , 3 , 4 , 5 , 6 } \\{0,1,2,3,4,5, 6\\} {0,1,2,3,4,5,6}, 构建乘法表 × 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 1 0 1 2 3 4 5 6 2 0 2 4 6 1 3 5 3 0 3 6 2 5 1 4 4 0 4 1 5 2 6 3 5 0 5 3 1 6 4 2 6 0 6 5 4 3 2 1 \\begin{array}{c\|ccccccc} \\times \&0 \&1 \&2 \&3 \&4 \&5 \&6 \\\\ \\hline 0 \&0 \&0 \&0 \&0 \&0 \&0 \&0\\\\ 1 \&0 \&{\\color{darkred}{1}} \&2 \&3 \&4 \&5 \&6\\\\ 2 \&0 \&2 \&4 \&6 \&{\\color{darkred}{1}} \&3 \&5\\\\ 3 \&0 \&3 \&6 \&2 \&5 \&{\\color{darkred}{1}} \&4\\\\ 4 \&0 \&4 \&{\\color{darkred}{1}} \&5 \&2 \&6 \&3\\\\ 5 \&0 \&5 \&3 \&{\\color{darkred}{1}} \&6 \&4 \&2\\\\ 6 \&0 \&6 \&5 \&4 \&3 \&2 \&{\\color{darkred}{1}} \\end{array} ×012345600000000101234562024613530362514404152635053164260654321 其中 1 的乘法逆是 1 本身, 2 的乘法逆是 4, 3 的乘法逆是 5, 4 的乘法逆是 2, 5 的乘法逆是 3, 6 的乘法逆是 6 本身. 故 { 1 , 2 , 3 , 4 , 5 , 6 } \\{1,2,3,4,5,6\\} {1,2,3,4,5,6} 都是该整数环中的 units. > **\[I-2-2\] 单位元性质 A Property of Units**: > > Let a a a and m m m be positive integers with a \< m a \< m a\

充分性 . 已知 [ a ] m [a]_m [a]m 是 Z m \mathbb{Z}_m Zm 的 unit, 并假设 gcd ⁡ ( a , m ) = d \gcd(a,m)=d gcd(a,m)=d.

因为 [ a ] m [a]_m [a]m 是单位元, 故存在 [ b ] m ∈ Z m [b]_m \in \mathbb{Z}_m [b]m∈Zm, 使得 a b = 1 ( mod m ) ab = 1 \ (\text{mod}\ m) ab=1 (mod m).

等价地, 存在 k ∈ Z k\in \mathbb{Z} k∈Z 使得
a b = 1 + m k ⇒ a b − m k = 1 ab = 1+ mk \ \Rightarrow\ ab - mk = 1 ab=1+mk ⇒ ab−mk=1

又因为 gcd ⁡ ( a , m ) = d \gcd (a, m) = d gcd(a,m)=d, 故 d ∣ a d\ |\ a d ∣ a 及 d ∣ m d\ \vert \ m d ∣ m. 可以推得 d ∣ ( a b − m k ) d \ | \ (ab-mk) d ∣ (ab−mk), 进一步可知 d ∣ 1 d \ | \ 1 d ∣ 1.

得到结论 gcd ⁡ ( a , m ) = 1 \gcd(a, m) = 1 gcd(a,m)=1 (即 a a a 与 m m m 互质).

必要性 . 已知 gcd ⁡ ( a , m ) = 1 \gcd(a, m) = 1 gcd(a,m)=1, 根据裴蜀定理 ( Bézout's Lemma) 可知存在整数 r , s ∈ Z r,s \in \mathbb{Z} r,s∈Z 使得
a r + m s = 1 ⇒ a r ≡ 1 ( mod m ) ar+ms=1\\ \Rightarrow \ ar \equiv 1 \ (\text{mod}\ m) ar+ms=1⇒ ar≡1 (mod m)

又 ∃ r m ∈ Z m \exist r_m \in \mathbb{Z}_m ∃rm∈Zm, 使得 r ≡ r m ( mod m ) r \equiv r_m \ (\text{mod}\ m) r≡rm (mod m), 即 r = r m + l m r = r_m +lm r=rm+lm. 上式有
a ( r m + l m ) ≡ 1 ( mod m ) ⇒ a r m ≡ 1 ( mod m ) a (r_m + lm) \equiv 1 \ (\text{mod} \ m)\\ \Rightarrow\ a r_m \equiv 1 \ (\text{mod}\ m) a(rm+lm)≡1 (mod m)⇒ arm≡1 (mod m)

得到条件 [ a ] m [a]_m [a]m 是环 Z m \mathbb{Z}_m Zm 中的单位元 unit.

充要条件证明完毕.

[I-2-3] 相消性 Cancellation:

Let a a a and m m m be relatively prime integers, with m > 1 m > 1 m>1. If b b b and c c c are integers for which
a b ≡ a c ( mod m ) ab \equiv ac \ (\text{mod}\ m) ab≡ac (mod m)

then b ≡ c ( mod m ) b \equiv c (\text{mod}\ m) b≡c(mod m).

In other words:

Suppose a a a is a unit in a ring Z m \mathbb{Z}_m Zm, and suppose that b b b and c c c are also in Z m \mathbb{Z}_m Zm. If a b = a c ab = ac ab=ac, then b = c b = c b=c.

证明

a b = a c ( mod m ) ⇒ a b − a c = 0 ( mod m ) ⇒ m ∣ a b − a c ⇒ m ∣ a ( b − c ) ∵ gcd ⁡ ( a , m ) = 1 ∴ m ∣ b − c ∴ b ≡ c ( mod m ) \begin{array}{cc} & ab=ac\ (\text{mod}\ m)\\ \Rightarrow& ab-ac = 0\ (\text{mod}\ m)\\ \Rightarrow& m \ \vert\ ab-ac \\ \Rightarrow& m \ \vert\ a(b-c) \\ \because& \gcd(a, m)=1\\ \therefore& m\ |\ b-c\\ \therefore& b\equiv c \ (\text{mod}\ m) \end{array} ⇒⇒⇒∵∴∴ab=ac (mod m)ab−ac=0 (mod m)m ∣ ab−acm ∣ a(b−c)gcd(a,m)=1m ∣ b−cb≡c (mod m)


3. 欧拉定理

[I-3-1] 欧拉函数 Euler ϕ \phi ϕ-Function

If m m m is a positive integer, set ϕ ( m ) \phi(m) ϕ(m) equal to the number of integers in the range from 1 1 1 to m m m that are relatively prime to m m m. That is
ϕ ( m ) = # { a ∈ Z ∣ 1 ≤ a ≤ m and gcd ⁡ ( a , m ) = 1 } \phi(m)= \#\{a \in \mathbb{Z}\ \vert\ 1\leq a \leq m \ \text{and}\ \gcd(a,m)=1 \} ϕ(m)=#{a∈Z ∣ 1≤a≤m and gcd(a,m)=1}

In the case that m m m is prime, obtaining the value ϕ ( m ) = m − 1 \phi(m) = m − 1 ϕ(m)=m−1. That is
ϕ ( m ) = # { 1 , 2 , ... , m − 1 } = m − 1 \phi(m)= \#\{1,2,\ldots, m-1\} = m-1 ϕ(m)=#{1,2,...,m−1}=m−1

The value of ϕ ( m ) \phi(m) ϕ(m) for m > 1 m > 1 m>1 can also be described as the number of units in Z m \mathbb{Z}_m Zm. If the number of units in Z m \mathbb{Z}_m Zm is noted as ∣ U m ∣ |U_m| ∣Um∣, then
ϕ ( m ) = ∣ U m ∣ \phi(m) = |U_m| ϕ(m)=∣Um∣

ϕ ( 1 ) = 1 \phi(1)=1 ϕ(1)=1, 因为 1 和任何正整数 (包括 1 本身) 都互质.

ϕ ( 2 ) = 1 \phi(2) = 1 ϕ(2)=1, 因为只有 1 与 2 互质, 大于 1 的整数与自身不互质.

ϕ ( 3 ) = 2 \phi(3)=2 ϕ(3)=2, 因为有 { 1 , 2 } \{1,2\} {1,2} 与 3 互质.

ϕ ( 4 ) = 2 \phi(4)=2 ϕ(4)=2, 因为有 { 1 , 3 } \{1,3\} {1,3} 与 4 互质.

ϕ ( 5 ) = 4 \phi(5)=4 ϕ(5)=4, 因为有 { 1 , 2 , 3 , 4 } \{1,2,3,4\} {1,2,3,4} 与 5 互质.

ϕ ( 6 ) = 2 \phi(6)=2 ϕ(6)=2, 因为有 { 1 , 5 } \{1,5\} {1,5} 与 6 互质.

ϕ ( 7 ) = 6 \phi(7)=6 ϕ(7)=6, 因为有 { 1 , 2 , 3 , 4 , 5 , 6 } \{1,2,3,4,5,6\} {1,2,3,4,5,6} 与 7 互质.

说明

事实上, Z m \mathbb{Z}_m Zm 中的所有 units 组成的集合 U m U_m Um 关于 × \times × 运算构成群. 因为

二元运算: 群乘法就是原来环中的乘法 (即模运算下的乘法)

单位元: 1

逆元: units 定义要求

封闭性 : 已知 u u ′ ≡ 1 ( mod 1 ) uu^{'}\equiv 1\ (\text{mod}\ 1) uu′≡1 (mod 1), v v ′ ≡ 1 ( mod 1 ) vv^{'}\equiv 1\ (\text{mod}\ 1) vv′≡1 (mod 1) ⇒ \Rightarrow ⇒ ( u v ) ( v ′ u ′ ) ≡ 1 ( mod 1 ) (uv)(v^{'}u^{'})\equiv 1\ (\text{mod}\ 1) (uv)(v′u′)≡1 (mod 1)

结合律: 沿袭模运算中乘法结合律

群中元素的个数即为群的阶. 利用 "[I-2-2] 单位元性质 A property of Units" 就可以将欧拉函数和群中元素个数联系起来.

另外, ϕ ( m ) \phi(m) ϕ(m) 也称为 Totient Function (不知其翻译).

[I-3-2] 可乘性 Multiplicative Property

Let a a a and b b b be relatively prime positive integers. Then
ϕ ( a b ) = ϕ ( a ) ϕ ( b ) \phi(ab) = \phi(a) \phi(b) ϕ(ab)=ϕ(a)ϕ(b)

非完全证明

上述定理的完全和严格证明需要采用中国剩余定理与双射性质, 此处不展开.

此处只证明在 RSA 加密算法中用到的 " a a a 和 b b b 为不同质数" 的情况.

全集 U = { m ∈ Z ∣ 1 ≤ m ≤ a b } U = \{m\in \mathbb{Z}\ \vert\ 1\leq m\leq ab\} U={m∈Z ∣ 1≤m≤ab}, 元素个数 ∣ U ∣ = a b |U|=ab ∣U∣=ab.

U U U 中能被 a a a 整除的元素集合 A = { x ∈ U ∣ ( a ∣ x ) } A= \{x\in U\ \vert\ (a|x)\} A={x∈U ∣ (a∣x)}, 即 { a , 2 a , ... , ( b − 1 ) a , b a } \{a,2a,\ldots,(b-1)a,ba\} {a,2a,...,(b−1)a,ba}. 元素个数 ∣ A ∣ = b |A|=b ∣A∣=b.

U U U 中能被 b b b 整除的元素集合 B = { x ∈ U ∣ ( b ∣ x ) } B = \{x\in U \ \vert\ (b|x)\} B={x∈U ∣ (b∣x)}, 即 { b , 2 b , ... , ( a − 1 ) b , a b } \{b,2b,\ldots,(a-1)b,ab\} {b,2b,...,(a−1)b,ab}. 元素个数 ∣ B ∣ = a |B|=a ∣B∣=a.

U U U 中能被 a a a 和 b b b 都整除 (即能被 a b ab ab 整除) 的元素集合 C = { x ∈ U ∣ ( a b ∣ x ) } C = \{x\in U \ \vert\ (ab|x)\} C={x∈U ∣ (ab∣x)}, 只有一个元素 { a b } \{ab\} {ab}. 故 ∣ C ∣ = 1 |C|=1 ∣C∣=1.

使用集合容斥原理可知, U U U 中既不能被 a a a 整除也不能被 b b b 整除的元素集合 D = U − A − B + C D = U - A -B +C D=U−A−B+C, 各集合之间的关系如图.

根据 "[I-3-1] 欧拉函数 Euler ϕ \phi ϕ-function" 中定义, ϕ ( a b ) \phi(ab) ϕ(ab) 是要找与 a b ab ab 互质的整数的个数.

" a a a 和 b b b 为不同质数" 时, ϕ ( a b ) \phi(ab) ϕ(ab) 就是找既不能被 a a a 整除又不能被 b b b 整除的整数个数.
ϕ ( a b ) = ∣ D ∣ = ∣ U ∣ − ∣ A ∣ − ∣ B ∣ + ∣ C ∣ = a b − b − a + 1 = ( a − 1 ) ( b − 1 ) = ϕ ( a ) ϕ ( b ) \begin{aligned} \phi(ab) &= |D| \\ &= |U| - |A| - |B| + |C|\\ &= ab - b - a + 1\\ & = (a-1)(b-1)\\ & = \phi(a) \phi(b) \end{aligned} ϕ(ab)=∣D∣=∣U∣−∣A∣−∣B∣+∣C∣=ab−b−a+1=(a−1)(b−1)=ϕ(a)ϕ(b)

这样就证明了 "当 a a a 和 b b b 是不同的质数时, ϕ ( a b ) = ϕ ( a ) ϕ ( b ) \phi(ab)=\phi(a)\phi(b) ϕ(ab)=ϕ(a)ϕ(b)".

[I-3-3] 欧拉定理 Euler's Theorem

Let m m m be an integer greater than 1 1 1. In the ring Z m \mathbb{Z}_m Zm , every unit u u u satisfies
u ϕ ( m ) = 1 u^{\phi(m)}=1 uϕ(m)=1

Equivalently, every integer a a a relatively prime to m m m satisfies
a ϕ ( m ) = 1 ( mod m ) a^{\phi(m)}=1 \ \ (\text{mod}\ m) aϕ(m)=1 (mod m)

证明

第一部分的证明

已知环 Z m \mathbb{Z}_m Zm 中有 t = ϕ ( m ) t = \phi(m) t=ϕ(m) 个单位元.

单位元集合 (其实构成群) U m = { u 1 , u 2 , ... , u t } U_m = \{u_1, u_2, \ldots, u_t\} Um={u1,u2,...,ut}, 任意选择其中一个 u i u_i ui ( 1 ≤ i ≤ t 1 \leq i \leq t 1≤i≤t).

用 u i u_i ui 乘以集合 U m U_m Um 中的每一个元素得到模 m m m 乘积系列 u i u 1 , u i u 2 , ... , u i u t {u_i u_1, u_i u_2, \ldots, u_i u_t} uiu1,uiu2,...,uiut.

假设上述模 m m m 乘积得到相同元素, 则可推导如下
u i u p ≡ u i u q ( mod m ) ⇒ u i ( u p − u q ) ≡ 0 ( mod m ) u_i u_p \equiv u_i u_q \ (\text{mod}\ m)\\ \Rightarrow \ u_i(u_p - u_q) \equiv 0 \ (\text{mod}\ m) uiup≡uiuq (mod m)⇒ ui(up−uq)≡0 (mod m)

根据 "[I-2-3] 相消性 Cancellation", 可得 u p − u q ≡ 0 ( mod m ) u_p - u_q \equiv 0 \ (\text{mod} \ m) up−uq≡0 (mod m) ⇒ \Rightarrow ⇒ u p ≡ u q ( mod m ) u_p \equiv u_q \ (\text{mod}\ m) up≡uq (mod m). 与单位元 units 是各自不同元素矛盾.

所以模 m m m 乘积系列是各自不同的值.

又根据 " Z m \mathbb{Z}_m Zm 中的所有 units 组成的集合 U m U_m Um 关于 × \times × 运算构成群", 及群中运算的封闭性可知, 模 m m m 乘积系列 u i u 1 , u i u 2 , ... , u i u t {u_i u_1, u_i u_2, \ldots, u_i u_t} uiu1,uiu2,...,uiut 仍然是群 U m U_m Um 中元素的完整列表, 与 u 1 , u 2 , ... , u t u_1, u_2, \ldots, u_t u1,u2,...,ut 之间可能只是排列顺序的差别.

那么就有
u 1 u 2 ... u t ≡ ( u i u 1 ) ( u i u 2 ) ... ( u i u t ) ( mod m ) ⇒ u 1 u 2 ... u t = u i t ( u 1 u 2 ... u t ) ( mod m ) u_1 u_2 \ldots u_t \equiv (u_i u_1)(u_i u_2) \ldots (u_i u_t) \ (\text{mod}\ m)\\ \Rightarrow\ u_1 u_2 \ldots u_t = u_i^t (u_1 u_2 \ldots u_t) \ (\text{mod} \ m) u1u2...ut≡(uiu1)(uiu2)...(uiut) (mod m)⇒ u1u2...ut=uit(u1u2...ut) (mod m)

由 units 群中逆元性质可知, u 1 u 2 ... u t u_1 u_2 \ldots u_t u1u2...ut 仍环 Z m \mathbb{Z}_m Zm 中的 unit. 利用 "[I-2-3] 相消性 Cancellation" 可得
u i t ≡ 1 ( mod m ) ⇒ u i ϕ ( m ) ≡ 1 ( mod m ) u_i^t \equiv 1 \ (\text{mod}\ m) \quad \Rightarrow \quad u_i^{\phi(m)} \equiv 1 \ (\text{mod}\ m) uit≡1 (mod m)⇒uiϕ(m)≡1 (mod m)
第二部分的证明

利用 "[I-2-2] 单位元性质 A property of units" 可知, 当 0 ≤ a < m 0 \leq a < m 0≤a<m 情况下, gcd ⁡ ( a , m ) = 1 \gcd(a,m)=1 gcd(a,m)=1 可以推得 a a a 是 Z m \mathbb{Z}_m Zm 中的 unit, 故结论成立.

当 a ≥ m a \geq m a≥m 情况下, 存在 0 ≤ a ′ < m 0\leq a'< m 0≤a′<m 使得 a = a ′ ( mod m ) a=a' \ (\text{mod}\ m) a=a′ (mod m), 即 a = a ′ + k m a= a'+ km a=a′+km ( k ∈ Z k\in \mathbb{Z} k∈Z). 假设 gcd ⁡ ( a ′ , m ) = d \gcd(a', m)=d gcd(a′,m)=d, 则有
d ∣ a ′ , d ∣ m ⇒ d ∣ ( a ′ + k m ) ⇒ d ∣ a , d ∣ m ⇒ gcd ⁡ ( a , m ) = d ⇒ d = 1 ⇒ gcd ⁡ ( a ′ , m ) = 1 \begin{array}{cc} & d \ | \ a',\ d\ | \ m \\ \Rightarrow & d\ |\ (a'+km)\\ \Rightarrow & d\ |\ a,\ d\ | \ m \\ \Rightarrow & \gcd(a, m)=d\\ \Rightarrow & d = 1 \\ \Rightarrow & \gcd(a',m)=1 \end{array} ⇒⇒⇒⇒⇒d ∣ a′, d ∣ md ∣ (a′+km)d ∣ a, d ∣ mgcd(a,m)=dd=1gcd(a′,m)=1

根据已证明的第一部分内容可得
a ′ ϕ ( m ) ≡ 1 ( mod m ) ⇒ ( a − k m ) ϕ ( m ) ≡ 1 ( mod m ) {a'}^{\phi(m)} \equiv 1 \ (\text{mod}\ m)\\ \Rightarrow \ (a-km)^{\phi(m)} \equiv 1 \ (\text{mod}\ m)\\ a′ϕ(m)≡1 (mod m)⇒ (a−km)ϕ(m)≡1 (mod m)

因为 ϕ ( m ) \phi(m) ϕ(m) 是正整数,
( a − k m ) ϕ ( m ) = a ϕ ( m ) + k m ( ∗ ) ⇒ ( a − k m ) ϕ ( m ) ≡ a ϕ ( m ) ( mod m ) (a-km)^{\phi(m)} = a^{\phi(m)} + km(*)\\ \Rightarrow\ (a-km)^{\phi(m)} \equiv a^{\phi(m)} \ (\text{mod}\ m) (a−km)ϕ(m)=aϕ(m)+km(∗)⇒ (a−km)ϕ(m)≡aϕ(m) (mod m)

最后得到 a ϕ ( m ) ≡ 1 ( mod m ) a^{\phi(m)} \equiv 1 \ (\text{mod}\ m) aϕ(m)≡1 (mod m).

当 a < 0 a < 0 a<0 情况下, 存在 0 ≤ a ′ ′ < m 0 \leq a'' < m 0≤a′′<m, 满足 a ′ ′ = a + l m a'' = a + lm a′′=a+lm ( l ∈ Z l \in \mathbb{Z} l∈Z). 类似 "当 a ≥ m a \geq m a≥m 情况下" 的证明, 可以得到 a ϕ ( m ) ≡ 1 ( mod m ) a^{\phi(m)} \equiv 1 \ (\text{mod}\ m) aϕ(m)≡1 (mod m).

这样就完成了整个欧拉定理的证明. 欧拉定理是 RSA 非对称加密算法的基础理论.


II. 算法原理

1. 扩展欧几里得算法

[II-1-1] 裴蜀定理 Bézout's Theorem

Let a a a and b b b be integers with greatest common divisor d d d. Then there exist integers x x x and y y y such that
d = a x + b y d = ax + by d=ax+by

Thus, the greatest common divisor of a a a and b b b is an integer linear combination of a a a and b b b. Moreover, the data of the Euclidean algorithm can be used to determine an explicit pair of integers x x x and y y y such that d = a x + b y d = ax + by d=ax+by.

证明\]^\[3\]^ 已知 d = gcd ⁡ ( a , b ) d=\\gcd(a,b) d=gcd(a,b), 故 d ∣ a x + b y d\\ \\vert \\ ax+by d ∣ ax+by 对任意的 x , y x,y x,y. a x + b y ax+by ax+by 随 x x x 和 y y y 变化, 必存在 x = x ′ x=x' x=x′ 和 y = y ′ y=y' y=y′ 时使得 a x + b y ax+by ax+by 取得最小正值 d ′ d' d′, 即 d ′ = a x ′ + b y ′ d'=ax'+by' d′=ax′+by′. 此时同样满足 d ∣ d ′ d\\ \\vert \\ d' d ∣ d′. 下面就是要证明 d ′ d' d′ 等于最大公因数 d d d. 由除法定理 (Devision theorem) 存在 q a , r a ∈ Z q_a,r_a \\in \\mathbb{Z} qa,ra∈Z 满足 a = d ′ q a + r a a = d'q_a+r_a a=d′qa+ra, 其中 0 ≤ q a , 0 ≤ r a \< d ′ 0\\leq q_a , 0\\leq r_a \< d' 0≤qa,0≤ra\ **\[11-1-2\] 欧几里得算法 Euclidean Algorithm** ^\[4\]^ > > Given positive integers a , b a,b a,b with a \> b ≥ 0 a \> b \\geq 0 a\>b≥0 find d = gcd ⁡ ( a , b ) d=\\gcd(a,b) d=gcd(a,b). > > **\[Step 1\]** Given a , b a,b a,b, use the division theorem to write a = b q + r a=bq+r a=bq+r, 0 ≤ r \< b 0 \\leq r \< b 0≤r\ > **\[Step 2\]** If r = 0 r=0 r=0, stop and output b b b; this is the gcd. > > **\[Step 3\]** If r ≠ 0 r \\neq 0 r=0, replace ( a , b ) (a,b) (a,b) by ( b , r ) (b,r) (b,r). Go to **\[Step 1\]**. \[例\] 求 756, 123 的 gcd Steps Calculation \[Step 1\] 756 = 123 × 6 + 18 , r = 18 \[Step 3\] r ≠ 0 , ( a , b ) = ( 123 , 18 ) \[Step 1\] 123 = 18 × 6 + 15 , r = 15 \[Step 3\] r ≠ 0 , ( a , b ) = ( 18 , 15 ) \[Step 1\] 18 = 15 × 1 + 3 , r = 3 \[Step 3\] r ≠ 0 , ( a , b ) = ( 15 , 3 ) \[Step 1\] 15 = 3 × 5 + 0 , r = 0 \[Step 2\] r = 0 , gcd ⁡ ( 756 , 123 ) = 3 \\begin{array}{l} \\text{Steps} \& \\text{Calculation}\\\\ \\hline \\text{\[Step 1\]} \&756 = 123\\times 6+ 18, r=18\\\\ \\text{\[Step 3\]} \& r\\neq 0 , (a,b) = (123, 18)\\\\ \\text{\[Step 1\]} \&123 = 18\\times 6+ 15, r=15\\\\ \\text{\[Step 3\]} \& r\\neq 0 , (a,b) = (18, 15)\\\\ \\text{\[Step 1\]} \&18 = 15\\times 1+ 3, r=3\\\\ \\text{\[Step 3\]} \& r\\neq 0 , (a,b) = (15, 3)\\\\ \\text{\[Step 1\]} \&15 = 3\\times 5+ 0, r=0\\\\ \\text{\[Step 2\]} \& r = 0 , \\gcd(756,123) = 3 \\end{array} Steps\[Step 1\]\[Step 3\]\[Step 1\]\[Step 3\]\[Step 1\]\[Step 3\]\[Step 1\]\[Step 2\]Calculation756=123×6+18,r=18r=0,(a,b)=(123,18)123=18×6+15,r=15r=0,(a,b)=(18,15)18=15×1+3,r=3r=0,(a,b)=(15,3)15=3×5+0,r=0r=0,gcd(756,123)=3 \[证明

已知 d = gcd ⁡ ( a , b ) d=\gcd(a,b) d=gcd(a,b), 结合 r = a − b q r=a-bq r=a−bq, 可以推得 d ∣ r d\ \vert \ r d ∣ r. 也就是说 d ∣ b d \ | \ b d ∣ b 且 d ∣ r d \ | \ r d ∣ r, 故 d d d 是 b , r b, r b,r 的公约数. 两个正整数 b , r b,r b,r 的公约数自然 "小于等于" 对应的最大公约数 e = gcd ⁡ ( b , r ) e=\gcd(b,r) e=gcd(b,r), 即 d ≤ e = gcd ⁡ ( b , r ) d \leq e=\gcd(b,r) d≤e=gcd(b,r).

另一方面, 由 e = gcd ⁡ ( b , r ) e=\gcd(b,r) e=gcd(b,r) ⇒ \Rightarrow ⇒ e ∣ b , e ∣ r e \ \vert \ b, e\ \vert \ r e ∣ b,e ∣ r ⇒ \Rightarrow ⇒ e ∣ r + b q e\ \vert \ r+bq e ∣ r+bq ⇒ \Rightarrow ⇒ e ∣ a e\ \vert \ a e ∣ a, 可知 e e e 是 a , b a,b a,b 的公因数, 那么有 e ≤ d = gcd ⁡ ( a , b ) e\leq d=\gcd(a,b) e≤d=gcd(a,b).

这样就可以得到 d = e d = e d=e, 也就是说每一步计算不改变 迭代变化的计算数据之间的最大公因数的值.

最后需要说明算法将在有限步计算后结束. 因为在一步除法计算中需要满足 0 ≤ r < b 0 \leq r < b 0≤r<b, 而在不同迭代步的计算中余数需要满足 a > b > r 1 > r 2 > ... > r n = 0 a> b > r_1>r_2>\ldots>r_n=0 a>b>r1>r2>...>rn=0, 只要 a , b a,b a,b 是有限正整数, 计算步就是有限的.

这样就证明了通过有限步计算的欧几里得算法得到的最大公因数 (使得 r = 0 r=0 r=0 时所得) 就是初始数据的最大公因数.

[II-1-3] 扩展欧几里得算法 Extended Euclidean Algorithm

Suppose a a a and b b b are integers and let d = gcd ⁡ ( a , b ) d = \gcd(a, b) d=gcd(a,b). This algorithm finds d d d, x x x and y y y such that a x + b y = d ax + by = d ax+by=d. (We describe only the steps when a > b ≥ 0 a > b \geq 0 a>b≥0, since one can easily reduce to this case.)

[Step 1] Set r 0 = a r_{0}=a r0=a, x 0 = 1 x_{0} = 1 x0=1, y 0 = 0 y_{0} = 0 y0=0; r 1 = b , x 1 = 0 , y 1 = 1 r_1 = b, x_1=0, y_1 = 1 r1=b,x1=0,y1=1.

[Step 2] If r 1 = 0 r_1 = 0 r1=0, set d = r 0 d = r_0 d=r0 and terminate.

[Step 3] Use the division theorem to write r 0 = r 1 q 2 + r 2 r_0 = r_1 q_2 + r_2 r0=r1q2+r2 with 0 ≤ r 2 < r 1 0 \leq r_2 < r_1 0≤r2<r1.

[Step 4] Set ( r 0 , r 1 , x 1 , y 1 , x 0 , y 0 ) = ( r 1 , r 2 , x 0 − q 2 x 1 , y 0 − q 2 y 1 , x 1 , y 1 ) (r_0, r_1, x_1, y_1, x_0, y_0) = (r_1, r_2, x_0 − q_2 x_1, y_0 − q_2 y_1, x_1, y_1) (r0,r1,x1,y1,x0,y0)=(r1,r2,x0−q2x1,y0−q2y1,x1,y1) and go to [Step 2].

说明

最大公约数 gcd 可以用欧几里得算法获得, 是欧几里得算法的最后一个非零余数.

在应用欧几里得算法时, 每一步计算非零余数由 a , b a,b a,b 线性组合的系数, 直到最后一个非零余数 (= gcd) 的 a , b a,b a,b 线性组合系数.

这就是扩展欧几里得算法求不定方程 (丢番图方程) a x + b y = d ax+by=d ax+by=d 的思路.

我们分步推导如下:

Euclidean Algorithm Extended Results
1 r 0 = a r_0=a r0=a r 0 = x 0 a + y 0 b = 1 ⋅ a + 0 ⋅ b r_0=x_0 a+ y_0 b= 1\cdot a+0\cdot b r0=x0a+y0b=1⋅a+0⋅b x 0 = 1 , y 0 = 0 x_0 = 1, y_0=0 x0=1,y0=0
2 r 1 = b r_1=b r1=b r 1 = x 1 a + y 1 b = 0 ⋅ a + 1 ⋅ b r_1=x_1 a + y_1 b = 0\cdot a + 1\cdot b r1=x1a+y1b=0⋅a+1⋅b x 1 = 0 , y 1 = 1 x_1 = 0, y_1 = 1 x1=0,y1=1
3 r 0 ÷ r 1 = q 2 ... r 2 r_0 \div r_1 = q_2 \ldots r_2 r0÷r1=q2...r2 r 2 = r 0 − r 1 q 2 = ( x 0 a + y 0 b ) − ( x 1 a + y 1 b ) q 2 = ( x 0 − x 1 q 2 ) ‾ ≜ x 2 a + ( y 0 − y 1 q 2 ) ‾ ≜ y 2 b \begin{aligned}r_2 &= r_0 - r_1 q_2\\&= (x_0 a+ y_0 b)-(x_1 a + y_1 b) q_2 \\ &=\underset{\color{green}\triangleq x_2}{\underline{(x_0 - x_1 q_2)}}a + \underset{\color{green}\triangleq y_2}{\underline{(y_0-y_1 q_2)}}b\end{aligned} r2=r0−r1q2=(x0a+y0b)−(x1a+y1b)q2=≜x2(x0−x1q2)a+≜y2(y0−y1q2)b x 2 = x 0 − x 1 q 2 y 2 = y 0 − y 1 q 2 \begin{aligned}x_2&=x_0 - x_1 q_2\\y_2&= y_0-y_1 q_2\end{aligned} x2y2=x0−x1q2=y0−y1q2
⋮ \vdots ⋮
i r i − 2 ÷ r i − 1 = q i ... r i r_{i-2} \div r_{i-1} = q_i \ldots r_i ri−2÷ri−1=qi...ri r i = r i − 2 − r i − 1 q i = ( x i − 2 a + y i − 2 b ) − ( x i − 1 a + y i − 1 b ) q i = ( x i − 2 − x i − 1 q i ) ‾ ≜ x i a + ( y i − 2 − y i − 1 q i ) ‾ ≜ y i b \begin{aligned}r_i &= r_{i-2} - r_{i-1} q_i\\&= (x_{i-2} a+ y_{i-2} b)-(x_{i-1} a + y_{i-1} b) q_i \\ &= \underset{\color{green}\triangleq x_i}{\underline{(x_{i-2} - x_{i-1} q_i)}}a + \underset{\color{green}\triangleq y_i}{\underline{(y_{i-2}-y_{i-1} q_i)}}b\end{aligned} ri=ri−2−ri−1qi=(xi−2a+yi−2b)−(xi−1a+yi−1b)qi=≜xi(xi−2−xi−1qi)a+≜yi(yi−2−yi−1qi)b x i = x i − 2 − x i − 1 q i y i = y i − 2 − y i − 1 q i \begin{aligned}x_i &= x_{i-2} - x_{i-1} q_i\\ y_i & = y_{i-2}-y_{i-1} q_i\end{aligned} xiyi=xi−2−xi−1qi=yi−2−yi−1qi
⋮ \vdots ⋮
n-1 r n − 3 ÷ r n − 2 = q n − 1 ... r n − 1 r_{n-3} \div r_{n-2} = q_{n-1} \ldots r_{n-1} rn−3÷rn−2=qn−1...rn−1 r n − 1 = r n − 3 − r n − 2 q n − 1 = ( x n − 3 a + y n − 3 b ) − ( x n − 2 a + y n − 2 b ) q n − 1 = ( x n − 3 − x n − 2 q n − 1 ) ‾ ≜ x n − 1 a + ( y n − 3 − y n − 2 q n − 1 ) ‾ ≜ y n − 1 b \begin{aligned}r_{n-1} &= r_{n-3} - r_{n-2} q_{n-1}\\&= (x_{n-3} a+ y_{n-3} b)-(x_{n-2} a + y_{n-2} b) q_{n-1} \\ &= \underset{\color{green}\triangleq x_{n-1}}{\underline{(x_{n-3} - x_{n-2} q_{n-1})}}a + \underset{\color{green}\triangleq y_{n-1}}{\underline{(y_{n-3}-y_{n-2} q_{n-1})}}b\end{aligned} rn−1=rn−3−rn−2qn−1=(xn−3a+yn−3b)−(xn−2a+yn−2b)qn−1=≜xn−1(xn−3−xn−2qn−1)a+≜yn−1(yn−3−yn−2qn−1)b x n − 1 = x n − 3 − x n − 2 q n − 1 y n − 1 = y n − 3 − y n − 2 q n − 1 \begin{aligned}x_{n-1} &= x_{n-3} - x_{n-2} q_{n-1}\\ y_{n-1} & = y_{n-3}-y_{n-2} q_{n-1}\end{aligned} xn−1yn−1=xn−3−xn−2qn−1=yn−3−yn−2qn−1
n r n − 2 ÷ r n − 1 = q n r n = 0 \begin{aligned}r_{n-2} \div r_{n-1} &= q_n\\ r_n &= 0 \end{aligned} rn−2÷rn−1rn=qn=0 0 = r n − 2 − r n − 1 q n = ( x n − 2 a + y n − 2 b ) − ( x n − 1 a + y n − 1 b ) q n = ( x n − 2 − x n − 1 q n ) ‾ ≜ x n a + ( y n − 2 − y n − 1 q n ) ‾ ≜ y n b \begin{aligned} 0 &= r_{n-2} - r_{n-1} q_{n}\\&= (x_{n-2} a+ y_{n-2} b)-(x_{n-1} a + y_{n-1} b) q_{n} \\ &= \underset{\color{green}\triangleq x_{n}}{\underline{(x_{n-2} - x_{n-1} q_{n})}}a + \underset{\color{green}\triangleq y_{n}}{\underline{(y_{n-2}-y_{n-1} q_{n})}}b\end{aligned} 0=rn−2−rn−1qn=(xn−2a+yn−2b)−(xn−1a+yn−1b)qn=≜xn(xn−2−xn−1qn)a+≜yn(yn−2−yn−1qn)b x n = x n − 2 − x n − 1 q n y n = y n − 2 − y n − 1 q n \begin{aligned}x_{n} &= x_{n-2} - x_{n-1} q_{n}\\ y_{n} & = y_{n-2}-y_{n-1} q_{n}\end{aligned} xnyn=xn−2−xn−1qn=yn−2−yn−1qn

最后的结果为

{ d = r n − 1 x = x n − 1 y = y n − 1 \left\{\begin{aligned}d &= r_{n-1}\\ x &= x_{n-1}\\ y &= y_{n-1}\end{aligned}\right. ⎩ ⎨ ⎧dxy=rn−1=xn−1=yn−1

需要明确, gcd ⁡ ( a , b ) = d = r n − 1 \gcd(a,b)=d=r_{n-1} gcd(a,b)=d=rn−1 是唯一确定的, 但 a x + b y = d ax+by=d ax+by=d 为不定方程, 有无穷多组解.

每一组具体的解都只能称为特解, 有下式成立
a x n − 1 + b y n − 1 = d (II-1-1) a x_{n-1} + b y_{n-1} = d \tag{II-1-1} axn−1+byn−1=d(II-1-1)

上述表格中第 n 步计算提供了获得通解的线索, 因为知道
a x n + b y n = 0 (II-1-2) a x_n + b y_n =0 \tag{II-1-2} axn+byn=0(II-1-2)

式 (II-1-1) 和 (II-1-2) 结合可得
( a x n − 1 + b y n − 1 ) + k ( a x n + b y n ) = d ⇒ a ( x n − 1 + k x n ) + b ( y n − 1 + k y n ) = d (a x_{n-1} + b y_{n-1}) + k(a x_n + b y_n) = d\\ \Rightarrow\ a(x_{n-1}+k x_n) + b(y_{n-1} + k y_n) = d (axn−1+byn−1)+k(axn+byn)=d⇒ a(xn−1+kxn)+b(yn−1+kyn)=d

其中 k k k 为任意整数. 最后不定方程 a x + b y = d ax+by=d ax+by=d 的通解
{ x = x n − 1 + k x n y = y n − 1 + k y n (II-1-3) \left\{\begin{aligned}x &= x_{n-1} + k x_n\\ y &= y_{n-1} + k y_n\end{aligned}\right. \tag{II-1-3} {xy=xn−1+kxn=yn−1+kyn(II-1-3)

利用扩展欧几里得算法计算得到的特解可能为正值也可为负值, 我们实际计算中多用到正整数, 通解公式 (II-1-3) 就可以将解适配到合适的区域.


2. RSA 非对称加密算法

[II-2-1] RSA algorithm [5]

I-Genertaing Keys-Receiver

[Step 1] Choose p , q p, q p,q, two large prime numbers

[Step 2] Calculate n = p q n = pq n=pq, and calculate ϕ ( n ) = ( p − 1 ) ( q − 1 ) \phi(n) = (p-1)(q-1) ϕ(n)=(p−1)(q−1)

[Step 3] Choose e e e such that gcd ⁡ ( ϕ ( n ) , e ) = 1 \gcd(\phi(n), e) = 1 gcd(ϕ(n),e)=1 and 1 < e < ϕ ( n ) 1 < e < \phi(n) 1<e<ϕ(n)

[Step 4] Choose a positive integer d d d, such that e d ≡ 1 ( mod ϕ ( n ) ) ed\equiv 1 \ (\text{mod}\ \phi(n)) ed≡1 (mod ϕ(n))

[Step 5] The private key is { d , n } \{d,n\} {d,n} and the public key is { e , n } \{e,n\} {e,n}, release the public key

II-Encrypting Message-Sender

[Step 6] Encrypt a message M M M ( < n <n <n) by using the public key { e , n } \{e,n\} {e,n}: C = M e ( mod n ) C = M^e\ (\text{mod}\ n) C=Me (mod n)

III-Decrypting Message-Receiver

[Step 7] Decrypt the message C C C by using the private key { d , n } \{d,n\} {d,n}: M ′ = C d ( mod n ) M' = C^d \ (\text{mod}\ n) M′=Cd (mod n)

说明

RSA 算法的安全性依赖于大数的质因数分解, 给定一个大的合数 n n n 很难在短时间内质因数分解为 p , q p,q p,q.

根据 "[I-3-1] 欧拉函数 Euler ϕ \phi ϕ-Function" 及其 "[I-3-2] 可乘性 Multiplicative Property", 可知 [Step 2]
ϕ ( n ) = ϕ ( p ) ϕ ( q ) = ( p − 1 ) ( q − 1 ) (II-2-1) \phi(n)=\phi(p)\phi(q)=(p-1)(q-1) \tag{II-2-1} ϕ(n)=ϕ(p)ϕ(q)=(p−1)(q−1)(II-2-1)

就是 n n n 的欧拉函数.

[Step 3] 中就是选择一个和欧拉函数 ϕ ( n ) \phi(n) ϕ(n) 互质的数值 e e e. (最简单的实现, 选择一个小于 ϕ ( n ) \phi(n) ϕ(n) 的质数作为 e e e.)

已知 gcd ⁡ ( ϕ ( n ) , e ) ≡ 1 \gcd(\phi(n), e)\equiv 1 gcd(ϕ(n),e)≡1, 由 "[II-1-1] 裴蜀定理 Bézout's Theorem", 存在 x , y x, y x,y 使得 ϕ ( n ) x + e y = 1 \phi(n)x+ey=1 ϕ(n)x+ey=1 成立. [Step 4] 中 e d ≡ 1 ( mod ϕ ( n ) ) ed\equiv 1\ (\text{mod}\ \phi(n)) ed≡1 (mod ϕ(n)) 等价于 ϕ ( n ) x + e d = 1 \phi(n)x+ed=1 ϕ(n)x+ed=1 ( x ∈ Z x\in \mathbb{Z} x∈Z). 这里的 d d d 就是裴蜀定理中的 y y y, 直接可以利用 "[II-1-2] 扩展欧几里得算法 Extended Euclidean Algorithm" 计算获得 d d d 的特解.

又因为我们的推导都在正整数范围内展开, 利用通解计算式 (II-1-3), 使得 d d d 适配到正整数范围.

[Step 5] 中获得的公钥需要公布给信息发送者, 而私钥由接受者严格保密保存. 即使第三方知道公钥也无法破解获知私钥.

[Step 6] 中信息发送者利用公钥加密信息, 并发送加密后的信息给到信息接收者.

[Step 7] 中信息接收者利用私钥解密已加密的信息, 获得信息原文. 如何证明解密后的信息一定是原始信息呢 ? 由加密和解密过程可知
M ′ ≡ C d ( mod n ) ≡ ( M e ) d ( mod n ) (II-2-2) M'\equiv C^d \ (\text{mod}\ n) \equiv (M^e)^d\ (\text{mod}\ n) \tag{II-2-2} M′≡Cd (mod n)≡(Me)d (mod n)(II-2-2)

又 ϕ ( n ) x + e d = 1 \phi(n)x+ed=1 ϕ(n)x+ed=1 ⇒ \Rightarrow ⇒ e d = 1 − ϕ ( n ) x ed = 1 - \phi(n)x ed=1−ϕ(n)x, 代入上式得到
M ′ ≡ ( M e ) d ( mod n ) ≡ M 1 − ϕ ( n ) x ( mod n ) ≡ M ⋅ ( M ϕ ( n ) ) − x ( mod n ) (II-2-3) \begin{aligned} M' &\equiv (M^e)^d\ (\text{mod}\ n) \\ &\equiv M^{1-\phi(n)x} \ (\text{mod}\ n) \\ &\equiv M \cdot \left({M^{\phi(n)}}\right)^{-x} \ (\text{mod}\ n) \end{aligned} \tag{II-2-3} M′≡(Me)d (mod n)≡M1−ϕ(n)x (mod n)≡M⋅(Mϕ(n))−x (mod n)(II-2-3)

需知要传送的信息数值 M M M 是不受加密算法限制的, 故下面根据 M M M 与 n n n 两者之间互质关系分类讨论.

由算数基本定理可知信息数值 M M M 可以分解为
M = m p k 1 q k 2 (II-2-4) M = m p^{k_1}q^{k_2} \tag{II-2-4} M=mpk1qk2(II-2-4)

其中 m m m 中不含 p , q p,q p,q 因子, 即 gcd ⁡ ( m , p q ) = 1 \gcd(m,pq)=1 gcd(m,pq)=1. 根据信息数值 M M M 中是否含有 p , q p,q p,q 因子分解为以下四类情况
{ Case I : k 1 = 0 , k 2 = 0 Case II : k 1 ≥ 1 , k 2 ≥ 1 Case III : k 1 ≥ 1 , k 2 = 0 Case IV : k 1 = 0 , k 2 ≥ 1 \left\{ \begin{aligned} \text{Case I}&:\ k_1 =0,\ k_2=0\\ \text{Case II}&:\ k_1 \geq 1,\ k_2 \geq 1\\ \text{Case III}&:\ k_1 \geq 1,\ k_2 = 0\\ \text{Case IV}&:\ k_1=0,\ k_2 \geq 1\\ \end{aligned}\right. ⎩ ⎨ ⎧Case ICase IICase IIICase IV: k1=0, k2=0: k1≥1, k2≥1: k1≥1, k2=0: k1=0, k2≥1

Case 1\] M M M 中不含有 p , q p,q p,q 因子. 一般 p p p 和 q q q 这两个不同质数的取值大于信息元素的编码值, 即 p , q \> M ≥ 0 p,q\>M\\geq 0 p,q\>M≥0, 这样可以确保 \[Case I\] 的发生, 此时 M M M 与 n = p q n=pq n=pq 互质. 满足 "**\[I-3-3\] 欧拉定理 Euler's Theorem** " 的条件, 可得 M ϕ ( n ) ≡ 1 ( mod n ) {M\^{\\phi(n)}}\\equiv 1 \\ (\\text{mod}\\ n) Mϕ(n)≡1 (mod n), 代入式 (II-2-3) 得到 M ′ ≡ M ⋅ ( M ϕ ( n ) ) − x ( mod n ) ≡ M ⋅ 1 − x ( mod n ) ≡ M ( mod n ) (II-2-5) \\begin{aligned} M' \&\\equiv M \\cdot \\left({M\^{\\phi(n)}}\\right)\^{-x} \\ (\\text{mod}\\ n)\\\\ \&\\equiv M\\cdot1\^{-x}\\ (\\text{mod}\\ n)\\\\ \&\\equiv M\\ (\\text{mod}\\ n) \\end{aligned} \\tag{II-2-5} M′≡M⋅(Mϕ(n))−x (mod n)≡M⋅1−x (mod n)≡M (mod n)(II-2-5) 这样就证明了 "在 M M M 和 n n n 互质情况下, 解密后的信息一定是原始信息". 下面的三种情况, M M M 与 n = p q n=pq n=pq 都不互质. \[Case II\] 此时 M M M 含有 p p p 和 q q q 因子, 即 M M M 是 n n n ( = p q =pq =pq) 的倍数, 也就是说 M ≡ 0 ( mod n ) M \\equiv 0 \\ (\\text{mod}\\ n) M≡0 (mod n). 代入加密公式 (II-2-2) M ′ ≡ ( M e ) d ≡ 0 ( mod n ) M'\\equiv (M\^e)\^d\\ \\equiv 0 \\ (\\text{mod}\\ n) M′≡(Me)d ≡0 (mod n) 这种情况下, **任何信息都加密输出为 0 0 0** , 实际应用中是**没有意义** 的, 故排除此种情况. 故算法中要求 M \< n M\

相关推荐
振鹏Dong4 分钟前
超大规模数据场景(思路)——面试高频算法题目
算法·面试
uhakadotcom4 分钟前
Python 与 ClickHouse Connect 集成:基础知识和实践
算法·面试·github
-XWB-5 分钟前
【LLM】使用MySQL MCP Server让大模型轻松操作本地数据库
人工智能·python·自然语言处理
uhakadotcom5 分钟前
Python 量化计算入门:基础库和实用案例
后端·算法·面试
写代码的小王吧12 分钟前
【安全】Web渗透测试(全流程)_渗透测试学习流程图
linux·前端·网络·学习·安全·网络安全·ssh
uhakadotcom38 分钟前
使用 Python 与 BigQuery 进行交互:基础知识与实践
算法·面试
uhakadotcom39 分钟前
使用 Hadoop MapReduce 和 Bigtable 进行单词统计
算法·面试·github
XYY3691 小时前
前缀和 一维差分和二维差分 差分&差分矩阵
数据结构·c++·算法·前缀和·差分
PacosonSWJTU1 小时前
python基础-13-处理excel电子表格
开发语言·python·excel
longlong int1 小时前
【每日算法】Day 16-1:跳表(Skip List)——Redis有序集合的核心实现原理(C++手写实现)
数据库·c++·redis·算法·缓存