想象你是一家银行的科技行长。过去几年,你们把客户资产存在普通的储物柜里,柜子虽然隔开,但管理员拿着万能钥匙——云平台上的宿主机内核、虚拟化监视器、运维工程师都随时能拉开柜门。传统容器就是这种储物柜:进程间看似隔离,但运行中的内存在宿主机眼里是透明的。 Confidential Containers(简称 CoCo)要做的,是在云上造一座真正的金库。容器不再直接跑在宿主机上,而是被装进一台由硬件加密的「金库」——机密虚拟机。数据在里面计算时,内存是密文的,管理员看不见;进出金库还有一道「公证」——远程证明,任何外部机构都能验明这座金库是不是真货。 但 AI 工作负载的重头戏在 GPU。于是 NVIDIA H100 机密计算(Confidential Computing,简称 H100 CC)在大金库里加装了一间「防窥操作间」:GPU 显存中的数据自带加密,连 CPU 侧都读不到。再配合数据脱敏(给客户资料打码)和联邦学习(多机构只上传学习心得),我们终于能对客户说一句:数据可用不可见。 这篇文章就沿着这条「金库建设」路线,把原理和工程实践一次讲透。

岗位关联

学完本节,你将理解机密容器与 GPU 机密计算如何构成 AI 隐私保护的「最后一道墙」,能够在实际项目中向团队交付可信、合规、可审计的数据计算方案。

目录
  1. 可视化演示
  2. 认识机密容器:从储物柜到金库
  3. 硬件信任根基:装甲铸造厂的防伪标识
  4. GPU 机密计算:金库里的防窥操作间
  5. 数据脱敏技术:进门前的安检打码
  6. 隐私计算融合:多分行联合风控
  7. 工程化实践:把金库真正建起来
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

通过CoCo架构分层、远程证明信任链及H100 CC模式GPU加密计算,展示机密计算在AI安全中的端到端实践。

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

机密容器 加载中

认识机密容器:从储物柜到金库

你所在的公司把客户数据放到云上,好比把贵重物品存进一间「普通储物柜」寄存处。每个格子虽然上了锁,但管理员拿着万能钥匙——虚拟机监视器、宿主机内核、云平台运维工程师都能翻看格子里面的东西。这就是传统容器的处境:进程之间看起来隔离,但运行态内存在宿主机面前是透明的。

CoCo(Confidential Containers)把储物柜升级成金库:容器不再直接跑在宿主机上,而是被装进一台由硬件加密的「机密虚拟机」(Confidential VM)。这台虚拟机像一座独立的装甲房间,镜像被篡改任何一个字节,启动都会被阻断。外部机构想确认金库是否真货,可以索要一份「公证书」——远程证明(Remote Attestation),它由硬件私钥签名,无法伪造。

CoCo 是 CNCF 沙箱项目,核心组件包括 Kata Containers(用轻量级虚拟机承载容器的运行时)、Trustee(负责远程证明和密钥托管的代理服务),以及镜像签名验证。你可以把 Kata Containers 想象成「车载金库」:每个 Kubernetes Pod 分配一个机密虚拟机,Pod 的内存、显存、磁盘都处于加密状态。远程证明则保证这台虚拟机运行在真实的硬件 TEE 上,而不是某个被篡改的模拟环境里。整个过程中,云平台管理员即使拿到 root 权限,也读不到 VM 内部的数据。

从储物柜升级成金库,关键不只是换了把更大的锁,而是整面墙壁都变成了保险装甲。接下来你会发现,光有 CPU 造的金库还不够——AI 的计算引擎 GPU 也有自己的「房间」要装修。

