想象你是情报局的小明,要寄一封绝密信给小红。邮局规定所有信件都会被拆开检查。你试过把字写得歪歪扭扭,试过用只有你俩懂的方言暗号,可一旦暗号本也落入敌人之手,一切就白费了。后来你们想出一套妙招:给信装上只有小红能打开的密码锁;再用特殊胶水封口,谁拆过一验便知;再盖上你独一无二的私章,谁也无法冒充你。这一整套“秘密通信流程”,就是数据加密策略与实施的核心。本文我们就跟着小明和小红,把加密算法、数字签名、密钥管理等概念逐个装进生活里。

岗位关联

数据加密是数据治理与合规的“最后一道防线”。掌握它,你才能在设计AI系统时确保用户隐私不被泄露,才能从容应对等保、GDPR等合规审计——这不仅是技术能力,更是AI从业者的职业护城河。

目录
  1. 可视化演示
  2. 加密基本概念
  3. 对称加密算法
  4. 非对称加密算法
  5. 哈希与完整性
  6. 数字签名
  7. 密钥管理
  8. 加密模式与填充
  9. 实际应用与合规
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

动态演示数据加密策略与实施的核心机制,通过总览/传输/转换/输出四种模式展示关键概念与交互流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

数据加密策略与实施:数据加密 数据加密策略的整体框架与分层防 静态数据加密的算法选型与对称非 核心机制可视化 数据加密策略与实施整体架构与关键组件

加密基本概念

小明和小红约定的“暗号”其实就是最简单的加密:把信里每个字往后推三位,比如“你好”变成“好您”。这种转换规则就是算法,约定的三位偏移就是密钥。信的原内容叫明文,转换后的天书叫密文。真正的加密系统远比“推三格”复杂,但核心骨架从未改变。

加密(Encryption) 就是把明文通过算法和密钥变成密文,解密(Decryption) 则是反向操作。算法是公开的、经过全世界密码学家检验的,比如AES、RSA,而唯一需要保密的是密钥——这就是著名的 Kerckhoffs 原则:一切秘密藏在密钥里,而不是算法里。哪怕敌人拿到了你的所有加密设备,只要没拿到钥匙,他就读不懂你的信。

加密强度由密钥长度和算法安全度共同决定。密钥越长,可能的钥匙组合越多,暴力试开所需时间呈指数增长。

回到小明的故事:如果小红收到的信是“好您”,她只需要用暗号本往前推三格,就能还原出“你好”。所以,保护好那本暗号本,比什么都重要。

C=EK(P),P=DK(C)C = E_K(P), \quad P = D_K(C)
这个公式表明:使用同一个密钥 K,加密算法 E 把明文 P 变成密文 C;解密算法 D 把 C 还原成 P。两者互为逆运算,就像一把锁的正转与反转。
  1. 密文 C明文经过变换后产生的无法直接阅读的乱码数据。
    C=EK(P)C = E_K(P)
  2. 密钥 K控制加密和解密行为的秘密参数,相当于暗号本中的偏移量或开锁的钥匙。
    EK(P)E_K(P)
  3. 解密还原使用正确的密钥 K 对密文执行逆运算,恢复出原始明文。
    P=DK(C)P = D_K(C)

对称加密算法

小明和小红一开始用的“同一个密码本”就是对称加密:加密和解密使用完全相同的一把密钥。好处是速度快,适合加密大量数据;坏处是密钥怎么安全地送到对方手里成了难题——如果送密码本的路上被坏人抄走,后面所有信都白加密了。

最早的对称加密标准是 DES,密钥只有 56 位,如今几分钟就能暴力破解。于是有了 3DES(把 DES 跑三遍),以及今天的绝对主力AES(高级加密标准)。AES 是一种分组密码:把明文切成固定长度(128 位)的块,每块独立或用某种模式进行多轮混淆和扩散。AES 密钥长度支持 128、192、256 位,目前 256 位尚未有实际破译手段。

对称算法的数学表达通常写为:

