一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于链式加密的操作系统中断上下文保护方法

2022-06-01 16:14:33 来源:中国专利 TAG:

1个寄存器的明文作为可调分组密码的tweak加密第i个寄存器(i》1),直到最后一个寄存器,此外,额外以最后一个寄存器的明文作为tweak加密零,最后将上述的所有的加密值存储到内存中。对于相邻的两个寄存器,以前一个寄存器的明文作为后一个寄存器的加密的tweak,这保证了解密时,后一个寄存器的值将会以前一个寄存器的解密值;此外,最后额外的加密的零被用于解密时的完整性校验。
11.作为进一步地改进,本发明所述的步骤三具体为:在解密第一个寄存器后,以第i-1个寄存器的解密值作为可调分组密码的tweak解密第i个寄存器(i》1),直到以最后一个寄存器的解密值作为tweak解密在步骤二中的零的加密值,并通过比较最后的解密值是否为零校验中断上下文的完整性;若最后的解密值不是零,说明中断上下文被篡改,内核崩溃。对于相邻的两个寄存器,以前一个寄存器的解密值作为后一个寄存器的解密的tweak,这种链式解密保证了只要有一个寄存器的值被修改导致其解密值与原先值不同,就会使得后续所有寄存器的解密值与原先值都不同,最终导致结尾的零的解密值为非零值,无法通过完整性校验。
12.本发明的有益效果如下:
13.本发明针对操作系统的中断上下文保护问题,基于可调分组密码,设计了一种基于链式加密的操作系统中断上下文保护方法,有着较低的存储与性能开销。对于中断上下文的机密性保护,本发明设计了链式加解密,利用前一个寄存器的明文作为可调分组密码中的tweak,加(解)密后一个寄存器。一方面,链式加密保证了寄存器的加密值取决于其之前所有寄存器的值,使得在不同的中断上下文中,即使某个寄存器的值不变,其加密值也会因为其他寄存器的值改变而改变;另一方面,链式解密保证了如果某个寄存器的值被篡改,那么其之后的所有寄存器的值也会被错误得解密。
14.对于中断上下文的完整性保护,本发明通过在链式加解密的最后额外加解密一个零,以低性能与存储开销,校验了所有中断上下文中寄存器的完整性。链式解密保证了如果中断上下文中的某个寄存器值被篡改,那么最后这个零会被错误得解密,也就是解密为非零值,因此只需要检验最后的解密值是否为零就可以校验所有中断上下文寄存器的完整性。
15.最后,本发明为每个线程分配了线程密钥,进一步多样化了不同线程的中断上下文的加密,阻止了攻击者实施线程间的中断上下文重用攻击;同时,本发明通过引入内核不可读写的主密钥,解决了线程密钥的保护问题。在没有线程密钥时,攻击者可以通过将某个线程的中断上下文的加密值完整得替换为另一个线程的中断上下文的加密值,绕过完整性校验;但通过引入线程密钥,使得不同线程中断上下文加密的密钥不同,即使攻击者实施上述重用攻击,也会因为加密和解密的密钥不同而导致攻击被检测出来。本发明填补了现有的操作系统内核数据保护方法的缺口,可以与各类数据保护方法结合,延长内核关键数据的保护周期,提升系统抵御内存安全问题的能力。
附图说明
16.图1是操作系统中断上下文保护的流程图。
具体实施方式
17.下面根据附图对本发明的整体架构进行说明,图1是操作系统中断上下文保护的流程图,对中断上下文的加密和解密流程进行了一个形象化的描述。如图1所示,本发明包括以下几个步骤:
18.步骤一:在处理器中选取若干个寄存器作为密钥寄存器,用于存储后续加密的密钥。在系统启动时,通过固件将主密钥寄存器设置为随机值。在新建线程时,生成随机的线程密钥,加载到线程密钥寄存器中,并利用主密钥将线程密钥加密存储到内存中(以存储地址作为可调分组密码的tweak)。在线程切换时,从内存中读取将要运行线程的线程密钥,并用主密钥解密后加载到线程密钥寄存器中。此外,为了阻止攻击者泄漏密钥寄存器的值,需要合理设置密钥寄存器的权限:用户态程序不能读写所有的密钥寄存器;操作系统内核只能写线程密钥寄存器,而无法读线程密钥寄存器或读写主密钥寄存器。
19.步骤二:在中断处理前期,在操作系统将当前线程的寄存器存储到内存前,利用可调分组密码,用线程密钥对寄存器的值进行链式加密,具体为:在加密第一个寄存器后,以第i-1个寄存器的明文作为tweak加密第i个寄存器(i》1),直到加密最后一个寄存器;此外,额外得以最后一个寄存器的明文作为tweak加密零;最后将上述的所有的加密值存储到内存中。此外,可以通过选取不同的tweak加密第一个寄存器,进一步多样化加密模式。例如,可以选择当前栈指针作为tweak,这可以使得不同地址上的中断上下文加密模式不同,阻止攻击者通过交换不同地址上的中断上下文来绕过防御。即使攻击者将某个中断上下文加密值完整得替换为另一个地址上的中断上下文加密值,由于它们第一个加密的tweak不同,在解密时最后一个零也会被解密为非零,从而导致该攻击被检测出。
20.步骤三:在中断处理后期,在操作系统从内存中加载当前线程寄存器后,利用可调分组密码,用线程密钥对寄存器的值进行链式解密,具体为:在解密第一个寄存器后,以第i-1个寄存器的解密值作为tweak解密第i个寄存器(i》1),直到以最后一个寄存器的解密值作为tweak解密在步骤二中的零的加密值,并通过比较最后的解密值是否为零校验中断上下文的完整性。若最后的解密值不是零,说明中断上下文被篡改,内核崩溃。
21.本领域普通技术人员可以理解,以上所述仅为发明的单个实例而已,并不用于限制发明,尽管参照前述实例对发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在发明的精神和原则之内,所做的修改、等同替换等均应包含在发明的保护范围之内。


