一种变量读取、写入方法和变量读取、写入装置制造方法及图纸

技术编号:36197456 阅读:50 留言:0更新日期:2023-01-04 11:50
本申请实施例提供一种变量读取、写入方法和变量读取、写入装置,涉及终端领域,能够保护重要变量不被盗取或篡改。其中,变量读取方法包括:第一应用程序向应用态过滤库发送读取请求,读取请求用于请求读取第一变量的数据,第一请求包括第一变量的全局唯一标识符GUID和变量名;响应于接收第一请求,应用态过滤库根据第一变量的GUID和变量名获取第一变量的数据,第一变量的数据包括标志位和第一变量对应的净载荷;在第一应用程序经过安全校验的情况下,应用态过滤库删除标志位;应用态过滤库向第一应用程序发送净载荷。第一应用程序发送净载荷。第一应用程序发送净载荷。

【技术实现步骤摘要】
一种变量读取、写入方法和变量读取、写入装置


[0001]本申请涉及终端领域,尤其涉及一种变量读取、写入方法和变量读取、写入装置。

技术介绍

[0002]嵌入式开发套件2(embedded development kit,EDK2/EDKII)提供一种统一的可扩展固件接口(unified extensible firmware interface,UEFI)变量读写机制,可以向操作系统(operating system,OS)提供读写接口。通过向该读写接口输入变量名称,可以获取变量(variable)的内容,并可以对变量的内容直接进行修改。
[0003]例如,windows操作系统的SetFirmwareEnvironmentVariable接口可以用于修改变量,SetFirmwareEnvironmentVariable接口可以调用EDK2中gRT

>SetVariable接口完成变量修改操作。
[0004]由于UEFI变量读写机制是公开的,黑客可能借助UEFI变量读写机制编写病毒程序来盗取或篡改重要变量(例如,影响电子设备开关机的变量)。重要变量被盗取可能危害用户利益,重要变量被篡改会导致系统出现不可预期的异常行为,系统修复难度高。因此,如何保护重要变量是一个亟待解决的问题。

技术实现思路

