免责声明:用户因使用公众号内容而产生的任何行为和后果,由用户自行承担责任。本公众号不承担因用户误解、不当使用等导致的法律责任
目录
2. Diffie-Hellman密钥交换:非对称密码的黎明
一:非对称密码
1. 核心机制
-
密钥对:
-
公钥(Public Key):公开给所有人,用于加密数据或验证签名。
-
私钥(Private Key):严格保密,用于解密数据或生成签名。
-
数学关联性:公钥由私钥生成,但无法逆向推导私钥(基于数学难题)。
-
-
功能特性:
-
加密与解密:公钥加密 → 私钥解密(确保数据机密性)。
-
数字签名:私钥签名 → 公钥验证(确保数据来源和完整性)。
-
2. 数学基础
非对称密码的安全性依赖于计算复杂度极高的数学问题,目前主流算法基于以下三类难题:
-
大整数分解问题(RSA)
-
例如:分解两个大质数的乘积(如分解 N=p×qN=p×q)。
-
攻击难度:经典计算机需超多项式时间,但量子计算机可破解(Shor算法)。
-
-
离散对数问题(Diffie-Hellman、DSA)
-
例如:正向计算 y=g^xmod p 容易(通过快速幂算法),但反向求 x 极其困难。
-
椭圆曲线变种(ECC):基于椭圆曲线离散对数问题(ECDLP),密钥更短、效率更高。
-
3. 核心应用场景
-
密钥交换(Key Exchange)
-
Diffie-Hellman协议:双方通过交换公钥生成共享密钥,避免密钥明文传输。
-
示例:TLS握手阶段生成会话密钥。
-
-
数字签名(Digital Signature)
-
签名生成:用私钥对数据哈希值加密生成签名。
-
签名验证:用公钥解密签名并与数据哈希值比对。
-
示例:软件发布(验证未被篡改)、区块链交易签名。
-
-
加密通信
-
直接加密:用接收方公钥加密数据,仅接收方私钥可解密(如PGP邮件加密)。
-
注:非对称加密速度慢,通常仅用于加密小数据(如对称密钥)。
-
-
身份认证
-
公钥作为身份标识,私钥证明持有者身份(如SSL证书验证网站真实性)。
-
4. 优缺点分析
-
优点:
-
无需共享密钥:公钥可公开分发,解决了对称密码的密钥管理难题。
-
天然支持身份认证:私钥的唯一性确保签名不可伪造。
-
前向安全性:通过临时密钥(如ECDHE)实现,即使长期私钥泄露,历史会话仍安全。
-
-
缺点:
-
计算效率低:比对称密码慢数百至数千倍,不适合加密大量数据。
-
密钥长度较长:例如RSA-2048的密钥长度是对称密码(如AES-256)的8倍。
-
量子威胁:Shor算法可破解RSA和ECC,需迁移至抗量子算法(如NTRU、Lattice-based)。
-
5. 主流算法
算法 | 用途 | 特点 |
---|---|---|
RSA | 加密、签名、密钥交换 | 通用性强,但密钥长、速度慢 |
ECC(ECDSA/ECDH) | 签名、密钥交换 | 短密钥(256位= RSA-3072安全性),高效 |
Diffie-Hellman | 密钥交换 | 需结合签名算法(如DSA)防中间人攻击 |
EdDSA(Ed25519) | 签名 | 高性能、抗侧信道攻击,用于区块链等 |
6. 实际应用案例
-
HTTPS/TLS协议
-
非对称密码用于身份认证(证书链)和密钥交换(ECDHE_RSA),对称密码(AES)加密数据。
-
-
比特币/以太坊
-
ECC(secp256k1曲线)生成钱包地址和签名交易。
-
-
SSH登录
-
公钥认证替代密码登录,防止暴力破解。
-
-
PGP加密邮件
-
结合RSA加密会话密钥和AES加密邮件内容。
-
二:对称密码vs非对称密码
1. 密钥机制
-
对称密码
-
单密钥系统:加密与解密使用同一密钥。
-
挑战:密钥需通过安全渠道预先共享,存在分发风险(如密钥泄露或中间人攻击)。
-
管理复杂度:若系统中有 nn 个用户,需管理 n(n−1)22n(n−1) 个独立密钥,规模扩展困难。
-
-
非对称密码
-
双密钥系统:公钥(公开,用于加密/验证)与私钥(保密,用于解密/签名)配对使用。
-
优势:无需安全信道分发公钥,私钥始终由用户独立保存。
-
管理简化:nn 个用户仅需 nn 对密钥,公钥可公开托管。
-
2. 性能与效率
-
对称密码
-
速度快:算法设计高效(如AES硬件加速),适合加密大体积数据。
-
资源友好:计算开销低,适用于物联网设备、实时通信等场景。
-
-
非对称密码
-
速度慢:依赖复杂数学运算(如大数分解、椭圆曲线离散对数),效率较低。
-
适用场景:通常仅用于小数据量操作(如密钥交换或数字签名)。
-
3. 安全性
-
对称密码
-
风险点:密钥泄露将导致加密体系完全崩溃,需定期轮换密钥。
-
算法强度:依赖算法复杂性与密钥长度(如AES-256目前无已知有效攻击)。
-
-
非对称密码
-
数学攻击风险:安全性基于数学难题(如RSA依赖大数分解),需足够长的密钥(如RSA-2048)。
-
前向安全性:通过临时密钥(如ECDHE)可增强会话安全。
-
4. 典型应用
-
对称密码
-
数据加密:文件存储(如VeraCrypt)、数据库加密、通信加密(如TLS中的数据传输阶段)。
-
流加密:实时音视频传输(如SRTP协议)。
-
-
非对称密码
-
密钥交换:Diffie-Hellman或ECDH协议生成会话密钥。
-
数字签名:RSA/ECDSA用于身份认证与数据完整性验证。
-
混合加密系统:结合两者优势(如TLS握手阶段用RSA交换AES密钥)。
-
5. 算法示例
-
对称密码
AES(主流)、DES(已淘汰)、ChaCha20(移动端优先)、Salsa20。 -
非对称密码
RSA(通用)、ECC(高效替代方案,如ECDSA)、ElGamal(加密与签名)。
总结:如何选择?
-
对称密码:优先用于高速、大批量数据加密,需解决密钥安全分发问题。
-
非对称密码:用于安全初始化通信(如密钥交换、身份认证),弥补对称密码的密钥管理缺陷。
-
实际应用:混合系统(如HTTPS)结合两者,兼顾安全性与效率。
三:非对称密码的发展史
本文主要介绍原根性质和秘钥交换协议,后续介绍RSA算法。
时间 | 事件 | 影响 |
---|---|---|
1770s | 欧拉与高斯研究原根性质 | 奠定离散对数问题的数学基础 |
1976 | Diffie-Hellman密钥交换协议提出 | 首个公钥方案,解决密钥分发难题 |
1977 | RSA算法诞生 | 实现加密与签名,推动非对称密码实用化 |
1985 | 椭圆曲线密码学(ECC)提出 | 提升效率,适应资源受限场景(如物联网) |
1991 | 数字签名算法(DSA)标准化 | 完善非对称密码的功能体系 |
2000s | ECC普及(比特币、TLS 1.3) | 取代RSA成为主流非对称方案 |
1. 原根:非对称密码的数学基石
(1) 原根的概念
-
定义:模P本原单位根
-
即 {g^1mod p,g^2mod p,...,g^p−1mod p}={1,2,3,....,p-1}。
-
我猜你肯定看不懂,看我给你举的栗子
原根,江湖人称模 p 宇宙的发电机”!
身份:一个数(比如叫它 g),住在素数 p 的模运算世界里。
超能力:只要它开始“蹦迪”(不断自乘),就能生成整个模 p 的乘法群(除了 0)!
→ 比如模 7 的宇宙里,原根 3 的蹦迪轨迹是:3 → 2 → 6 → 4 → 5 → 1(循环了!)。名言:“给我一个素数 p,我能嗨翻全场!”
非素数可能没原根
那原根的派生规则是什么呢???
选择一个素数7,它的原根是3和5。为什么??往下看
条件:
步骤1:计算欧拉函数
ϕ(7)=7−1=6
步骤2:确定候选数
与7互质的数为1, 2, 3, 4, 5, 6。排除显然非原根的数:
1:阶为1。
6:阶为2(因6² ≡ 1 mod7)。
剩余候选数:2, 3, 4, 5。
步骤3:分解φ(7)的素因数
6=2×3⇒素因数为2和3
步骤4:验证原根条件
对每个候选数 g,检查是否满足:
g^6/2≢1(mod7)且g^6/3≢1(mod7)
g=2:
2^3=8≡1(mod7) 不满足
g=3:
3^3=27≡6≢1(mod7)
3^2=9≡2≢1(mod7)
g=4:
4^3=64≡1(mod7) 不满足
g=5:
5^3=125≡6≢1(mod7)
5^2=25≡4≢1(mod7)
步骤5:直接验证幂次
结论
模7的原根为 3 和 5,数量为 ϕ(6)=2 个。
如果上面有些数学基础知识你看不懂,看标题四讲解
-
数学意义:原根的存在性保证了离散对数问题的困难性,成为DH协议的理论基础。
(2) 历史背景
-
欧拉与高斯:18-19世纪,数学家欧拉和高斯研究了原根的性质,证明了每个素数 p 都存在原根。
-
密码学应用:1970年代,原根被引入密码学,用于构造基于离散对数难题的公钥算法。
2. Diffie-Hellman密钥交换:非对称密码的黎明
(1) 提出背景
-
对称密码的瓶颈:1970年代前,密码学依赖对称加密,但密钥必须通过安全信道预先共享,难以应对大规模通信需求。
-
灵感来源:
-
Ralph Merkle:1974年提出“谜题”概念,通过公开信道交换信息生成密钥,但效率低下。
-
Whitfield Diffie与Martin Hellman:1976年发表《密码学的新方向》,提出基于离散对数的DH密钥交换协议,首次实现无需共享密钥的安全通信。
-
(2) DH协议原理
-
参数协商:双方约定大素数 p及其原根 g。
-
密钥生成:
-
Alice选择私钥 a,计算公钥 A=g^a mod p
-
Bob选择私钥 b,计算公钥 B=g^b mod p
-
-
共享密钥:
-
Alice计算 K=B^a mod p=g^ab mod p。
-
Bob计算 K=A^b mod p=g^ab mod p。
-
-
安全性依赖:攻击者即使截获 AA 和 (离散对数难题)。
看不懂正常,看下面
Alice | Eve | Bob |
---|---|---|
Alice和Bob交换一个质数P,和一个整数G。G<P并且G是P的原根。如:P=7 G=3 | 获得公开的P=7 G=3 | Alice和Bob交换一个质数P,和一个整数G。G<P并且G是P的原根。如:P=7 G=3 |
Alice生成一个小于P的随机数(私钥) | Bob生成一个小于P的随机数(私钥) | |
Y.A=G^XA (mod P) | Y.B=G^XB (mod P) | |
交换,Alice收到YB=6 | 获得公开的YA=2 YB=6 | 交换,Bob收到YA=2 |
密钥= (YB)^XA (mod P) | 密钥= (YA)^ XB (mod P) |
DH密钥交换的“秘密调料”协议(搞笑版) 🌶️🍹
场景设定
Alice 和 Bob 想偷偷约定一款“奶茶配方”当暗号,但怕被隔壁老王(Eve)偷学。
他们决定用数学魔法,搞一场“调料盲盒交换”!
第一步:数学魔法阵
选个大素数锅:
挑个超大的素数锅 p=7(假装它和地球一样大🌍)。
找根原味吸管:
选原根 g=3(这吸管能把所有调料搅匀,不留死角!🌀)。
第二步:调自己的“暗黑料理”
Alice:
👩🍳 偷偷选个私钥 A=2(内心OS:这是我的祖传秘方!)。
🔮 算公钥:A=3^2 mod 7=2(把秘方变成一坨绿色不明液体💚)。Bob:
👨🍳 偷偷选私钥B=3(心想:这数字像我家的猫爪印🐾)。
🔮 算公钥:B=3^3 mod 7=6(得到一杯冒泡的紫色毒药💜)。
第三步:公开互泼“毒药”
Alice 把💚扔给 Bob:“喝了它你就是我的人!”
Bob 把💜塞给 Alice:“干了这杯,友谊万岁!”
老王 👀 暗中观察:“这俩傻子在交换呕吐物???”
第四步:合成终极配方
Alice:
🤢 拿到💜,用私钥 a=2 加工:6^2mod 7=1(变成一杯金色传说✨奶茶!)。Bob:
🤮 拿到💚,用私钥 b=3 加工:2^3mod 7=1(也变出一模一样的✨奶茶!)。老王 😵:“为啥我拿💚+💜只能调出洗脚水???”
科学冷笑话
为啥老王算不出?因为离散对数问题让他卡在“3^?≡6mod 7”这种小学奥数题里,CPU烧了🔥!
原根的威力:用 g=3 调奶茶,能遍历所有味道,绝不重复!(老王试到宇宙爆炸也猜不完🌌)
结局
Alice 和 Bob 用✨奶茶加密聊天,老王只能围观表情包🍵。
数学の胜利!DH秘诀:交换毒药,合成奶茶,数学让偷窥者怀疑人生!DH秘诀:交换毒药,合成奶茶,数学让偷窥者怀疑人生!
(3) 历史意义
-
首次突破:DH协议证明公钥密码学的可行性,开启非对称密码时代。
-
局限性:
-
仅支持密钥交换,无法直接加密或签名。
-
易受中间人攻击(需结合数字签名解决)。
-
原根作为数论经典问题,为DH协议提供了数学基础,使公钥交换成为可能。
Diffie-Hellman的提出标志着密码学从“保密算法”转向“公开算法+数学难题”的新范式。
四:学习非对称密码的基础准备
1.基础知识
取模运算(%)
a % b
表示求a
除以b
的余数。例如:
5 % 3 = 2
(因为5 ÷ 3
商1
余2
)。质数
质数是大于 1 的自然数,除了 1 和自身外没有其他因数。例如:
2, 3, 5, 7, 11
等。注意:1 不是质数。公约数与最大公约数(gcd)
公约数是能同时整除若干整数的数,最大公约数是其中最大的一个。例如:
gcd(6, 9, 12) = 3
(因为 3 是 6、9、12 的最大公约数)。互为质数(互质)
两个数的最大公约数为 1 时,它们互质。例如:
gcd(7, 11) = 1
,因此 7 和 11 互质。
序号 互质关系规则 示例 1 任意两个质数构成互质关系 11 和 13 2 一个数是质数,另一个数不是前者的倍数,两者构成互质关系 7 和 15 3 两个数中较大的数是质数,两者构成互质关系 89 和 57 4 1 和任意一个自然数构成互质关系 1 和 61 5 p 是大于 1 的整数,p 和 p - 1 构成互质关系 47 和 46 6 p 是大于 1 的奇数,p 和 p - 2 构成互质关系 19 和 17
2.欧拉函数
记作 ϕ(n),是数论中用于描述小于 n 且与 n 互质的正整数个数的函数。
1. 定义与基本性质
定义:
ϕ(n)=小于 n 且与 n 互质的正整数的个数例如:
ϕ(5)=4(与5互质的数:1, 2, 3, 4)
ϕ(1)=1(特殊规定)
关键性质:
质数:若 p 是质数,则 ϕ(p)=p−1
例如:ϕ(7)=6质数幂:若 p^k是质数的幂次,则 ϕ(p^k)=p^k−p^k−1。
例如:ϕ(8)=ϕ(2^3)=8−4=4积性函数:若 a与 b 互质,则 ϕ(ab)=ϕ(a)⋅ϕ(b)
例如:ϕ(6)=ϕ(2×3)=ϕ(2)⋅ϕ(3)=1×2=2
2. 计算方法
若 n 的质因数分解为 n=p1^k1⋅p2^k2⋯pr^kr则:
ϕ(n)=n⋅(1−1/p1)⋅(1−1/p2)⋯(1−1/pr)示例:
n=12=2^2×3^1则:
ϕ(12)=12×(1−1/2)×(1−1/3)=12×1/2×2/3=4实际验证:与12互质的数为1, 5, 7, 11,共4个。
3. 欧拉定理
若 a 与 n 互质,则正整数a的ϕ(n)次方,模n,余数是1
a^ϕ(n)≡1(mod n)特例:当 n为质数 p 时(费马小定理):a与质数p互质,则正整数a的p-1次方,模以p,
余数是1a^p−1≡1(modp)应用示例:
计算 3^100mod 7
由于 ϕ(7)=6,根据欧拉定理,3^6≡1mod 7
4. 实际应用
RSA加密算法:
选择两个大质数 p 和 q,计算 n=p×q,则 ϕ(n)=(p−1)(q−1)
公钥和私钥的生成依赖于 ϕ(n)。
简化分数:
分子分母的最大公约数可通过 ϕ(n) 辅助计算,确保分数化为最简形式。
5. 示例演练
计算 ϕ(10):
质因数分解:10=2×5
ϕ(10)=10×(1−1/2)×(1−1/5)=10×1/2×4/5=4
实际验证:与10互质的数为1, 3, 7, 9。
计算 ϕ(21):
质因数分解:21=3×7
ϕ(21)=21×(1−1/3)×(1−1/7)=21×2/3×6/7=12
欧拉函数(ϕ(n))总结表
情况分类 定义与公式 示例 1. n=1 唯一与1互质的数是1本身。 ϕ(1)=1 2. n为质数 质数与所有小于它的数互质。 ϕ(5)=4
ϕ(97)=95(因97是质数)3. n=p^k(质数的幂次) 不包含质因子p的数才与nn互质。 ϕ(8)=ϕ(2^3)=8−4=4
ϕ(7^5)=7^5−7^4=144064. n=p1×p2(互质分解) 积性性质:ϕ(p1p2)=ϕ(p1)ϕ(p2)(需p1与p2互质)。 ϕ(56)=ϕ(8×7)=4×6=24
ϕ(284299)=106×2656=2815365. 通用情况(质因数分解) n=p1^k1p2^k2...pr^kr时, ϕ(1323)=1323×(1−1/3)×(1−1/7)=756
ϕ(5346)=1×162×10=1620
五:总结
非对称密码通过公钥加密与私钥解密、私钥签名与公钥验证,实现安全通信和身份认证,是互联网安全(如HTTPS、区块链)的基石。
(本文为介绍简单的非对称加密算法,后续将介绍RSA等各种非对称加密,感兴趣关注)
(需要源代码及各类资料联系博主免费领取!!还希望多多关注点赞支持,你的支持就是我的最大动力!!!)