简介:这份密评刷题材料围绕商用密码应用与安全性评估考试整理,面向准备密评考试、希望巩固密码基础并检验掌握程度的考生,也适合网络安全从业者梳理密码学核心概念。内容以单选题和多选题为主,覆盖分组密码工作模式、KDC密钥分发、PGP密钥类型、PKI组件与证书管理、SSL/TLS握手、IPSec、SM4算法、《密码法》以及侧信道攻击等常见考点,并附参考答案与知识点说明,便于按题查漏补缺。压缩包内共1个docx文件,大小约26KB,轻量便携,可直接在电脑或手机上阅读、检索和标注。目前已有3239人学习,说明题目方向与密评备考需求较为贴合;通过逐题练习和错题回看,可快速定位知识盲区,强化密钥管理、协议机制与法规条款的记忆,适合作为考前冲刺和日常刷题的辅助资料。
1. 第一次看到「密评」,大多数人会先把书合上
不少新手点开一套密评考试题,第一眼看到的是「CFB 模式」「KDC 分发密钥」「PKI 组件」这类词,心里立刻冒出两个字:劝退。这很正常,因为密评的全称是商用密码应用与安全性评估,听上去像一门要靠背的课。但把它拆开其实就三件事:一套题、一堆密码基础概念、一个判断「系统里的密码用得对不对」的方向。这份资源把三样东西放在了一起——密评考试题、密码基础知识、可反复刷的题目。它适合完全零基础、想摸清门路的人,也适合工作里被要求懂点密码、却一直没系统学过的人。接下来按「先懂词、再懂题、最后会刷」的顺序走一遍。
2. 先把三个词弄明白:密评、商用密码、密码基础
2.1 密评到底在评什么,用一句话说清
可以拿验收新房打个比方。装修完了,你要检查门锁是不是真的锁得上、钥匙有没有被随手放在门口鞋柜上、窗户的防盗网是不是装了却忘了打膨胀螺丝。密评干的事情很像这个:它不看你的系统功能做得多花哨,只看你在该用密码的地方有没有用、用得对不对、用得有没有效果。
评估的对象是一套信息系统,看的是它在几个固定层面上的密码使用情况:物理和环境安全(机房进出、门禁卡)、网络和通信安全(传输通道里的数据)、设备和计算安全(服务器登录、日志完整性)、应用和数据安全(业务数据存储、用户身份鉴别)。这四层像一栋楼的地基、承重墙、门窗和屋顶,缺一层都不算完整。
对新手来说,这里最容易犯的错是把密评想成一门纯理论考试。其实它的题目长得很有规律:给你一个场景,问这种情况下判断为高风险还是一般风险,或者问某个协议、某个组件负责什么。所以你要准备的不是记忆力,而是「把概念对应到场景」的能力。
2.2 一份卷子的知识地图,其实就那么几块
把题库翻一遍,考点会自己浮出来。密评考试题里的选择题、多选题、判断题,反复围着这么几个方向转:分组密码的工作模式(ECB、CBC、CFB、CTR 谁需要填充、谁能并行)、密钥的分发与管理(KDC 干什么、会话密钥和密钥加密密钥怎么分工)、公钥基础设施 PKI(CA、RA、CRL、OCSP、LDAP 各管一段)、网络安全协议(SSL/TLS 握手、IPSec 的 AH 和 ESP)、密码算法本身(SM2、SM3、SM4、RSA 谁是对称谁是非对称)、密码模块的安全等级、以及攻击类型(唯密文攻击、侧信道攻击、重放攻击、中间人攻击)。
你看,这些名词单独拎出来都挺唬人,但它们不是散沙。分组模式属于「怎么加密」;密钥管理属于「钥匙怎么发」;PKI 属于「怎么证明这把钥匙是你的」;SSL/TLS 和 IPSec 属于「在真实网络里怎么用起来」;密码模块等级和攻击类型属于「用得够不够结实」。五条线一串,题库就变成了一张有结构的地图,而不是几百道孤立的题。
2.3 为什么要从密码基础开始,而不是直接刷题
血泪经验是:直接刷题的效率,比你想象的低得多。原因很朴素——密评的选择题特别喜欢「换个说法再问一遍」。同一道题,这次问「CBC 解密能不能并行」,下次问「哪种模式的解密可以并行处理」,再下次放到一个情景里问「某系统采用 XX 模式,是否符合要求」。
如果你只记住了「这题选 B」,第二遍遇到就废了。但如果你知道 CBC 的加密是「前一块密文参与下一块运算」,所以加密必须排队、解密却能各算各的,那不管怎么问,你都能推出来。
密码基础在这份资源里不是配菜,是主菜。它决定了你刷题是「攒答案」还是「攒判断力」。零基础的人常常担心自己数学不好学不了,其实密评考的基础概念,绝大部分用生活类比就能说清,真正要动手算的东西很少,后面会给你一个手算级别的例子。
2.4 零基础的建议顺序,别一上来就啃协议
我是这样排的:先弄懂对称和非对称的区别(一把钥匙还是一对钥匙),再弄懂分组和工作模式(数据长了怎么切块),然后是密钥体系(钥匙怎么发出去),接着是 PKI 和证书(怎么证明身份),最后才是 SSL/TLS 和 IPSec(协议怎么把这些东西组装起来)。
这个顺序的好处是每一步都踩在上一歩上。你要是先看 IPSec 里的 IKE、SA、AH、ESP,会发现自己像在看天书,因为那些缩写背后全是前面几块的内容。反过来,基础打通之后再看协议,你会发现它只是「把已经会的东西按流程排了一遍」。
3. 三块硬基础:对称非对称、分组模式、密钥体系
3.1 对称和非对称,一把钥匙和一对钥匙
对称密码,加密和解密用的是同一把钥匙,或者一把能很容易推出另一把。它快、适合加密大量数据,但有个绕不过去的毛病:钥匙怎么安全地送到对方手里。这就是为什么题库里反复出现「对称密钥密码体制的主要缺点是密钥的分配和管理问题」。你想想,公司要给一千个员工发文件,每人一把不同的钥匙,光送钥匙这件事就够呛。
非对称密码是一对钥匙:公钥公开、私钥自己留着。用公钥加密,只有私钥能解;用私钥签名,任何拿公钥的人都能验。它慢,但解决了两个对称做不到的事——密钥分发和数字签名。所以真实系统里两者是配合用的,专业说法叫混合加密:用非对称的方式把一把临时会话密钥送到对方手里,然后用这把会话密钥高速加密正文。
这也解释了一道常见判断题的答案:实际场景里「不可以把对称和非对称混着用」是错的,混着用才是常态。第一次学的时候我在这上面栽过,总觉得「混用」是种不正统的做法,其实那才是工程上的正解。
3.2 分组模式这一串字母,其实在回答两个问题
数据长了要切块,每块多大、块与块之间有没有关系,就是工作模式要回答的事。题库里那四种模式,你只要抓住两个问题就能分清:需不需要把最后一块补齐,以及块和块之间是不是互相牵扯。
用一张表对照一下会更清楚:
| 模式 | 是否需填充到整块 | 加密能否并行 | 解密能否并行 | 是否用初始向量 IV |
|---|---|---|---|---|
| ECB | 需要 | 可以 | 可以 | 不用 |
| CBC | 需要 | 不能 | 可以 | 需要 |
| CFB | 不需要 | 不能 | 可以 | 需要 |
| CTR | 不需要 | 可以 | 可以 | 需要(计数器初值) |
ECB 是最直白的一种,每块独立加密,同样的明文块会得到同样的密文块,所以它不适合加密有规律的数据,图片加密后还能看出轮廓,这个现象在教学中经常被拿来讲。CBC 让前一块的密文参与下一块的加密,所以加密必须一块接一块,但解密时每块只需要「自己 + 前一块密文」,可以并行。CFB 把分组算法当成流密码来用,因此不需要填充,但因为反馈链的存在,加密同样不能并行。CTR 用计数器生成密钥流,和明文逐字节异或,既能并行又不要求长度对齐。
那道「()模式下的消息长度可以不是分组长度的整数倍」的题,答案就是 CTR。你别背这个答案,记住「CTR 是拿密钥流去异或」这件事,答案自己就出来了:异或哪里管你长度是不是 16 的倍数。
3.3 从一道题跑到一段代码:模逆元到底怎么判断
题库里有一道很短的题:「16 模 100 的逆元是」,答案是「不存在」。这类题新手容易慌,其实判断规则只有一句:a 在模 m 下存在乘法逆元,当且仅当 a 和 m 的最大公约数是 1。
下面这段代码就是把这句话翻译成可执行的形式,用 Python 自带的数学库,不需要装任何东西:
from math import gcd def has_inverse(a: int, m: int) -> bool: """判断 a 在模 m 下是否存在乘法逆元 充要条件:a 与 m 互素,也就是最大公约数为 1 """ return gcd(a, m) == 1 # 逐个测试几个数,观察结果 for a in (3, 7, 16): print(f"{a} 模 100 有逆元吗: {has_inverse(a, 100)}")跑出来是3 True、7 True、16 False。为什么 16 不行?因为 16 和 100 都能被 4 整除,公约数是 4 不是 1,所以找不到一个整数 x 让 16x 除以 100 余 1。
这段代码里gcd是求最大公约数的函数,a是被判断的数,m是模数。你可以把m改成 97(一个素数)再跑一遍,会发现 1 到 96 全都返回 True——素数模下所有非零数都有逆元,这个性质在 RSA 和 SM2 的密钥生成里是基础中的基础。改动参数、观察输出,比盯着答案看十遍有用。
3.4 再跑一个例子:为什么 CTR 不在乎长度
光看表格记不住的话,把异或这个过程写出来就懂了。下面这段代码手工模拟 CTR 的核心动作:生成一段和明文一样长的密钥流,然后逐字节异或。
def ctr_xor(data: bytes, keystream: bytes) -> bytes: """CTR 的核心动作:密钥流与明文逐字节异或 zip 会在两者中较短的一方结束时停止 真实场景里密钥流由分组算法对计数器逐块加密生成 """ return bytes(m ^ k for m, k in zip(data, keystream)) plain = b"commercial-crypto-2024" # 23 字节,不是 16 的整数倍 keystream = bytes(range(23)) # 这里仅作演示,非真实密钥流 print("明文长度:", len(plain)) print("密文:", ctr_xor(plain, keystream).hex())输出里明文长度是 23,程序照跑不误,没有补齐这一步。data是待加密的字节串,keystream是等长的密钥流,hex()只是把结果转成十六进制方便看。
对照着想一想 CBC:它必须先把 23 字节补到 32 字节,解密后再把填充去掉,多了一步「补」和「拆」。理解了这层,你就同时拿下了「哪种模式需要填充」和「哪种模式能并行」两类题。
3.5 密钥体系:一堆钥匙各管什么
题库里反复出现「会话密钥」「密钥加密密钥」「主密钥」「KDC」,这几个词对应的是一套分层思想:越是频繁使用的钥匙,越要短命;越重要的钥匙,越要少露面。
会话密钥是一次通信临时用的,用完就扔,泄露了损失也有限。密钥加密密钥不直接加密业务数据,只负责加密会话密钥,也就是「给钥匙上锁的钥匙」。再往上还有主密钥,通常放在硬件里,负责保护下面那一层。这种一层包一层的做法,好处是暴露面小。
KDC 就是负责发钥匙的角色。两台主机要通信,各自跟 KDC 有一条长期共享的密钥,KDC 用它把临时会话密钥安全地送过去。所以那道题问「主机与 KDC 通信时使用的是哪个密钥」,答案就是「二者共享的永久密钥」——因为这条通道是提前建立好的,不需要临时协商。
再往上一层就是 PKI。KDC 适合内部可控的环境,但互联网上你要跟陌生人通信,没法提前共享密钥,于是改用证书:由 CA 签发一张数字证书,把「这个公钥属于这个主体」这件事绑起来,再用 CRL 或 OCSP 告诉大家哪些证书已经作废。RA 负责审核申请者信息,LDAP 负责把证书存起来供人查询下载。这一串角色各管一段,考试里特别爱考谁负责哪一段,下一章会专门用一张表压一压。
4. 刷题的正确姿势:从记答案到能推导
4.1 先分桶,再做题,别从头顺着刷
拿到题库第一件事不是做题,是分类。翻一遍题目,按「分组模式」「密钥管理与分发」「PKI 与证书」「网络协议」「算法与结构」「攻击类型」「标准与管理」这几个桶贴标签。分完之后你会发现某个桶特别厚,比如分组模式和 PKI 通常占很大比重,那这两块就该多花时间。
分桶还有个隐性好处:同一类题连着看,规律会自己浮出来。我第一次系统整理的时候才注意到,凡是问「能否并行」的题,答案基本都能从「这一块的运算依赖不依赖前一块的结果」推出来,根本不用记。
分类不用搞得太精细,六到八个桶足够。太细了你维护不过来,刷到一半就放弃了,这属于典型的自我感动式准备。
4.2 一道错题要追问三层,别只看正确答案
第一层:正确答案是什么。第二层:为什么其他选项不对,尤其是那些「看着很像」的选项。第三层:换个问法我还能不能答出来。
举个真实例子。有道题问 PGP 用了四种密钥,缺的那个是「私有密钥」。你如果只记「答案是私有密钥」,下次题目改问「PGP 中用于解密会话密钥的是哪种密钥」,你照样会卡。但如果你在第二层想清楚了「PGP 用公开密钥加密会话密钥、用私有密钥解开它」,第三层就自然通了。
第三层最有用,也最费时间。我的做法是改题:把题干里的关键词划掉,换成另一个同类词,自己给自己出一遍。改得出来,说明真懂了;改不出来,说明还停在第一层。
4.3 把易混点压成对照表,一张表顶十道题
概念类的知识,最有效的固化方式是对照。下面这张表是新手最容易混的几组,建议自己动手重画一遍,别直接抄:
| 概念 | 一句话职责 | 常见混淆点 |
|---|---|---|
| CA | 签发和管理证书 | 以为它负责审核身份 |
| RA | 审核申请者信息 | 以为它直接签发证书 |
| CRL | 定期发布已作废证书列表 | 以为它是实时查询 |
| OCSP | 在线实时查询单张证书状态 | 以为它能下载证书 |
| LDAP | 存放并供查询下载证书 | 以为它是一种加密协议 |
| KDC | 分发会话密钥 | 以为它签发证书 |
这张表里每一行的「常见混淆点」,都是从错题里长出来的。你自己刷出来的混淆点,比我给的这张表更值钱,因为那是你真的栽过的地方。
4.4 每天的节奏:二十题加一次复盘
数量上不用贪。每天二十道题,做的时候计时,做完立刻复盘,把错的题按上面三层追问一遍,写两三行笔记。二十道题配二十分钟复盘,比一口气刷一百道不回头强得多。
复盘笔记别写太长,一句「CBC 加密不能并行,因为下一块要用上一块密文」就够了。写长了你不愿意回看,笔记也就死了。每周挑一天,把这一周的错题笔记重读一遍,只读笔记不重做题,看看还能不能说出理由。说不出来的,回到对应的基础章节再补一遍。
5. 新手最容易踩的五个坑,附现象与解法
5.1 坑一:正确率上去了,换个问法就崩
现象:刷第二遍的时候正确率能到九成,但一到模拟卷里稍微改过措辞的题,又开始错。
原因:记住的是选项位置和关键词搭配,不是概念本身。密评的题目描述方式很多变,同一个知识点能包装成场景题、判断题、多选题。
解决:每道错题强制做一次「改题」,把题干换成另一种问法写在本子上,隔天再做一遍。另外把「正确答案」四个字遮住,先自己说理由,说得出再对答案。这个动作很土,但真的管用。
5.2 坑二:对称和非对称的优缺点记反了
现象:一看到「加解密速度慢」就选对称,一看到「密钥分配管理困难」就选非对称,结果全反。
原因:两个概念一起学,脑子里的标签贴串了,加上平时听「非对称更安全」这种说法,就误以为它什么都强。
解决:抓一个锚点——非对称的钥匙是一对,一对钥匙的好处是公钥可以随便发,坏处是运算慢、数据不能太长。对称的钥匙是一把,一把钥匙的好处是快,坏处是这把钥匙怎么送出去。把「一对/一把」当成锚,优点缺点就都挂得住了。
5.3 坑三:PKI 里的角色分不清,全靠语感选
现象:题目问「负责申请者信息检查和管理的是哪个组件」,四个选项看着都对,凭感觉选一个。
原因:CA、RA、CRL、OCSP、LDAP 都是缩写,没有对应的中文画面,脑子里是一团模糊。
解决:给每个角色配一个具体画面——CA 是发证的窗口,RA 是审核材料的柜台,CRL 是贴在墙上的作废名单,OCSP 是打电话查询单张证是否有效,LDAP 是存证的档案柜。有画面之后,题目问「查询、下载新签发的证书」你就直接想到档案柜。第 4 章那张对照表可以拿来反复自测。
5.4 坑四:工作模式背成一串字母,一到判断就乱
现象:ECB、CBC、CFB、CTR 四个名字滚瓜烂熟,但问「哪种模式加密可以并行」就犹豫。
原因:把模式当成四个孤立的名词记了,没抓住「块与块之间有没有依赖」这条主线。
解决:只记两个变量——要不要填充、加解密能不能并行。CTR 是唯一「不填充且两个方向都能并行」的,CFB 不填充但加密不能并行,CBC 要填充且加密不能并行,ECB 两头都能并行但不安全。四个模式用这两条一卡就分开了,不需要背整段描述。
5.5 坑五:只刷题不看框架,遇到情景题就懵
现象:单点题基本能做,但题目一变成「某系统在通信链路上采用 XX 方式,是否符合要求」,就不知道从哪个角度答。
原因:知识是散的,没有挂到密评的四个层面上(物理和环境、网络和通信、设备和计算、应用和数据)。情景题考的就是「这属于哪一层」。
解决:每做一道情景题,先在旁边写下它属于哪一层,再看答案。写十道之后你会发现,网络和通信层面的题基本围着传输通道、IPSec、SSL 转,应用和数据层面的题基本围着存储加密、身份鉴别、完整性保护转。定位准了,答案方向就出来了。
6. 下一步学什么:把题库当路线图,而不是终点
刷完一遍,很多人会问接下来干什么。我的建议是把题库当成一张路线图,而不是一份要消灭的任务清单。你错得最多的那个桶,就是你下一步该补的章节。
具体怎么走,可以参考这个顺序:
| 阶段 | 重点 | 判断标准 |
|---|---|---|
| 第一周 | 对称与非对称、分组模式 | 能不看资料说出四种模式的填充和并行差异 |
| 第二周 | 密钥体系、KDC、会话密钥 | 能用自己的话讲清三层密钥各管什么 |
| 第三周 | PKI、证书、CRL 与 OCSP | 能把五个角色对上五句职责 |
| 第四周 | SSL/TLS、IPSec、安全协议 | 能说出协议握手大致在协商什么 |
| 之后 | 混合刷题加复盘 | 新题正确率稳定,改题也能答 |
第一周到第四周不是硬性时间,快的人两周能过完,慢的人一个月也正常。关键是每一周都要有一个「能说出来」的标准,而不是「看过了」。
还有一个具体的技巧:把 SM2、SM3、SM4 三个国产算法分清楚,这是题库里高频到不能再高频的点。SM2 是非对称,管签名和密钥交换;SM3 是杂凑,管摘要;SM4 是分组对称,管加密。三个名字只差一位数字,考试里特别喜欢拿它们互相冒充。你可以用一句话记:2 是「两把钥匙」(一对公私钥),3 是「三段输出」(固定长度摘要),4 是「四平八稳切块加密」。
最后说个我自己踩过的坑。第一次准备的时候,我把所有错题抄了一遍,抄了满满一本,结果考前一周翻都翻不动,因为内容太多没有主次。从那以后我每次整理错题都强制走一遍「三层追问」,只留下第三层写不出来的那几条,本子一下薄了很多,反而看得进去了。资料是死的,你那几行亲手写的理由才是活的。
希望帮到你,慢慢来,第一遍看不懂的地方,第二遍往往就通了。
本文还有配套的精品资源,点击获取