小明后来发现,重复使用同一个“密码本”很危险:万一敌人的间谍混进邮局,趁人不注意把密码本复制了,后续通信全部泄露。对称加密的密钥分发问题一直困扰着他们,直到一种神奇的“双锁方案”出现。

C=AESK(P)C = AES_K(P)
意思就是:用密钥 K 对明文分组 P 执行 AES 加密,得到密文 C。解密时用同一个 K 执行逆运算。整个过程就像用同一把锁锁上又打开。
  1. 明文分组 P将待加密的长消息按 128 位切成若干小段,每段作为一个处理单元。
    PP
  2. AES 加密函数对分组执行多轮字节代换、行移位、列混合和轮密钥加操作。
    AESK(P)AES_K(P)
  3. 密文输出 C输出与明文等长的密文分组,若密钥不同或明文不同,密文看起来毫无规律。
    CC

非对称加密算法

聪明的工匠小红发明了一种“密码锁”:锁是公开的,任何人都能拿到,但一旦锁上,只有小红的专属钥匙能打开。这就是非对称加密,也叫公钥加密。每个用户拥有一对钥匙:公钥(公开的锁)和私钥(唯一的钥匙)。小明想给小红寄信,就用小红的公钥把信锁进箱子,之后连他自己也打不开,只有小红能用私钥开锁。

目前最流行的非对称算法是 RSA 和 ECC(椭圆曲线密码)。RSA 的安全性基于大整数分解的困难性——两个大质数相乘很容易,但把乘积分解回两个质数几乎不可能。ECC 则利用椭圆曲线离散对数问题,在更短的密钥长度下提供同等安全水平(256 位 ECC 约等于 3072 位 RSA)。

RSA 加密公式如下:

小明的世界一下子开阔了:他不再需要偷偷传递密码本,因为小红家的“锁”就挂在门口,谁都能锁,但唯有小红能开。不过非对称加密速度慢,不适合加密整封长信,于是聪明的前辈们想出了“混合加密”——用非对称锁交换一把临时密码,再用对称密码加密正文,这就是后文 TLS 的雏形。

C=Me mod n,M=Cd mod nC = M^e \bmod n, \qquad M = C^d \bmod n
其中 n 是两个大质数 p、q 的乘积,e 是公钥指数,d 是私钥指数。用公钥 (n, e) 加密,用私钥 (n, d) 解密。数学上它们互为逆运算,基于模幂运算。
  1. 公钥参数 n 与 en 是大质数乘积,e 与结果公开,用于加密。
    C=Me mod nC = M^e \bmod n
  2. 私钥参数 d只有持有者知道,满足一定数学关系,用于解密。
    M=Cd mod nM = C^d \bmod n
  3. 模运算 mod n确保结果落在 0 到 n-1 之间,类似钟表上的循环计数。
     mod n\bmod n

哈希与完整性

信在途中可能被调包或被部分篡改,怎么发现?小明在信封上涂了一层特制的“果冻胶水”,胶水在封口处留下独一无二的指纹图案(哈希值)。只要有人拆开过,指纹图案就会改变。寄信时,小明会把胶水指纹另外写在明信片上寄出;收信人小红验证指纹是否一致,就能判断信是否被动过。

这个“指纹”就是哈希值,由哈希函数生成。哈希函数 H 把任意长度的数据映射成固定长度的摘要,有三大特性:不可逆(从摘要推不出原文)、雪崩效应(改一个字符,摘要面目全非)、抗碰撞(很难找到两条不同消息生成同样的摘要)。注意:哈希不是加密,它没有钥匙,也不能解密。

经典的 MD5 和 SHA-1 因碰撞攻击已退出舞台,目前推荐 SHA-256。早年黑客用彩虹表(预计算的哈希-明文对照表)快速反查弱密码,防御方法是给密码加盐(salt),即掺入随机值再哈希。若需认证消息来源,可使用带密钥的哈希 HMAC。

小红学会了:收到信后先检查胶水指纹,没问题再拆封。但这里有个漏洞——如果坏人把信改了,同时把明信片上的指纹也改了,小红照样发现不了。所以,指纹本身也需要“防伪”,这就引出了数字签名。

