密码学与网络安全 - 2 数论基础 & 3 传统加密技术

2 数论基础

注:本内容部分章节知识罗列了大概目录以及主要概念,仅为本人在阅读相关资料时的随笔,有些地方也并不是很理解,暂且挖坑,等随后再填

2.1 整除性和带余除法

2.1.1 整除性

b|a 表示a处以b没有余数,几个重要的性质如下:

  1. 若 a|1, 则a = ± 1
  2. 若 a|b 且 b|a, 则a = ±b
  3. 任何不等于0的树整除0
  4. 若a|b,b|c, 则a|c
  5. 对于任意整数m,n,若b|g,b|h, 则有 b|(mg + nh)‼️

2.1.2 带余除法

对于任意正整数n, 非负整数a,会有:

a = q*n + r 该式被称为带余除法

另外,a为负数时,上式也是成立的,r 称为剩余数

2.2 欧几里得算法

欧几里得算法是数论中的一个最基本的技巧,能简单求出两个整数的最大公因子

2.2.1 最大公因子

2.2.2 求最大公因子

欧几里德算法实现

func gcd(a, b int) int {
	if a < b {
		a, b = b, a
	}
	for {
		//取余数,若为0,除数就是二者的最大公约数
		c := a % b
		fmt.Println("c:", c)
		if c == 0 {
			break
		} else {
			//除数等于被除数,余数最为除数重新计算余数
			a = b
			b = c
		}
	}
	return b
}

2.3 模运算

2.3.1 模

若 a = q*n + r r为a模n,计作 a mod n,n称为模数

2.3.2 同余的性质

  1. n|(a-b),则a和b模n同余
  2. 交换律:若a和b模n同余,则b和a模n同余
  3. 传递:若a和b模n同余,b和c模n同余,则a和c模n同余

2.3.3 模算术运算

运算性质:在集合{0,1,… , n}上

  1. [(a mod n) + (b mod n)] mod n = (a + b) mod n
  2. [(a mod n) - (b mod n)] mod n = (a - b) mod n
  3. [(a mod n) x (b mod n)] mod n = (a * b) mod n

如上,普通运算的加减乘运算法则也可以平移到模算术中

另外,在线性代数中,注意 (a + b) mod n 和 (a * b) mod n 所对应的两个矩阵是对称的

2.3.4 模运算的性质

给定一个正整数n,集合[0,n-1] 称为剩余类集,[0],[1],[2],[…],[n-1]称为剩余类,给定任意整数a,都有 r与a模n同余,其中r属于剩余类

两个常识:

  1. a的加法逆元为-1

  2. a的乘法逆元为1/a

整数模运算的性质

  1. 满足加法/乘法 交换律、结合律、分配律、单位元,加法逆(-w)
  2. a和n互素,若a * b 与 a * c模n同余,则b和c模n同余

2.3.5 回顾欧几里得算法

根据模运算的性质,我们再回过头来看欧几里德算法

欧几里德算法基于下面的定理

gcd(a,b)= gcd(b,a mod b) a>=b>=0

2.3.6 扩展的欧几里得算法

这个问题再议

2.4 素数

任意整数a>1,都可以唯一的因式分解为p1^a1 * p2^a2 * … * pn^an,其中an为正整数,pn为素数,且p1<p2 < … < pn. 这是算术的基本定理

对于一个正数a,它等于几个素数之积累

另外,对于k = ab, 若a = p1p2^(ap); b = p1p2^(bp),则有 kp = ap + bp成立 ‼️

还有,确定一个大数的因子很困难

2.5 费马定理和欧拉定理

2.5.1 费马定理

若p是素数,a是正整数且不能被p整数,则a^(p-1) mod p与1mod p 同余,另一种方式表示,p是素数,a是任意正整数,a^§ mod p与a mod p 同余

2.5.2 欧拉函数

∅(n)是欧拉函数,表示小于n且与n互素的正整数的个数,特别的,当n是素数时,∅(n) = n-1

2.5.3 欧拉定理

对于任意a和n互素,都有a^(∅(n)) mod n 与 1 mod n 同余,欧拉定理的另一种表述:a^(∅(n)+1) mod n 与 a mod n 同余,此时,a与n互素的这个条件也不需要