技术特征:
1.一种基于链式加密的操作系统中断上下文保护方法,其特征在于,包括如下几个步骤:步骤一:在处理器中选取若干个寄存器作为密钥寄存器,在系统启动时设置主密钥寄存器,在新建线程时,生成线程密钥,加载到线程密钥寄存器中,并利用主密钥将线程密钥加密存储到内存中,在线程切换时,从内存中读取将要运行线程的线程密钥,并用主密钥解密后加载到线程密钥寄存器中;步骤二:在中断处理中,在操作系统将当前线程的寄存器存储到内存前,利用可调分组密码,用线程密钥对寄存器的值进行链式加密,并在最后额外链式加密一个零;步骤三:在中断处理中,在操作系统从内存中加载当前线程寄存器后,利用可调分组密码,用线程密钥对寄存器的值进行链式解密,并通过最后解密的零来校验完整性。2.根据权利要求1所述的基于链式加密的操作系统中断上下文保护方法,其特征在于,所述的步骤二具体为:在加密第一个寄存器后,以第i-1个寄存器的明文作为可调分组密码的tweak加密第i个寄存器(i>1),直到最后一个寄存器,此外,额外以最后一个寄存器的明文作为tweak加密零,最后将上述的所有的加密值存储到内存中。3.根据权利要求2所述的基于链式加密的操作系统中断上下文保护方法,其特征在于,所述的步骤三具体为:在解密第一个寄存器后,以第i-1个寄存器的解密值作为可调分组密码的tweak解密第i个寄存器(i>1),直到以最后一个寄存器的解密值作为tweak解密在步骤二中的零的加密值,并通过比较最后的解密值是否为零校验中断上下文的完整性;若最后的解密值不是零,则中断上下文被篡改,内核崩溃。

技术总结
本发明公开了一种基于链式加密的操作系统中断上下文保护方法,包括在处理器中选取若干个寄存器作为密钥寄存器,在系统启动时设置主密钥寄存器,在新建线程时,生成线程密钥,加载到线程密钥寄存器中,并利用主密钥将线程密钥加密存储到内存中,在线程切换时,从内存中读取将要运行线程的线程密钥,并用主密钥解密后加载到线程密钥寄存器中等步骤;对于中断上下文的机密性保护,本发明设计了链式加解密,利用前一个寄存器的明文作为可调分组密码中的tweak,加(解)密后一个寄存器。对于中断上下文的完整性保护,本发明通过在链式加解密的最后额外加解密一个零,以低性能与存储开销,校验了所有中断上下文中寄存器的完整性。验了所有中断上下文中寄存器的完整性。验了所有中断上下文中寄存器的完整性。


技术研发人员:申文博 林浩然 徐金焱 苑子琦 常瑞 周亚金 吴磊 任奎
受保护的技术使用者:浙江大学
技术研发日:2022.02.18
技术公布日:2022/5/31
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献