h=H(M)h = H(M)
意思是:消息 M 经过哈希函数 H 处理后,生成固定长度的摘要 h。只要消息有任何改动,h 就会完全变化。
  1. 消息 M任意长度的数据,比如一封信的正文。
    MM
  2. 哈希函数 H公开的、确定性的夹紧函数,输出定长摘要,无法逆向。
    H(M)H(M)
  3. 摘要 h相当于数据的“指纹”,长度固定,用于比对完整性。
    hh

数字签名

小明不希望自己的信被人冒充,也不想写完赖账不认。于是他在封口处盖上自己独一无二的“紫砂私章”。这个章用他的私钥盖上去,所有人都能用他的公钥验证章的真伪。私章没人能伪造,因此小明无法抵赖,信也再难被篡改。

数字签名的流程是:先对消息做哈希得到摘要,再用发送者的私钥加密这个摘要,得到签名。接收方收到消息和签名后,用发送者的公钥解密签名,得到摘要;再对收到的消息重新计算哈希,两者一致则验证通过。这个过程既验证了完整性,也验证了身份真实性(不可抵赖)。

这里有个关键问题:公钥怎么确认属于小明本人?于是有了数字证书——由权威机构CA(证书颁发机构) 将公钥和所有者身份绑定,并用 CA 的私钥签名。由 CA 构成的信任网络就是 PKI(公钥基础设施)。

小明的私章解决了两大难题:小红知道信是小明写的,因为只有小明的章能配上他的公钥;小明也无法抵赖,因为章是他独有的。数字签名像法律文书上的签字盖章,在区块链、电子合同、软件发布中无处不在。

σ=EKpr(H(M)),DKpu(σ)=H(M)\sigma = E_{K_{pr}}(H(M)), \qquad D_{K_{pu}}(\sigma) = H(M)
签名者先用私钥 K_pr 对消息摘要进行加密,生成签名 σ;验证者用公钥 K_pu 解密签名,若得到的值等于自己重新计算的哈希,则签名有效。
  1. 私钥签名用发送者私钥对摘要加密,签名只能由本人产生。
    EKpr(H(M))E_{K_{pr}}(H(M))
  2. 公钥验签任何人可用发送者公钥解密签名,得到原始摘要。
    DKpu(σ)D_{K_{pu}}(\sigma)
  3. 哈希比对将解密摘要与本地重新计算的摘要比较,相同则通过。
    H(M)H(M)

密钥管理

锁再好,钥匙乱扔也没用。小明和小红逐渐意识到,整个加密体系真正的命门是密钥管理——钥匙从生成、存储、使用到销毁的全生命周期。如果密钥存在电脑明文文件里,那加密等于白做。

密钥生成必须使用足够随机的随机数源,绝不能用"123456"这类弱密码。密钥存储的安全级别决定了系统安全上限:把密钥放在数据库里明文存储是灾难,应使用操作系统的密钥存储库、HSM(硬件安全模块) 或 KMS(密钥管理服务)。密钥轮换如同定期换锁,即使某把钥匙泄露,也只会影响一小段时间的数据。密钥分发则常借助非对称加密或 Diffie-Hellman 协议在安全信道完成。

密钥管理的强度本质上取决于密钥空间的规模——密钥越长,破解需要尝试的次数越多:

小明的钥匙管理如今非常规范:钥匙存放在政府专用保险柜(HSM)里,每三个月换一把锁,换下来的旧锁立刻销毁。他终于明白,算法可以公开,钥匙必须保密——安全从来不取决于锁有多神奇,而在于钥匙管理有多严谨。

S=2lS = 2^l
其中 l 是密钥位数,S 表示可能密钥的总数。每增加一位,破解工作量翻倍。
  1. 密钥位数 l例如 AES-256 的 l=256。
    ll
  2. 密钥空间 S所有可能密钥的集合大小,指数级增长。
    S=2lS = 2^l
  3. 安全意义假设每秒试十亿个密钥,暴力破解 2^256 空间所需时间远超宇宙年龄。
    2l2^l

