失效
一种基于SGX的云平台审计日志保护方法
詹静、夏晓晴、赵勇、韩瑾、张茜
北京工业大学
摘要
本发明公开了一种基于SGX的云平台审计日志保护方法,在假设云节点产生的原始审计日志真实可信的基础上,保证第三方使用的云平台审计日志真实有效。在审计日志从云节点传出前,对参与审计日志传输的云节点和第三方都进行身份验证和基于远程证明的状态可信性证明,从而保证参与审计日志传输节点的身份和状态都是可信的。本发明实现了所有产生日志的云节点及进行日志处理的第三方之间的身份验证和状态证明,从而保证所有参与云审计日志处理节点的身份不可冒充,日志处理涉及的计算环境可信。本发明基于enclave实现了审计日志处理程序关键代码的安全隔离执行,能够防止操作系统、VMM和BIOS等特权软件的攻击。
1.一种基于SGX的云平台审计日志保护方法,其特征在于:在假设云节点产生的原始审计日志真实可信的基础上,保证第三方使用的云平台审计日志真实有效;在审计日志从云节点传出前,对参与审计日志传输的云节点和第三方都进行身份验证和基于远程证明的状态可信性证明,从而保证参与审计日志传输节点的身份和状态都是可信的;同时将适用于双方安全通信的Diffie-Hellman密钥交换算法改进为适用于云环境多方安全通信的多方密钥协商算法,降低了所需的通信密钥数量和加解密操作次数,从而提高了通信过程中对审计日志的机密性保护效率;基于SGX单调计数器及seal功能在第三方实现了基于块的审计日志机密性和完整性保护,能够防止日志块替换攻击;最后,本方法都在SGX的enclave中实现,能够有效防止特权软件的攻击;具体实现步骤如下:步骤1节点间的远程证明步骤1.1基于SGX的节点身份密钥安全存储在节点向CA申请证书时,需产生一对公私密钥PK cert 和SK cert ;PK cert 用来向CA申请证书,SK cert 用来代表节点的身份,同时可在审计日志的传输阶段作为审计日志的签名密钥;为防止SK cert 被窃取,本方法提出利用SGX的seal机制对SK cert 进行密封保护;Intel SGX支持两种seal方案,一种是基于enclave身份的seal;此时通过SGX的EGETKEY指令把enclave的度量值MRENCLAVE作为密钥;任何影响到enclave度量的变化都会产生不同的密钥;这导致每一个enclave都有一个不同的密钥SealKey,使不同enclave完全隔离起来;另外一种是基于seal标识的seal,此时的密钥是通过EGETKEY指令基于MRSIGNER的值和enclave的版本生成的;MRSIGNER反应的是签署enclave证书的Sealing Authority的身份;该方案的优点是允许seal数据在不同版本的enclave间进行迁移;SealingAuthority能够签署多个enclave,并允许其获取到相同的SealKey,这些enclave就能够访问其他enclave的seal数据;本方法采用基于enclave身份的seal机制对SK cert 进行密封保护,能够保证该密钥不被其它平台或本平台内的特权软件攻击;在云平台内节点和第三方都收到CA颁发的公钥证书后,才能进行节点间的远程证明操作;步骤1.2基于SGX的节点间远程证明所有的证明程序均部署在SGX的enclave内,以确保证明程序本身的安全性;在本方法中,只要节点间进行通信,就首先要进行远程证明;云节点和云管理节点间的远程证明中:首先云节点和云管理节点进行公钥证书的交换;然后云节点通过调用SGX的度量机制对应用程序enclave进行度量并向硬件请求生成一个REPORT;REPORT由处于同一平台上的Quoting Enclave进行验证,Quoting Enclave专门用于远程证明的enclave;验证通过后,Quoting Enclave将REPORT封装成一种能代表enclave和平台状态信息的QUOTE结构,最后调用签名密钥EPID对QUOTE结构进行签名并发送给云管理节点;其中EPID密钥不仅代表平台还代表着底层硬件的可信度,并且绑定处理器固件的版本,当Enclave系统运行时,只有Quoting Enclave才能访问EPID密钥;云管理节点收到QUOTE后,对QUOTE进行验证并决定是否信任云节点;云节点也通过步骤1.2的方法对云管理节点进行验证;步骤2审计日志传输密钥的协商采用组密钥协商的方式在云节点、云管理节点和第三方之间协商出一个共享的加/解密密钥;云管理节点在收到云节点发送过来的审计日志密文信息后,不对其进行解密,相关处理由第三方负责;本方法采用组密钥协商方式完成审计日志传输过程中云节点、云管理节点和第三方之间的密钥协商;拥有n个组成员的组通过如下步骤协商组密钥k:所有组员事先选定q和a,然后各自选定一个随机数x i ,并计算幂值 第1个组员将集合 传递给第2个组员;第2个组员生成新的 传递给第3个组员;以此类推,s k 中含有从 到 的累乘和从 到 中任选k-1个幂值的累乘;第n个即最后一个成员收到s n-1 并计算s n ,然后将s n 用组播发送给所有其他节点.这样,所有节点都计算 步骤3审计日志的安全传输步骤3.1云节点到云管理节点的审计日志安全传输完成步骤2中的远程证明及密钥协商过程后,云节点调用enclave内的对称加密算法,该算法由云节点、云管理节点及第三方事先协商确定,并使用协商好的密钥k对审计日志进行加密,然后使用云节点私钥SK cert 对审计日志密文信息、节点ID进行签名;其中节点ID用来唯一标识云节点,便于第三方确认审计日志的来源;最后云节点将上述信息发送给云管理节点;步骤3.2云管理节点到第三方的审计日志安全传输云管理节点将自身产生的审计日志发送给第三方,传输过程同步骤3.1;同时第三方还将收到的云节点审计日志也发送给第三方,此时云管理节点起到一个中转的作用;步骤3.3第三方恢复审计日志的明文信息第三方在收到审计日志消息后,先使用云节点/云管理节点的公钥证书对签名进行验证;验证通过后,使用协商密钥k对审计日志进行解密,得到审计日志的明文信息及节点ID;步骤4基于SGX的审计日志安全存储步骤4.1基于SGX的审计日志加密存储在完成审计日志的明文获取后,第三方对审计日志进行分组分块加密;基于SGX enclave身份的密封方案,即不同的enclave具有不同的密封密钥SealKey;采用分组分块的方式对审计日志进行加密,每组包含固定数量的审计日志块数,每块包含固定数量的审计日志条数;每一个审计日志块都有一个唯一标识符BID进行标识;具体的审计日志块加密密钥生成方案如附图所示;将块标识符BID、审计日志的hash值、云节点ID与审计日志一同加密;该方法能保证存储在第三方的审计日志只能由第三方平台内特定的enclave进行解密,从而保证审计日志的机密性;步骤4.2基于SGX的审计日志解密及完整性验证在解密的过程中加入了完整性验证和日志块替换攻击检测操作;第三方选择两种方式对审计日志块进行解密:第一种是按组解密,此时第三方需对该组内的所有审计日志块按照顺序依次进行解密,如果审计日志块标识符BID不是单调递增的,则说明可能存在恶意的日志块替换攻击;停止进一步操作并返回错误提示;第二种是按块解密,即第三方只想解密某一特定的审计日志块,此时需判断解密后得到的审计日志块标识符BID与第三方输入的BID是否相等;如果不相等,则说明可能存在恶意的日志块替换攻击;停止进一步操作并返回错误提示;不管是哪种解密方式,第三方都需重新计算审计日志的hash值,并与解密得到的原始hash值进行比较;从而确定审计日志是否遭到篡改,审计日志的完整性是否遭到破坏。
2.根据权利要求1所述的一种基于SGX的云平台审计日志保护方法,其特征在于:为了保证审计日志的传输安全及相关密钥的存储安全,在第三方和云平台的每个节点上都部署支持Intel SGX的硬件环境,共包含四个阶段的内容:第一个阶段为节点间的远程证明;第一个阶段是进行节点间的身份认证及状态的可信性证明,只要节点间进行通信,就需要进行远程证明;第二个阶段为通信节点间的密钥协商;采用组密钥协商的方式,在云节点、云管理节点和第三方之间协商出一个对称的审计日志加/解密密钥,从而提高日志的加/解密效率;第三个阶段为审计日志的安全传输;第三个阶段是使用第二阶段协商出的密钥,并调用统一的加密算法对云平台审计日志进行安全传输;第三个阶段包含三个部分,首先是从云节点到云管理节点的审计日志安全传输,其次是云管理节点到第三方的审计日志加密传输,最后是第三方对收到的审计日志密文信息进行明文恢复;第四个阶段为审计日志在第三方的安全存储;第四个阶段阶段是实现审计日志在第三方的加密存储、解密和完整性验证以及审计日志块替换攻击检测功能;本方法不仅能保证审计日志的机密性和完整性,还能保证审计日志处理程序本身的安全性。



