你如何知道一个下载文件没有损坏,软件更新没有被替换,或者云计算机真的在运行你信任的代码?答案是验证 – 证明数据和软件是真实和未更改的方法。我们将从像文件校验和这样的日常工具开始,然后转向可信执行环境(TEEs),这是一个硬件支持的敏感代码和数据的“安全空间”。在这个过程中,你将看到远程认证让你信任你无法控制的计算机,以及开发人员如何将开源代码与实际运行的代码相连接。我们将使用简单的比喻 – 封装的包裹和验证的快递员 – 来使每一步清晰明了。
为什么验证很重要
日常比喻:封装的包裹。
当包裹到达时,你会检查两件事:防篡改封条和跟踪号码。如果封条完好无损,跟踪号码与卖家记录相符,你就会信任包裹的内容。在计算中,验证起着相同的作用:它告诉你数据或代码是否从发送方到接收方保持不变。
哈希:完整性的数字指纹
一个密码哈希函数接受任何输入(文件、消息或程序)并产生一个称为哈希或校验和的固定长度输出。把它当作包裹的跟踪号码或数字指纹。
良好的密码哈希具有四个关键属性:
-
确定性:相同的输入始终产生相同的哈希。
-
单向性:你无法从哈希中恢复输入。
-
雪崩效应:微小的更改会使哈希看起来完全不同。
-
抗碰撞:找到两个具有相同哈希的不同输入是不可行的。
现代选择包括SHA-256和SHA-512。较旧的哈希函数如MD5和SHA-1在安全性上较弱,但仍然有助于捕捉意外复制文件时的损坏。典型的工作流程:项目发布文件和其SHA-256。下载后,您在本地计算哈希值。如果匹配,文件很可能完好无损 – 就像匹配的跟踪号码。
什么是TEE?
受信任执行环境(TEE)是处理器内部的安全隔离区域。将其视为建筑物内部的锁定的保险箱。敏感代码在内部运行;敏感数据在内部处理。即使建筑物的其余部分(操作系统或云管理员)喧闹或不受信任,保险箱仍然保护秘密。
硬件执行三个承诺:
-
数据保密性:外部人员无法在使用时读取数据。
-
数据完整性:外部人员无法在使用时更改数据。
-
代码完整性:外部人员无法更改在TEE中运行的代码。
这使得TEE在保密云计算、保护隐私的AI和需要来自您不拥有的机器的结果的场景中非常有用。
证明:“在交出秘密之前出示您的身份证明”
日常隐喻:经过验证的快递员。
密封的盒子(完整性)不够 – 您还想知道快递员是真实的。真正的快递员会展示总部发放的徽章,并可能要求您确认一次性取件码。只有在这之后您才会交出有价值的物品。
远程认证 在远距离上的工作方式相同:
-
状态测量(包裹细节): TEE 创建一个报告,其中包含测量——应用程序代码、配置以及TEE的硬件/固件版本的哈希值。
-
加密签名(官方徽章): TEE 使用硬件根私钥对此报告进行签名,该私钥已融入芯片中——就像制造商颁发的徽章。
-
交付(交出ID): 签名的报告发送给远程验证者。
-
验证(呼叫总部): 验证者通过一个可信链检查签名,追溯到芯片制造商,并将报告的哈希值与已知的良好值进行比较。还包括一个随机数(随机挑战)- 就像今天的唯一提取代码一样,以防止重播。
-
安全通道(步入内部私下交谈): 如果所有检查都通过,验证者将直接打开到TEE内部应用程序的加密线路,并可以安全地发送机密信息。
现实世界示例: 在医院将患者数据上传到云AI之前,通过认证验证确保在真正的TEE内部运行的是精确的经过审计的模型二进制文件。只有在这种情况下才会共享数据。
关闭“验证差距”:从源到运行时
由经过验证的快递员送达的密封盒仍然存在一个问题:谁打包了盒子,他们是否使用了公共配方? 在软件中,认证证明了正在运行的哪个二进制文件,而不是它是否是您信任的公共、经过审计的源代码构建的。这就是验证差距。
端到端链(配方、厨房、封条):
-
源代码验证(公开的配方):源代码开放供审查和审核。
-
构建过程完整性(可信赖的厨房):
-
可复现构建:任何人都可以按照配方制作出相同的罐子(相同的二进制哈希)。
-
经证实的构建:如果复现性困难,可以在受监控的厨房(TEE)内进行烹饪,签署一个将配方版本(提交)与成品罐标签(二进制哈希)绑定的日志。
-
-
运行时证明(快递员+封条):证明经过验证的罐子正是当前正在交付和打开的内容。
通过这些环节的关联,用户可以高度确信“我们审查的代码就是处理我们数据的代码。”
汇总
验证从使用SHA-256进行快速文件检查扩展到TEE中硬件支持的证明。哈希是跟踪号码。TEE是安全室。证明是快递员展示徽章和新的取件码。而配方到罐子的链接(可复现或经证实的构建)将开源和运行软件之间的联系闭合。这些层次共同将“希望一切顺利”转变为“我们可以证明它。”
要点
信任应该是通过努力赢得的,而非假定的。从文件完整性的哈希开始。使用TEE保护正在使用的代码和数据。在与云共享秘密之前要求远程证明。并坚持要求从源代码→构建→运行时的可验证链接来弥合差距。
反思性问题
-
在您当前的工作流程中,哪些地方可以通过简单的哈希检查来防止错误或攻击?
-
您团队中哪些任务最适合在 TEE 中运行?
-
您能将源代码链接到部署的二进制文件(可重现或证实的构建)吗?
-
您将使用哪些“已知良好”的参考值和策略来验证认证报告?
please login with NEAR
Updated: 30 9 月, 2025