【技术实现步骤摘要】
一种面向边信道安全防护的循环语句执行方法及装置
本专利技术属于处理器体系结构安全领域,具体涉及一种面向边信道安全防护的循环语句执行方法及装置。
技术介绍
分支预测技术是现代处理器用于提高程序执行效率的关键性技术,大大降低了由分支指令带来的流水线延迟,高准确度的分支预测可以给处理器带来极大的性能提升。但是近年来曝光出了幽灵(Spectre)系列的漏洞族,显示出典型现代处理器体系结构的设计存在严重的安全问题,对处理器用户产生了极大的安全威胁。幽灵漏洞族利用了对分支预测技术的误导训练,使得处理器推测执行攻击者精心构造的代码序列,非授权访问由各种处理器和操作系统安全机制保护的数据,进而利用高速缓存等侧信道泄露数据。防御这类攻击最根本的是从源头进行防护,也就是防止被恶意触发推测执行,攻击者就无法成功瞬态执行非授权访问的代码。现有在源头层面对幽灵漏洞进行防御的措施为防止对所有分支指令进行分支预测,在硬件层面主要方法是禁用分支预测,在软件层面主要方法是编译时在分支指令后插入fence指令。这类防御措施等效于在处理器执行到分支指令后暂停流水线,等到确定分支指令分支结果后再执行,这样处理器相当于未采用分支预测技术,导致程序执行效率大大下降,牺牲了由分支预测技术带来的巨大性能提升,代价很大。程序中包含很多的循环语句,这也是攻击者利用来构造“幽灵”攻击的必要条件,现有的措施通过完全禁用分支预测保证了处理器安全,但在执行分支指令尤其是循环中的分支指令时会带来巨大的开销。
技术实现思路
本专利技术要解决的技术问题: ...
【技术保护点】
1.一种面向边信道安全防护的循环语句执行方法,其特征在于,包括:/n1)预先识别目标程序的源代码或目标代码中的循环体,为每一段循环体前插入一条基于可扩展指令集体系结构编码规范的扩展循环指令,得到使用扩展循环指令的目标程序;/n2)在执行使用扩展循环指令的目标程序时,若遇到扩展循环指令,则基于扩展循环指令确定性执行该扩展循环指令后的循环体。/n
【技术特征摘要】
1.一种面向边信道安全防护的循环语句执行方法,其特征在于,包括:
1)预先识别目标程序的源代码或目标代码中的循环体,为每一段循环体前插入一条基于可扩展指令集体系结构编码规范的扩展循环指令,得到使用扩展循环指令的目标程序;
2)在执行使用扩展循环指令的目标程序时,若遇到扩展循环指令,则基于扩展循环指令确定性执行该扩展循环指令后的循环体。
2.根据权利要求1所述的面向边信道安全防护的循环语句执行方法,其特征在于,步骤1)中的扩展循环指令的编码信息包括该扩展循环指令后循环体的循环迭代次数和循环体内指令条数。
3.根据权利要求1所述的面向边信道安全防护的循环语句执行方法,其特征在于,所述扩展循环指令最大支持的循环体内指令条数为2a-1条,其中a为扩展循环指令中循环体内指令条数的位宽。
4.根据权利要求2所述的面向边信道安全防护的循环语句执行方法,其特征在于,步骤1)中预先识别目标程序的源代码或目标代码中的循环体是指:通过编译器针对目标程序的源代码识别其中各个循环体的循环迭代次数和循环体内指令条数,根据循环迭代次数和循环体内指令条数生成一条基于可扩展指令集体系结构编码规范的扩展循环指令并插入对应的各段循环体前,最终得到使用扩展循环指令的目标程序;或者,通过优化器针对目标程序的目标代码识别其中各个循环体的循环迭代次数和循环体内指令条数,根据循环迭代次数和循环体内指令条数生成一条基于可扩展指令集体系结构编码规范的扩展循环指令并插入对应的各段循环体前,最终得到使用扩展循环指令的目标程序。
5.根据权利要求2所述的面向边信道安全防护的循环语句执行方法,其特征在于,步骤2)中基于扩展循环指令确定性执行该扩展循环指令后的循环体时还包括基于指定的循环指令缓冲区LIB缓存扩展循环指令的步骤。
6.根据权利要求5所述的面向边信道安全防护的循环语句执行方法,其特征在于,步骤2)中基于扩展循环指令确定性执行该扩展循环指令后的循环体时还包括基于循环状态寄存器组来记录循环体执行状态的步骤,所述循环状态寄存器组包括:剩余迭代次数寄存器loop_counter,用于存放当前执行循环的剩余迭代次数;循环体内指令条数寄存器inst_counter,用于存放循环体的循环体内指令条数;已加载指令条数寄存器load_counter,用于存放已加载到循环指令缓冲区的指令条数;当前执行指令地址寄存器inst_pointer,用于存放当前执行循环指令的指令地址,当前执行循环指令的指令地址包括两个部分,一部分为循环体首条指令地址,另一部分为当前执行指令地址相对循环体首条指令地址的偏移量。
7.根据权利要求6所述的面向边信道安全防护的循环语句执行方法,其特征在于,步骤2)中执行使用扩展循环指令的目标程序的步骤包括:
2.1)判断循环指令缓冲区的剩余迭代次数寄存器loop_counter是否为0,若为0则判定上一个循环已经运行完毕或未执行过循环,跳转执行下一步;跳转执行步骤2.5);
2.2)从指令缓存I-Cache中抓取指令I;
2.3)判断抓取的指令I是否为扩展循环指令,若为扩展循环指令,则首先译码识别出扩展循环指令的循环迭代次数k和循环体内指令条数n,然后执行循环状态寄存器组的初始化:初始化设置剩余迭代次数寄存器loop_counter为扩展循环指令的循环迭代次数k,循环体内指令条数寄存器inst_counter为扩展循环指令的循环体内指令条数n,已加载指令条数寄存器load_counter为0、当前执行指令地址寄存器inst_pointer为0;
2.4)更新程序计数器PC的值为下一条指...
【专利技术属性】
技术研发人员:黄立波,童敢,郭辉,郑重,邓全,倪晓强,郭维,雷国庆,王俊辉,隋兵才,孙彩霞,王永文,
申请(专利权)人:中国人民解放军国防科技大学,
类型:发明
国别省市:湖南;43
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。