有效
程序缓存泄露的检测方法和检测装置、存储介质、处理器
张茜歌、刘亮、唐明、赵东艳、燕雪松、王梦醒、周永忠、姜义初、田瑞
北京智芯微电子科技有限公司
摘要
本发明公开了一种程序缓存泄露的检测方法和检测装置、存储介质、处理器,所述方法包括:获取程序的控制流图,并确定控制流图中敏感结点的结点类型;根据敏感结点的结点类型获取相应的泄露检测算法;根据泄露检测算法确定敏感结点是否存在缓存泄露。本发明的检测方法,能够有效检测到程序中是否存在缓存泄露,保证程序的理论安全性和提高程序的扩展性。
1.一种程序缓存泄露的检测方法,其特征在于,所述方法包括:获取程序的控制流图,并确定所述控制流图中敏感结点的结点类型;根据所述敏感结点的结点类型获取相应的泄露检测算法,包括:当所述敏感结点为访存结点时,所述泄露检测算法为数据流泄露检测算法,其中,所述访存结点包括一般访存结点和分支内访存结点;根据所述泄露检测算法确定所述敏感结点是否存在缓存泄露,包括:当所述泄露检测算法为数据流泄露检测算法时,获取所述访存结点与前后结点之间的待定碰撞概率;获取所述访存结点的访问地址与缓存中的敏感数据之间的第一相关性;根据所述待定碰撞概率和所述第一相关性确定第一概率;在确定所述第一概率满足第一预设泄露条件时,确定所述访存结点存在缓存泄露。
2.根据权利要求1所述的程序缓存泄露的检测方法,其特征在于,所述获取程序的控制流图,包括:获取所述程序的源代码,并对所述源代码进行编译处理得到汇编程序代码;对所述汇编程序代码中的汇编指令进行语义解析得到所述汇编指令的指令类型;根据所述汇编指令生成所述控制流图,并根据所述指令类型确定所述控制流图中各个结点的结点类型,以及根据所述结点类型确定所述敏感结点,其中,所述汇编指令与所述控制流图中的各个结点一一对应。
3.根据权利要求1所述的程序缓存泄露的检测方法,其特征在于,所述根据所述敏感结点的结点类型获取相应的泄露检测算法,包括:当所述敏感结点为跳转结点时,所述泄露检测算法为控制流泄露检测算法,其中,所述跳转结点包括分支跳转结点。
4.根据权利要求1所述的程序缓存泄露的检测方法,其特征在于,所述获取所述访存结点与前后结点之间的待定碰撞概率,包括:获取所述访存结点的访问地址之间的缓存冲突情况、所述访存结点与所述前后结点之间的缓存碰撞情况、以及所述访存结点至所述前后结点之间的唯一冲突次数;根据所述缓存冲突情况、所述缓存碰撞情况和所述唯一冲突次数确定所述待定碰撞概率。
5.根据权利要求3所述的程序缓存泄露的检测方法,其特征在于,当所述泄露检测算法为控制流泄露检测算法时,所述根据所述泄露检测算法确定所述敏感结点是否存在缓存泄露,包括:获取所述跳转结点与其前后分支缓存访问结点之间发生缓存碰撞的第二概率;在确定所述第二概率满足第二预设泄露条件时,确定所述跳转结点存在缓存泄露。
6.根据权利要求5所述的程序缓存泄露的检测方法,其特征在于,所述获取所述跳转结点与其前后分支缓存访问结点之间发生缓存碰撞的第二概率,包括:获取所述跳转结点与所述前后分支缓存访问结点之间的缓存碰撞次数;获取所述跳转结点的访问地址与缓存中的敏感数据之间的第二相关性;根据所述缓存碰撞次数和所述第二相关性确定所述第二概率。
7.一种程序缓存泄露的检测装置,其特征在于,所述装置包括:获取模块,用于获取程序的控制流图,并确定所述控制流图中敏感结点的结点类型;算法确定模块,用于根据所述敏感结点的结点类型获取相应的泄露检测算法,包括:当所述敏感结点为访存结点时,所述泄露检测算法为数据流泄露检测算法,其中,所述访存结点包括一般访存结点和分支内访存结点;检测模块,用于根据所述泄露检测算法确定所述敏感结点是否存在缓存泄露,包括:当所述泄露检测算法为数据流泄露检测算法时,获取所述访存结点与前后结点之间的待定碰撞概率;获取所述访存结点的访问地址与缓存中的敏感数据之间的第一相关性;根据所述待定碰撞概率和所述第一相关性确定第一概率;在确定所述第一概率满足第一预设泄露条件时,确定所述访存结点存在缓存泄露。
8.根据权利要求7所述的程序缓存泄露的检测装置,其特征在于,所述获取模块包括:编译处理单元,用于获取所述程序的源代码,并对所述源代码进行编译处理得到汇编程序代码;指令解析单元,用于对所述汇编程序代码中的汇编指令进行语义解析得到所述汇编指令的指令类型;生成单元,用于根据所述汇编指令生成所述控制流图,并根据所述指令类型确定所述控制流图中各个结点的结点类型,以及根据所述结点类型确定所述敏感结点,其中,所述汇编指令与所述控制流图中的各个结点一一对应。
9.根据权利要求7所述的程序缓存泄露的检测装置,其特征在于,当所述敏感结点为跳转结点时,所述泄露检测算法为控制流泄露检测算法,其中,所述跳转结点包括分支跳转结点。
10.根据权利要求7所述的程序缓存泄露的检测装置,其特征在于,所述检测模块用于:获取所述访存结点的访问地址之间的缓存冲突情况、所述访存结点与所述前后结点之间的缓存碰撞情况、以及所述访存结点至所述前后结点之间的唯一冲突次数;根据所述缓存冲突情况、所述缓存碰撞情况和所述唯一冲突次数确定所述待定碰撞概率。
11.根据权利要求9所述的程序缓存泄露的检测装置,其特征在于,当所述泄露检测算法为控制流泄露检测算法时,所述检测模块用于:获取所述跳转结点与其前后分支缓存访问结点之间发生缓存碰撞的第二概率;在确定所述第二概率满足第二预设泄露条件时,确定所述跳转结点存在缓存泄露。
12.根据权利要求11所述的程序缓存泄露的检测装置,其特征在于,所述检测模块用于:获取所述跳转结点与所述前后分支缓存访问结点之间的缓存碰撞次数;获取所述跳转结点的访问地址与缓存中的敏感数据之间的第二相关性;根据所述缓存碰撞次数和所述第二相关性确定所述第二概率。
13.一种计算机可读存储介质,其特征在于,其上存储有程序缓存泄露的检测程序,该程序缓存泄露的检测程序被处理器执行时实现根据权利要求1-6中任一项所述的程序缓存泄露的检测方法。
14.一种处理器,其特征在于,包括根据权利要求7-12中任一项所述的程序缓存泄露的检测装置。



