密码学-Chap.2


密码学 Chap.2 数论基础

本博文的创作目的是为博主本学期课程 密码学 做一个整体的知识梳理与总结, 并希望有助于后续进一步扩展知识面.
希望能够帮助到读到本文的读者.
之所以从第二章开始, 是因为本文是按照读者所受教学顺序进行梳理的, 第一章绪论暂且放下不表.

数论基础, 是以 整数的整除性 为中心的一部分知识. 至于为什么要在这里提及, 是因为 数论是密码学成立的基础 , 在古典密码学 / 公钥密码学等方面对数论均有涉及.

本章内容会与同博客中 信安数学基础_Fin 的内容高度重合, 在这里权当重新梳理了.

1. 整除

定义:

设 a, b 是两个整数, 其中 $ b \neq 0 $ , 如果存在整数 m 使得 $ a = bm $ 成立, 则我们称 b 整除 aa 可被 b 整除 , b可称为a的因数, a可称为b的倍数. 上述关系还可记作:

$$ b \mid a $$

反之, 则可记作:

$$ b \nmid a $$

整除有以下几个性质:

  1. If $ a \mid 1 $ , then $ a = \pm 1 $
  2. If $ a \mid b $ , and $ b \mid a $ , then $ a = \pm b $
  3. For any $ b \neq 0 $ , $ b \mid 0 $
  4. If $ a \mid b $ and $ b \mid c $ , then $ a \mid c $ (传递性)
  5. If $ b \mid g $ and $ b \mid h $ , then for arbitary integers m, n, there is $ b \mid (mg+nh) $

2. 带余除法

定义:

如 a, n是两个整数, 其中 $ n>0 $ , 则存在两个整数 q, r, 使得 $ a = nq+r $ , 其中 $ 0 \leq r < n $ , $ q = [a/n] $ , 并且q与r是唯一的.

我们称q是 a被n除的不完全商 , r是 a被n除的余数 .

这带余除法有啥用呢?

整数分类

我们不扯那么多专业术语, 博主的理解, 就是以 n 为标尺, 将整数集合 根据除以n所得的余数 进行分类.

举个例子: 奇数偶数就相当于以2为标尺, 将整数集合分成了余数为 0 / 1 的两个类.

这就是信安数学基础那一章中 剩余类 的概念.

3. 最大公约数

定义:

两个数 a, b 的最大公约数 c 满足:

  1. c 是 a, b 的公约数, 即 $ c \mid a $ and $ c \mid b $
  2. a, b 的任意公约数均为 c 的因数, 即 If $ d \mid a $ and $ d \mid b $ , then $ d \mid c $ .

我们将最大公约数记为: $ gcd(a, b) $ , 特殊的, 如果 $ gcd(a, b) = 1 $ , 则称 a, b 互素 .

最大公约数有以下性质:

  1. $ gcd(a, b) = gcd(b, a) = gcd(a, -b) = gcd(\mid a\mid , \mid b \mid) = gcd(a, a-b) $
  2. $ gcd(0, a) = a $

怎么求最大公因数呢?

欧几里得算法

本质上是这个定理:

$$ gcd(a, b) = gcd(b, a-kb) = gcd(b, r) $$

也被称为 辗转相除法 .

进行一系列辗转相除后, 最后一个不等于0的余数 就是 $ gcd(a, b) $ 的值.

4. 模运算

模运算是专门用于余数运算的运算方式:

对于 $ a = nq+r $ , 我们通常将 r 记作: $ r = a \space mod \space n $

用模运算的方式表示剩余类:

$$ a \equiv b \space mod \space n $$

这说明 a, b 处于关于n的同一个剩余类内, 即 a, b 关于n同余.

模运算还有以下性质:

  1. $ [(a \space mod \space n)+(b \space mod \space n)] \space mod \space n = (a+b) \space mod \space n $
  2. $ [(a \space mod \space n)-(b \space mod \space n)] \space mod \space n = (a-b) \space mod \space n $
  3. $ [(a \space mod \space n) \times (b \space mod \space n)] \space mod \space n = (a \times b) \space mod \space n $

5. 剩余类

我们一般将关于n的全部剩余类 (即 n就是上文中进行整数分类的标尺 ) 记为 $ Z_n $ .