加密模式与填充

长信的加密不是一次完成,而是分页处理。怎么分页加密,就是加密模式。最朴素的 ECB 模式把每页独立用同一把锁锁上,结果相同的明文页会产生相同的密文页,密文上会出现规律性“暗纹”,给攻击者留下线索。CBC 模式则把前一页的密文和当前页明文混合后再加密,让相同内容的页也得到完全不同的密文,相当于每页都加了不同的“盐”。

由于分组加密要求明文长度必须是分组大小的整数倍,末尾不足时需要填充,常见的 PKCS#7 会在末尾补充缺失字节数。如果解密时填充校验失败,就是经典的“填充预言攻击”入口。现代更推荐 GCM 模式,它一次同时提供加密和完整性认证,是 TLS 1.3 的主流选择。

CBC 加密公式:

小明看到 CBC 模式后恍然大悟:就像每页信纸都混入上一页的墨迹,即使两页内容一模一样,印出来也完全不同。而 GCM 模式更是给每页加上了“防拆封波纹”,让攻击者既读不懂也改不了。

Ci=EK(Pi⊕Ci−1)C_i = E_K(P_i \oplus C_{i-1})
第 i 个密文块,是将第 i 个明文块与上一个密文块做异或运算后,再用密钥加密得到。第一块的 C_0 是随机初始向量 IV。
  1. 异或运算 ⊕逐位进行不进位加法,用于混合明文与上块密文。
    Pi⊕Ci−1P_i \oplus C_{i-1}
  2. 分组加密 E_K对混合后的结果执行 AES 加密,产生当前密文块。
    EK(...)E_K(...)
  3. 链路依赖每一块的密文都依赖所有前面的块,从而打散规律。
    CiC_i

实际应用与合规

小明和小红把整套“秘密通信”术整合成了标准流程,现代互联网的 TLS/HTTPS 正是这样:浏览器和服务器先通过非对称加密安全地协商出一个随机会话密钥,再用对称加密(AES-GCM)加密后续所有网页内容,同时用 HMAC 保证完整性,用数字证书验证服务器身份。这就是为什么你浏览器地址栏会出现小锁图标。

在数据存储层面,数据库层面有透明数据加密(TDE),存储磁盘也有全盘加密。AI 系统中,训练数据、模型文件、用户特征都应该分类加密。合规层面,中国的等保 2.0、欧盟的 GDPR、医疗行业 HIPAA 都明确要求对敏感数据加密,并且要能证明密钥管理过程合规。

混合加密可简单表示为:

如今小明和小红的通信已成为全城安全标杆:任何信件进入快递网络时锁箱、盖章、封口一步不缺,每把钥匙定期更换,并接受审计。数据加密不是某个孤立的技术,而是一套覆盖事前防护、事中监控、事后追溯的完整策略,也是每个 AI 从业者在数据治理之路上必须熟稔的底气。

C=AESKs(M),Ks 通过 RSA 安全传递C = AES_{K_s}(M), \quad K_s \text{ 通过 RSA 安全传递}
先用非对称算法安全传输对称会话密钥 K_s,再用 K_s 对真正的大消息 M 做 AES 加密。这是 TLS 的基石思想。
  1. 会话密钥 K_s临时生成的对称密钥,仅本次通信有效。
    KsK_s
  2. 对称加密正文用 K_s 对消息 M 进行 AES 加密,高效处理大数据量。
    AESKs(M)AES_{K_s}(M)
  3. 非对称保护密钥K_s 本身使用接收方公钥加密,保证只有对方能解开。
    RSA(Ks)\text{RSA}(K_s)

AI 应用场景

数据库加密存储

阶段:数据准备与存储

解决的问题:AI 训练往往涉及用户手机号、身份证等敏感字段。明文存储在数据库中,一旦发生 SQL 注入或拖库攻击,数据直接裸奔。通过列级透明加密,字段在写入时自动加密,应用侧无感,即使库文件被窃取,攻击者拿到的也只是密文。