accept=[H(challenge∥nonce)=report]\text{accept} = \left[ H(\text{challenge} \parallel \text{nonce}) = \text{report} \right]
远程证明通俗版:你向金库喊一句随机暗号 challenge,金库内部用硬件私钥在这句暗号下签一张带防伪水印的回执 report,你验证水印是真货,就确认这是一座真金库。
  1. 挑战量远程方生成随机数作为质询发给 TEE。
    challenge=random\text{challenge} = \text{random}
  2. 随机附加TEE 内部追加硬件随机数,防止攻击者重放旧报告。
    nonce=hw_random\text{nonce} = \text{hw\_random}
  3. 哈希绑定用密码学哈希将挑战与随机数绑定,形成唯一指纹。
    hash=H(challenge∥nonce)\text{hash} = H(\text{challenge} \parallel \text{nonce})
  4. 签名报告TEE 用信任根私钥对指纹签名,输出不可伪造的报告。
    report=Sign(Katt,hash)\text{report} = \text{Sign}(K_{\text{att}}, \text{hash})
  5. 验签比对验证方验签后确认 accept 为真才放行。
    accept=[Verify(report)]\text{accept} = [\text{Verify}(\text{report})]

硬件信任根基:装甲铸造厂的防伪标识

你也许会问:「怎么知道墙上的钢板不是纸糊的?」如果铸造厂在出厂前就动了手脚,金库再厚也是白搭。机密计算的「装甲厂」就是 CPU 厂商内建的硬件信任根(Root of Trust)——一块不可篡改的信任基石,类似金库钢板上的防伪序列号。

AMD 和 Intel 分别推出了 SEV-SNP 与 TDX 两套 CPU TEE 技术。SEV-SNP 让虚拟机对宿主机完全加密隔离,Intel TDX 则为虚拟机提供硬件级内存完整性保护。它们都是 CoCo 底层常用的可信执行环境,相当于两种不同标号的装甲钢板:SEV-SNP 擅长防「宿主窥探」,TDX 在内存篡改检测上更细。

信任链(Chain of Trust)描述的是「信任逐级传递」的过程:从信任根出发,BIOS、引导加载器、内核、容器运行时每一级都要先度量(计算哈希)再放行。任何一环被改动,后续级联的度量值全部变化,远程证明会立刻亮红灯。

有了「出厂防伪标识」还不够,GPU 的计算过程同样需要保护。下一节,我们把 NVIDIA H100 机密计算请进金库。

T=R0→measureM1→measureM2→measure⋯→measureMnT = R_0 \xrightarrow{\text{measure}} M_1 \xrightarrow{\text{measure}} M_2 \xrightarrow{\text{measure}} \cdots \xrightarrow{\text{measure}} M_n
信任链通俗版:金库大门开启时,门禁系统逐层检查「钢板编号 → 门锁序列号 → 报警器固件 → 摄像头固件」,任何一层编号对不上,整栋金库拒绝营业。
  1. 信任根CPU 内部或 TPM 中的固定代码起点,是最初的信任锚点。
    RoT=R0\text{RoT} = R_0
  2. 首个度量BootROM 对 BIOS 固件做哈希度量,记录其身份。
    M1=Hash(R0,BIOS)M_1 = \text{Hash}(R_0, \text{BIOS})
  3. 级联度量每一级组件启动前,先度量下一级组件的完整性。
    Mi=Hash(Mi−1,componenti)M_i = \text{Hash}(M_{i-1}, \text{component}_i)
  4. 终态判定整条链完成后形成最终可信运行环境 T。
    T=MnT = M_n

GPU 机密计算:金库里的防窥操作间

你可能会想:AI 计算不都在 GPU 上吗?如果金库只能锁住 CPU,数据一搬到 GPU 上就被看光,那金库还有什么用?这就像金库墙上开了一扇直通外部广场的窗口,所有财物都得从窗口递出去处理,处理过程暴露在所有人眼前。

NVIDIA H100 Confidential Computing(H100 CC)就是为了关上这扇窗。H100 GPU 自带一个「防窥操作间」:GPU 的内存数据在硬件层面加密,Host(CPU)侧无法直接读取显存;GPU 还有自己的远程证明能力,可以向外界证明「我是台真 H100,固件没有被改过,运行策略符合预期」。

