{ "topic": "crypto-basics", "type": "single_choice", "schema_version": "1.0.0", "generated": "2026-09-17T00:00:00+08:00", "questions": [ { "id": "sc-001", "type": "single_choice", "difficulty": 1, "tags": [ "密码学", "加密" ], "question": "以下哪种加密算法属于对称加密?", "options": { "A": "AES", "B": "RSA", "C": "ECC", "D": "Diffie-Hellman" }, "answer": "A", "explanation": "AES(Advanced Encryption Standard)是对称加密算法,加密和解密使用相同的密钥。RSA 和 ECC 都是非对称加密算法,使用公钥/私钥对。Diffie-Hellman 是密钥交换协议,本身不是加密算法,但属于非对称密码学范畴。", "source": null, "related": [] }, { "id": "sc-002", "type": "single_choice", "difficulty": 1, "tags": [ "密码学", "加密" ], "question": "AES 支持的密钥长度不包括以下哪一项?", "options": { "A": "128 位", "B": "192 位", "C": "256 位", "D": "512 位" }, "answer": "D", "explanation": "AES 标准支持三种密钥长度:128 位、192 位和 256 位,分别对应 AES-128、AES-192 和 AES-256。512 位不是 AES 标准定义的密钥长度。更长的密钥通常意味着更高的安全性,但 AES 最高只定义到 256 位。", "source": null, "related": [] }, { "id": "sc-003", "type": "single_choice", "difficulty": 2, "tags": [ "密码学", "加密" ], "question": "关于 DES 和 3DES,以下说法正确的是?", "options": { "A": "DES 使用 128 位密钥,安全性很高", "B": "3DES 通过对数据执行三次 DES 加密来提升安全性", "C": "DES 目前仍被认为是最安全的对称加密标准", "D": "3DES 的密钥有效长度为 168 位,不存在任何已知弱点" }, "answer": "B", "explanation": "3DES(Triple DES)通过对数据执行三次 DES 加密(通常使用加密-解密-加密 EDE 模式)来提升安全性。DES 实际使用 56 位密钥(加 8 位校验),已被证明不够安全。3DES 的有效密钥长度为 112 位(两密钥模式)或 168 位(三密钥模式),但存在中间相遇攻击等弱点,NIST 已在 2023 年正式废弃 3DES。", "source": null, "related": [] }, { "id": "sc-004", "type": "single_choice", "difficulty": 2, "tags": [ "密码学", "加密" ], "question": "RSA 算法的安全性基于以下哪个数学难题?", "options": { "A": "离散对数问题", "B": "大整数质因数分解问题", "C": "背包问题", "D": "椭圆曲线离散对数问题" }, "answer": "B", "explanation": "RSA 的安全性基于大整数质因数分解的困难性:将两个大素数相乘很容易,但将乘积分解回原来的两个素数在计算上极其困难。离散对数问题对应的是 Diffie-Hellman 和 DSA 等算法的基础。椭圆曲线离散对数问题(ECDLP)是 ECC 算法的安全性基础。", "source": null, "related": [] }, { "id": "sc-005", "type": "single_choice", "difficulty": 2, "tags": [ "密码学", "加密" ], "question": "与 RSA 相比,ECC(椭圆曲线密码学)的主要优势是什么?", "options": { "A": "加解密速度更快,但需要更长的密钥", "B": "在相同安全强度下,所需密钥长度更短", "C": "ECC 不依赖任何数学难题,因此绝对安全", "D": "ECC 只能用于签名,不能用于加密" }, "answer": "B", "explanation": "ECC 最大的优势是在提供相同安全强度的情况下,所需的密钥长度远小于 RSA。例如 256 位 ECC 密钥的安全强度约等于 3072 位 RSA 密钥,这意味着更小的存储空间、更快的计算和更低的带宽消耗。ECC 的安全性基于椭圆曲线离散对数问题,并非绝对安全,且 ECC 既可用于密钥交换和加密,也可用于数字签名。", "source": null, "related": [] }, { "id": "sc-006", "type": "single_choice", "difficulty": 1, "tags": [ "密码学", "哈希" ], "question": "以下关于哈希函数的描述,正确的是?", "options": { "A": "哈希函数是可逆的,可以从哈希值恢复原始数据", "B": "哈希函数将任意长度的输入映射为固定长度的输出", "C": "哈希函数的输出长度随输入长度线性增长", "D": "不同的输入一定产生不同的哈希值" }, "answer": "B", "explanation": "哈希函数的核心特性是将任意长度的输入映射为固定长度的输出,例如 SHA-256 始终输出 256 位。哈希函数是单向函数,不可从哈希值逆向恢复原始数据。由于输出空间有限而输入空间无限,理论上不同的输入可能产生相同的哈希值(碰撞),所以\"不同输入一定产生不同哈希值\"是错误的。", "source": null, "related": [] }, { "id": "sc-007", "type": "single_choice", "difficulty": 2, "tags": [ "密码学", "哈希" ], "question": "MD5 算法目前被认为不安全的主要原因是什么?", "options": { "A": "MD5 的输出长度只有 32 位,太短", "B": "MD5 已被发现存在实际可行的碰撞攻击", "C": "MD5 是对称加密算法,密钥太短", "D": "MD5 的计算速度太慢,不适合实际应用" }, "answer": "B", "explanation": "MD5 的输出长度实际是 128 位(通常以 32 位十六进制字符串表示),不是 32 位。MD5 不是加密算法而是哈希函数,不存在密钥的概念。MD5 的计算速度其实很快,但这反而有利于碰撞攻击。MD5 不安全的根本原因是 2004 年王小云教授等人展示了实际可行的碰撞攻击,此后碰撞实例不断被构造出来,因此不应再用于安全场景。", "source": null, "related": [] }, { "id": "sc-008", "type": "single_choice", "difficulty": 1, "tags": [ "密码学", "哈希" ], "question": "SHA-256 产生的哈希值长度是多少位?", "options": { "A": "128 位", "B": "160 位", "C": "256 位", "D": "512 位" }, "answer": "C", "explanation": "SHA-256 是 SHA-2 家族的成员,顾名思义,它产生 256 位(32 字节)的哈希值,通常用 64 个十六进制字符表示。SHA-1 产生 160 位输出,SHA-512 产生 512 位输出。128 位是 MD5 的输出长度。", "source": null, "related": [] }, { "id": "sc-009", "type": "single_choice", "difficulty": 2, "tags": [ "密码学", "数字签名" ], "question": "数字签名的主要功能不包括以下哪一项?", "options": { "A": "身份认证", "B": "数据完整性保护", "C": "数据加密", "D": "不可否认性" }, "answer": "C", "explanation": "数字签名的三大核心功能是:身份认证(确认签名者身份)、数据完整性(确保数据未被篡改)和不可否认性(签名者不能否认签名行为)。数字签名本身不提供数据加密功能,虽然签名过程中会用到非对称加密技术,但签名结果并不对原始数据进行保密处理。若需同时加密,通常需要将数字签名与加密机制结合使用。", "source": null, "related": [] }, { "id": "sc-010", "type": "single_choice", "difficulty": 2, "tags": [ "密码学", "数字签名" ], "question": "在数字签名过程中,发送方用什么密钥对消息摘要进行签名?", "options": { "A": "接收方的公钥", "B": "接收方的私钥", "C": "发送方的公钥", "D": "发送方的私钥" }, "answer": "D", "explanation": "数字签名的基本流程是:发送方先对消息计算哈希得到消息摘要,然后用自己的私钥对摘要进行加密(签名)。接收方收到后用发送方的公钥解密(验签),再与自己计算的摘要比对。使用发送方的私钥签名可以确保只有持有私钥的人才能生成该签名,从而实现身份认证和不可否认性。", "source": null, "related": [] }, { "id": "sc-011", "type": "single_choice", "difficulty": 1, "tags": [ "密码学", "PKI", "证书" ], "question": "PKI(公钥基础设施)中,CA 的主要职责是什么?", "options": { "A": "生成对称加密密钥", "B": "颁发和管理数字证书", "C": "对所有网络流量进行加密", "D": "存储用户的私钥" }, "answer": "B", "explanation": "CA(Certificate Authority,证书颁发机构)是 PKI 的核心组件,主要负责颁发、续期、吊销和管理数字证书。CA 通过验证实体(个人、组织、服务器等)的身份后,将其公钥与身份信息绑定在数字证书中。CA 不负责生成对称密钥或加密所有网络流量,而用户的私钥应由用户自己安全保管,不应存储在 CA 端。", "source": null, "related": [] }, { "id": "sc-012", "type": "single_choice", "difficulty": 2, "tags": [ "密码学", "PKI", "证书" ], "question": "X.509 数字证书中通常不包含以下哪项信息?", "options": { "A": "证书持有者的公钥", "B": "证书持有者的私钥", "C": "颁发该证书的 CA 信息", "D": "证书的有效期" }, "answer": "B", "explanation": "X.509 证书包含持有者的公钥、持有者的身份信息(如域名、组织名)、颁发机构(CA)的信息、有效期、序列号以及 CA 的数字签名等内容。证书中绝对不包含持有者的私钥,私钥必须由持有者自行秘密保管。证书的本质是将公钥与身份信息绑定的可信声明,如果包含私钥就会导致严重的安全问题。", "source": null, "related": [] }, { "id": "sc-013", "type": "single_choice", "difficulty": 2, "tags": [ "密码学", "PKI", "证书" ], "question": "当浏览器访问 HTTPS 网站时发现证书已过期,这违反了以下哪项证书检查?", "options": { "A": "证书链验证", "B": "有效期检查", "C": "证书吊销检查", "D": "域名匹配检查" }, "answer": "B", "explanation": "证书包含一个明确的有效期(notBefore 和 notAfter 字段),浏览器在验证证书时会检查当前时间是否在有效期内。如果证书已过期,说明有效期检查失败。证书链验证是检查证书是否由受信任的 CA 签发;吊销检查是通过 CRL 或 OCSP 确认证书是否被提前撤销;域名匹配检查是确认证书中的域名与实际访问的域名一致。", "source": null, "related": [] }, { "id": "sc-014", "type": "single_choice", "difficulty": 3, "tags": [ "密码学", "PKI" ], "question": "以下哪种机制用于实时查询证书是否已被吊销?", "options": { "A": "CRL(证书吊销列表)", "B": "OCSP(在线证书状态协议)", "C": "TLS 握手", "D": "DNS 解析" }, "answer": "B", "explanation": "OCSP(Online Certificate Status Protocol,在线证书状态协议)允许客户端实时向 OCSP 响应器查询单个证书的吊销状态,相比 CRL 更加即时和高效。CRL 虽然也用于检查证书吊销状态,但它是周期性发布的完整列表,实时性较差。TLS 握手是建立加密连接的过程,DNS 解析是域名到 IP 的映射,两者都不是证书吊销检查机制。", "source": null, "related": [] }, { "id": "sc-015", "type": "single_choice", "difficulty": 2, "tags": [ "密码学", "加密" ], "question": "关于分组密码的工作模式,以下哪项说法正确?", "options": { "A": "ECB 模式对相同明文块总是产生相同的密文块,因此模式安全性较差", "B": "所有工作模式都能完全防止重放攻击", "C": "CBC 模式不需要初始化向量(IV)", "D": "CTR 模式将分组密码转换为流密码,因此不需要密钥" }, "answer": "A", "explanation": "ECB(Electronic Codebook)模式对每个明文块独立加密,相同明文块总是产生相同密文块,这会泄露数据模式,因此安全性较差,不适合加密大量数据。CBC 模式需要一个随机的初始化向量(IV)来确保相同明文产生不同密文。CTR 模式虽然将分组密码转换为类似流密码的模式,但仍需要密钥来驱动分组加密运算。工作模式本身并不能防止重放攻击。", "source": null, "related": [] }, { "id": "sc-016", "type": "single_choice", "difficulty": 3, "tags": [ "密码学", "加密" ], "question": "Diffie-Hellman 密钥交换协议容易受到以下哪种攻击?", "options": { "A": "已知明文攻击", "B": "中间人攻击", "C": "差分密码分析", "D": "线性密码分析" }, "answer": "B", "explanation": "原始的 Diffie-Hellman 密钥交换协议不包含身份认证机制,因此容易受到中间人攻击(MITM)。攻击者可以分别与通信双方建立独立的密钥交换,从而拦截和篡改所有通信内容。已知明文攻击、差分密码分析和线性密码分析主要针对分组密码,不是 DH 密钥交换的主要威胁。实际应用中通常结合数字证书或数字签名来抵御中间人攻击。", "source": null, "related": [] }, { "id": "sc-017", "type": "single_choice", "difficulty": 3, "tags": [ "密码学", "哈希" ], "question": "HMAC(基于哈希的消息认证码)相比普通哈希函数多了什么安全特性?", "options": { "A": "更快的计算速度", "B": "更长的输出长度", "C": "消息认证,能验证消息来源和完整性", "D": "数据加密能力" }, "answer": "C", "explanation": "HMAC 将密钥与哈希函数结合使用,能够同时验证消息的完整性和来源真实性(消息认证)。只有持有正确密钥的人才能生成有效的 HMAC 值,而普通哈希函数不涉及密钥,任何人计算同一消息的哈希值都相同,因此无法验证消息来源。HMAC 并不提供加密能力,其输出长度与所使用的哈希函数相同,计算速度也与底层哈希函数相当。", "source": null, "related": [] }, { "id": "sc-018", "type": "single_choice", "difficulty": 3, "tags": [ "密码学", "加密" ], "question": "以下哪种攻击方式针对的是密钥交换过程而非加密算法本身?", "options": { "A": "暴力破解", "B": "生日攻击", "C": "中间人攻击", "D": "彩虹表攻击" }, "answer": "C", "explanation": "中间人攻击针对的是密钥交换或通信建立过程,攻击者在通信双方之间插入自己,分别与双方建立独立连接。暴力破解是尝试所有可能的密钥来破解加密算法;生日攻击是针对哈希函数碰撞的攻击方法;彩虹表攻击是针对密码哈希的预计算表攻击。这三种攻击都不是直接针对密钥交换过程的。", "source": null, "related": [] }, { "id": "sc-019", "type": "single_choice", "difficulty": 3, "tags": [ "密码学", "加密", "密钥管理" ], "question": "在密钥管理的最佳实践中,以下哪项做法是正确的?", "options": { "A": "将加密密钥硬编码在源代码中以便于使用", "B": "所有系统共享同一个密钥以简化管理", "C": "定期轮换密钥,并安全销毁不再使用的旧密钥", "D": "将密钥与加密数据存储在同一个数据库中" }, "answer": "C", "explanation": "定期轮换密钥是密钥管理的核心最佳实践,可以限制单个密钥泄露造成的影响范围。旧密钥不再使用时应安全销毁,防止被攻击者获取。将密钥硬编码在源代码中会导致密钥随代码泄露;所有系统共享同一密钥违反最小权限原则,且一旦泄露影响范围巨大;密钥与加密数据存储在同一位置违反了密钥分离原则,攻击者获取数据的同时也会获取解密密钥。", "source": null, "related": [] }, { "id": "sc-020", "type": "single_choice", "difficulty": 1, "tags": [ "密码学", "加密" ], "question": "对称加密和非对称加密的根本区别是什么?", "options": { "A": "对称加密速度慢,非对称加密速度快", "B": "对称加密使用同一密钥加密和解密,非对称加密使用不同的密钥", "C": "对称加密不安全,非对称加密绝对安全", "D": "对称加密只能加密文本,非对称加密可以加密任何数据" }, "answer": "B", "explanation": "对称加密和非对称加密的根本区别在于密钥的使用方式:对称加密使用同一个密钥进行加密和解密,通信双方必须安全地共享该密钥;非对称加密使用一对密钥(公钥和私钥),公钥加密的数据只有对应私钥才能解密。实际上对称加密通常比非对称加密速度更快,两者都能加密各种类型的数据,且两者都不是绝对安全的。", "source": null, "related": [] } ] }