具体案例:某金融 AI 风控系统使用数据库 TDE 功能加密用户征信字段,密钥托管在云 KMS 中。每周密钥轮换一次,审计日志记录每次加解密调用,成功通过等保三级测评。

HTTPS 安全传输

阶段:模型服务与数据交互

解决的问题:模型推理接口若使用明文 HTTP,请求中的用户输入和推理结果会被中间人窃听篡改。部署 TLS 后,客户端与服务端之间建立加密信道,保证传输中的机密性和完整性。

具体案例:某大模型 API 网关启用 TLS 1.3 + 证书双向认证。客户端持有合法证书才能调用模型接口,所有请求日志在端到端加密通道内流转,有效阻止了重放攻击。

数字签名用于模型溯源

阶段:模型发布与版本管理

解决的问题:AI 模型文件被恶意替换,可能导致生产事故。每次发布模型后,用发布者的私钥对模型文件哈希值签名,下载方用公钥验签,确保模型来自可信团队且未被篡改。

具体案例:某自动驾驶团队为每个夜间训练产出的模型权重文件生成 SHA-256 哈希,并用 HSM 中私钥签名。仿真平台在加载模型前强制验签,失败则拒绝加载,实现了模型全链路可追溯。

Python 演示

python51 行
import osimport hashlibimport hmac class SimpleSymmetricCipher:    """模拟流式对称加密,用密钥派生伪随机字节流与明文异或."""     def __init__(self, key: bytes):        self.key = key     def _stream(self, length: int) -> bytes:        out = b''        counter = 0        while len(out) < length:            block = hashlib.sha256(self.key + str(counter).encode()).digest()            out += block            counter += 1        return out[:length]     def encrypt(self, plaintext: bytes) -> bytes:        stream = self._stream(len(plaintext))        return bytes(p ^ s for p, s in zip(plaintext, stream))     def decrypt(self, ciphertext: bytes) -> bytes:        return self.encrypt(ciphertext)  def compute_hmac(key: bytes, message: bytes) -> str:    return hmac.new(key, message, hashlib.sha256).hexdigest()  def main():    key = os.urandom(32)    cipher = SimpleSymmetricCipher(key)     plaintext = "AI系统用户隐私数据: patient-001, blood_pressure=120/80".encode()    ciphertext = cipher.encrypt(plaintext)    decrypted = cipher.decrypt(ciphertext)     print("明文:", plaintext.decode())    print("密文(前32字节):", ciphertext[:32].hex())    print("解密:", decrypted.decode())    assert decrypted == plaintext     tag = compute_hmac(key, ciphertext)    print("HMAC(前16字符):", tag[:16])    print("验证结果:", hmac.compare_digest(tag, compute_hmac(key, ciphertext)))  if __name__ == "__main__":    main()
目的:用一个基于 SHA-256 的模拟流密码演示对称加密的加解密过程,并用 HMAC 对密文做完整性校验。真实生产环境请使用 AES-GCM 等密码库。
  1. self.key = key保存密钥,本示例中使用随机 32 字节密钥,对应 AES-256 的密钥长度。
  2. hashlib.sha256(self.key + str(counter).encode()).digest()用密钥和计数器一起做哈希,生成伪随机字节块。
  3. bytes(p ^ s for p, s in zip(plaintext, stream))异或运算实现加密/解密,对称加密的核心操作。
  4. self.encrypt(ciphertext)由于异或对称性,解密与加密相同。
  5. hmac.new(key, message, hashlib.sha256).hexdigest()计算消息认证码,防止密文被篡改。
  6. hmac.compare_digest(tag, compute_hmac(key, ciphertext))常量时间比较,防止时序攻击。
  7. os.urandom(32)使用操作系统加密安全随机源生成密钥。

常见误区

误区我只要用最复杂的加密算法,比如自己发明一套加密方法,数据就一定安全了。别人没有我的算法,肯定破解不了。

