文章目录
Diffie-Hellman密钥交换协议(Diffie-Hellman Key Exchange,简称DHKE)
一、密码学相关的数学基础
1. 素数(质数)
素数一般指质数。质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。比如2、3、5、7、11、13等等都是素数,因为它们只能被1和本身整除。
素数相乘原理指的是:任何一个大于2的整数都可以唯一分解为素数的乘积。
例如:
- 24 = 2 * 2 * 2 = 2^3 # 24可以分解为2的幂次
- 25 = 5 * 5 = 5^2 # 25可以分解为5的幂次
- 15 = 3 * 5 # 15可以分解为素数3和5的乘积
- 7是一个素数,只能分解为1 * 7
根据这个原理,我们可以将任何一个整数分解为素数的乘积。
素数相乘原理的应用场景很广:
整数分解:将一个整数分解为素数的乘积。这在RSA加密算法等应用中很重要。
2. 模运算
模算法是密码学中的核心数学概念。
“模数”(缩写为“mod”),在拉丁语中是“余数、残数”的意思,表示“取去整体的一部分后剩下的部分”。
例子:
当7除以3时,余数是1。
7 mod 3 = 1
其读成7的3模等于1. 、
给定一个正整数p,任意一个整数n,一定存在等式
n = k p + r n = kp + r n=kp+r 其中k、r是整数,且 0 ≤ r < p,称呼k为n除以p的商,r为n除以p的余数。
在编程语言中,利用%运算符可以很容易求出余数。例如在Python中:
>>> 17 % 5 # 17除以5的余数
2
>>> 25 % 7 # 25除以7的余数
4
>>> 33 % 11 # 33除以11的余数
0
模p相等
如果两个数a、b满足a mod p = b mod p,则称他们模p相等,记做
a ≡ b (mod p)
可以证明,此时a、b满足 a = kp + b,其中k是某个整数。
3. 费马小定理
[推荐]521 同余式 乘法逆元 费马小定理
参考URL: https://www.bilibili.com/video/BV1RD4y1i7PK/
同余(五)——费马小定理
参考URL: https://mp.weixin.qq.com/s?__biz=MzI2NjEyMTg3Mw==
最美数学系列-什么是费马小定理以及如何证明它?
参考URL: https://www.bilibili.com/video/BV14A411h7oD/
初等数论入门:什么是“域”
参考URL: https://www.toutiao.com/article/6860442610624889348/
【有趣的数学】E02——费马小定理,判别素数的方法?
参考URL: https://www.bilibili.com/video/BV1mM4y1A7FR/
[推荐]数论:费马小定理
参考URL: https://www.bilibili.com/video/BV1RG41137tR/
费马小定理是数论中的一个重要定理,由费马在17世纪(在1636年提出)提出。它阐明了整数在模素数下的乘法性质,是构建RSA算法等密码学系统的理论基础。
费马小定理:
如果p是一个质数,而整数a不是p的倍数,则有a^(p-1)≡1(mod p)
如果整数a与素数p互质,那么a的(p-1)次方在模p下等于1。
我们知道,当 p 为素数且用 (mod p) 进行分类时,费马小定理是成立的。
也就是说,对于非 0 的 a 而言,以下同余式恒成立。
在此令 a ( p − 1 ) = a ⋅ a ( p − 2 ) a^( p-1)=a·a^(p-2) a(p−1)=a⋅a(p−2),则
由此可知,a^(p-2) 是 a 的逆元。
因此,非 0 的 a 确实总是存在逆元。由此可知,相应的剩余类可以构成域。例如 (mod 5)
4. 对数
对数符号log出自拉丁文logarithm,最早由意大利数学家卡瓦列里(Cavalieri)所使用。20世纪初,形成了对数的现代表示。为了使用方便,人们逐渐把以10为底的常用对数及以无理数e为底的自然对数分别记作lgN和lnN。
如果a的x次方等于N(a>0,且a≠1),那么数x叫做以a为底N的对数(logarithm),记作
x = l o g a N x=log_aN x=logaN。其中,a叫做对数的底数,N叫做真数。
在指数式中,x就是指数。在对数式中,x就是对数。
5. 离散对数
【离散对数】离散对数的性质
参考URL: https://www.bilibili.com/video/BV1hY411D7Bv/
离散对数
参考URL: https://www.bilibili.com/video/BV1TJ411a7x6/
离散数学(国家级)-北京大学
参考URL: https://www.bilibili.com/video/BV1V7411t7HL/
[推荐]图解 ECDHE 密钥交换算法
参考URL: https://www.toutiao.com/article/6920920871188120068/
离散对数是在对数运算的基础上加了「模运算」,也就说取余数,对应编程语言的操作符是「%」,也可以用 mod 表示。离散对数的概念如下图:
上图的,底数 a 和模数 p 是离散对数的公共参数,也就说是公开的,b 是真数,i 是对数。知道了对数,就可以用上面的公式计算出真数。但反过来,知道真数却很难推算出对数。
特别是当模数 p 是一个很大的质数,即使知道底数 a 和真数 b ,在现有的计算机的计算水平是几乎无法算出离散对数的,这就是 DH 算法的数学基础。
离散对数公钥加密算法是目前最为热门的公钥加密算法 ,其安全性要远远高于基于大数分解的RSA算法。离散对数在许多数论与密码学问题中有重要应用,例如Diffie-Hellman密钥交换协议和ElGamal加密算法等都依赖离散对数。
6. 椭圆曲线
[推荐]ECC椭圆曲线加密算法原理
参考URL: https://blog.csdn.net/liangjisheng/article/details/79428639
公钥加密技术ECC椭圆曲线加密算法原理
参考URL: https://www.bilibili.com/video/BV1BY411M74G
椭圆曲线数字签名算法(一)
参考URL: https://www.bilibili.com/video/BV1eS4y1t7Jy/
【ECC加密算法】| ECC加密原理详解| 椭圆曲线加密| 密码学| 信息安全
参考URL: https://www.bilibili.com/video/BV1v44y1b7Fd/
椭圆曲线加密与哈希函数是什么?非对称加密是什么?比特币中的数学原理
参考URL: https://www.bilibili.com/video/BV1TE411q7mW/
[推荐]【Computerphile计算机系列】椭圆曲线和密码算法(合集见视频列表)
参考URL: https://www.bilibili.com/video/BV1q34y197Zq/
[清晰,强烈推荐]徐伟光:椭圆曲线密码学(四电老陈)
参考URL: https://www.bilibili.com/video/BV1ZT411k7z8/
上图,来自由陆晨博士主讲的「高效密码运算算法」,如有侵权,联系删除~
椭圆曲线加密法(ECC)是一种公钥加密技术,以椭圆曲线理论为基础,在创建密钥时可做到更快、更小,并且更有效。ECC 利用椭圆曲线等式的性质来产生密钥,而不是采用传统的方法利用大质数的积来产生。
ECC所谓的椭圆曲线在数学上就是一个数学方程式,该方程式对应一个椭圆曲线(并不是椭圆),该曲线上的点由方程式决定。
最常见的韦尔斯特拉斯(Weierstrass)方程:
y 2 = x 3 + a x + b y^2 = x^3 + ax + b y