在链路层,CoCo 与 H100 CC 组合后的典型流程是:CPU TEE 中启动机密虚拟机 → 容器内应用通过加密通道把任务交给 GPU → GPU 在 TEE 中解密输入、执行 CUDA 算子、重新加密输出 → Host 拿到的只是密文结果。整个过程中,显存加密和 PCIe 链路加密会带来带宽开销,需要量化评估。

有了防窥操作间,AI 推理就能「对着加密数据直接算」。但金库只解决了「不怕人看」,数据本身的「冗余暴露」也该尽量减少——这就轮到数据脱敏登场。

η=BcipherBplain(0<η≤1)\eta = \frac{B_{\text{cipher}}}{B_{\text{plain}}} \quad (0 < \eta \le 1)
带宽效率通俗版:金库里的防窥操作间装了磨砂玻璃,操作员能看清轮廓但看不清细节——代价是比全透明玻璃「暗」一点点。η 就是这扇磨砂玻璃的透光率。
  1. 明文带宽无加密时内存/PCIe 的有效带宽,作为性能基线。
    Bplain=baseline bandwidthB_{\text{plain}} = \text{baseline bandwidth}
  2. 密文带宽启用 CC 后可用于业务的有效带宽,因加解密周期而下降。
    Bcipher=encrypted bandwidthB_{\text{cipher}} = \text{encrypted bandwidth}
  3. 效率比密文带宽除以明文带宽,η 越接近 1 说明加密开销越小。
    η=BcipherBplain\eta = \frac{B_{\text{cipher}}}{B_{\text{plain}}}

数据脱敏技术:进门前的安检打码

即使整个大楼都是金库,柜台上的登记表也不能直接写身份证号。数据在进入计算之前,总有一些「前台环节」会被人看到。给敏感字段打上马赛克,就是数据脱敏。

脱敏分为静态与动态两种:静态脱敏在存储或导出的数据上执行不可逆变形;动态脱敏在查询应答时实时遮蔽。常用手法包括替换、掩码、泛化。格式保留加密(FPE)则是一种可逆但保格式的脱敏——比如 18 位身份证号脱敏后仍是 18 位数字,下游系统无需改造。

除了规则脱敏,还有更强的数学隐私保障——差分隐私。它在统计结果上注入受控噪声,让任何单条记录都无法从输出中被反推。公式中 ε 是隐私预算,ε 越小,注入噪声越大,隐私保护越强、数据效用越低,需要在安全与可用性之间取平衡。

脱敏是「进门前的安检」,机密容器是「金库里的保险箱」——两道门各管一段,纵深防御。接下来我们看看多个机构如何在不共享数据的前提下共同建模。

M(x)=f(x)+Lap(Δfε)M(x) = f(x) + \text{Lap}\left( \frac{\Delta f}{\varepsilon} \right)
差分隐私通俗版:你要统计金库里有多少客户逾期,但每个客户的还款记录都被「撒上一层盐」,你只能看到整体趋势,看不出任何一个人的具体金额。
  1. 查询结果数据库对查询 x 返回的统计值,例如平均值或计数。
    f(x)=statistical query resultf(x) = \text{statistical query result}
  2. 拉普拉斯噪声以 0 为中心、尺度为 λ 的随机扰动,负责「撒盐」。
    Lap(λ)=random noise\text{Lap}(\lambda) = \text{random noise}
  3. 全局敏感度删除任意一条记录后,查询结果的最大变化量,决定噪声大小。
    Δf=max⁡D,D′∥f(D)−f(D′)∥\Delta f = \max_{D, D'} \lVert f(D) - f(D') \rVert
  4. 隐私预算ε 越小,噪声尺度越大,单个个体被反推的概率越低。
    ε→0⇒noise→∞\varepsilon \rightarrow 0 \Rightarrow \text{noise} \rightarrow \infty

隐私计算融合:多分行联合风控

假设有 10 家分行,法律不允许你汇总所有分行的客户数据,但你希望一起训练一个反欺诈模型。每家只能在自己金库里练习,练完只上交「学习心得」,不能把客户名单带出门。

