文章摘要
本文完整梳理密码学全套核心理论知识,覆盖古典密码、对称分组密码、非对称公钥密码、密钥交换、CRT、数字签名、PKI 数字证书、Shamir 门限秘密共享全模块,适合计算机专业学习、网络安全面试、密码学入门阅读。
密码体制基础分类
对称密码与非对称密码体制核心区别
- 密钥持有规则 对称密码通信双方共享同一把密钥,双方密钥完全一致;非对称密码每个用户持有一对独立密钥,分为对外公开的公钥、仅个人保管的私钥,公私钥成对生成,无法互相推导。
- 密钥分发方式 对称密码密钥不能在公网明文传输,必须线下安全交换,多人场景下密钥分发、管理成本极高;非对称密码中公钥可任意公开传输,攻击者截获公钥也无法推导私钥,仅需保护私钥本地存储安全。
- 运算性能差异 对称密码仅包含异或、置换、查表等简单运算,计算开销极低,加解密速度快,适合大文件、海量业务数据加密;非对称密码依赖大数模幂运算,计算逻辑复杂、运行速度慢,仅适用于短数据加密、密钥协商、数字签名场景,不适合大批量明文加密。
- 安全服务能力 对称密码双方共用密钥,无法区分消息发送人,不具备不可否认能力;非对称密码私钥唯一归属持有者,可同时实现身份认证、数据完整性校验、不可否认三类安全能力。
- 典型代表算法 对称密码代表:DES、3DES、AES; 非对称密码代表:RSA、ElGamal、ECC 椭圆曲线密码。
古典密码:凯撒密码、维吉尼亚密码原理与局限性
凯撒密码(单表替换密码)
加密原理:设置固定移位数值 k,将 26 个英文字母循环平移完成加密,数学表达式 C=(P+k)mod26。例如移位数值为 3 时,字母 A 对应 D,字母 Z 对应 C。
局限性:移位取值仅有 0~25 共 26 种可能性,暴力穷举即可快速破解;单表替换不会改变原文固有的字母出现频率,通过字母频率统计分析可直接破译密文。
维吉尼亚密码(多表替换密码)
加密原理:使用自定义密钥字符串,明文按照密钥长度分组,每一组明文分别使用不同移位规则的凯撒密码加密,一组密钥对应多张字母替换表。 局限性:密钥长度较短时,卡西斯基试验可精准计算出密钥长度;确定密钥长度后,将密文分组开展频率分析,就能完整还原密钥;计算机算力提升后,短密钥场景可直接暴力破解。
Kerckhoffs 柯克霍夫安全原则
原则定义:一套密码系统的整体安全性,只能完全依靠密钥的保密性;加密算法、内部结构、硬件实现、通信协议流程全部可以对外公开,不能依靠隐藏算法来保障系统安全。
公开算法细节的核心意义:
- 算法公开后,全球密码学者、安全厂商可持续审计代码与逻辑,底层隐藏漏洞会快速暴露并完成修复;
- 依靠隐藏算法的隐蔽式安全存在致命风险,一旦算法泄露,整套加密系统直接失效;若仅密钥泄露,只需更换新密钥即可恢复安全;
- 公开算法便于行业标准化统一实现,不同厂商设备可互通,同时方便第三方安全审计,减少人为植入后门的风险。
三类密码攻击模型(攻击能力由弱到强)
- 唯密文攻击:攻击者仅能捕获密文数据,没有任何明文、明文 - 密文配对样本,攻击难度最高;
- 已知明文攻击:攻击者掌握多组明文与对应密文的配对数据,可利用配对信息反向推导密钥,攻击难度大幅降低;
- 选择明文攻击:攻击者可主动自定义任意明文,发送给加密程序并主动获取对应密文,可控输入输出,攻击能力最强;现代商用标准密码算法必须能够抵抗该类型攻击。
基础速记要点
- 非对称密码可实现不可否认,对称密码不支持该安全特性;
- Kerckhoffs 原则核心结论:密码系统安全仅依赖密钥保密;
- 凯撒密码属于单表替换密码,维吉尼亚密码属于多表替换密码;
- 攻击强度排序:选择明文攻击 > 已知明文攻击 > 唯密文攻击。
对称分组密码体系
DES 核心知识点
- 基础参数 DES 分组长度固定 64bit;输入密钥总长 64bit,其中仅 56bit 为有效运算密钥,剩余 8bit 仅用于奇偶校验,不参与加密计算;整体采用经典 Feistel 菲斯泰尔结构,完整执行 16 轮迭代变换。
- Feistel 单轮完整运算流程 将 64bit 明文分组拆分为左 32 位 L、右 32 位 R; 右侧 32 位 R 送入 F 函数,依次执行扩展置换、S 盒非线性替换、P 置换; F 函数输出结果与当前轮子密钥做异或运算; 异或结果与左侧 L 再次异或,生成新一轮右半部分; 原始右侧 R 直接作为新一轮左半部分,单轮变换完成。 补充说明:S 盒是 DES 唯一非线性组件,核心作用是抵抗线性、差分密码分析。
- DES 安全性不足的核心原因 有效密钥仅 56bit,密钥空间过小,普通家用电脑、分布式算力集群可在短时间内暴力穷举全部密钥;差分密码分析、线性密码分析等成熟密码分析手段可高效破解 DES;硬件算力逐年提升,穷举攻击成本极低,无法满足金融、互联网等高安全等级场景需求。
3DES 三重 DES 原理与安全提升逻辑
运算流程:对明文连续执行三次 DES 运算,标准公式 C=Ek3(Dk2(Ek1(P))),遵循加密 - 解密 - 加密三层迭代逻辑。
两种主流密钥模式: 三密钥 3DES:K1、K2、K3 三组密钥完全独立,有效密钥长度 168bit;
双密钥 3DES:K1 与 K3 数值相同,仅 K2 独立,有效密钥长度 112bit。
安全增强逻辑:通过多次迭代 DES 成倍扩大密钥空间,大幅提升暴力穷举攻击的计算成本,弥补单 DES 56 位密钥过短的致命缺陷。
AES 高级加密标准完整理论
- 基础参数 AES 全局固定分组长度 128bit,所有版本分组长度保持不变;支持三种密钥长度:128bit、192bit、256bit;加密迭代轮数一一对应:AES-128 使用 10 轮,AES-192 使用 12 轮,AES-256 使用 14 轮。
- AES 四轮基础变换操作及作用 SubBytes 字节替换:非线性变换,使用固定 S 盒替换状态矩阵每一个字节,引入混淆特性,抵抗线性、差分密码分析; ShiftRows 行移位:对状态矩阵每一行循环左移,横向打乱字节位置,实现数据扩散效果; MixColumns 列混合:在有限域 GF (2⁸) 下对矩阵每一列做矩阵乘法,纵向扩散数据,单个字节改动会影响整列全部数据; AddRoundKey 轮密钥加:状态矩阵与当前轮独立子密钥逐字节异或,是整个加密流程唯一引入密钥信息的操作。
- AES 不属于 Feistel 结构的原因 Feistel 结构会将明文分组拆分为左右两半,仅右半部分送入 F 函数运算;AES 完整 128bit 状态矩阵全部参与每一轮变换,不存在二分拆分逻辑;AES 属于 SPN 置换 - 置换网络结构。
对称密码速记要点
- DES 分组 64bit,有效密钥 56bit,16 轮 Feistel 迭代;
- MixColumns 是 AES 独有操作,DES 不存在该步骤;
- AES 固定分组 128bit,三种密钥对应 10/12/14 轮迭代;
- AddRoundKey 是 AES 唯一引入密钥的轮操作。
RSA 公钥密码理论体系
RSA 安全数学基础
安全性依托大整数素因子分解难题:两个大素数相乘得到大合数计算简单;反向将超大合数拆解为两个原始素数,计算量呈指数级增长,现有通用算力无法在有效时间内完成分解。
RSA 完整密钥生成流程
- 随机选取两个数值不相等的超大素数 p、q;
- 计算模数 n = p × q,欧拉函数 φ(n) = (p-1)(q-1);
- 选取公钥指数 e,满足约束条件:1<e<φ(n),且 e 与 φ(n) 最大公约数为 1;
- 求解私钥 d,满足同余等式 (e×d)modφ(n)=1; 最终对外公开公钥:(e,n),本地保存完整私钥:(d,p,q,n)。
公钥指数 e 默认选用 65537 的原因
65537 数值等价 216+1,属于费马素数;
二进制仅包含两个比特 1,模幂运算循环次数少,计算速度更快;
作为费马素数,极少出现与 φ(n) 不互质的情况,密钥生成成功率高;
可有效抵御低指数广播攻击,同时兼顾运算效率与安全强度。
e 取值过小(如 e=3)的安全漏洞
低指数广播攻击:同一明文使用 e=3 加密发送给 3 个不同用户,攻击者获取三份密文后,可直接开立方还原完整明文;
立方根攻击:无额外防护的短指数 RSA 可直接暴力求解明文,加密安全性完全失效。
CRT 中国剩余定理加速 RSA 解密原理
常规解密公式 M=Cdmodn,模数 n 数值极大,模幂运算耗时严重;
拆分模数,分别计算 Mp=Cdmodp、Mq=Cdmodq;
利用费马小定理缩小指数规模,将 d 对 p-1、q-1 取模,大幅降低幂运算计算量;
通过 CRT 合并Mp与Mq,得到最终明文 M;
拆分后运算数值远小于原始模数 n,解密速度可提升 3~4 倍。
RSA 速记要点
- RSA 基于大整数分解难题,DH、ElGamal 基于有限域离散对数;
- 公钥由 (e,n) 组成,私钥核心数值为 d;求解私钥模 φ(n),而非模 n;
- CRT 仅优化 RSA 解密流程,加密运算不使用 CRT。
中国剩余定理 CRT
CRT 核心思想
若一组模数两两互质,任意一组余数组合都存在唯一最小正整数解;可将超大数模运算拆分为多个小数独立模运算,计算完成后合并结果,大幅降低整体运算开销。
示例讲解
求解同余方程组:
x ≡ 2 (mod 3)
x ≡ 3 (mod 5)
x ≡ 2 (mod 7)
通过 CRT 计算可直接得到最小正整数解 x=23。
CRT 使用前置条件
参与计算的所有模数必须两两互质;模数不互质时,方程组无唯一解,无法直接使用 CRT 完成计算。
CRT 在密码学中的全部应用场景
RSA、ElGamal 解密运算加速;
Shamir 门限秘密共享方案的秘密恢复;
椭圆曲线 ECC 底层快速运算优化;
零知识证明、同态加密系统底层大数运算;
盲签名、电子投票等安全协议。
CRT 速记要点
- CRT 使用前提:所有模数两两互质;
- 密码学最经典用途:加速 RSA 解密运算;
- AES 全部轮变换不涉及 CRT 相关运算。
Diffie-Hellman 密钥交换协议
协议核心作用
通信双方在无安全保障的公网环境,协商出完全一致的会话共享密钥,无需线下提前交换密钥。
DH 安全基础
有限域离散对数难题 DLP:已知公共参数 g、大素数 p、公钥y=gxmodp,攻击者无法在合理时间反向求解出私钥 x。
DH 完整协商流程
通信双方提前约定全局公共参数:大素数 p、有限域本原元 g;
A 随机生成私钥 a,计算公钥A=gamodp,明文发送给 B;
B 随机生成私钥 b,计算公钥B=gbmodp,明文发送给 A;
A 使用自身私钥 a 与对方公钥 B 计算共享密钥 K=Bamodp;
B 使用自身私钥 b 与对方公钥 A 计算共享密钥 K=Abmodp;
数学推导保证双方最终得到完全相同的会话密钥。
中间人攻击原理与解决方案
攻击原理:攻击者拦截 A、B 互相传输的公钥,替换为自己生成的伪造公钥;攻击者分别与 A、B 建立两组独立密钥,全程窃听、篡改双方通信内容,通信双方无法识别攻击者身份。
解决办法:引入 PKI 数字证书,对公钥持有者身份绑定认证;使用 STS 带签名认证的改进 DH 协议;通信双方预先配置静态共享密钥,验证对方身份合法性。
DH 速记要点
- DH 协议仅用于密钥协商,不加密文件、不生成数字签名;
- 原生 DH 无身份认证机制,无法抵御中间人攻击;
- 公共参数 p、g 全网公开,私钥 a、b 本地保密。
ElGamal 密码体制
ElGamal 安全基础
有限域离散对数难题 DLP,底层数学难题与 DH 密钥交换协议完全一致。
密文结构与长度变长原因
ElGamal 加密输出密文为二元组(c1,c2);
加密过程会生成一次性随机数 k,两组密文计算公式:
c1=gkmodp,c2=m⋅ykmodp;
一份原始明文会生成两段与模数长度相同的大数,密文整体体积翻倍,因此密文长度远大于原始明文。
ElGamal 关键特性
每次加密必须更换随机数 k,若多次加密使用同一个 k,会泄露明文完整信息;
属于非对称公钥密码,同时支持数据加密、数字签名两种业务场景。
ElGamal 速记要点
- ElGamal 密文是二元组 (c1,c2),密文长度大于明文;
- 安全基础为有限域离散对数 DLP。
ECC 椭圆曲线密码
ECC 安全数学基础
椭圆曲线离散对数难题 ECDLP;同等模数长度下,ECDLP 破解难度远高于 RSA 大整数分解、普通有限域离散对数问题。
ECC 对比 RSA 四大核心优势
同等安全强度下密钥长度更短,256bit ECC 安全强度等价 2048bit RSA;
加解密、签名验证计算开销更小,整体运算速度更快;
密文、签名输出数据长度短,网络传输带宽占用更低;
存储、硬件资源需求极低,适配物联网设备、智能卡、移动端嵌入式设备。
ECC 速记要点
- ECC 属于非对称公钥密码,安全基础为 ECDLP;
- 安全等级对照:256 位 ECC ≈ 2048 位 RSA。
数字签名与 MAC 消息认证码
数字签名三大核心安全服务
身份认证:验证消息发送者真实身份,攻击者无法伪造合法签名;
数据完整性:消息任意字节发生篡改,签名验证直接失败,可快速检测数据改动;
不可否认:私钥仅签名人独自持有,发送方无法否认自己发送过该消息。
数字签名与 MAC 消息认证码根本区别
密钥体系:MAC 基于对称共享密钥,收发双方密钥完全一致;数字签名使用非对称密钥,私钥签名、公钥验证,公私钥相互分离;
不可否认能力:MAC 无不可否认特性,持有共享密钥的双方均可伪造消息;数字签名私钥唯一归属签名人,具备不可否认安全能力;
验证权限:MAC 仅持有共享密钥的双方可校验数据;数字签名公钥对外公开,任何人都能完成签名合法性验证。
签名与 MAC 速记要点
- MAC 不具备不可否认特性,数字签名同时提供完整性、身份认证、不可否认;
- 数字签名使用私钥生成,公钥仅用于校验签名。
PKI 公钥基础设施与 X.509 数字证书
X.509 数字证书核心字段
版本号、证书序列号、签名算法标识、签发 CA 机构名称、证书有效期起止时间、证书持有者主体名称、持有者公钥、CA 机构数字签名、扩展字段(密钥用途、CRL 吊销地址等)。
PKI 完整核心组件
CA 证书颁发机构、RA 注册机构、证书存储库、CRL 证书吊销列表、终端用户实体。
CA 机构核心职责
签发合法数字证书、管理证书完整生命周期、生成可信根证书、对证书内容签名、处理证书吊销、维护全网信任链路。
RA 机构核心职责
核验用户真实身份、受理证书申请、接收证书注销请求并转发给 CA;RA 仅负责注册审核,不具备签发证书的权限。
证书链定义与浏览器信任网站完整流程
证书链定义:由站点业务证书、多级中间 CA 证书、根 CA 证书逐级串联组成,每一级证书都由上级 CA 签名,形成完整可信信任链路。
浏览器信任网站完整流程:
网站服务器向浏览器返回完整证书链;
浏览器内置预装可信根证书库;
从站点证书向上逐级校验每一级 CA 的数字签名;
校验证书未过期、未被吊销、全部签名合法,且链路终点匹配浏览器内置可信根证书,则信任该网站。
PKI 速记要点
- CA 负责签发证书,RA 仅审核用户身份,不能签发证书;
- 证书链逐级向上追溯,最终匹配浏览器内置可信根证书才能完成信任校验。
密钥管理与 Shamir 门限秘密共享
密钥管理完整生命周期
密钥生成、密钥分发、安全存储、密钥使用、密钥定期更新、密钥备份、密钥吊销、密钥销毁。
密钥安全最佳实践
私钥隔离存储,使用硬件加密机、专用密钥管理器保管,禁止明文存放;
定期轮换密钥,长期主密钥拆分临时会话密钥使用;
密钥分发全程加密传输,杜绝密钥以明文形式在网络传输。
Shamir (t,n) 门限秘密共享
基本思想:将一段原始秘密拆分为 n 份子秘密分片,分配给 n 个参与人员分别保管。
(t,n) 门限含义:集齐大于等于 t 份分片,就可以完整还原原始秘密;如果持有的分片数量少于 t 份,无法获取任何和秘密相关的有效信息。
底层数学原理:基于有限域上的拉格朗日插值多项式;构造 t-1 次多项式,原始秘密作为多项式常数项,每个参与者获得多项式上一组坐标点;至少收集 t 个坐标点,通过插值还原完整多项式,提取常数项得到原始秘密。
秘密共享速记要点
- (t,n) 门限规则:最少集齐 t 份分片才能恢复完整秘密;
- Shamir 秘密共享依托有限域拉格朗日插值多项式实现。