数据流加密形式
数据流加密一般采用SDK软件的形式,比如说,加密文件库函数会借助软件对要传出到enclave外的文件进行加密 。然而,在代码开发过程中,有开发者会把enclave内的内容以明文形式,通过寄存器或者store enclave外地址的方式传出去,这是他们根据自定义需求的做法 。这展现了加密方式的多样以及开发者操作的自主选择。
Quote Report机制
Quote report 是由 quote enclave(QE)生成的,QE 会利用本地 CPU 里的密钥对 local report 进行验证,验证之后会重新签名,QE 经过了 Intel 的签名,因此它是可信的。它使用经过英特尔签名的PvE(Provisioning Enclave),与英特尔公司服务器协商来生成密钥,之后对密钥重新签名,因此密钥具备安全保障,在一些依赖英特尔技术的安全项目里会运用这个机制。
Enclave版本问题
这里说的是安全版本(sv),随着飞地(enclave)不断迭代开发,其安全版本的数量持续增加,要确保具有高安全版本的飞地能够读取旧的、低安全版本飞地密封的数据,在实际项目进行更新升级时,这是一个必须要考虑的兼容性问题。
EPCM寻址情况
epcm进行寻址操作,tokenim钱包官网下载会记录下符合要求的虚拟地址。若虚拟地址空间(ELRANGE)比物理地址空间EPC大, imtoken钱包官网下载就会被swap到磁盘。这时,epcm的虚拟地址对应成了难题。在处理大规模数据存储和计算时,这个问题会突显出来。
EPC Evict过程
由于EPC大小存在限制,部分映射会从EPC中被移除,这个过程称作epc evict。该过程涉及ELD、EWB Ring0指令,由操作系统负责把内存存到普通内存中(使用另外的加密密钥),并从epcm中删除相应记录。这就如同内存不足时电脑会自动清理部分数据并存储到其他地方一样 。
平台验证举例
以平台a和平台b为例,它们的CPU均为i5 - 6700u,并且各有自己的私钥。Intel服务器有公钥,它能够验证quote签名所使用的epid私钥是否标识i5 - 6700u,然而却不清楚到底是平台a还是平台b。在多设备安全验证的场景中,会遇到类似难以明确具体设备的问题。
哈希计算方法
在第一个问题中,通常先进行拼接操作,之后再做sha256,这是因为hash有输入长度任意、输出长度固定的特点,只是具体情况要依据Intel硬件的实现方式来判断,并且其代码没有开源。在不同的加密计算场景下,选择合适的哈希算法非常重要。
$ sudo cat /proc/iomem | grep INT0E0C 80200000-85ffffff : INT0E0C:00
EPC限制差异
理论上,epc 能够达到无限大,可是 sgx1 借助 mee 里的哈希树来保证 epc 的完整性,一旦 epc 变大,开销也会跟着增大,而 sgx2 不提供完整性保护,理论上没有限制,在不同性能需求的安全系统中,这种情形会对技术方案的选择造成影响。
EPC抽象概念
$ cpuid -1|| grep Enclave MaxEnclaveSize_Not64 (log2) = 0x1f (31) MaxEnclaveSize_64 (log2) = 0x24 (36)
epc是个抽象概念,在常见的ddr4内存中,module specifical registers会指定一块区域作为epc,mmu及其prmrr模块能知晓这个概念,它如同虚拟出的特定存储区域,在内存管理方面作用重大。
大家会思考,这些加密和安全机制,在未来科技发展进程里,会有怎样的变化?不妨为本文点赞,将本文分享出去,接着在评论区发表自己的看法。
$ cpuid -1 | grep Enclave MaxEnclaveSize_Not64 (log2) = 0x1f (31) MaxEnclaveSize_64 (log2) = 0x38 (56)