【技术实现步骤摘要】
一种变量读取、写入方法和变量读取、写入装置
[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]为达到上述目的,本申请的实施例采用如下技术 ...
【技术保护点】
【技术特征摘要】
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过滤库写...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。