这正是联邦学习(Federated Learning)的场景:各个参与方下载共享模型,用本地数据训练,把梯度或权重上传,由服务器聚合后更新全局模型。但要注意,梯度本身也会泄露原始数据——研究者已经证明,从梯度可以反推训练样本的像素和文本。所以梯度上传前要做安全聚合和加噪。

安全聚合(Secure Aggregation)让服务器在「读不到每个参与方明文梯度」的前提下算出全局均值。结合 CoCo 机密容器,聚合器本身也运行在 TEE 中,梯度在进入聚合器之前是密文,聚合过程中也不落明文。这便是「密文域内计算」的典型落地。

这就是「数据可用不可见」的终态:10 家分行合练了一个模型,但每一家的客户数据从未离开自己的金库。最后,我们聊聊如何把这些技术真正建起来。

wˉ=1N∑i=1Nwi\bar{w} = \frac{1}{N} \sum_{i=1}^{N} w_i
安全聚合通俗版:10 家分行各自把「学习心得」锁进信封再交到总行,总行在保险柜里拆开、算出平均心得,然后原样销毁信封——没有任何一个办事员看到某家分行的原文。
  1. 参与方数量N 表示参与联邦聚合的机构总数。
    N=number of participantsN = \text{number of participants}
  2. 本地权重第 i 个参与方训练得到的模型更新,只在本地明文存在。
    wi=local model updatew_i = \text{local model update}
  3. 密文求和在机密容器内对密文形式的各参与方更新做累加。
    ∑i=1Nwi=cipher-domain accumulation\sum_{i=1}^{N} w_i = \text{cipher-domain accumulation}
  4. 全局均值除以 N 得到全局平均更新,用于模型同步和分发。
    wˉ=1N∑i=1Nwi\bar{w} = \frac{1}{N} \sum_{i=1}^{N} w_i

工程化实践:把金库真正建起来

图纸和安全规范都齐了,真正的挑战是施工:金库建在哪个位置、门禁卡怎么发、夜间巡逻怎么做、出事怎么追责。把 CoCo 与 H100 CC 落到生产环境,也有一堆类似的工程问题。

首先是集群部署。在 Kubernetes 上开启 CoCo,需要给工作节点配置 Kata 运行时和带 TEE 的节点池:CPU 必须支持 SEV-SNP 或 TDX,GPU 必须支持 H100 CC。其次是密钥管理这个命门:机密虚拟机的启动密钥、镜像解密密钥统一由 KBS(Key Broker Service)托管,只有通过远程证明的虚拟机才能领走密钥——相当于金库的门禁控制室。

性能优化要量化:内存加密对 Attention、GEMM 这类高带宽访存算子影响明显。在设计时,用性能开销公式评估损失,再决定哪些计算放进 TEE、哪些可以留在普通环境。合规审计方面,每次远程证明报告都应落盘保存,供安全团队和监管机构事后核验,形成完整证据链。

门禁卡统一发放(KMS)、巡逻记录完整留存(审计日志)、金库规格标准化(硬件信任根)——做到这三点,机密计算才算真正在工程上落地。

overhead=TCCTplain−1\text{overhead} = \frac{T_{\text{CC}}}{T_{\text{plain}}} - 1
性能开销通俗版:金库多了一重装甲门,每次进出都多花几秒。overhead 就是「多花的这几秒」占原本通过时间的比例,0.2 表示慢了两成。
  1. 基线耗时普通容器在同一任务上的耗时,作为性能比较基准。
    Tplain=baseline timeT_{\text{plain}} = \text{baseline time}
  2. 机密耗时启用 CoCo 和 H100 CC 后,同一任务的端到端耗时。
    TCC=confidential timeT_{\text{CC}} = \text{confidential time}
  3. 相对开销两者比值减 1,正数表示相对性能损失的比例。
    overhead=TCCTplain−1\text{overhead} = \frac{T_{\text{CC}}}{T_{\text{plain}}} - 1

AI 应用场景

多中心医疗影像联合训练

阶段:隐私保护数据准备与联合模型训练

