[发明专利]一种基于代码复用编程防御SGX侧信道攻击的方法及装置有效
申请号: | 201910152138.6 | 申请日: | 2019-02-28 |
公开(公告)号: | CN109829313B | 公开(公告)日: | 2020-11-24 |
发明(设计)人: | 周洪伟;原锦辉;张玉臣;汪永伟;孙怡峰;张畅;胡浩 | 申请(专利权)人: | 中国人民解放军战略支援部队信息工程大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57 |
代理公司: | 郑州大通专利商标代理有限公司 41111 | 代理人: | 陈勇 |
地址: | 450000 河*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 代码 编程 防御 sgx 信道 攻击 方法 装置 | ||
1.一种基于代码复用编程防御SGX侧信道攻击的方法,其特征在于,包括:
步骤1、分析指令模板所表示的指令流,将所述指令流分解为多个指令片段,判断是否已构建代码基,若是则执行步骤2,若否则构建代码基;其中,所述代码基包含与指令模板对应的多个指令序列,所述指令模板表示按照传统方式编程得到的用于实现特定业务的指令流,每个所述指令序列尾部均附有用于与其他所述指令序列进行连接的标志指令;
步骤2、根据所述指令流和所述代码基生成执行逻辑,所述执行逻辑表示连接代码基内各指令序列以实现所述特定业务的控制逻辑;具体包括:
步骤2.1、读取指令模板中的指令片段;
步骤2.2、对每个指令片段执行步骤2.2.1至步骤2.2.6,其中,所述步骤2.2.1至步骤2.2.6具体为:
步骤2.2.1、生成随机数random_2;
步骤2.2.2、设置计数器j=random_2+seed,seed为设定的随机因子;
步骤2.2.3、在代码基当前位置查找目标指令序列;
步骤2.2.4、若查找到目标指令序列,则更新计数器ji+1=ji-1,i为迭代次数;
步骤2.2.5、若当前计数器j=0,则定位当前目标指令序列,输出执行逻辑;若当前计数器j0,则查找下一个目标指令序列;
步骤2.2.6、重复步骤2.2.1至步骤2.2.5,直至指令模板中的所有指令片段均处理完毕,则执行步骤2.3;
步骤2.3、生成随机数作为下一次运行时的随机因子seed;
步骤3、根据所述执行逻辑从代码基中读取相应的指令序列,并将各指令序列连接起来,以完成所述特定业务。
2.根据权利要求1 所述的方法,其特征在于,步骤1中的所述构建代码基具体包括:
步骤1.1、构建空单链表;
步骤1.2、从指令模板中读取需要进入所述代码基的指令片段,并执行步骤1.2.1至步骤1.2.4:其中,所述步骤1.2.1至步骤1.2.4具体为:
步骤1.2.1、遍历单链表,判断所述单链表是否包含当前指令片段,若不包含则执行步骤1.2.2;反之则读取下一个指令片段;
步骤1.2.2、生成随机数random_1作为当前指令片段的副本数量,其中,n_minrandom_1n_max,n_min表示指令片段的副本数最小值,n_max表示指令片段的副本数最大值;
步骤1.2.3、所述单链表增加一个节点,所述节点包括:当前指令片段和当前指令片段的副本数量;
步骤1.2.4、重复步骤1.2.1至步骤1.2.3,直至所有指令片段处理完毕,则执行步骤1.3;
步骤1.3、初始化单链表节点数量为n和计步器k=0,并执行步骤1.3.1至步骤1.3.4:其中,所述步骤1.3.1至步骤1.3.4具体为:
步骤1.3.1、生成随机数x;
步骤1.3.2、以当前节点为起点,顺序遍历单链表,遍历一个节点计步长为1,确定单链表下一个待处理节点,所述下一个待处理节点为距离当前节点的步长为ki+1=ki+x mod n的节点,i为迭代次数;
步骤1.3.3、在所述待处理节点对应的指令片段尾部添加标志指令后形成指令序列并写入代码基,所述待处理节点对应的副本数量减1,若当前副本数量为0,则从单链表中删除所述待处理节点,且单链表节点数n减1;
步骤1.3.4、重复步骤1.3.1至步骤1.3.3,直至单链表为空表。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军战略支援部队信息工程大学,未经中国人民解放军战略支援部队信息工程大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910152138.6/1.html,转载请声明来源钻瓜专利网。