关于 $ Z_n $ , 上方的模运算有以下性质:

  • 交换律
    • $ (w+x)mod \space n = (x+w)mod \space n $
    • $ (w \times x)mod \space n = (x \times w)mod \space n $
  • 结合律
    • $ [(w+x)+y]mod \space n = [w+(x+y)]mod \space n $
    • $ [(w \times x) \times y]mod \space n = [w \times (x \times y)]mod \space n $
  • 分配律
    • $ [w \times (x+y)]mod \space n = [w \times x + w \times y]mod \space n $
  • 单位元
    • $ (0+w)mod \space n = w \space mod \space n $
    • $ (1 \times w)mod \space n = w \space mod \space n $

关于可约律, 会在介绍完 加法 / 乘法逆元 后进行阐述.

6. 加法逆元 / 乘法逆元

对于 $ w \in Z_n $ , 存在 $ z \in Z_n $ , 使得 $ w+z \equiv 0 \space mod \space n $ , 则 w, z互为加法逆元 , 记为 $ z = -w $ .

类似的, 如果有 $ w \times z \equiv 1 \space mod \space n $ , 则 w, z互为乘法逆元 .

加法逆元总是存在的, 但并未每个w都能有乘法逆元.
事实上, 当且仅当w与当前标尺n互素时, w才有乘法逆元.(见下侧定理)

乘法逆元的存在性定理

设 $ a \in Z_n $ , 若 $ gcd(a, n) = 1 $ , 则 a 在 $ Z_n $ 中有乘法逆元.

根据上述定理, 可知任一素数 p 对应的 $ Z_p $ 中所有元素均有乘法逆元. (因为任何元素都与p互素)

需要明确, 可约率成立的前提是元素有逆元.

  • 可约率
    • $ (a+b) \equiv (a+c) \space mod \space n $ , 则 $ b \equiv c \space mod \space n $ , 该式恒成立, 因为加法总是有逆元.
    • $ (a \times b) \equiv (a \times c) \space mod \space n $ , 则 $ b \equiv c \space mod \space n $ , 该式当且仅当 a有乘法逆元时成立 .

6.1 乘法逆元的求法

加法逆元很好求, 但乘法逆元不是很容易一眼瞪出来. 这时, 我们通常使用 扩展欧几里得算法 .

所谓 扩展欧几里得算法 , 意味着求出两数 a, b 的最大公约数 $ gcd(a, b) $ 后, 将整个过程逆着倒腾回去, 用 a, b 的线性组合表示出 $ gcd(a, b) $ , 即:

$$ gcd(a, b) = n \times a + m \times b $$

我们假设想求 a 关于 b 的乘法逆元:

  • 利用欧几里得算法验证 $ gcd(a, b) = 1 $
  • 利用扩展欧几里得算法倒回去求出 m, n
  • 这个m就是b的乘法逆

具体过程读者可参考本博客中 信安数学基础_Fin 这一章.

7. 素数

如果整数p的因子只有 $ \pm 1, \pm p $ , 则p是素数.

引入素数是为了引入一个重要定理: 整数分解定理

任意整数 a 都能唯一的分解为下列形式:

$$ a = p_1^{a_1}p_2^{a_2}…p_t^{a_t} $$

其中 $ p_1, p_2, …, p_t $ 均为素数.

我们用更加简洁的语言描述一下上面的定理:

$$ a = \prod_{p \in P} p^{a_p} $$

这其中 $ P $ 是全体素数组成的集合. $ a_p $ 指的是对应素数的指数项(大部分取0) .

我们利用这种方式, 可以 利用一个唯一的非零指数列表来表示一个整数 :

$$ 11011 = \lbrace a_7 = 1, a_{11} = 2, a_{13} = 1 \rbrace $$

即 $ 11011 = 7^1 \times 11^2 \times 13^1 $

为啥要这么干呢, 因为这么表示整数可以很方便的表示两数的相乘, 将对应指数相加即可.

啥意思?

$ 12 = \lbrace a_2 = 2, a_3 = 1 \rbrace $ , $ 18 = \lbrace a_2 = 1, a_3 = 2 \rbrace $ . 则 $ 12 \times 18 = \lbrace a_2 = 2+1 = 3, a_3 = 1+2 = 3 \rbrace $ .


文章作者: MUG-chen
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 MUG-chen !
  目录
加载中...