解决的问题:三家医院的患者影像数据受法规约束不能出院,传统集中式训练无法获得跨院样本,模型泛化能力不足。

具体案例:三家三甲医院分别部署一个 CoCo 机密容器节点,节点配备 H100 CC GPU。每家医院在本地机密容器中训练影像分割模型,梯度经安全聚合加密后上传到中心机密聚合服务器;聚合服务器在 TEE 内完成全局模型更新,并施加差分隐私噪声。全程影像数据不出院门,模型性能逼近集中式训练水平。

金融反欺诈模型可信推理

阶段:AI 模型服务部署与推理

解决的问题:反欺诈模型是银行核心资产,用户特征是敏感数据。传统推理服务部署在云平台上,模型权重和用户特征对平台方完全透明,存在模型窃取和隐私泄露风险。

具体案例:一家消费金融公司把反欺诈模型部署在 H100 CC GPU 的机密容器中。每次风控请求进入容器后,特征在 GPU TEE 内完成推理,模型权重全程处于加密状态;推理结果附带远程证明报告,供审计部门核验「这次推理确实发生在可信硬件中」。

Python 演示

python71 行
# 模拟机密容器+安全聚合+差分隐私: 数据在密文域内完成联邦聚合import random  class SecureAggregator:    # 机密聚合服务器: 封装后只能整体解密聚合, 无法单条读取    def __init__(self):        self._sealed = False        self._cipher_list = []     def seal(self) -> None:        self._sealed = True     def _shift(self, value: float) -> float:        # 用固定偏移模拟同态加密(真实场景使用同态加密或秘密共享)        return value + 42.0     def _unshift(self, value: float) -> float:        return value - 42.0     def encrypt_local(self, plain: list) -> list:        if not self._sealed:            raise RuntimeError("容器未封装, 禁止写入密文")        return [self._shift(v) for v in plain]     def collect(self, cipher: list) -> None:        if not self._sealed:            raise RuntimeError("容器未封装, 拒绝接收密文")        self._cipher_list.append(cipher)     def aggregate(self) -> list:        if not self._cipher_list:            return []        n = len(self._cipher_list[0])        sums = [0.0] * n        for cipher in self._cipher_list:            for i in range(n):                sums[i] += self._unshift(cipher[i])        return [s / len(self._cipher_list) for s in sums]  def laplace_noise(scale: float) -> float:    # 差分隐私噪声: 简化Laplace采样    return random.uniform(-scale, scale)  def mask_name(name: str) -> str:    # 静态脱敏: 保留首尾, 中间打星号    if len(name) <= 2:        return "*" * len(name)    return name[0] + "*" * (len(name) - 2) + name[-1]  if __name__ == "__main__":    local_gradients = [        [1.2, 2.3, 0.8],        [2.1, 1.4, 1.7],        [0.9, 3.0, 2.2],    ]    sources = ["同济影像中心", "瑞金影像中心", "仁济影像中心"]    print("参与方脱敏:", [mask_name(s) for s in sources])     server = SecureAggregator()    server.seal()    for grad in local_gradients:        server.collect(server.encrypt_local(grad))     avg = server.aggregate()    noisy_avg = [v + laplace_noise(0.1) for v in avg]    print("密文聚合均值:", [round(v, 3) for v in avg])    print("差分隐私加噪:", [round(v, 3) for v in noisy_avg])
目的:演示机密容器中的「密文域聚合」——各参与方本地加密梯度,聚合服务器在封装状态下完成均值计算,再注入差分隐私噪声。
  1. server.seal()将聚合容器「封装」,封装后即使收到密文也拒绝明文操作,模拟机密容器的安全边界。
  2. server.encrypt_local(grad)各参与方在本地把明文梯度做加密映射,模拟同态加密的「密文可计算」性质。
  3. server.collect(...)聚合容器按收密文梯度,未封装状态直接拒绝,确保数据只进「金库」。
  4. server.aggregate()在容器内部统一解密累加再求均值,外部无法单条读取任何参与方的梯度。
  5. laplace_noise(0.1)对聚合结果施加差分隐私噪声,让攻击者无法反推任何单个参与方的贡献。
  6. mask_name(s)对参与方名称做静态脱敏,即使日志泄露也不会暴露机构全名。

