☰
密码学期末复习宝典:从对称加密到数字签名一次理清
2026/10/16 2:07:19 网站建设 项目流程

期末复习最怕的是把一门课上成了背单词课,密码学尤其如此。很多人一翻开教材就被 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/32+6=10,很好记。

注意:考试中如果让你手算 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_{i+1} 两块,其中 P_{i+1} 只会在对应的那一位上出错,而不是整块乱掉。这个“CBC 错误传播范围有限”的结论,可以用来区分解密时错误恢复的能力。

我还要强调一个考试易错点:CBC 加密时如果同一密钥下 IV 重复使用,两个拥有不同明文的用户就能通过异或判断两个明文头部的相等关系,安全边界被破坏了。所以 IV 必须满足“同一密钥下不重复、不可预测”两个条件。

2.3 一个必须掌握的混合加密答题模板

对称密码在考试中很少单独以计算题出现,更多是放在综合题里考查应用能力。最典型的题目是:“设计一个安全通信方案,要求在公开信道中传输一个文件,既保证机密性又保证完整性,请给出方案并说明理由。”正确的作答套路分四步:第一步,用非对称算法完成身份认证与会话密钥协商;第二步,用对称算法加密文件内容;第三步,用哈希函数或 HMAC 对密文计算摘要;第四步,用发送方私钥对摘要签名,接收方验签后比对摘要。这个模板套上去就能拿到大部分分数,关键是把每一步解决的问题说清楚——机密性靠 AES-CBC 或 AES-CTR,完整性靠哈希,不可否认性靠签名。

对称密码复习到最后,你还可以花半小时做一个很值得的收尾动作:把 DES 的 Feistel、AES 的 SPN 结构、五种工作模式的异同点、以及填充规则(PKCS#7 是最常用的填充方式)整理在一页纸上。这门课考前最怕的就是需要记的散点太多无处安放,这一页纸就是你的“记忆锚”。

3. 公钥密码:从数论到 RSA,计算题的主战场

3.1 数论基础四件套,先啃硬骨头

公钥密码的数学底子是数论,考试计算题基本离不开以下四个知识点:

  • 扩展欧几里得算法:用于求最大公约数和模逆元。这是 RSA 密钥生成中求私钥 d 的核心,必须会手算。
  • 欧拉函数:n=pq 时,φ(n)=(p-1)(q-1),这个公式在 RSA 密钥生成和公钥验证里反复出现。
  • 模幂运算:快速模幂(平方-乘算法)是计算 RSA 加解密的核心技巧,考试手算时不能直接硬乘。
  • 中国剩余定理:在一些提高题里用于加速私钥解密,比如已知 p 和 q 时,可以先分别算模 p 和模 q 的结果再合并。

很多同学一看到数论就头大,但说实话,密码学考试中的数论计算题通常都很“死”,只要掌握了算法步骤,拿分是实打实的。比如用扩展欧几里得求逆元,就是反复带余除法,别跳步,一步步写清楚,连阅卷老师都会给你满分过程分。

3.2 RSA 手算案例,照这个流程练三遍

RSA 的出题套路高度固定。十年前的卷子和去年的卷子差别都不大,基本都是这个流程:给你两个素数 p 和 q,让你选 e,求 d,然后加密一条明文,或者给你密文让你解密。我举一个典型的小数值例子看看完整计算流程。

假设 p=61,q=53,那么 n=p×q=3233,φ(n)=(61-1)×(53-1)=3120。取公钥指数 e=17,要计算 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 ≡ 2753(mod 3120)。公钥是 (n=3233, e=17),私钥是 (n=3233, d=2753)。

假设要加密明文 m=65,计算 c=65^17 mod 3233。先用快速模幂:65^2 = 4225 ≡ 992 (mod 3233),65^4 ≡ 992^2 = 984064,984064 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-Hellman(DH)是高频考点。它的核心思想是让双方在公开信道上协商出一个共同的会话密钥,而中途窃听者无法根据公开的参数计算出最终密钥。但 DH 有一个致命缺陷:它不提供身份认证,中间人攻击可以把双方的通信秘密毫无痕迹地偷走。所以考试答题时,只要涉及 DH 就必须补一句“需要结合数字签名或证书来防止中间人攻击”,这句话几乎是送分点,不写反而扣分。

4. 哈希与数字签名:概念辨析最密集的板块

4.1 哈希函数的三个性质,以及它们如何被攻击

哈希函数部分的核心考点是三个性质:抗原像性(给定哈希值无法反推出原文)、抗第二原像性(给定一条消息无法找到另一条相同哈希的消息)、抗碰撞性(无法找到任意两条哈希相同的消息)。三者之间不是递进而是一条比一条强,考试填空常考。

关于哈希的攻击方式,生日攻击是必考概念。它利用的是概率论中的生日悖论:在 365 天里,大约 57 个人就有 50% 的概率出现两个人生日相同。对应到哈希上,对于 n 比特哈希值,攻击者只需尝试约 2^(n/2) 个随机消息就能找到一对碰撞。这就是为什么 MD5(128 位)和 SHA-1(160 位)今天都被认为不安全——它们输出的长度决定了它们迟早能被碰撞攻击击穿。

SHA-2 是目前的主流选择,尤其是 SHA-256。SHA-3(Keccak)因为采用了与 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 不可预测”“模逆元”“抗碰撞性”)都用红笔圈出来。你如果也能在考前完成这个过程,考场上看到考题时基本就不会慌了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询