19. 可信账本
19.1. 背景
在大数据和人工智能时代,数据的广泛链接和应用导致隐私问题日益凸显。数据流通可以产生巨大的价值,而阻碍数据流通的主要因素就是数据隐私问题。保护数据安全既是对像百度这样的科技公司的要求,也是行业的底线。
为实现数据流通过程中的隐私保护,超级链可信账本采用了Intel SGX和同态加密等多种技术,实现了数据隐私计算、数据权限管理和数据存证溯源功能。
19.2. 名词解释
可信账本:基于百度超级链和Mesatee技术,支持合约数据加密存储及链上密文运算等功能。
TEE:可信执行环境(TEE)是CPU的安全区域,它可以保护在其内部加载的代码和数据的机密性与完整性。
SGX:Software Guard Extensions(SGX)是Intel推出的基于Intel CPU的硬件安全机制。
Mesatee:Memory Safe TEE(Mesatee)是百度基于Intel SGX设计的内存安全的可信安全计算服务框架。
19.3. 架构设计
下图是可信账本的系统架构设计
TEESDK是与TEE服务请求的入口,将编译为动态链接库被超级链调用,实现链上的隐私计算。
可信账本目前支持数据加密存储、数据权限管理、秘钥托管和基本的密文计算功能,此部分代码暂未开源。
19.4. 重要接口和数据结构
19.4.1. TEESDK
// 提交任务到TEE服务,返回计算结果
func (s *TEEClient) Submit(method string, cipher string) (string, error)
19.4.2. Xuperchain
// contractSDK
// TEE隐私计算接口,供合约调用
bool binary_ops(const std::string op, const Operand &left_op,
const Operand &right_op, std::map<std::string, std::string> *result)
bool authorize(const AuthInfo &auth, std::map<std::string, std::string> *result)
// contract/teevm
// 解析合约调用为可信账本调用
func (tf *TrustFunctionResolver) ResolveFunc(module, name string) (interface{}, bool)
// 调用TEESDK插件执行链上隐私计算
func (tf *TrustFunctionResolver) tfcall(ctx exec.Context, inptr, inlen,
outpptr, outlenptr uint32) uint32
// 可信账本配置,要设置TEESDK插件地址及相关配置地址
type TEEConfig struct {
Enable bool `yaml:"enable"` // enable: on or off to enable private ledger
PluginPath string `yaml:"pluginPath"` // path to dynamic library
ConfigPath string `yaml:"configPath"` // config path for the dynamic
}
19.5. 应用场景
19.5.1. 秘钥托管
利用TEE托管私钥,保证私钥无法被外部访问。同时支持利用SGX的sealing技术进行私钥的持久化存储。
19.5.2. 链上隐私计算
可信账本可以实现链上密文存储和计算。例如, 姚氏百万富翁问题, 安全ID求交等。在政务数据共享领域,经常有数据安全交换的需求,希望实现所谓的”可以分享数据,但是不能篡改数据“,本质上就是如何保证数据所有权的前提下,挖掘数据的价值,放心地让其他方使用自身数据;
19.5.3. 可信随机数
利用TEE可以生成可信随机数,联盟链节点之间可利用可信随机数进行共识。