一. 密码技术基础
密码技术是为了维护数据安全,其目标主要包括 机密性、真实性、完整性、不可否认性、可用性、可控性密码学(Cryptology)主要,包括:
密码编码学:研究如何进行数据加密和解密(保证数据的机密性),以及防止和发现数据的伪造、篡改(保证数据的真实性、完整性、不可否认性)
密码分析学:分析发现密码算法的弱点、缺陷,破解密码算法或者破译密码数据
加解密流程
二. 密码算法
概述
设:M是可能明文的集合(明文空间)
C是可能密文的集合(密文空间)
K是一切可能密钥构成的集合(密钥空间)
E为加密算法,它对密钥空间的任一密钥k都能进行加密运算,即Ek: M->C
D为解密算法,它对密钥空间的任一密钥都能进行解密运算,即Dk: C->M
则密码算法具有如下性质:
(2)密码破译者获得密文c=Ek(x)后无法在有效的时间内破解出密钥k和/或明文x
数论基础
定义1. 设n为大于1的正整数,a为任一整数,a可表示为a=kn +r,0≤ r<n,则记为:a mod n = r,称r为a的模n余数
注意:负数的模n余数是正整数!例,若 –n<a<0,则a mod n = n+a(即 a mod n = a + kn mod n)
定义2. 设n为大于1的正整数,a、b为任意整数,如果a mod n = b mod n,即a、b有相同模n余数,则称a、b模n同余表示为 a ≡ b (mod n)
a、b模n同余当且仅当n整除a-b,或者说(a-b)modn=0
定义 3. n为大于1的正整数,a、b为整数,则a+b mod n,a-b mod n ,a*b mod n,ab mod n分别称为整数的模n加法、减法、乘法和乘方(幂)
注意:没有除,但有逆!
设n为大于1的正整数,a、b为任意整数,mod算子的运算优先级最低,则
1) a + b mod n = (a mod n) + (b mod n) mod n
2) a – b mod n = (a mod n) + (–b mod n) mod n = (a mod n) – (b mod n) mod n
3) ab mod n = (a mod n)*(b mod n) mod n
4) a mod n = a + kn mod n = a – kn mod n
5) a + (b mod n) mod n = a+b mod n
6) a*(b mod n) mod n = a*b mod n
7) (a mod n)p mod n = ap mod n
结论:
对于同一个模n,只要保存最外层的mod n算子,给加、减、乘、乘方运算中的数加上或去掉mod n算子,不影响结果
定义 4. 设n为大于1的正整数,a、b为任意整数,若a+b mod n= 0,则b称为a的模n加法逆,记为-a
注意:a的模n加法逆不止一个,它们相差kn
定义 5. 设n为大于1的正整数,a、b为任意整数,若 ab mod n= 1,则b称为a的模n乘法逆,记为a-1,即a*a-1 mod n=1
注意:a的模n乘法逆不止一个,它们相差kn
定义 6. 设p是大于1的正整数,若p只能分解为1和自己的乘积