密码学期末复习宝典:从对称加密到数字签名一次理清 期末复习最怕的是把一门课上成了背单词课密码学尤其如此。很多人一翻开教材就被 DES、AES、RSA、SHA、HMAC、数字签名一堆缩写砸晕然后开始背流程、背常量、背轮数结果考试时看到一道“为什么 CBC 模式不能并行加密”的简答题直接愣住——这在历年卷里属于送分题但只会背结论的人根本不知道从哪入手。这篇复习稿写给正在准备密码学考试的同学也写给那些想系统梳理一遍知识脉络的自学者。我会从“考什么、怎么考、怎么答”三个角度出发把对称加密、公钥密码、哈希与签名、密钥管理与安全协议这几个必考大块拆开讲清楚每个部分都会带上典型的题型套路和考场答题要点。1. 复习密码学先搞清楚考卷的出题逻辑1.1 密码学课程的三大考察层级大学密码学课程尤其是本科阶段的信息安全、网络空间安全专业考试有个规律满分 100 分的卷子大约 30% 考概念辨析40% 考计算与流程推导30% 考综合应用题。这里说的综合应用通常就是给你一个场景让你选择一个加密方案并说明理由比如“远程登录场景适合用什么协议保护口令”“邮件防篡改是应该用哈希还是数字签名”。想拿高分光背不行得把原理理顺。密码学体系表面上散实际有一条清晰的逻辑主线先说“怎么加密”对称与非对称再说“怎么保证完整性”哈希与 MAC然后把两者组合成“数字签名”最后把签名和加密封装进“安全协议”。你如果能在复习第一天画出这张知识关系图后面所有记忆都有了挂靠点。1.2 加分项其实藏在“对比”里历年阅卷经验告诉我阅卷老师最反感的是只写结论、不写依据的答案。举个例子问你“为什么 RSA 不能直接用于加密大量数据”很多人只答“因为 RSA 慢”——这在考试里只能拿一半分。应该补充一条关键理由RSA 是确定性算法同一明文在同一公钥下总是得到同一密文这不满足语义安全要求。再往深里说RSA 运算基于大整数模幂数据量一大计算开销就无法接受因此实际中都用混合加密会话密钥用对称算法只有密钥本身用 RSA 包裹。我建议你复习每块知识都准备“是什么、为什么、怎么用”三层笔记考概念时写清楚定义考理解时解释设计动机考应用时能举出实例。这三层对应了一二三类题型能把这三层串起来的人成绩基本都在 85 分以上。2. 对称密码复习性价比最高也是最容易白送分的模块2.1 DES 与 AES你必须手到擒来的结构图对称加密部分几乎每所高校的试卷都会围绕 DES 和 AES 来出题。它们属于分组密码也就是先把明文切成固定长度的小块再逐块加密。DES 是教科书级别的重点虽然实际应用中已经被淘汰但它的 Feistel 结构是理解分组密码设计思想的最佳样本所以考试永远不放过它。DES 考得最密集的三个点是64 比特密钥为何实际有效位只有 56 比特因为第 8、16、24、32、40、48、56、64 位是奇偶校验位不参与运算、16 轮 Feistel 迭代中每轮右半部分直接复制到下一轮左半部分这保证了加解密能用同一套算法、以及 S 盒是唯一的非线性层它是抗攻击的核心。这些不只是记忆点更是理解题和简答题的素材。AES 方面复习重点是字节代换、行移位、列混合、轮密钥加四个步骤以及 128 位密钥对应 10 轮、192 位对应 12 轮、256 位对应 14 轮的规则。这里有个记忆技巧轮数 密钥位数除以 32 再加 6比如 128/32610很好记。注意考试中如果让你手算 DES 的某一轮通常不需要你完整算 F 函数只要写出轮结构变换关系、左右两半交换的逻辑就行。真正让你手算全套 DES 的题基本没有因为工作量太大但 AES 的 S 盒查表运算和列混合矩阵乘法是有可能考的务必亲手算两遍。2.2 五种分组模式考试最爱对比的表格题分组密码有五种经典工作模式ECB、CBC、CFB、OFB、CTR。考试出现频率最高的是前两个后三个通常以选择题或填空题形式出现。这张表必须能默写模式加密特点并行性典型问题ECB每块独立加密相同的明文块得到相同密文块支持并行泄漏明文统计规律不能用于长数据CBC每块先与上一块密文异或再加密首个块与初始向量IV异或不支持加密并行解密可并行需要一个安全随机的IV错误会传播CFB将上一块密文加密后与当前明文异或本质是把分组密码当流密码用都不支持错误传播有限OFB连续加密初始向量生成密钥流再与明文异或密钥流可预生成若密钥流重复使用等于一次性密钥被重用非常危险CTR计数器值加密后与明文异或加解密都支持并行计数器不能重复否则两个密文异或即可消掉密钥流有个经典辨析题值得留意CBC 模式中如果某块密文 C_i 在传输中发生了一位跳变比特翻转那么解密时受影响的会是 P_i 和 P_{i1} 两块其中 P_{i1} 只会在对应的那一位上出错而不是整块乱掉。这个“CBC 错误传播范围有限”的结论可以用来区分解密时错误恢复的能力。我还要强调一个考试易错点CBC 加密时如果同一密钥下 IV 重复使用两个拥有不同明文的用户就能通过异或判断两个明文头部的相等关系安全边界被破坏了。所以 IV 必须满足“同一密钥下不重复、不可预测”两个条件。2.3 一个必须掌握的混合加密答题模板对称密码在考试中很少单独以计算题出现更多是放在综合题里考查应用能力。最典型的题目是“设计一个安全通信方案要求在公开信道中传输一个文件既保证机密性又保证完整性请给出方案并说明理由。”正确的作答套路分四步第一步用非对称算法完成身份认证与会话密钥协商第二步用对称算法加密文件内容第三步用哈希函数或 HMAC 对密文计算摘要第四步用发送方私钥对摘要签名接收方验签后比对摘要。这个模板套上去就能拿到大部分分数关键是把每一步解决的问题说清楚——机密性靠 AES-CBC 或 AES-CTR完整性靠哈希不可否认性靠签名。对称密码复习到最后你还可以花半小时做一个很值得的收尾动作把 DES 的 Feistel、AES 的 SPN 结构、五种工作模式的异同点、以及填充规则PKCS#7 是最常用的填充方式整理在一页纸上。这门课考前最怕的就是需要记的散点太多无处安放这一页纸就是你的“记忆锚”。3. 公钥密码从数论到 RSA计算题的主战场3.1 数论基础四件套先啃硬骨头公钥密码的数学底子是数论考试计算题基本离不开以下四个知识点扩展欧几里得算法用于求最大公约数和模逆元。这是 RSA 密钥生成中求私钥 d 的核心必须会手算。欧拉函数npq 时φ(n)(p-1)(q-1)这个公式在 RSA 密钥生成和公钥验证里反复出现。模幂运算快速模幂平方-乘算法是计算 RSA 加解密的核心技巧考试手算时不能直接硬乘。中国剩余定理在一些提高题里用于加速私钥解密比如已知 p 和 q 时可以先分别算模 p 和模 q 的结果再合并。很多同学一看到数论就头大但说实话密码学考试中的数论计算题通常都很“死”只要掌握了算法步骤拿分是实打实的。比如用扩展欧几里得求逆元就是反复带余除法别跳步一步步写清楚连阅卷老师都会给你满分过程分。3.2 RSA 手算案例照这个流程练三遍RSA 的出题套路高度固定。十年前的卷子和去年的卷子差别都不大基本都是这个流程给你两个素数 p 和 q让你选 e求 d然后加密一条明文或者给你密文让你解密。我举一个典型的小数值例子看看完整计算流程。假设 p61q53那么 np×q3233φ(n)(61-1)×(53-1)3120。取公钥指数 e17要计算 d 使得 e×d ≡ 1 (mod 3120)。用扩展欧几里得算法3120 17×183 9 17 9×1 8 9 8×1 1从最后一个式子回代 1 9 - 8×1 8 17 - 9×1所以 1 9 - (17-9) 2×9 - 17 9 3120 - 17×183所以 1 2×(3120-17×183) - 17 2×3120 - 367×17因此 d ≡ -367 ≡ 2753mod 3120。公钥是 (n3233, e17)私钥是 (n3233, d2753)。假设要加密明文 m65计算 c65^17 mod 3233。先用快速模幂65^2 4225 ≡ 992 (mod 3233)65^4 ≡ 992^2 984064984064 mod 3233 992×992一步步约减得到结果。这个过程考试时不用写优化得极致但必须体现模约减的步骤不能直接写一个巨大的中间值然后蹦出答案。操作提示考试中 RSA 计算题最容易丢分的不是不会算而是漏掉中间过程。评卷时步骤分的占比通常超过一半你哪怕最后一步算错前面欧拉函数、公钥选择、逆元计算的过程写规范了也能捞回 6 到 8 分。3.3 ECC 与密钥交换概念题必背清单椭圆曲线密码ECC在大多数本科课程里不会考太深的计算但一定会考概念。需要掌握的知识点包括椭圆曲线上的点加运算定义包括无穷远点作为单位元、椭圆曲线离散对数问题已知基点 G 和 kG求 k 是困难的、以及相较于 RSA 的优势——同等安全强度下 ECC 的密钥长度远短于 RSA。举个例子RSA 需要 3072 比特密钥才能达到 128 比特安全强度而 ECC 只需要 256 比特密钥就能达到同等安全水平。手机上跑 TLS 握手时服务端证书签名用的验签算法多为 ECDSA原因之一就是 ECC 的签名短、计算快。考试如果出选择题问“物联网设备适合用哪种非对称算法”首选 ECC。密钥交换部分Diffie-HellmanDH是高频考点。它的核心思想是让双方在公开信道上协商出一个共同的会话密钥而中途窃听者无法根据公开的参数计算出最终密钥。但 DH 有一个致命缺陷它不提供身份认证中间人攻击可以把双方的通信秘密毫无痕迹地偷走。所以考试答题时只要涉及 DH 就必须补一句“需要结合数字签名或证书来防止中间人攻击”这句话几乎是送分点不写反而扣分。4. 哈希与数字签名概念辨析最密集的板块4.1 哈希函数的三个性质以及它们如何被攻击哈希函数部分的核心考点是三个性质抗原像性给定哈希值无法反推出原文、抗第二原像性给定一条消息无法找到另一条相同哈希的消息、抗碰撞性无法找到任意两条哈希相同的消息。三者之间不是递进而是一条比一条强考试填空常考。关于哈希的攻击方式生日攻击是必考概念。它利用的是概率论中的生日悖论在 365 天里大约 57 个人就有 50% 的概率出现两个人生日相同。对应到哈希上对于 n 比特哈希值攻击者只需尝试约 2^(n/2) 个随机消息就能找到一对碰撞。这就是为什么 MD5128 位和 SHA-1160 位今天都被认为不安全——它们输出的长度决定了它们迟早能被碰撞攻击击穿。SHA-2 是目前的主流选择尤其是 SHA-256。SHA-3Keccak因为采用了与 SHA-2 完全不同的海绵结构也被一些安全要求高的系统采用。考试如果问 SHA-3 与 SHA-2 的主要区别标准答案是“设计结构不同SHA-2 基于 Merkle-Damgård 结构SHA-3 基于海绵结构”不需要你再深入展开。哈希还有一个重要但常被忽略的考点Merkle-Damgård 结构在消息长度可变时存在长度延展攻击解决办法是使用 HMAC 构造而不是简单地对密钥拼接消息做哈希。这个点近几年越来越多学校开始考因为它是哈希理论与实际协议结合的一个绝佳切入点。4.2 杂凑函数的“不是加密”——这是高频辨析题哈希考试里有一道出现频率奇高的辨析题“哈希函数是加密算法吗”很多人嘴巴一快就答“是”这是典型的失分点。你要记住标准答法加密是可逆的哈希是不可逆的。加密输出长度与输入有关哈希输出长度固定。加密需要密钥变长输出随密钥变化哈希无密钥输出与密钥无关。哈希的目标是完整性校验加密的目标是机密性保护。考场上只要把这三四个区分点捋清楚再补一个应用场景的例子比如下载软件时校验 SHA-256 摘要这道题就稳了。4.3 数字签名一张图讲清“你说了不算”数字签名的定义题通常这样出“数字签名能提供哪些安全服务”标准答案有四点完整性、认证性来源确认、不可否认性、以及数据与签名绑定。你还需要能解释一个常见误区数字签名不是把消息加密而是对消息的哈希值做签名。因为直接对长消息做 RSA 私钥加密运算太慢更关键的是 RSA 是确定性算法没有随机化直接签名不安全所以一般先哈希再签名这个“先哈希后签名”的流程是标准做法。RSA 签名和 RSA 加密在数学形式上“一个用公钥一个用私钥”千万别混淆加密是公钥加密、私钥解密签名是私钥签名、公钥验签。考试如果出判断题说“用私钥加密就是签名”你要能指出逻辑上签名的目标不是保密而是认证两者目的不同不能混为一谈。这个表述用在填空判断题里能帮你避开陷阱。签名算法方面除了 RSA 签名还需要知道 DSA 和 ECDSA 属于离散对数类签名其中 ECDSA 在现代 TLS 和区块链中应用极广。最常考的概念是 ECDSA 的签名由一对整数(r, s)组成r 是临时随机点 kG 的 x 坐标模 n 的结果s 是基于私钥与消息哈希计算得到的结果。如果 k 被重用私钥直接泄露——所以很多加密库都会严格保证 k 每次随机且独立生成。5. 密钥管理与安全协议综合题的材料库5.1 密钥分发和公钥基础设施应用题高频素材密钥管理板块的典型考点有对称密钥的分发方式预先共享、通过密钥分发中心、Diffie-Hellman 协商、公钥的可信分发问题怎么保证你拿到的公钥确实是对方的以及公钥基础设施PKI的核心组件。证书这一块是必考内容。X.509 证书里包含了主体公钥、主体名称、签发者名称、有效期、签名算法等信息最后由可信第三方证书颁发机构对证书做签名。考试简答题如果问“为什么需要 CA”标准答案是“解决公钥的真实性和可信分发问题避免中间人伪造身份”。如果你能再画一句信任链的概念——你的系统只信任预置的根证书根证书签发的下级证书又签发终端实体证书——就能体现你理解得比较透。密钥管理中还有两个容易被忽略但考试常出现的术语密钥托管密钥由第三方保存以便在合法授权下恢复和密钥有效期密钥使用越久被破解的风险越大因此需要定期更换。这两个概念考填空题的概率很高复现的时候记得带上。5.2 TLS 与 Kerberos协议类题目的经典问答安全协议部分最常见的内容是 TLS 握手协议和 Kerberos。这两个协议一旦出简答题分值通常在 10 到 15 分之间。TLS 握手的核心流程简化版是客户端发送支持的加密套件列表 → 服务端选择套件并返回证书 → 客户端验证证书并生成会话密钥的预主密钥用服务器公钥加密发送 → 双方基于预主密钥生成会话密钥 → 双方发送握手结束消息确认。问答时要把“证书验证”“预主密钥的保密传输”“会话密钥派生”这个逻辑链条写清楚别漏掉验证证书这一环。Kerberos 的重点是“票据”概念。用户先向认证服务器验证身份拿到的票据许可票据TGT然后凭 TGT 向票据授予服务器申请访问具体服务的票据。考试问答常围绕“为什么 Kerberos 能防止重放攻击”——答案是票据中包含时间戳和生命周期接收方通过检查时间窗口拒绝过期票据。这是把之前哈希和随机数的知识串起来的好例子也是综合题喜欢出题的地方。5.3 重放攻击的防护一个万能答题清单“如何防止重放攻击”是密码学考试中最常用的综合题之一。标准答法要能覆盖以下手段在消息中加入新鲜随机数 nonce接收方记录最近收到的 nonce重复即拒绝。加入时间戳超过时间窗口的消息直接丢弃。使用挑战-应答机制服务端先发随机挑战客户端应答时把挑战值绑定进认证数据。对于密钥协商协议使用临时会话密钥替代长期密钥降低重放影响。考试答题时不要只写一种方法把四类防护手段都写出来再结合题目场景说明策略选择比如实时通信适合用时间戳离线场景适合用一次性随机数挑战会让阅卷老师觉得你确实掌握了协议设计的思路。6. 考前一天的高效自查与常见误区排查6.1 最容易踩的五个扣分雷区我在复习过程中总结了一份“雷区清单”每次考前都拿出来过一遍。这些错误不是知识不会而是答题习惯问题一旦踩中损失惨重误区正确理解常见错误把 ECB 当成 CBC 来谈并行性ECB 加密并行CBC 不行混淆两者特性IV 理解不到位加解密双方必须用同一 IV且 IV 无需保密但必须随机不可预测认为 IV 需要保密把哈希的加盐当成哈希自身特性加盐是针对口令存储的不是哈希函数的组成部分说 SHA-256 自带加盐分不清“签名”与“哈希”签名依赖私钥哈希不依赖任何密钥把数字签名等同于哈希RSA 密钥生成中计算出错n 和 φ(n) 是两个完全不同的数别算成同一个密钥不匹配导致后续全错这五条中IV 是否需保密和哈希是否加盐这两条是最近几次考试中最常出现的陷阱题教材里往往只是一句话带过但考试就喜欢揪住这种细节。6.2 考场时间分配的一种可行方案密码学考试的时间分配也有诀窍。如果总分 120 分钟我建议这样划分选择题和填空题控制在 20 到 25 分钟遇到不会的先标记跳过别纠结计算题数论、RSA、模式转换控制在 50 分钟这类题最大值必须吃满简答和综合题控制在 30 分钟最后留 15 分钟检查重点看计算题的过程符号和单位、公钥与私钥有没有写反、以及简答题的关键词是否齐备。有人可能会说检查的时候改答案风险大但密码学考试不是多选题那种主观判断题型计算题的检查是纯算数性质的发现错误直接改收益远大于风险。6.3 如果只剩下一天怎么复习离考试只剩一天时别再翻整本教材了我建议做一个“三加一”行动用三张 A4 纸分别整理对称加密要点、公钥密码公式与手算套路、哈希与签名概念然后用一小时把 RSA 手算题从头到尾练两遍。这两遍不是为了学会怎么做而是为了建立肌肉记忆确保考场上不管数据换成什么都能条件反射地按步骤推进。另外强烈建议你把各种算法名称和用途做成一张速查表。比如AES 提供机密性SHA-256 提供完整性HMAC 提供带密钥的完整性RSA 加密提供机密性RSA 签名提供认证和不可否认性。这张表一天之内反复看三遍考试时的选择题正确率能明显提升。我个人在实际复习中最有效的做法是找一道考研真题把它的四个小问分别对应到对称密码、RSA、哈希、签名四个知识块然后不看答案完整重写一遍答题过程。写完之后对照标准答案凡是自己漏掉的关键词比如“IV 不可预测”“模逆元”“抗碰撞性”都用红笔圈出来。你如果也能在考前完成这个过程考场上看到考题时基本就不会慌了。