【TEE从入门到精通及实战】07 数据密封与安全导出:如何让Enclave的结果安全“出门”
开篇故事
上个月,我帮一家金融科技公司做SGX应用审计。他们的业务逻辑是这样的:Enclave内解密用户输入的敏感数据,进行风险评估,然后把评估结果写回磁盘。代码跑得很溜,测试也全过了。
但当我问“结果数据怎么存”时,工程师得意地打开代码给我看——他直接把Enclave内的明文结果通过ocall传出来,然后用fwrite写进一个普通文件。
我问他:“那攻击者如果在你写入磁盘的瞬间,通过ptrace或者直接读内存,能拿到什么?”他愣住了。三秒后,他骂了一句脏话。
这就是今天要讲的核心问题:Enclave内的数据在“出门”的那一刻,如何保证安全?
痛点拆解
常见错误:裸传明文
很多初学者(甚至一些老手)会写出这样的代码:
# 伪代码演示错误做法defprocess_in_enclave(sensitive_input):