[0005]本申请提供一种变量读取、写入方法和变量读取、写入装置,能够保护重要变量不被盗取或篡改。
[0006]为达到上述目的,本申请的实施例采用如下技术方案:
[0007]第一方面,提供了一种变量读取方法,包括:第一应用程序向应用态过滤库发送读取请求,读取请求用于请求读取第一变量的数据,第一请求包括第一变量的全局唯一标识符GUID和变量名;响应于接收第一请求,应用态过滤库根据第一变量的GUID和变量名获取第一变量的数据,第一变量的数据包括标志位和第一变量对应的净载荷;在第一应用程序经过安全校验的情况下,应用态过滤库删除标志位;应用态过滤库向第一应用程序发送净载荷。
[0008]基于本申请实施例提供的方法,上层应用读取第一变量时,若应用态过滤库判断第一变量为私有变量(即存在标志位),应用态过滤库可以对上层应用进行验证,若验证通过,应用态过滤库可以从第一变量的数据中删除标志位得到净载荷,将净载荷返回给上层应用。由于上层应用验证通过,认为第一应用程序为安全的应用程序而非恶意应用程序,因此可以向第一应用程序发送第一变量的净载荷,这样可以抵御恶意程序对私有变量的篡改或盗取。
[0009]在一种可能的设计中,在第一应用程序经过安全校验的情况下,应用态过滤库删除标志位包括:应用态过滤库从第一应用程序接收数字签名,数字签名是第一应用程序根据公钥加密的;应用态过滤库根据私钥对数字签名进行验证;若验证通过,应用态过滤库删除标志位。即应用态过滤库可以基于数字签名对第一应用程序进行验证,若验证通过,认为
第一应用程序为安全的应用程序而非恶意应用程序,从而可以向第一应用程序发送第一变量的净载荷。
[0010]在一种可能的设计中,应用态过滤库根据GUID和变量名获取第一变量对应的数据之后,方法还包括:应用态过滤库确定第一变量对应的数据是否存在标志位。
[0011]在一种可能的设计中,在第一应用程序未经过安全校验的情况下,应用态过滤库向第一应用程序发送净载荷和标志位。若验证不通过,认为上层应用可能为恶意程序,应用态过滤库可以将净载荷和标志位一并返回给上层应用,恶意程序无法区分标志位和净载荷,从而可以抵御恶意程序对私有变量的篡改。
[0012]在一种可能的设计中,应用态过滤库位于应用层。
[0013]在一种可能的设计中,标志位为预设字符串。标志位可以采用ASCII字符,例如可以为“$PV$”,其对应的十六进制数据可以为0x24,0x50,0x56,0x24。
[0014]在一种可能的设计中,第一变量的数据还包括尺寸位、盐值位和校验位;其中,尺寸位用于指示第一变量的数据区域的字节数,校验位用于校验净载荷,盐值位用于保证校验位的复杂度。
[0015]在一种可能的设计中,标志位、尺寸位、盐值位和校验位是根据哈希算法生成的。
[0016]在一种可能的设计中,方法还包括:若第一变量的数据不包括标志位,应用态过滤库直接将第一变量的净载荷发送给第一应用程序。若第一变量的数据不包括标志位,可以认为第一变量的类型为通用变量,应用态过滤Library可以直接将第一变量的净载荷返回给第一应用程序。
[0017]在一种可能的设计中,应用态过滤库根据第一变量的GUID和变量名获取第一变量的数据包括:应用态过滤库调用第一函数接口读取第一变量的数据,并向第一函数接口发送第一变量的GUID和变量名,第一函数接口是操作系统向应用层提供的读取变量的接口;第一函数接口调用第二函数接口读取第一变量的数据,并向第二函数接口发送第一变量的GUID和变量名,第二函数接口是操作系统提供的用于从基本输入输出系统BIOS层读取变量的接口;第二函数接口调用第三函数接口读取第一变量的数据,并向第三函数接口发送第一变量的GUID和变量名,第三函数接口是BIOS层向操作系统提供的用于读取变量的接口;第三函数接口调用BIOS过滤库读取第一变量的数据,并向BIOS过滤库发送第一变量的GUID和变量名,BIOS过滤库是BIOS层中用于验证待写入数据的接口;BIOS过滤库调用第四函数接口读取第一变量的数据,并向第四函数接口发送第一变量的GUID和变量名,第四函数接口是BIOS层中的运行时服务提供的用于从内存中读取变量的接口;第四函数接口根据第一变量的GUID和变量名从内存中读取第一变量的数据;第四函数接口向BIOS过滤库发送第一变量的数据;BIOS过滤库向第三函数接口发送第一变量的数据;第三函数接口向第二函数接口发送第一变量的数据;第二函数接口向第一函数接口发送第一变量的数据;第一函数接口向应用态过滤库发送第一变量的数据。即在读取第一变量的时候,可以由多个接口相互调用配合获取第一变量的数据。
[0018]第二方面,提供了一种变量写入方法,包括:第一应用程序向应用态过滤库发送写入请求,写入请求用于请求写入第一变量的数据,写入请求包括第一变量的全局唯一标识符GUID、变量名和第一净载荷;在第一应用程序是经过安全校验的情况下,应用态过滤库根据GUID和变量名读取第一变量对应的数据,第一变量的数据包括标志位和第一变量对应的
第二净载荷;应用态过滤库调用基本输入输出系统BIOS过滤库写入标志位、校验位和第一净载荷,校验位用于校验第一净载荷;BIOS过滤库验证校验位;若验证成功,BIOS过滤库将标志位、校验位和第一净载荷写入内存。
[0019]基于本申请实施例提供的方法,第一应用程序向应用态过滤库发送写入请求后,在第一应用程序是经过安全校验的情况下,应用态过滤库可以先读取第一变量在内存中对应的数据,若读取到的第一变量的数据包括标志位,应用态过滤库调用BIOS过滤库写入标志位、校本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种变量读取方法,其特征在于,包括:第一应用程序向应用态过滤库发送读取请求,所述读取请求用于请求读取第一变量的数据,所述第一请求包括所述第一变量的全局唯一标识符GUID和变量名;响应于接收所述第一请求,所述应用态过滤库根据所述第一变量的GUID和变量名获取所述第一变量的数据,所述第一变量的数据包括标志位和所述第一变量对应的净载荷;在所述第一应用程序经过安全校验的情况下,所述应用态过滤库删除所述标志位;所述应用态过滤库向所述第一应用程序发送所述净载荷。2.根据权利要求1所述的方法,其特征在于,所述在所述第一应用程序经过安全校验的情况下,所述应用态过滤库删除所述标志位包括:所述应用态过滤库从所述第一应用程序接收数字签名,所述数字签名是所述第一应用程序根据公钥加密的;所述应用态过滤库根据私钥对所述数字签名进行验证;若验证通过,所述应用态过滤库删除所述标志位。3.根据权利要求1或2所述的方法,其特征在于,所述应用态过滤库根据所述GUID和所述变量名获取所述第一变量对应的数据之后,所述方法还包括:所述应用态过滤库确定所述第一变量对应的数据是否存在所述标志位。4.根据权利要求1

3任一项所述的方法,其特征在于,在所述第一应用程序未经过安全校验的情况下,所述应用态过滤库向所述第一应用程序发送所述净载荷和所述标志位。5.根据权利要求1

