当前位置:首页 > 科研成果库

内存里的“黑屋子”:机密计算真能挡住云厂商吗?

2026-10-28 17:56:10小研科研成果库13
凌晨一点,一个做医疗 SaaS 的朋友给我打电话。嗓子哑的。他说客户审计问:磁盘加密了,备份也加密了,你们运维还能不能看到我数据库里的病人信息?他愣了一下,说理论上不能。对方追问:跑起来的时候呢?内存里呢?他卡住了。 这问题不绕。数据静止时加密,传输时加密,到了内存里要参与计算,CPU 得看见明文。宿主机管理员、云平台运维、恶意驱动、内核漏洞,都可能伸手。机密计算就是冲这个“跑起来的时候”来的。说人话:给数据在 CPU 里搭一间黑屋子,外面的人连门缝都摸不着。 但别急着吹。它挡得住一些东西,挡不住另一些。下面我按工程现场拆。

先别急着信“加密”,数据跑起来时是裸的

磁盘加密像把文件锁进保险柜。可你要读文件,得拿出来摊桌上。内存就是那张桌子。多租户云上,桌子可能不是你的。虚拟机监控器 Hypervisor、宿主机内核、带外管理口、内存转储,都是现实攻击面。传统做法是权限、审计、隔离,但信任链到头来落在云厂商的流程上。机密计算换了个思路:不信任外面,把信任压进 CPU。 TEE,可信执行环境。CPU 划出一块加密内存,叫安全区、飞地、机密虚拟机,不同厂商叫法不一样。数据进去是密文,CPU 内部解密执行,出去再加密。内存加密引擎管密钥,操作系统和 Hypervisor 看到的是乱码。注意,是“看到的内存内容是乱码”,不是“访问不到”。访问控制还在,但内容护住了。 类比:你住酒店,保险箱在房间。机密计算是把保险箱焊在 CPU 里,服务员能推门进来,但打不开箱子。钥匙在 CPU 里,不在老板手里。 机密计算TEE内存加密架构示意图机密计算TEE内存加密架构示意图 这里有个关键:CPU 厂商成了新信任锚。你信 Intel、AMD、ARM 的芯片,还是信云厂商?很多时候没得选。但至少信任边界从“一大片软件栈”缩到“芯片+固件+证明链”。缩得够不够小,得看场景。

CPU 里搭黑屋子,钥匙不给云厂商

机制不复杂,拆开就三块:隔离、加密、证明。 隔离:SGX 那种应用级飞地,把一小段代码和数据圈进去;TDX、SEV-SNP、CCA 更像机密虚拟机,整台 VM 内存加密。前者粒度细,改造多;后者迁移友好,适合把老系统往云上搬。我一般先问:你是想保护一个密钥运算,还是保护整个数据库?答案不同,选型差很远。 加密:内存加密引擎按页加密。CPU 缓存里是明文,出了缓存就是密文。攻击者冷启动、物理拆内存、Hypervisor dump,拿到的是密文。但侧信道还在,缓存计时、页表访问模式、功耗,这些不直接读明文,却能猜。别把“加密”当“隐身”。 证明:远程证明。客户端连上来,先让 TEE 生成一份“体检报告”,里面有代码哈希、配置、平台状态,CPU 私钥签名。你验签,确认跑的是你认可的那版代码。没有证明,机密计算就是个黑盒。有了证明,才敢把密钥交进去。 云服务器机密计算远程证明流程图云服务器机密计算远程证明流程图 我见过一个坑:证明服务配好了,策略没写死。开发图省事,只验“是不是 TEE”,不验“代码版本”。结果旧版本有漏洞也能过。证明不是装个 SDK 就完事,策略得跟发布流水线绑。代码一变更,哈希变,白名单得更新。运维嫌烦?烦也得做,不然门是铁的,锁是纸的。

能干啥:联合风控、医疗协作、模型推理

金融联合风控是典型。两家机构谁也不愿把原始客户名单给对方,但又想算交集、跑评分卡。把求交和评分逻辑放进 TEE,数据各自加密传进去,里面算完只出结果。外面看不见中间数据。听着美,落地时要注意:输入输出仍可能泄露信息,差分隐私该加还得加。TEE 不是隐私计算的免死金牌。 医疗协作也类似。医院 A 有影像,医院 B 有标注,想联合训练。TEE 里跑训练,模型参数出去,原始影像不出。但 GPU 怎么办?现在 GPU 机密计算在补课,很多推理还是 CPU 跑,性能疼。训练大模型?别硬上,先算账。 还有密钥管理。云上 KMS 把主密钥放进 TEE,管理员也导不出。这个场景很实在,改动小,收益直接。再比如区块链节点、广告归因、跨机构反诈。共同点:多方互不信任,但需要一个共同计算环境。 金融联合风控机密计算数据流场景图金融联合风控机密计算数据流场景图 说个反常识的:机密计算好用的姿势,不是把全部业务搬进去,而是把敏感的那一小段搬进去。比如解密密钥、特征拼接、评分函数。范围越小,攻击面越小,性能开销越可控。整库上 TEE?可以,但你得接受内存加密、远程证明、运维工具链的折腾。老系统还有一堆依赖,跑起来未必顺。

别把它当万能保险柜

别把它当万能保险柜别把它当万能保险柜 常见误解一:上了机密计算,云厂商就啥也看不到了。错。它看不到内存明文,但能看到流量、调用时间、资源占用、你什么时候扩容。元数据也是数据。访问模式侧信道还能猜。别把威胁模型写成“防一切”。 误解二:性能没损耗。有。内存加密有开销,飞地进出有切换成本,证明有网络往返。数据库这种内存密集型的,开销感知明显。具体多少看负载,我不给拍脑袋数字。压测,必须压测。 误解三:TEE 里就绝对安全。侧信道、漏洞、供应链、固件更新,哪个都能咬一口。SGX 这些年爆过不少问题,别的架构也不是铁板。机密计算是把攻击面挪到芯片和微码,不是消灭攻击面。 误解四:I/O 也自动加密。没有。数据从网卡进来、从磁盘读进来,进 TEE 之前那段路要自己设计。TLS、磁盘加密、密钥注入,一个不能少。TEE 保护的是“计算中”的内存,不是全链路。 还有运维现实:监控探针进不去,日志怎么采?性能剖析怎么做?热迁移支持吗?证明服务挂了怎么办?这些破事比密码学挺磨人。我一般建议先做 POC,挑一个密钥管理或联合计算的小场景,跑通证明链和发布流程,再谈规模化。

我自己的判断

机密计算不是新概念,但这几年才真正能工程化。原因不神秘:CPU 厂商把接口做顺了,云厂商开始卖实例,开源工具链也多了。它解决的是一个很具体的痛点——数据在内存里参与计算时,谁来保护。答案从“相信平台”变成“相信芯片+可验证的代码”。信任没消失,只是搬家了。 搬家有代价。你要管证明策略,要改发布流程,要接受性能折损,要重新画威胁模型。值不值?看数据敏感度,看合规压力,看多方协作的刚需。要是只是普通 Web 业务,磁盘加密+权限治理+审计,先把这些做扎实。别为了时髦上 TEE,到头来被运维追着骂。 话说回来,下次再有人问你“云上内存谁看得见”,你可以反问他:你信谁?信云厂商的流程,还是信 CPU 里那间黑屋子?选哪个都行,但别假装数据跑起来时还是加密的。那不是加密,那是许愿。