正解算法一旦公开并经全世界密码学家多年考验,安全性才有保证。Kerckhoffs 原则早已指出:秘密必须全部放在密钥里,而不是算法里。自创算法往往存在隐蔽的数学弱点,就像小明的“自创暗号”,一旦被敌方数学天才截获几封密文就能猜透规律。相反,AES 是公开算法,因为密钥足够长、算法经过无数攻击检验,反而安全。

为何常见:人天然喜欢“只有我知道”的保密方式,但现代密码学的根基是“算法透明、密钥保密”,这和网络安全常识中的“模糊不是安全”同理。

误区只要我用了 HTTPS 加密,那我的网站就绝对安全,攻击者什么也拿不到。

正解HTTPS 只保护“传输过程中”的数据机密性和完整性。如果服务器本身被植入后门,或者证书被人恶意替换,又或者用户被诱导安装了恶意根证书,HTTPS 依然形同虚设。它就像一封用密码锁封住的信,锁很坚固,但如果你把钥匙插在门口(密钥泄露),再好的锁也没用。真正的安全还需要服务器安全、终端信任、密钥管理等整体配合。

为何常见:把传输加密当成网络安全的全部,忽略了加密之外更广阔的威胁面。

误区哈希函数把数据变乱码,而且没有密钥,那它不就是一种加密吗?我想加密密码就直接存哈希。

正解哈希是一种单向不可逆函数,它不提供解密能力,目的是完整性校验而不是机密性。把用户密码存哈希是常见做法,但直接用裸哈希存密码极易被彩虹表破解,必须加盐并配合慢哈希(如 bcrypt)。加密的目标是可逆还原,哈希的目标是验证指纹,两者用途完全不同。

为何常见:外观看都是“把可读数据变成乱码”,但“可逆”与“不可逆”的差异容易被忽视。

误区RSA 那么神奇,能公钥加密、私钥解密,那所有场景都应该用非对称加密,对称加密太弱了。

正解非对称加密的安全性依赖于数学难题,性能比对称加密慢几个数量级。实际工程中,非对称加密只用来加密短小关键的密钥或签名,庞大的数据仍用 AES 等对称算法加密。就像寄信时你不会用一吨重的铁锁锁信,而是用一把轻便的密码锁;那把铁锁只是用来安全传递密码锁的钥匙。两者是合作而非替代关系。

为何常见:只看到非对称加密“消灭了密钥分发问题”的优点,忽略了性能和密文膨胀等代价。

误区ECB 模式每个分组独立加密,并行度高、速度快,也没有复杂的反馈依赖,比 CBC 简单多了,为什么不推荐呢?

正解ECB 的致命缺陷是相同明文块会产生相同密文块,导致密文保留明文的结构特征。比如加密一张企鹅照片,密文仍能看出企鹅轮廓;加密字符画,方块图案依然可辨。攻击者可利用这种规律进行重排攻击。CBC 和 GCM 模式虽然计算稍复杂,但通过链条链接和随机 IV 打散了规律,安全性大幅提升。速度再快,不能保安全的加密等于没有加密。

为何常见:认为“简单快速=高效”,没有意识到加密模式中隐藏的信息泄露风险。

面试题

Q1. 在加密系统中,根据 Kerckhoffs 原则,真正需要保密的是什么?

单选题 · easy

  • A.加密算法本身
  • B.解密的数学公式
  • C.密钥← 正确答案
  • D.密文的长度

答案:C。Kerckhoffs 原则强调算法可以公开,全部秘密应集中在密钥中。即使攻击者知道加密和解密的完整算法,只要没有密钥就无法破解密文,就像知道暗号规则但没有暗号本,依然看不懂信。

Q2. 下列哪种算法属于典型的对称加密算法?

单选题 · easy

  • A.RSA
  • B.ECC
  • C.AES← 正确答案
  • D.SHA-256

答案:C。AES 是典型的对称分组加密算法,加密和解密使用同一把密钥。RSA 和 ECC 是非对称算法,SHA-256 是哈希函数,不是加密算法。