注意:费马定理和欧拉定理描述了一个数的某素数次方(某素数-1次方)和该素数之间的关系(模 该素数同余、模1同余)

2.6 素性测试

判断一个数是不是素数的方法

2.6.1 Miller-Rabin算法

素数的两个性质

  1. 若p是素数,a是小于p的正整数,则a^2 mod p =1 (好神奇)
  2. 若p是大于2的素数,当p-1 = (2^k)*q,q是奇数,k>0,则下面条件之一成立
    1. a^q mod p 与 1 mod p同余
    2. 整数a^q, a(2q),…,a((2^(k-1))*q)中存在一个数,模p时和-1同余

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lrRVgGAj-1652270013643)(/Users/qinjianquan/Downloads/IMG_4D278C18C055-1.jpeg)]

重复调用上面的算法,当次数t足够大时,如果还是返回“不确定”,则我们有很大的把握认为非素奇数n为素数

2.6.2 一个确定性的素性判定算法

注意:Miller-Rabin算法判定一个数是不是素数时概率性结果,并不能完全保证。AKS是确定性算法

2.6.3 素数的分布

平均而言,n附近的素数分布情况为In(n),但是这只是平均情况,素数的准确分布并不确定

2.7 中国剩余定理

再研究‼️

某一范围内的整数可以通过它的剩余类来重构,这组剩余类数是对该整数用一组两两互素的整数取模得到的。用途在于它给出了一种方法使得模M的大数运算转化道相对较小的数的运算,M>=150时,该方法有效,但事先需要分解M

2.8 离散对数

离散对数是许多公钥算法的基础

2.8.1 模n的整数幂

欧拉定理:对于任意a和n互素,都有a^(∅(n)) mod n 与 1 mod n 同余,即一定存在m = ∅(n),使得前式成立,并且最小正幂m 为下列之一

  1. a (mod n) 的阶
  2. a所属的模n的整数
  3. a所产生的周期长

2.8.2 模算术对数

对于任何整数b和素数p的本源根a,有唯一的幂i使得b mod p 与 a^i mod p 同余。i称为以a为底(mod p)的b的离散对数,计作 dloga ,p^b

2.8.3 离散对数的计算

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n1Z26vma-1652270013644)(/Users/qinjianquan/Downloads/IMG_7EC08FC6DFFC-1.jpeg)]

3 传统的加密技术

3.1 对称密码模型

对称密码方案的五个组成部分:

  1. 明文:输入
  2. 加密算法:对明文进行各种替代和变换
  3. 密钥:也是输入,独立于明文和算法
  4. 密文:输出
  5. 解密算法:加密算法逆运算,输出为原始明文

也就是说在实际操作中,我们只需要保密密钥就可以了,不必保密算法和保密密文

3.1.1 密码编码学

密码编码学系统三个特征:

  1. 转换明文为密文的运算类型
  2. 所用的密钥数:若接收方和发送方使用的是同一种密钥,则是对称密码,否则是非对称密码
  3. 处理明文的方法

3.1.2 密码分析学和穷举攻击

密码分析学:依赖于算法的特征、明文的特征和某些密文对

算法标准:

  1. 破译密码代价远大于密文信息的价值
  2. 破译密码的时间超出密文信息的有效生命周期

穷举攻击:针对密文,尝试所有密钥,将其转化为可读的有意义的明文,平均情况下,要尝试所有可能密钥的一半

3.2 替代技术

3.2.1 Caesar密码

在字母表中用它之后的第三个字母代替明文字母,密钥是25种

3.2.2 单表代替密码

置换:集合S中所有元素的有序排列,n个元素的集合有n!中置换。但是词频分析仍然能够攻陷

3.2.3 Playfair密码

字母对26*26个,但是词频分析只是稍微好一点

3.2.4 Hill密码

利用了矩阵的一些知识

3.2.5 多表代替算法

vigenere密码

3.2.6 一次一密

明文和密文等长,但太大了

3.3 置换技术

通过矩块进行多次置换

3.4 轮转机

可以实现多表替代算法

3.5 隐写术

就是隐藏明文,而密码学是通过技术来实现信息的不可阅读性

猜你喜欢

转载自blog.csdn.net/weixin_51487151/article/details/124717433