4任一项所述的方法,其特征在于,所述应用态过滤库位于应用层。6.根据权利要求1

5任一项所述的方法,其特征在于,所述标志位为预设字符串。7.根据权利要求1

6任一项所述的方法,其特征在于,所述第一变量的数据还包括尺寸位、盐值位和校验位;其中,所述尺寸位用于指示所述第一变量的数据区域的字节数,所述校验位用于校验所述净载荷,所述盐值位用于保证所述校验位的复杂度。8.根据权利要求7所述的方法,其特征在于,所述标志位、所述尺寸位、所述盐值位和所述校验位是根据哈希算法生成的。9.根据权利要求1

8任一项所述的方法,其特征在于,所述方法还包括:若所述第一变量的数据不包括所述标志位,所述应用态过滤库直接将所述第一变量的净载荷发送给所述第一应用程序。10.根据权利要求1

9任一项所述的方法,其特征在于,所述应用态过滤库根据所述第一变量的GUID和变量名获取所述第一变量的数据包括:所述应用态过滤库调用第一函数接口读取所述第一变量的数据,并向所述第一函数接口发送所述第一变量的GUID和变量名,所述第一函数接口是操作系统向应用层提供的读取变量的接口;所述第一函数接口调用第二函数接口读取所述第一变量的数据,并向所述第二函数接口发送所述第一变量的GUID和变量名,所述第二函数接口是所述操作系统提供的用于从基
本输入输出系统BIOS层读取变量的接口;所述第二函数接口调用第三函数接口读取所述第一变量的数据,并向所述第三函数接口发送所述第一变量的GUID和变量名,所述第三函数接口是所述BIOS层向所述操作系统提供的用于读取变量的接口;所述第三函数接口调用BIOS过滤库读取所述第一变量的数据,并向所述BIOS过滤库发送所述第一变量的GUID和变量名,所述BIOS过滤库是所述BIOS层中用于验证待写入数据的接口;所述BIOS过滤库调用第四函数接口读取所述第一变量的数据,并向所述第四函数接口发送所述第一变量的GUID和变量名,所述第四函数接口是所述BIOS层中的运行时服务提供的用于从内存中读取变量的接口;所述第四函数接口根据所述第一变量的GUID和变量名从内存中读取所述第一变量的数据;所述第四函数接口向所述BIOS过滤库发送所述第一变量的数据;所述BIOS过滤库向所述第三函数接口发送所述第一变量的数据;所述第三函数接口向所述第二函数接口发送所述第一变量的数据;所述第二函数接口向所述第一函数接口发送所述第一变量的数据;所述第一函数接口向所述应用态过滤库发送所述第一变量的数据。11.一种变量写入方法,其特征在于,包括:第一应用程序向应用态过滤库发送写入请求,所述写入请求用于请求写入第一变量的数据,所述写入请求包括所述第一变量的全局唯一标识符GUID、变量名和第一净载荷;在所述第一应用程序是经过安全校验的情况下,所述应用态过滤库根据所述GUID和所述变量名读取所述第一变量对应的数据,所述第一变量的数据包括标志位和所述第一变量对应的第二净载荷;所述应用态过滤库调用基本输入输出系统BIOS过滤库写入所述标志位、校验位和所述第一净载荷,所述校验位用于校验所述第一净载荷;所述BIOS过滤库验证所述校验位;若验证成功,所述BIOS过滤库将所述标志位、所述校验位和所述第一净载荷写入内存。12.根据权利要求11所述的方法,其特征在于,所述在所述第一应用程序是经过安全校验的情况下,所述应用态过滤库根据所述GUID和所述变量名读取所述第一变量对应的数据包括:所述应用态过滤库从所述第一应用程序接收数字签名,所述数字签名是所述第一应用程序根据公钥加密的;所述应用态过滤库根据私钥对所述数字签名进行验证;若验证通过,所述应用态过滤库根据所述GUID和所述变量名读取所述第一变量对应的数据。13.根据权利要求11或12所述的方法,其特征在于,所述应用态过滤库位于应用层,所述BIOS过滤库位于BIOS层。14.根据权利要求11

13任一项所述的方法,其特征在于,所述应用态过滤库根据所述GUID和所述变量名读取所述第一变量对应的数据之后,所述方法还包括:
所述应用态过滤库确定所述第一变量对应的数据是否存在所述标志位。15.根据权利要求11

14任一项所述的方法,其特征在于,所述标志位为预设字符串。16.根据权利要求11

15任一项所述的方法,其特征在于,所述应用态过滤库调用基本输入输出系统BIOS过滤库写...

【专利技术属性】
技术研发人员:相超
申请(专利权)人:荣耀终端有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1