Q3. 关于哈希函数,以下哪个说法是错误的?

单选题 · mid

  • A.输出长度固定
  • B.不可逆
  • C.可以用于加密解密数据← 正确答案
  • D.具有雪崩效应

答案:C。哈希函数只是产生指纹,不可逆,因此不能用于加密解密。A、B、D 都是哈希函数的基本特性,唯一错误是“哈希可以加解密”,这正是“哈希=加密”的常见误区。

Q4. CBC 加密模式中,为什么每一块密文都会受前面所有块的影响?

单选题 · mid

  • A.因为每块都要进行填充
  • B.因为当前明文块要与上一个密文块异或后再加密← 正确答案
  • C.因为每块使用不同的密钥
  • D.因为哈希值被加入密文

答案:B。CBC 将上一块密文作为输入与当前明文块异或,再执行加密。因此链条中任一位置的改变都会影响后续所有密文块,从而打散相同明文块的规律。

Q5. 数字签名中,签名者用哪个密钥生成签名?验证者用哪个密钥验证?

单选题 · mid

  • A.签名者公钥;验证者私钥
  • B.签名者私钥;验证者公钥← 正确答案
  • C.验证者公钥;签名者私钥
  • D.双方共用的对称密钥

答案:B。签名者使用自己的私钥加密消息摘要,验证者使用签名者的公钥解密签名。这与公钥加密的使用方向正好相反,起到了身份认证和防抵赖的作用。

Q6. 已知 RSA 公钥为 (n, e),密文为 C,求解明文 M 的正确操作是?

单选题 · hard

  • A.M = C^e mod n
  • B.M = C^d mod n,其中 d 为私钥指数← 正确答案
  • C.M = e^C mod n
  • D.M = C mod e

答案:B。RSA 解密使用私钥指数 d,计算 M = C^d mod n。公钥只能加密,私钥才能解密,这也是非对称加密的核心特征。

Q7. 下列哪些属于密钥管理的核心环节?

多选题 · mid

  • A.密钥生成← 正确答案
  • B.密钥存储与保护← 正确答案
  • C.密钥轮换← 正确答案
  • D.密文格式转换

答案:ABC。密钥管理包括生成、存储、分发、使用、轮换和销毁等生命周期环节。密文格式转换是数据格式层面的操作,与密钥生命周期不直接相关。

Q8. 以下关于 GCM 加密模式的说法,正确的有哪些?

多选题 · mid

  • A.它同时提供加密和完整性认证← 正确答案
  • B.它不需要初始向量 IV
  • C.它是 TLS 1.3 支持的常用模式← 正确答案
  • D.它能够抵御密文篡改← 正确答案

答案:ACD。GCM 全称是 Galois/Counter Mode,它基于计数器模式并叠加 GMAC 认证,同时提供机密性和完整性保护,被 TLS 1.3 广泛使用。GCM 需要唯一的 IV(初始向量),选项 B 错误。

Q9. 面对哈希彩虹表攻击,有效的防御措施有哪些?

多选题 · hard

  • A.使用随机盐值← 正确答案
  • B.使用慢哈希算法← 正确答案
  • C.对密码进行加盐哈希存储← 正确答案
  • D.增加哈希函数输出长度

答案:ABC。随机盐可以让同一密码在不同用户下产生不同哈希,破坏彩虹表的预计算效果。慢哈希(如 bcrypt)提高暴力破解成本。输出长度偶尔有帮助,但核心是盐和慢哈希,D 并非直接防御手段。

Q10. 在 TLS 握手过程中,使用非对称加密的主要目的是?

单选题 · extreme

  • A.加密所有网页内容
  • B.安全协商对称会话密钥← 正确答案
  • C.替换对称加密算法
  • D.生成初始向量 IV

答案:B。TLS 握手阶段利用非对称加密安全地交换一个随机会话密钥,后续所有数据传输改用高强度对称加密(如 AES-GCM),既保证安全性又兼顾性能。非对称加密不直接加密大流量数据。