常见误区

误区给数据盘加个 LUKS 或 BitLocker,数据在云上就安全了,这不就是机密容器吗?

正解磁盘加密保护的是「静止」数据,而机密容器保护的是「运行中」的数据——内存、寄存器、显存里的中间结果。操作系统管理员在读内存时,机密容器里看到的是密文,而磁盘加密并不能防止 root 用户读取进程内存。

为何常见:「加密」这个词给人直觉就是文件打不开,容易忽略计算过程这个更危险的暴露面。

误区在 BIOS 里打开 H100 CC 开关,模型照跑,速度还和以前一样快,安全免费送。

正解显存加密和 PCIe 链路加密有真实的带宽开销。访存密集的算子(Attention、GEMM)性能下降通常在 10%-20%,做容量规划和 SLA 时要把这个开销算进去。

为何常见:硬件厂商宣传「开启机密计算」时往往强调安全收益,性能损耗的数字则藏在文档深处。

误区数据都进金库了,再脱敏就是多此一举,直接拖慢流程。

正解纵深防御才是正确姿势。脱敏减少数据主体的暴露面,机密容器保护计算过程,联邦学习限制数据移动范围。三者解决的是不同环节的风险,叠加使用而非互斥替代。

为何常见:安全技术容易被宣传成「银弹」,让人忽略多层防线的作用。

误区远程证明不就是服务器给浏览器发一个 TLS 证书吗?和网银一样。

正解TLS 证书只证明「我是这个域名」,远程证明覆盖的是整个运行栈:硬件型号、信任根、固件、引导加载器、内核、容器运行时。它证明的是「我不仅是你找的那个程序,而且我运行在未被篡改的真实硬件上」。

为何常见:两者都带「证明」和「签名」,很容易混为一谈,但信任边界完全不同。

误区联邦学习中原始数据根本不出本地,梯度是安全的,不用上机密容器。

正解梯度攻击已经被多次验证——从梯度可以重建训练图片、文本甚至医疗记录。聚合服务器如果不是可信环境,可以直接读取明文梯度。因此聚合环节要放进 TEE,或用安全聚合协议让服务器「看了也白看」。

为何常见:直觉认为「看不到原始数据就安全」,忽略了梯度这一中间产物的泄露风险。

面试题

Q1. Confidential Containers(CoCo)的核心目标是什么?

单选题 · easy

  • A.让容器启动速度更快更省资源
  • B.为容器提供运行态机密隔离保护← 正确答案
  • C.替代 Kubernetes 的调度和编排
  • D.将容器镜像自动转成虚拟机镜像

答案:B。CoCo 的核心是把机密计算能力带给容器:容器跑在加密虚拟机中,运行态数据受硬件 TEE 保护。A 是性能目标,C 是编排层职责,D 只是实现手段的一环而非目标本身。

Q2. 以下哪个 CPU 技术被用于构建机密容器的可信执行环境?

单选题 · mid

  • A.Intel VT-x 虚拟化扩展指令
  • B.AMD SEV-SNP 加密虚拟机隔离← 正确答案
  • C.ARM TrustZone 的普通世界
  • D.NVIDIA CUDA 并行计算框架

答案:B。AMD SEV-SNP 提供虚拟机级加密隔离,是 CoCo 常用的 TEE 方案。VT-x 是虚拟化基础而非机密隔离;TrustZone 普通世界是非安全域;CUDA 是 GPU 编程框架,与 CPU TEE 是两回事。

Q3. H100 机密计算(H100 CC)可以提供哪些能力?

多选题 · mid

  • A.GPU 内存加密,Host 无法直接读取显存← 正确答案
  • B.GPU 固件与配置的远程证明← 正确答案
  • C.将任意 CUDA 程序无条件提升算力
  • D.GPU 与 CPU TEE 之间建立加密链路← 正确答案

