System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于计算机安全,更为具体地讲,涉及一种面向armv8-a汇编代码的形式化验证方法。
技术介绍
1、操作系统作为现代计算机应用的基础平台,支持各类软件的运行,并直接影响计算机系统的稳定性和安全性。操作系统中的小漏洞可能导致严重的系统错误或安全威胁,甚至引发生命和财产损失。因此,确保操作系统的安全性和可靠性是维护计算机软件生态健康运行的关键因素。
2、传统的软件测试方法在发现错误和漏洞方面存在局限,测试无法覆盖所有情况和路径,漏洞可能隐藏在边缘情况或复杂交互中。因此,虽然传统测试方法是重要的质量保障手段,但无法完全消除系统中的错误和漏洞。而随着系统功能的扩展、代码规模的增大以及内部逻辑的复杂化,确保系统的可靠性和安全性成为一项重要且富有挑战性的任务。在现有技术中,形式化方法是解决这一挑战的有效途径。
3、形式化方法是一种以数学和形式化语言为基础,能够提高软硬件系统的可靠性和正确性的技术。该方法的核心理念是通过精确而严格的规约和验证过程,消除软硬件设计和实现中的歧义,降低错误和漏洞的发生概率。形式化方法包括形式规约和形式验证两个主要步骤。形式规约是对系统行为和性质的详细、数学化描述,通常使用形式化语言。这样的规约消除了对系统规范的模糊理解,提供了准确且一致的描述。形式验证则通过数学分析方法,对形式规约进行验证,以确保系统满足规约中定义的性质。
4、近些年来,针对操作系统内核验证的工作:澳大利亚国家信息通信中心(nicta)的sel4项目,使用了交互式定理证明器isabelle/hol,通过
5、现代操作系统主要使用高级语言开发,但汇编代码在关键部分仍然发挥着不可或缺的作用。相比高级语言,汇编代码可以实现对硬件的直接访问和控制:能够直接操作cpu寄存器、执行特权指令以及与硬件设备进行高效交互,这在许多性能敏感的场景中至关重要。例如,在上下文切换和中断处理时,汇编代码可以确保最小的延迟和最高的执行效率。此外,汇编语言还允许开发者在内存管理和系统调用中实现更精细的控制,确保操作系统在资源受限的环境中运行时的可靠性和高效性。因此,汇编代码中潜在的错误或漏洞都可能导致系统崩溃或安全隐患,所以对操作系统的验证离不开汇编代码的安全性。
技术实现思路
1、本专利技术的目的在于克服现有技术的不足,提供一种面向armv8-a汇编代码的形式化验证方法,对物理机器的各个模块构件进行建模,然后基于构建的模型生成汇编代码中每个汇编指令的形式化逻辑表达式,使用定理证明器完成armv8-a汇编代码的形式化验证。
2、为了实现上述专利技术目的,本专利技术面向armv8-a汇编代码的形式化验证方法包括以下步骤:
3、s1:对armv8-a的处理器架构和指令集系统进行分析,提取出需要建模的各个模块构件,包括异常级别、执行状态、数据值、寄存器组、内存、指令集、汇编代码,对各个模块构件进行建模,具体方法为:
4、s1.1:定义异常级别类型包括el0~el3,el0用于普通用户应用程序执行,el1用于操作系统内核特权级别执行,el2用于虚拟机管理程序执行,el3用于安全世界执行;定义执行状态类型包括aarch64和aarch32,处于aarch64状态时,处理器执行a64指令集,并使用64位宽通用寄存器;处于aarch32状态时,处理器执行a32或t32指令集,并使用32位宽通用寄存器;
5、s1.2:定义数据值基本类型包括布尔类型,自然数类型,整数类型,有理数类型,并在此基础上依据位数和范围限制拓展定义8位,32位,64位字长以及对应的字节byte类型、32位整型类型、64位整型类型;
6、s1.3:定义寄存器集包括通用寄存器greq、特殊寄存器sreg、处理器状态psbit;最后定义寄存器组模块,包括寄存器集实例映射到步骤1.2中的数据值类型上,并且提供符号表示法来操作映射,包括访问映射值和更新映射值;
7、s1.4:将内存数据基于基本数据值定义,将内存中每一字节都同memval类型进行了映射,包括未初始化类型、由无符号8bit映射的字节类型,以及由块和偏移量映射的指针类型;内存操作类型包括读取load和存储store操作;内存权限类型包括可读,可写和可读写权限;最后使用record定义内存类型将上述内容整合为一体;
8、s1.5:定义armv8-a指令集类型包括数据处理指令、加载存储指令、流控分支指令、系统控制指令、异常处理指令、系统寄存器访问指令和伪指令,其中数据处理指令类型包括算术和逻辑运算、移动和位移操作、符号和零扩展操作、条件比较操作;对寻址方式进行建模,包括立即数寻址、寄存器寻址、基址寻址、前后索引寻址,并基于此定义加载存储指令;流控分支指令包括无条件分支b、条件分支bc,子程序调用和返回bl、ret,异常返回eret;系统控制指令包括访问系统寄存器指令mrs、msr;
9、s1.6:定义汇编代码中每个汇编指令的操作流程,包括取指,解析和执行过程,然后设计用于模拟指令执行器的递归函数,该函数逐步解释程序计数器指向的汇编指令,递归地执行指定数量的汇编指令,并更新寄存器和内存的状态,从而模拟汇编代码的执行过程;
10、s2:根据汇编代码中每个汇编指令的功能和安全规范确定对应汇编指令的非形式化要求,然后结合步骤s1定义的模型生成每个汇编指令的形式化逻辑表达式,从而得到形式化规约;
11、s3:根据实际需要选择定理证明器,将模拟指令执行器的递归函数和每个汇编指令的形式化逻辑表达式转换为定理证明器中形式语言定义的格式,使用定理证明器中提供的验证策略进行形式化验证。
12、本专利技术面向armv8-a汇编代码的形式化验证方法,对armv8-a的处理器架构和指令集系统进行分析,提取出需要建模的各个模块构件,包括异常级别、执行状态、数据值、寄存器组、内存、指令集、汇编代码,对各个模块构件进行建模;根据汇编代码中每个汇编指令的功能和安全规范确定对应汇编指令的非形式化要求,然后结合定义的模型生成每个汇编指令的形式化逻辑表达式,从而得到形式化规约;最后采用定理证明器进行形式化验证。
13、本专利技术具有以下有益效果:
14、1)本专利技术分析了armv8-a硬件平台的特性,设计并构建了一套可以用于验证armv8-a架构下汇编代码的形式化模型,包括对数据值、寄存器、内存和汇编指令以及操作语义的建模设计;提供了基于armv8-a的嵌入式操作系统中汇编模块的形式化描述能力,从而能够针对汇编代码进行后续的规约和验证。
15、2)本专利技术设计了一种模拟汇编指令执行器的递归函数,该函数逐步解释程序计数器指向的指令,递归地执行指定数量的指令本文档来自技高网...
【技术保护点】
1.一种面向Armv8-a汇编代码的形式化验证方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的形式化验证方法,其特征在于,所述步骤S1.6中模拟指令执行器的递归函数的具体步骤包括:
3.根据权利要求1所述的形式化验证方法,其特征在于,所述步骤S2中逻辑表达式采用霍尔逻辑形式,包括物理机器前置条件,汇编指令的状态变迁函数和物理机器后置条件。
4.根据权利要求1所述的形式化验证方法,其特征在于,所述步骤S3中定理证明器采用Coq定理证明器。
【技术特征摘要】
1.一种面向armv8-a汇编代码的形式化验证方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的形式化验证方法,其特征在于,所述步骤s1.6中模拟指令执行器的递归函数的具体步骤包括:
3.根据权利要求1所述的形式...
【专利技术属性】
技术研发人员:肖堃,李雨珊,黄钰馨,李蒙,罗蕾,陈丽蓉,
申请(专利权)人:电子科技大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。