答案:ABD。H100 CC 通过 GPU TEE 实现显存加密、固件远程证明和安全通信。它不会提升算力,反而可能带来少量性能开销,C 的描述与硬件事实相反。

Q4. 远程证明(Remote Attestation)解决的核心问题是什么?

单选题 · easy

  • A.保证网络传输时不丢包不失序
  • B.向远程方证明运行环境可信且未被篡改← 正确答案
  • C.加速模型在 GPU 上的推理速度
  • D.替代传统防火墙的访问控制能力

答案:B。远程证明回答的是「你面前这个金库是不是真金库」——通过签名报告证明硬件、固件和软件栈都符合预期。A 是网络协议问题,C 是性能问题,D 是边界防护问题。

Q5. 差分隐私中的隐私预算 ε 越大,说明什么?

单选题 · mid

  • A.注入噪声越大,隐私保护越强
  • B.注入噪声越小,隐私保护越弱← 正确答案
  • C.模型训练轮数越多,精度越高
  • D.参与联邦学习的机构数量越多

答案:B。ε 是隐私预算上限,ε 越大意味着允许的隐私损失越多,注入噪声越小。A 把方向反了;C 和 D 与 ε 没有直接关系。实际中 ε 通常在 0.1 到 10 之间折中。

Q6. 下列哪些属于数据脱敏的常见方法?

多选题 · mid

  • A.掩码隐藏敏感字段← 正确答案
  • B.泛化到统计级别← 正确答案
  • C.格式保留加密FPE← 正确答案
  • D.永久删除数据文件

答案:ABC。掩码、泛化和 FPE 都是保留数据可用性的脱敏手法。删除属于数据销毁,不满足「脱敏后仍可用于开发测试」的核心诉求。

Q7. 安全聚合(Secure Aggregation)解决的主要问题是什么?

单选题 · mid

  • A.防止全局模型过拟合训练数据
  • B.让服务器看不到明文梯度仍能完成聚合← 正确答案
  • C.压缩模型体积减少通信带宽
  • D.通过剪枝加速模型推理速度

答案:B。安全聚合让聚合服务器在密文域内计算全局均值,保护各参与方的梯度隐私。A 是模型训练问题,C 是压缩问题,D 是推理优化问题,与安全聚合无直接关系。

Q8. 在 CoCo 架构中,KBS(Key Broker Service)的核心职责是什么?

单选题 · hard

  • A.保存容器运行时的全部日志信息
  • B.只有远程证明通过才向机密 VM 发放密钥← 正确答案
  • C.负责将用户请求转发到不同容器实例
  • D.监控 GPU 利用率并绘制性能曲线

答案:B。KBS 是密钥代管服务,充当「金库门禁控制室」:它验证机密 VM 的远程证明报告,验证通过才发放镜像解密密钥和启动密钥。A、C、D 分别是日志、网关和监控的职责。

Q9. 关于可信计算信任链(Chain of Trust),下列说法正确的有哪些?

多选题 · extreme

  • A.信任根通常位于 CPU 内部或 TPM 芯片中← 正确答案
  • B.每一步度量结果都存放在公共云对象存储上
  • C.任意一环度量不符,远程证明就会失败← 正确答案
  • D.信任链可以被软件更新绕过硬件信任根

答案:AC。信任根是物理不可篡改的起点;度量链逐级验证,任一环被篡改都会导致报告异常。度量结果由 TEE/TPM 硬件存证,不存公共存储;信任根的设计目标就是不可被软件绕过。

Q10. 内存加密带来的性能开销主要在哪类工作负载上最明显?

单选题 · hard

  • A.纯 CPU 整数逻辑运算
  • B.高带宽访存密集的张量计算← 正确答案
  • C.大文件磁盘顺序读写
  • D.网络小包转发处理

答案:B。内存加密在每次内存访问路径上增加加解密周期,访存越密集,加密占比越高。Attention、GEMM 等算子因此开销最明显。磁盘和网络有各自的加密层,与内存加密不在同一层面。