CN116049809A - 一种驱动调用方法和设备 - Google Patents
一种驱动调用方法和设备 Download PDFInfo
- Publication number
- CN116049809A CN116049809A CN202210669515.5A CN202210669515A CN116049809A CN 116049809 A CN116049809 A CN 116049809A CN 202210669515 A CN202210669515 A CN 202210669515A CN 116049809 A CN116049809 A CN 116049809A
- Authority
- CN
- China
- Prior art keywords
- driver
- driving
- request
- signature
- drive
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 223
- 230000008569 process Effects 0.000 claims abstract description 170
- 230000006870 function Effects 0.000 claims description 48
- 238000011161 development Methods 0.000 claims description 40
- 230000004044 response Effects 0.000 claims description 12
- 238000004891 communication Methods 0.000 description 20
- 238000012545 processing Methods 0.000 description 8
- 238000005192 partition Methods 0.000 description 7
- 238000012795 verification Methods 0.000 description 7
- 238000010295 mobile communication Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 238000013528 artificial neural network Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000003416 augmentation Effects 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 229940060321 after-bug Drugs 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013529 biological neural network Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000019771 cognition Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/51—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Automation & Control Theory (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供一种驱动调用方法和设备,涉及电子技术领域,能够实现驱动程序的独立管理,提高可信执行环境的安全性。该方法包括获取第一驱动程序对应的镜像驱动文件,镜像驱动文件包括第一驱动程序、第一驱动程序的属性信息和第一驱动程序的签名,第一驱动程序的签名与第一驱动程序的属性信息中的驱动类型相匹配;根据第一驱动程序的签名确定第一驱动程序的权限,将第一驱动程序运行在第一驱动进程中,第一驱动进程与第一驱动程序的权限相匹配,第一驱动进程为多个驱动进程中的一个,多个驱动进程中的每个驱动进程对应不同的权限。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种驱动调用方法和设备。
背景技术
目前,可信执行环境操作系统(trusted execution environment operatingsystem,TEE OS)的内核架构包括宏内核和微内核。宏内核的用户服务和内核服务都运行在一个地址空间中。而微内核的用户服务和内核服务保存在不同的地址空间中,用户服务运行在用户空间中,内核服务运行在内核空间中,且用户空间和内核空间相互隔离运行。
虽然微内核区分了用户空间和内核空间,但是内核空间中的所有驱动都是运行在同一个进程中的。由于内核空间中的所有驱动都运行在同一个进程中,若低权限的驱动存在错误(bug),很有可能出现利用其它高权限驱动来攻击TEE OS的情况。
发明内容
本申请实施例提供一种驱动调用方法和设备,能够实现驱动程序的独立管理,提高可信执行环境的安全性。
第一方面,提供了一种驱动调用方法,该方法包括:获取第一驱动程序对应的镜像驱动文件,镜像驱动文件包括第一驱动程序、第一驱动程序的属性信息和第一驱动程序的签名,第一驱动程序的签名与第一驱动程序的属性信息中的驱动类型相匹配;根据第一驱动程序的签名确定第一驱动程序的权限,将第一驱动程序运行在第一驱动进程中,第一驱动进程与第一驱动程序的权限相匹配,第一驱动进程为多个驱动进程中的一个,多个驱动进程中的每个驱动进程对应不同的权限。
本申请方案中,按照驱动程序的权限匹配驱动进程,能够使不同权限的驱动程序运行在不同的驱动进程中。这样,不同权限的驱动进程不会相互影响,即使某一驱动程序受到攻击,也不会影响到其它权限的驱动程序,从而降低整个系统的安全风险。
在一种可能的实现方式中,获取第一驱动程序对应的镜像驱动文件之前,还包括:响应于开发请求,生成第一驱动程序;对第一驱动程序进行配置和签名,得到第一驱动程序的属性信息和第一驱动程序的签名;镜像第一驱动程序、第一驱动程序的属性信息和第一驱动程序的签名,得到镜像驱动文件。
本申请方案中,可以基于开发请求,开发出符合需求的驱动程序。开发出的驱动程序可以是全新的驱动程序,还可以是针对出现错误的驱动程序更新后的驱动程序。这样,当驱动程序出现错误时,可以重新生成更新后的驱动程序,并将更新后的驱动程序运行在驱动进程中,从而快速解决出现错误的驱动程序带来的影响。
在一种可能的实现方式中,第一驱动程序的属性信息包括驱动类型;对第一驱动程序进行配置和签名,包括:对第一驱动程序进行配置,若配置后的第一驱动程序的驱动类型为高权限驱动,则为第一驱动程序签署高权限对应的签名;若配置后的第一驱动程序的驱动类型为低权限驱动,则为第一驱动程序签署低权限对应的签名。本申请方案中,通过设置驱动类型,来区分不同权限的驱动程序。之后,便于将不同权限的驱动程序运行在不同的驱动进程中,从而避免不同权限的驱动程序之间相互影响。
在一种可能的实现方式中,根据第一驱动程序的签名确定第一驱动程序的权限,将第一驱动程序运行在第一驱动进程中,包括:若根据第一驱动程序的签名确定第一驱动程序的权限为高权限,则第一驱动进程为高权限进程;若根据第一驱动程序的签名确定第一驱动程序的权限为低权限,则第一驱动进程为低权限进程。本申请方案中,将高权限的驱动程序运行在高权限进程中,将低权限的驱动程序运行在低权限进程中。
在一种可能的实现方式中,第一驱动程序的属性信息还包括运行标识,若根据第一驱动程序的签名确定第一驱动程序的权限为高权限,则第一驱动进程为高权限进程,包括:若根据第一驱动程序的签名确定第一驱动程序的权限为高权限,且第一驱动程序的运行标识为独立运行标识,则第一驱动进程为独立的进程;若根据第一驱动程序的签名确定第一驱动程序的权限为高权限,且第一驱动程序的运行标识为非独立运行标识,则第一驱动进程为高权限进程;若根据第一驱动程序的签名确定第一驱动程序的权限为低权限,则第一驱动进程为低权限进程,包括:若根据第一驱动程序的签名确定第一驱动程序的权限为低权限,且第一驱动程序的运行标识为独立运行标识,则第一驱动进程为独立的进程;若根据第一驱动程序的签名确定第一驱动程序的权限为低权限,且第一驱动程序的运行标识为非独立运行标识,则第一驱动进程为低权限进程。
本申请方案中,还提供针对特殊情况的处理方式,例如,驱动程序需要运行在独立的进程中。本申请通过在驱动程序的运行标识上,将运行标识设置为独立运行标识,当识别到驱动程序的独立运行标识时,将驱动程序运行在独立的进程中,这样,可以满足驱动程序多样化的运行需求。
在一种可能的实现方式中,该方法应用于电子设备,电子设备包括可信执行环境TEE OS,TEE OS运行有可信应用TA、驱动管理器和权限管理器,获取第一驱动程序对应的镜像驱动文件,包括:TA向驱动管理器发送第一请求,第一请求用于请求驱动管理器运行第一驱动程序,第一驱动程序为TA待实现的功能对应的驱动程序;在第一驱动程序未加载的情况下,驱动管理器向权限管理器发送第二请求,第二请求用于请求权限管理器获取第一驱动程序;权限管理器响应于第二请求,获取镜像驱动文件,镜像驱动文件包括第一驱动程序、第一驱动程序的属性信息和第一驱动程序的签名,第一驱动程序的签名与第一驱动程序的属性信息中的驱动类型相匹配。
本申请方案中,当TA需要执行待实现的功能时,会向驱动管理器发送第一请求,使驱动管理器运行该待实现的功能对应的第一驱动程序。若此时第一驱动程序没有运行在驱动进程中,驱动管理器需要通过权限管理器获取镜像驱动文件,镜像驱动文件包括第一驱动程序、第一驱动程序的属性和第一驱动程序的签名。
在一种可能的实现方式中,TEE OS还运行有驱动加载器,根据第一驱动程序的签名确定第一驱动程序的权限,将第一驱动程序运行在第一驱动进程中,包括:权限管理器根据第一驱动程序的签名,确定第一驱动程序的权限;权限管理器向驱动加载器发送第三请求,第三请求用于请求驱动加载器将第一驱动程序加载到驱动进程中,第三请求包括第一驱动程序的权限;驱动加载器响应于第三请求,基于第一驱动程序的权限,将第一驱动程序运行在第一驱动进程中。
本申请方案中,在获取镜像驱动文件后,权限管理器会验证第一驱动程序的签名,确定出第一驱动程序的权限。接着,权限管理器通知驱动加载器,根据第一驱动程序的权限,将第一驱动程序加载到与第一驱动程序的权限匹配的第一驱动进程中。
在一种可能的实现方式中,TEE OS还运行驱动进程实体,驱动加载器响应于第三请求,基于第一驱动程序的权限,将第一驱动程序运行在第一驱动进程中,包括:驱动加载器响应于第三请求,向驱动进程实体发送第四请求,第四请求用于请求驱动进程实体将第一驱动程序运行到相应的驱动进程中,第四请求包括第一驱动程序的权限;驱动进程实体响应于第四请求,按照第一驱动程序的权限,将第一驱动程序运行在第一驱动进程中。
在一种可能的实现方式中,方法还包括:当第一驱动程序在第一驱动进程中运行时,驱动管理器检验TA调用第一驱动程序的权限;若TA能够调用第一驱动程序,驱动管理器向TA发送指示信息,指示信息包括第一驱动程序的调用权限;TA利用指示信息调用第一驱动程序。
本申请方案中,驱动管理器验证TA的调用权限,若TA具有调用第一驱动程序的权限,驱动管理器向TA发送指示信息,TA可以利用指示信息调用第一驱动程序实现待实现的功能。
在一种可能的实现方式中,电子设备还包括富执行环境REE OS,权限管理器响应于第二请求,获取镜像驱动文件,包括:权限管理器响应于第二请求,从REE OS中获取镜像驱动文件。
在一种可能的实现方式中,电子设备还包括软件开发工具包SDK、可信应用开发文件名工具、签名工具和镜像工具,从REE OS中获取镜像驱动文件之前,还包括:响应于驱动开发请求,SDK生成第一驱动程序,并向可信应用开发文件名工具发送配置请求,配置请求用于请求可信应用开发文件名工具为第一驱动程序配置属性信息,配置请求包括第一驱动程序;可信应用开发文件名工具响应于配置请求,对第一驱动程序进行配置,得到第一驱动程序的属性信息,并向签名工具发送签名请求,签名请求用于请求签名工具为第一驱动程序签名,签名请求包括第一驱动程序和第一驱动程序的属性信息;签名工具响应于签名请求,对第一驱动程序进行签名,得到第一驱动程序的签名,并向镜像工具发送镜像请求,镜像请求用于请求镜像工具镜像第一驱动程序、第一驱动程序的属性信息和第一驱动程序的签名,镜像请求包括第一驱动程序、第一驱动程序的属性信息和第一驱动程序的签名;镜像工具响应于镜像请求,镜像第一驱动程序、第一驱动程序的属性信息和第一驱动程序的签名,得到镜像驱动文件。
在一种可能的实现方式中,待实现的功能包括启动功能、关闭功能、读功能或写功能。
第二方面,提供了一种电子设备,该电子设备具有实现上述第一方面的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
第三方面,提供了一种电子设备,包括:TEE OS、REE OS、处理器和存储器;该存储器用于存储计算机执行指令,当该电子设备运行时,该处理器执行该存储器存储的该计算机执行指令,以使该电子设备执行如上述第一方面中任一项的驱动调用方法。
第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机可以执行上述第一方面中任一项的驱动调用方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机可以执行上述第一方面中任一项的驱动调用方法。
第六方面,提供了一种装置(例如,该装置可以是芯片系统),该装置包括处理器,用于支持第一设备实现上述第一方面中所涉及的功能。在一种可能的设计中,该装置还包括存储器,该存储器,用于保存第一设备必要的程序指令和数据。该装置是芯片系统时,可以由芯片构成,也可以包含芯片和其他分立器件。
其中,第二方面至第六方面中任一种设计方式所带来的技术效果可参见第一方面中不同设计方式所带来的技术效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种可信应用调用驱动程序的场景示意图;
图2为本申请实施例提供的一种驱动程序生成和可信应用调用驱动程序的场景示意图;
图3为本申请实施例提供的一种电子设备的硬件结构示意图一;
图4为本申请实施例提供的一种电子设备的硬件结构示意图二;
图5为本申请实施例提供的一种驱动调用方法的流程示意图一;
图6为本申请实施例提供的一种驱动调用方法的流程示意图二;
图7为本申请实施例提供的一种驱动调用方法的流程示意图三;
图8为本申请实施例提供的一种芯片系统的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请的描述中,除非另有说明,“至少一个”是指一个或多个,“多个”是指两个或多于两个。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
为了下述各实施例的描述清楚简洁,首先给出相关概念或技术的简要介绍:
(1)信任区(trustzone):即ARMTM TrustZone,为了给电子设备提供一个安全的运行环境,出现了以ARM(advanced RISC machines)TrustZoneTM为代表的终端设备安全框架(其中RISC的英文全称为reduced instruction set computer)。在ARM TrustZoneTM框架下,系统级的安全是通过将片上系统(system on chips,SoC)的软硬件资源划分到两个世界实现的。这两个世界为正常世界(normal world)和安全世界(secure world)(也可以叫安全域和非安全域),正常世界对应富执行环境(rich execution environment,REE),安全世界对应TEE。
(2)REE OS:在REE中运行的系统,即运行在正常世界状态中的系统。例如,安卓(AndroidTM)、苹果移动设备操作系统(iphone operation system,IOSTM)和LinuxTM等操作系统。REE除了被称为“富执行环境”之外,还可以被称为“不可信执行环境”、“普通执行环境”、“不安全执行环境”等。
(3)TEE OS:在TEE中运行的系统,即运行在安全世界状态中的系统。TEE是在硬件系统中为敏感数据单独分配一块隔离的内存,所有敏感数据的计算均在该内存中进行。除了经过授权的接口外,硬件系统中的其他部分不能访问该内存中的信息。TEE OS和REE OS运行于同一台物理设备上,两个系统相互隔离,分别运行一套操作系统,REE只能通过特定入口和TEE进行通信。
(4)TA:运行在TEE中的应用,能够为运行在TEE之外的客户端应用(clientapplication,CA)提供安全服务,如输入密码,生成交易签名,人脸识别等。
(5)进程间通信(Inter-Process Communication,IPC):是指系统中进程或线程之间的通信机制,用于实现线程与线程之间进行通信、数据交互等功能。
(6)软件开发工具包(Software Development Kit,SDK):软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。
TEE(即TEE OS)通常由较高特权的内核和较低特权的多个可信应用程序(TrustedApplications,TA)组成。较高特权的内核负责管理系统的进程、内存、设备驱动程序、文件和网络系统等,决定着系统的性能和稳定性。较低特权的多个可信应用程序负责为运行在TEE之外的CA提供安全服务。
TEE在运行时分为用户空间和内核空间。TA运行于TEE的用户空间,内核运行于TEE的内核空间。当TA为了实现其功能,调用驱动程序时,由于驱动程序被内核管理,而内核运行在内核空间,那么驱动程序也运行在内核空间。并且用户空间和内核空间在运行时是相互独立,所以TA不能直接调用驱动程序,需要通过TEE的IPC机制来调用驱动程序。
TEE的IPC机制主要用于实现各个线程之间的相互调用、线程与安全驱动之间的相互调用、线程与TEE内核空间服务之间的相互调用。IPC机制具体是通过系统调用(systemcall)来访问其他线程或者安全驱动。系统调用的关键点是通过超级管理员(Supervisor,SVC)模式,使TEE用户空间切换到TEE的内核空间。切换时带入需要调用的线程或驱动的ID,在TEEOS的调用数组中找到对应的函数并执行函数,从而完成系统调用。系统调用完成后,从内核空间切换到用户空间。其中,SVC模式主要是用来管理调用指令被执行或者被重置,该模式的权限级别非常大,一般情况下不会被用到。
示例性的,如图1所示,TEE中运行多个TA,例如,TA1(可信应用1)和TA2(可信应用1)。结合上述TA调用驱动程序的过程,当TA调用驱动程序时,通过IPC机制实现调用。例如,TA1通过ipc call1调用TEE的驱动框架内的平台驱动程序,TA2通过ipccall2调用TEE的驱动框架内的三方驱动程序。其中,平台驱动程序为高权限的驱动程序,三方驱动程序为低权限的驱动程序。
在当前主流的TEE驱动开发框架中,驱动程序必须依赖TEE工程环境开发,不能脱离TEE工程环境独立开发。如图2所示,开发者会根据开发需求,通过开发部署模块生成驱动程序,例如,生成平台驱动程序、产品驱动程序和三方驱动程序。其中,平台驱动程序(Platform Device)用于驱动平台设备,为系统及外设驱动提供访问接口。平台设备可以是I2C总线(Inter-Integrated Circuit,I2C)/异步收发传输器(Universal AsynchronousReceiver/Transmitter,UART)、通用输入/输出口(General Purpose Input Output,GPIO)/实时时钟(Real_Time Clock,RTC)等片上系统(systemonchips,SoC)内硬件资源等。产品驱动可以是电子设备上的产品对应的驱动,电子设备上的产品可以是电子设备上的应用程序。三方驱动程序也可以称为业务驱动程序,具体是指第三方供应商提供的驱动程序。
然后将生成的驱动程序一起打包,得到TEE镜像驱动文件,并将TEE镜像驱动文件加载到TEE内核空间中。当TEE侧的TA为了实现其功能调用驱动程序时,通过TEE内核空间的驱动进程中来调动驱动程序。由于TEE内核空间中的所有驱动程序都运行在同一个驱动进程,不管是高权限的平台驱动程序,还是低权限的三方驱动程序。所以在运行的过程中,如图1所示,若三方驱动程序存在bug(bug以图1中的标记符11表示),有可能出现利用平台驱动程序的高权限来攻击TEE的情况。并且现有的TEE不具有动态升级的能力,从三方驱动程序出现问题到问题被解决需要较长的时间,在处理bug的这段时间内,TEE的安全性势必大大降低。
因此,针对上述问题,本申请提供一个设置有开发部署模块、TEE(即TEE OS)和REE(即REE OS)的电子设备,当三方驱动程序存在bug时,可以利用开发部署模块中的SDK独立开发针对bug的升级后的驱动程序,然后对升级后的驱动程序进行属性信息配置、签名、镜像。从而得到镜像驱动文件,并将该镜像驱动文件存储在REE的文件系统分区中。若TA为了实现其功能调用驱动程序时,首先从REE的文件系统分区中获取镜像驱动文件,然后确定出驱动程序的权限。接着利用驱动加载器,将驱动程序加载到相应的驱动进程中。所以本申请不仅可以利用SDK独立开发驱动程序,还可以根据开发的驱动程序的属性信息将驱动程序分配到不同的驱动进程中运行。这样,能够使得不同权限的驱动程序隔离运行,若某个驱动程序存在bug,也不会出现利用其它高权限的驱动程序攻击TEE的情况,从而保证TEE运行的安全性和稳定性。
示例性的,本申请实施例中的电子设备可以是手机、平板电脑、桌面型、膝上型、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本,以及可穿戴设备、个人数字助理(personal digital assistant,PDA)、增强现实(augmented reality,AR)\虚拟现实(virtual reality,VR)设备等包括上述TEE OS和REEOS的设备,本申请实施例对该电子设备的具体形态不作特殊限制。
示例性的,图3示出了电子设备300的结构示意图。
电子设备300可以包括处理器310,外部存储器接口320,内部存储器321,通用串行总线(universal serial bus,USB)接口330,天线1,天线2,移动通信模块340,无线通信模块350,显示屏360等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备300的具体限定。在本申请另一些实施例中,电子设备300可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器310可以包括一个或多个处理单元,例如:处理器310可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是电子设备300的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器310中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器310中的存储器为高速缓冲存储器。该存储器可以保存处理器310刚用过或循环使用的指令或数据。如果处理器310需要再次使用该指令或数据,可从存储器中直接调用。避免了重复存取,减少了处理器310的等待时间,因而提高了系统的效率。
在一些实施例中,基于trustzone技术,将处理器310的工作状态划分为正常世界状态和安全世界状态。正常世界状态用于运行REE OS,安全世界状态用于运行TEE OS。
在一些实施例中,处理器310可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulat ion,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备300的结构限定。在本申请另一些实施例中,电子设备300也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
电子设备300的无线通信功能可以通过天线1,天线2,移动通信模块340,无线通信模块350,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备300中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块340可以提供应用在电子设备300上的包括2G/3G/4G/5G等无线通信的解决方案。无线通信模块350可以提供应用在电子设备300上的包括无线局域网(wireless local area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。
在一些实施例中,电子设备300的天线1和移动通信模块340耦合,天线2和无线通信模块350耦合,使得电子设备300可以通过无线通信技术与网络以及其他设备通信。无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
电子设备300通过GPU,显示屏360,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏360和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器310可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏360用于显示图像,视频等。显示屏360包括显示面板。数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备300在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。视频编解码器用于对数字视频压缩或解压缩。NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备300的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口320可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备300的存储能力。外部存储卡通过外部存储器接口320与处理器310通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器321可以用于存储计算机可执行程序代码,可执行程序代码包括指令。处理器310通过运行存储在内部存储器321的指令,从而执行电子设备300的各种功能应用以及数据处理。内部存储器321可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备300使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器321可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
在一些实施例中,电子设备300还可以包括电源管理模块、传感器模块、音频模块(例如,麦克风、扬声器,受话器)、按键(例如,开机键,音量键)、马达、指示器、1个或多个SIM卡接口等。
在一些实施例中,传感器模块还可以包括压力传感器、触摸传感器、陀螺仪传感器、气压传感器、磁传感器、加速度传感器、距离传感器、接近光传感器、环境光传感器、指纹传感器、温度传感器、骨传导传感器等。
如图4所示,本申请在电子设备上设置有开发部署模块、REE(即REE OS)和TEE(即TEE OS)。其中,开发部署模块用于生成镜像驱动文件,生成的镜像驱动文件可以是全新的驱动程序对应的镜像驱动文件,也可以是针对bug升级后的驱动程序对应的镜像驱动文件。REE用于存储镜像驱动文件。TEE用于在相应的驱动进程中运行镜像驱动文件对应的驱动程序。
具体的,开发部署模块包括SDK、可信应用开发文件名(manifest)工具、签名工具和镜像工具。
其中,SDK用于生成驱动程序的程序代码。
可信应用开发文件名工具用于对SDK生成的驱动程序进行配置,以得到驱动程序的属性信息。
签名工具用于对驱动程序进行签名,得到驱动程序的签名。
镜像工具用于镜像驱动程序、驱动程序的属性信息和镜像驱动程序的签名,以得到镜像驱动文件。
REE用于存储开发部署模块生成的镜像驱动文件。具体的,镜像驱动文件存储在REE的文件系统分区中。
示例性的,镜像驱动文件可以存储在REE的/reefs/drv-0.sec的地址下,镜像驱动文件的文件名为Ree-fs-agenr。
TEE包括TA、驱动管理器(Drv-manager)、权限管理器(Permission Manager)、驱动加载器(Drv-loader)和驱动进程实体(Drv-entity)。
其中,TA用于在执行待实现功能时,向驱动管理器发送第一请求,第一请求用于请求驱动管理器运行TA待实现的功能对应的驱动程序。
驱动管理器用于根据第一请求,调用驱动程序。驱动管理器还用于判断驱动程序是否被加载,在确定驱动程序未加载时,请求权限管理器加载驱动程序。
权限管理器用于根据驱动管理器的请求,从REE的文件系统分区中获取所需的镜像驱动文件,并对获取到的镜像驱动文件进行签名验证,确定出镜像驱动文件中的驱动程序的权限。权限管理器还用于向驱动加载器下发驱动程序的权限以及请求驱动加载器加载驱动程序。
驱动加载器用于根据权限管理器的请求,请求驱动进程实体加载驱动程序,该请求中包括驱动程序的权限。
驱动进程实体用于根据驱动加载器的请求,基于驱动程序的权限,在相应的驱动进程中加载驱动程序。
以下,将结合附图对本申请实施例提供的一种驱动生成方法进行具体介绍。如图5所示,该方法包括以下步骤:
S501、响应于驱动开发请求,SDK生成第一驱动程序,并向可信应用开发文件名工具发送配置请求。
其中,驱动开发请求中包括驱动程序能够实现的功能、驱动程序所需的权限、驱动名以及其它信息,配置请求用于请求可信应用开发文件名工具为第一驱动程序配置属性信息。配置请求包括第一驱动程序。
具体的,SDK根据驱动开发需求开发出第一驱动程序,生成的第一驱动程序可以是全新的驱动程序,还可以是针对bug生成的升级后的驱动程序。
得到第一驱动程序后,SDK请求可信应用开发文件名工具为第一驱动程序配置属性信息。
S502、可信应用开发文件名工具响应于配置请求对第一驱动程序进行配置,得到第一驱动程序的属性信息,并向签名工具发送签名请求。
其中,签名请求用于请求签名工具为第一驱动程序签名。签名请求包括第一驱动程序和第一驱动程序的属性信息。
在生成第一驱动程序后,可信应用开发文件名工具根据驱动开发请求中的驱动所需的权限、驱动名以及其它信息为第一驱动程序进行属性信息配置,得到第一驱动程序的属性信息。之后,可信应用开发文件名工具请求签名工具为第一驱动程序签名。
示例性的,可信应用开发文件名工具配置的属性信息可以包括驱动名、驱动类型、运行标识以及特殊权限等。其中,驱动类型包括私有驱动和普通驱动,通常私有驱动具有较高的权限,又称高权驱动。普通驱动具有的权限较低,又称低权限驱动。运行标识包括独立运行标识devhost和非独立运行标识,若第一驱动程序具有独立运行标识,则第一驱动程序后续需要运行在独立的进程中。特殊权限可以是taskmap权限。
可信应用开发文件名工具为驱动配置属性信息的部分代码可以如下所示:
S503、签名工具响应于签名请求,对第一驱动程序进行签名,得到第一驱动程序的签名,并向签名工具发送镜像请求。
其中,镜像请求用于请求镜像工具镜像第一驱动程序、第一驱动程序的属性信息和第一驱动程序的签名。镜像请求包括第一驱动程序、第一驱动程序的属性信息和第一驱动程序的签名。
利用签名工具对第一驱动程序进行签名,得到签名后的镜像驱动文件。对第一驱动程序进行签名可以认为是在第一驱动程序上盖了章,认证了第一驱动程序的签发者身份。有了签名的第一驱动程序,操作系统会认为它是安全的、稳定的、有版权的驱动,安装的时候也会更加顺畅。
在一些实施例中,若驱动类型为私有驱动(又称高权限驱动),则签名工具为镜像驱动文件签署专有签名(即高权限对应的签名)。若驱动类型是普通驱动(又称低权限驱动),则签名工具为镜像驱动文件签署普通签名(即低权限对应的签名)。
得到第一驱动程序的签名后,签名工具请求镜像工具镜像第一驱动程序、第一驱动程序的属性信息和第一驱动程序的签名。
S504、镜像工具响应于镜像请求,对第一驱动程序、第一驱动程序的属性信息和第一驱动程序的签名进行镜像,得到镜像驱动文件。
镜像工具镜像第一驱动程序、第一驱动程序的属性信息和第一驱动程序的签名,得到镜像驱动文件。镜像具体是指将第一驱动程序、第一驱动程序的属性信息和第一驱动程序的签名进行复制,得到完全一样的文件。最后,将镜像驱动文件存储在REE OS的文件系统分区中。
本申请方案中,SDK可以根据驱动开发请求,生成第一驱动程序,从而实现驱动程序的独立开发。若TEE OS中的驱动程序存在bug,还可以针对bug,使用SDK生成升级后的驱动程序,后续使用升级后的驱动程序,可以快速解决bug带来的影响,从而提高TEE OS的安全性。
在生成第一驱动程序后,还可以为第一驱动程序添加属性信息,例如,添加驱动类型、添加运行标识等。便于之后根据第一驱动程序的属性信息为第一驱动程序提供特殊的服务,例如,第一驱动程序的运行标识为独立运行标识,那么第一驱动程序将运行在独立的进程中。这样,可以有效的根据驱动程序的自身特征,为驱动程序提供合适的运行环境。
以下,将结合附图对本申请实施例提供的一种驱动调用方法进行具体介绍。如图6所示,该方法包括以下步骤:
S601、TA向驱动管理器发送第一请求。
其中,第一请求用于请求驱动管理器运行第一驱动程序,第一驱动程序为TA待实现的功能对应的驱动程序。第一请求包括第一驱动程序的驱动名。
当TA为了执行待实现的功能时,会向驱动管理器发送第一请求。
示例性的,待实现的功能包括打开(open)功能、关闭(close)功能、读(read)功能以及写(write)功能。TA向驱动管理器发送drv_open消息,open为驱动名,drv_open用于指示TA请求驱动管理器运行打开驱动。
S602、驱动管理器响应于第一请求,判断第一驱动程序是否加载。
驱动管理器响应于第一请求,从第一请求中获取第一驱动程序的驱动名。并根据第一驱动程序的驱动名,在驱动进程中查询该驱动名对应的第一驱动程序是否被加载。
S603a、若第一驱动程序已加载,继续执行S610-S611。
S603b、若第一驱动程序未加载,驱动管理器向权限管理器发送第二请求。
其中,第二请求用于请求权限管理器获取第一驱动程序,第二请求中包括第一驱动程序对应的驱动名。
示例性的,在第一驱动程序未加载时,驱动管理器向权限管理器发送Request_load_drv消息,Request_load_drv消息用于请求权限管理器获取第一驱动程序。
S604、权限管理器响应于第二请求,获取镜像驱动文件。
其中,镜像驱动文件包括第一驱动程序、第一驱动程序的属性信息和第一驱动程序的签名。
具体的,权限管理器响应于第二请求,通过REE的文件系统分区中,获取镜像驱动文件,镜像驱动文件为sec文件。获取到镜像驱动文件后,将镜像驱动文件存放在TEE的临时存储地址中,得到镜像驱动文件后,解析镜像驱动文件,得到第一驱动程序、第一驱动程序的属性信息和第一驱动程序的签名。第一驱动程序的属性信息包括驱动名、驱动类型、独立运行标识以及特殊权限等。
示例性的,权限管理器向REE系统发送Request_drv_from_reefs消息,Request_drv_from_reefs消息用于请求获取镜像驱动文件。REE系统接收到Request_drv_from_reefs消息后,查找该镜像驱动文件,并向权限管理器发送Reply_drv_from_reefs消息,Reply_drv_from_reefs消息为Request_drv_from_reefs消息的回复消息,Reply_drv_from_reefs消息中携带镜像驱动文件。
S605、权限管理器根据第一驱动程序的签名确定第一驱动程序的权限。
权限管理器可以根据第一驱动程序的属性信息中的驱动类型,确定出第一驱动程序是私有驱动还是普通驱动。如果第一驱动程序是私有驱动,权限管理器按照私有驱动对应的专有签名,与第一驱动程序的签名进行比对,若比对一致,则权限管理器授予第一驱动程序申请的私有权限(高权限)。若比对不一致,权限管理器拒绝授予第一驱动程序申请的私有权限(高权限)。然后权限管理器按照普通驱动对应的专有签名,与第一驱动程序的签名进行比对,若比对一致,则权限管理器授予第一驱动程序申请的普通权限(低权限)。若比对不一致,权限管理器拒绝授予第一驱动程序申请的普通权限(低权限)。权限管理器还可以继续比对,直到验证完所有的权限为止。
如果第一驱动程序是普通驱动,权限管理器将按照普通驱动对应的普通签名,与第一驱动程序的签名进行比对,若比对一致,则权限管理器授予第一驱动程序申请的普通权限(低权限)。若比对不一致,权限管理器拒绝授予第一驱动程序申请的普通权限(低权限)。权限管理器还可以继续比对,直到验证完所有的权限为止。
示例性的,权限管理器通过Verifyimage函数验证第一驱动程序的权限。
S606、权限管理器向驱动加载器发送第三请求。
第三请求用于请求驱动加载器将第一驱动程序加载到驱动进程中,第三请求包括第一驱动程序的权限。
权限管理器验证完第一驱动程序的权限后,向驱动加载器发送第三请求,使驱动加载器加载第一驱动程序。由于驱动加载器将第一驱动程序加载到具体的驱动进程与第一驱动程序的权限相关,所以权限管理器发送的第三请求中还包括第一驱动程序的权限。之后,便于按照第一驱动程序的权限,将第一驱动程序运行在不同权限的驱动进程中。
示例性的,权限管理器向驱动加载器发送Bootdrv消息,Bootdrv消息用于请求驱动加载器将第一驱动程序加载到驱动进程中,Bootdrv消息包括第一驱动程序的权限。
可选的,第一驱动程序的权限还可以是权限管理器单独下发给驱动加载器和驱动进程实体。
示例性的,权限管理器向驱动管理器发送Distribution Permission消息,Distribution Permission用于指示第一驱动程序的权限。
在权限管理器向驱动加载器下发了第一驱动程序的权限后,权限管理器向驱动加载器发送目标第三请求,目标第三请求用于请求驱动加载器将第一驱动程序加载到驱动进程中,目标第三请求不包括第一驱动程序的权限。
S607、驱动加载器响应于第三请求,向驱动进程实体发送第四请求。
其中,第四请求用于请求驱动进程实体将第一驱动程序运行到相应的驱动进程中。
若第一驱动程序的权限是权限管理器单独下发的,则第四请求中不包括第一驱动程序的权限,若第一驱动程序的权限是权限管理器以第三请求的方式下发的,则第四请求中包括第一驱动程序的权限。
驱动加载器引导驱动进程实体运行第一驱动程序。示例性的,驱动加载器向驱动进程实体发送Bootdrvprocess消息,Bootdrvprocess消息用于请求驱动进程实体将第一驱动程序运行到相应的驱动进程中。
S608、驱动进程实体响应于第四请求,按照第一驱动程序的权限,将第一驱动程序运行在第一驱动进程中。
驱动进程实体响应于第四请求,若第一驱动程序的权限是私有权限(高权限),将第一驱动程序运行在高权限进程中,即第一驱动进程为高权限进程。若第一驱动程序的权限是普通权限(低权限),将第一驱动程序运行在低权限进程中,即第一驱动进程为低权限进程。
若第一驱动程序的权限是私有权限(高权限),且第一驱动程序的运行标识独立运行标识,则驱动进程实体使第一驱动程序运行在独立的进程中。若第一驱动程序的权限是私有权限(高权限),且第一驱动程序的运行标识是非独立运行标识,则驱动进程实体使第一驱动程序运行在高权限进程。
若第一驱动程序的权限是普通权限(低权限),且第一驱动程序的运行标识独立运行标识,则驱动进程实体使第一驱动程序运行在独立的进程中。若第一驱动程序的权限是普通权限(低权限),且第一驱动程序的运行标识是非独立运行标识,则驱动进程实体使第一驱动程序运行在低权限进程。
当第一驱动程序在第一驱动进程中运行时,驱动进程实体向驱动加载器发送回复消息。驱动加载器接收到驱动进程实体发送的回复消息后,向权限管理器发送回复消息。权限管理器接收到驱动加载器发送的回复消息后,向驱动管理器发送回复消息。
示例性的,第一驱动程序在第一驱动进程中运行时,驱动进程实体向驱动加载器发送reply消息。驱动加载器接收到驱动进程实体发送的reply消息后,向权限管理器发送reply消息。权限管理器接收到驱动加载器发送的reply消息后,向驱动管理器发送reply消息。其中,reply消息用于表征镜像驱动文件对应的驱动已被拉起。
S609、驱动管理器检验TA调用第一驱动程序的权限。
驱动管理器接收到权限管理器发送的回复消息后,检验TA调用第一驱动程序的权限。驱动管理器检验TA是否具有调用第一驱动程序的权限的过程为:驱动管理器根据第一请求,调动第一请求对应的权限校验接口,并校验TA是否具有使用第一请求对应的权限校验接口的权限,根据校验结果,得出TA调用第一驱动程序的权限。
示例性的,驱动管理器接收到权限管理器发送的reply消息后,校验TA调用第一驱动程序的权限。
S610、若TA能够调用第一驱动程序,驱动管理器向TA发送指示信息。
其中,指示信息包括第一驱动程序的调用权限。
驱动管理器检验TA能够调用第一驱动程序,若TA具有调用第一驱动程序的权限,驱动管理器向TA发送指示信息。若TA不具有调用第一驱动程序的权限,则整个流程结束。
示例性的,若TA具有调用第一驱动程序的权限,驱动管理器向TA发送驱动文件句柄消息(fd消息)。驱动文件句柄消息包括用于第一驱动程序的调用权限。
S611、TA利用指示信息调用第一驱动程序。
若TA接收到指示信息,则TA可以通过指示信息向驱动进程实体中的第一驱动程序发送业务请求。
TA处于用户空间,第一驱动程序处于内核空间,则TA需要通过指示信息内置的第一驱动程序的调用权限(即System Call子权限)向驱动进程实体中的第一驱动程序发送业务请求。驱动进程实体验证指示信息的调用权限,若验证成功,则可以使处于用户空间的TA调用处于内核空间的第一驱动程序,从而执行待实现的功能。若验证失败,TA将无法调用第一驱动程序。
示例性的,TA通过fd向驱动进程实体中的第一驱动程序发起ioctl调用。驱动进程实体验证fd内置的System Call子权限,若验证成功,则TA可以调用第一驱动程序。若验证失败,TA将无法调用第一驱动程序。
本申请方案中,当TA为了执行待实现的功能,调用第一驱动程序时,若第一驱动程序没有加载,可以通过权限管理器从REE的文件系统分区中获取镜像驱动文件。得到镜像驱动文件后,通过解析、签名验证等一系列操作,确定出第一驱动程序的权限。接着通过驱动加载器引导驱动进程实体,使第一驱动程序在第一驱动进程中正常运行。最后验证TA调用第一驱动程序的权限,在TA具有调用第一驱动程序的权限时,使TA调用第一驱动程序实现其功能。这样,通过将不同权限的驱动程序运行在不同的驱动进程中,使不同权限的驱动程序隔离开。若某个权限的驱动程序出现问题时,将不会再出现利用高权限的驱动程序攻击整个TEE系统的情况,从而提高TEE系统的安全性和稳定性。
以下,将结合附图对本申请实施例提供的一种驱动调用方法进行具体介绍。如图7所示,该方法包括以下步骤:
S701、响应于开发请求,电子设备生成第一驱动程序。
详细内容参见S501。
S702、电子设备对第一驱动程序进行配置和签名,得到第一驱动程序的属性信息和第一驱动程序的签名。
具体的,电子设备对第一驱动程序进行配置,若配置后的第一驱动程序的驱动类型为高权限驱动,则为第一驱动程序签署高权限对应的签名;若配置后的第一驱动程序的驱动类型为低权限驱动,则为第一驱动程序签署低权限对应的签名。
详细内容参见S502和S503。
S703、电子设备镜像第一驱动程序、第一驱动程序的属性信息和第一驱动程序的签名,得到镜像驱动文件。
其中,镜像驱动文件包括第一驱动程序、第一驱动程序的属性信息和第一驱动程序的签名,第一驱动程序的签名与第一驱动程序的属性信息中的驱动类型相匹配。
具体的,得到的镜像驱动文件存储在电子设备中的REE OS中。详细内容参见S504。
S704、电子设备根据第一驱动程序的签名确定第一驱动程序的权限,将第一驱动程序运行在第一驱动进程中。
其中,第一驱动进程与第一驱动程序的权限相匹配,第一驱动进程为多个驱动进程中的一个,多个驱动进程中的每个驱动进程对应不同的权限。
电子设备得到镜像驱动文件后,解析镜像驱动文件,得到第一驱动程序、第一驱动程序的属性信息和第一驱动程序的签名,然后结合第一驱动程序的属性信息,验证镜像驱动文件中的第一驱动程序的签名,确定出第一驱动程序的权限。最后根据第一驱动程序的权限,将第一驱动程序运行在第一驱动进程中。
具体的,若第一驱动程序的权限为高权限,则第一驱动进程为高权限进程;若第一驱动程序的权限为低权限,则第一驱动进程为低权限进程。
若第一驱动程序的权限为高权限,且第一驱动程序的属性信息中的运行标识为独立运行标识,则第一驱动进程为独立的进程;若第一驱动程序的权限为高权限,且第一驱动程序的属性信息中的运行标识为非独立运行标识,则第一驱动进程为高权限进程。
若第一驱动程序的权限为低权限,且第一驱动程序的属性信息中的运行标识为独立运行标识,则第一驱动进程为独立的进程;若第一驱动程序的权限为低权限,且第一驱动程序的属性信息中的运行标识为非独立运行标识,则第一驱动进程为低权限进程。
本申请另一些实施例提供了一种电子设备,该电子设备可以包括:通信模块、存储器和一个或多个处理器。该通信模块、存储器与处理器耦合。该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令。
本申请另一实施例提供一种芯片系统,如图8所示,该芯片系统包括至少一个处理器801和至少一个接口电路802。处理器801和接口电路802可通过线路互联。例如,接口电路802可用于从其它装置接收信号。又例如,接口电路802可用于向其它装置(例如处理器801)发送信号。
例如,接口电路802可读取设备中存储器中存储的指令,并将该指令发送给处理器801。当指令被处理器801执行时,可使得电子设备执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本申请实施例对此不作具体限定。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行上述方法实施例中电子设备(例如,手机)执行的各个功能或者步骤。
本申请实施例还提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述方法实施例中电子设备(例如,笔记本电脑)执行的各个功能或者步骤。
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (14)
1.一种驱动调用方法,其特征在于,所述方法包括:
获取第一驱动程序对应的镜像驱动文件,所述镜像驱动文件包括所述第一驱动程序、所述第一驱动程序的属性信息和所述第一驱动程序的签名,所述第一驱动程序的签名与所述第一驱动程序的属性信息中的驱动类型相匹配;
根据所述第一驱动程序的签名确定所述第一驱动程序的权限,将所述第一驱动程序运行在第一驱动进程中,所述第一驱动进程与所述第一驱动程序的权限相匹配,所述第一驱动进程为多个驱动进程中的一个,所述多个驱动进程中的每个驱动进程对应不同的权限。
2.根据权利要求1所述的方法,其特征在于,所述获取第一驱动程序对应的镜像驱动文件之前,还包括:
响应于开发请求,生成所述第一驱动程序;
对所述第一驱动程序进行配置和签名,得到所述第一驱动程序的属性信息和所述第一驱动程序的签名;
镜像所述第一驱动程序、所述第一驱动程序的属性信息和所述第一驱动程序的签名,得到所述镜像驱动文件。
3.根据权利要求1或2所述的方法,其特征在于,所述第一驱动程序的属性信息包括驱动类型;
所述对所述第一驱动程序进行配置和签名,包括:
对所述第一驱动程序进行配置,若配置后的所述第一驱动程序的驱动类型为高权限驱动,则为所述第一驱动程序签署高权限对应的签名;
若配置后的所述第一驱动程序的驱动类型为低权限驱动,则为所述第一驱动程序签署低权限对应的签名。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述根据所述第一驱动程序的签名确定所述第一驱动程序的权限,将所述第一驱动程序运行在第一驱动进程中,包括:
若根据所述第一驱动程序的签名确定所述第一驱动程序的权限为高权限,则所述第一驱动进程为高权限进程;
若根据所述第一驱动程序的签名确定所述第一驱动程序的权限为低权限,则所述第一驱动进程为低权限进程。
5.根据权利要求4所述的方法,其特征在于,所述第一驱动程序的属性信息还包括运行标识,所述若根据所述第一驱动程序的签名确定所述第一驱动程序的权限为高权限,则所述第一驱动进程为高权限进程,包括:
若根据所述第一驱动程序的签名确定所述第一驱动程序的权限为高权限,且所述第一驱动程序的运行标识为独立运行标识,则所述第一驱动进程为独立的进程;
若根据所述第一驱动程序的签名确定所述第一驱动程序的权限为高权限,且所述第一驱动程序的运行标识为非独立运行标识,则所述第一驱动进程为高权限进程;
所述若根据所述第一驱动程序的签名确定所述第一驱动程序的权限为低权限,则所述第一驱动进程为低权限进程,包括:
若根据所述第一驱动程序的签名确定所述第一驱动程序的权限为低权限,且所述第一驱动程序的运行标识为独立运行标识,则所述第一驱动进程为独立的进程;
若根据所述第一驱动程序的签名确定所述第一驱动程序的权限为低权限,且所述第一驱动程序的运行标识为非独立运行标识,则所述第一驱动进程为低权限进程。
6.根据权利要求1-5中任一项所述的方法,其特征在于,应用于电子设备,所述电子设备包括可信执行环境TEE OS,所述TEE OS运行有可信应用TA、驱动管理器和权限管理器,所述获取第一驱动程序对应的镜像驱动文件,包括:
所述TA向所述驱动管理器发送第一请求,所述第一请求用于请求所述驱动管理器运行第一驱动程序,所述第一驱动程序为所述TA待实现的功能对应的驱动程序;
在所述第一驱动程序未加载的情况下,所述驱动管理器向所述权限管理器发送第二请求,所述第二请求用于请求所述权限管理器获取所述第一驱动程序;
所述权限管理器响应于所述第二请求,获取所述镜像驱动文件,所述镜像驱动文件包括所述第一驱动程序、所述第一驱动程序的属性信息和所述第一驱动程序的签名,所述第一驱动程序的签名与所述第一驱动程序的属性信息中的驱动类型相匹配。
7.根据权利要求6所述的方法,其特征在于,所述TEE OS还运行有驱动加载器,所述根据所述第一驱动程序的签名确定所述第一驱动程序的权限,将所述第一驱动程序运行在第一驱动进程中,包括:
所述权限管理器根据所述第一驱动程序的签名,确定所述第一驱动程序的权限;
所述权限管理器向所述驱动加载器发送第三请求,所述第三请求用于请求所述驱动加载器将所述第一驱动程序加载到驱动进程中,所述第三请求包括所述第一驱动程序的权限;
所述驱动加载器响应于所述第三请求,基于所述第一驱动程序的权限,将所述第一驱动程序运行在第一驱动进程中。
8.根据权利要求7所述的方法,其特征在于,所述TEE OS还运行驱动进程实体,所述驱动加载器响应于所述第三请求,基于所述第一驱动程序的权限,将所述第一驱动程序运行在第一驱动进程中,包括:
所述驱动加载器响应于所述第三请求,向所述驱动进程实体发送第四请求,所述第四请求用于请求所述驱动进程实体将所述第一驱动程序运行到相应的驱动进程中,所述第四请求包括所述第一驱动程序的权限;
所述驱动进程实体响应于所述第四请求,按照所述第一驱动程序的权限,将所述第一驱动程序运行在所述第一驱动进程中。
9.根据权利要求6-8中任一项所述的方法,其特征在于,所述方法还包括:
当所述第一驱动程序在所述第一驱动进程中运行时,所述驱动管理器检验所述TA调用所述第一驱动程序的权限;
若所述TA能够调用所述第一驱动程序,所述驱动管理器向所述TA发送指示信息,所述指示信息包括所述第一驱动程序的调用权限;
所述TA利用所述指示信息调用所述第一驱动程序。
10.根据权利要求6-9中任一项所述的方法,其特征在于,所述电子设备还包括富执行环境REE OS,所述权限管理器响应于所述第二请求,获取所述镜像驱动文件,包括:
所述权限管理器响应于所述第二请求,从REE OS中获取所述镜像驱动文件。
11.根据权利要求10所述的方法,其特征在于,所述电子设备还包括软件开发工具包SDK、可信应用开发文件名工具、签名工具和镜像工具,所述从REE OS中获取所述镜像驱动文件之前,还包括:
响应于驱动开发请求,所述SDK生成所述第一驱动程序,并向所述可信应用开发文件名工具发送配置请求,所述配置请求用于请求可信应用开发文件名工具为所述第一驱动程序配置属性信息,所述配置请求包括第一驱动程序;
所述可信应用开发文件名工具响应于所述配置请求,对所述第一驱动程序进行配置,得到所述第一驱动程序的属性信息,并向所述签名工具发送签名请求,所述签名请求用于请求所述签名工具为所述第一驱动程序签名,所述签名请求包括所述第一驱动程序和所述第一驱动程序的属性信息;
所述签名工具响应于所述签名请求,对所述第一驱动程序进行签名,得到所述第一驱动程序的签名,并向所述镜像工具发送镜像请求,所述镜像请求用于请求所述镜像工具镜像所述第一驱动程序、所述第一驱动程序的属性信息和所述第一驱动程序的签名,所述镜像请求包括所述第一驱动程序、所述第一驱动程序的属性信息和所述第一驱动程序的签名;
所述镜像工具响应于所述镜像请求,镜像所述第一驱动程序、所述第一驱动程序的属性信息和所述第一驱动程序的签名,得到所述镜像驱动文件。
12.根据权利要求6-11中任一项所述的方法,其特征在于,所述待实现的功能包括启动功能、关闭功能、读功能或写功能。
13.一种电子设备,其特征在于,包括TEE OS、REE OS、处理器和存储器;
所述存储器用于存储代码指令;所述处理器用于运行所述代码指令,以执行如权利要求1-12中任一项所述的方法。
14.一种计算机存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-12中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210669515.5A CN116049809B (zh) | 2022-06-14 | 2022-06-14 | 一种驱动调用方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210669515.5A CN116049809B (zh) | 2022-06-14 | 2022-06-14 | 一种驱动调用方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116049809A true CN116049809A (zh) | 2023-05-02 |
CN116049809B CN116049809B (zh) | 2023-11-07 |
Family
ID=86127833
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210669515.5A Active CN116049809B (zh) | 2022-06-14 | 2022-06-14 | 一种驱动调用方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116049809B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070199068A1 (en) * | 2006-02-03 | 2007-08-23 | Microsoft Corporation | Managed control of processes including privilege escalation |
CN103679006A (zh) * | 2013-10-25 | 2014-03-26 | 华为技术有限公司 | 一种运行驱动程序的方法及装置 |
CN104008324A (zh) * | 2013-02-22 | 2014-08-27 | 三星电子株式会社 | 用于应用安全策略的终端和服务器及其控制方法 |
US20140281504A1 (en) * | 2013-03-18 | 2014-09-18 | International Business Machines Corporation | Authorizing Use Of A Test Key Signed Build |
CN107368739A (zh) * | 2017-07-26 | 2017-11-21 | 北京理工大学 | 一种内核驱动的监视方法和装置 |
CN109190411A (zh) * | 2018-07-25 | 2019-01-11 | 百富计算机技术(深圳)有限公司 | 一种操作系统的主动安全防护方法、系统及终端设备 |
CN109711161A (zh) * | 2018-12-03 | 2019-05-03 | 联想(北京)有限公司 | 一种监控方法及电子设备 |
CN109753347A (zh) * | 2017-11-06 | 2019-05-14 | 阿里巴巴集团控股有限公司 | 一种实现驱动的系统及方法 |
CN111669349A (zh) * | 2019-03-05 | 2020-09-15 | 中国环境监测总站 | 一种基于控制驱动管理的数据访问安全控制方法及装置 |
WO2022022422A1 (zh) * | 2020-07-31 | 2022-02-03 | 华为技术有限公司 | 一种权限管理方法及终端设备 |
-
2022
- 2022-06-14 CN CN202210669515.5A patent/CN116049809B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070199068A1 (en) * | 2006-02-03 | 2007-08-23 | Microsoft Corporation | Managed control of processes including privilege escalation |
CN104008324A (zh) * | 2013-02-22 | 2014-08-27 | 三星电子株式会社 | 用于应用安全策略的终端和服务器及其控制方法 |
US20140281504A1 (en) * | 2013-03-18 | 2014-09-18 | International Business Machines Corporation | Authorizing Use Of A Test Key Signed Build |
CN103679006A (zh) * | 2013-10-25 | 2014-03-26 | 华为技术有限公司 | 一种运行驱动程序的方法及装置 |
CN107368739A (zh) * | 2017-07-26 | 2017-11-21 | 北京理工大学 | 一种内核驱动的监视方法和装置 |
CN109753347A (zh) * | 2017-11-06 | 2019-05-14 | 阿里巴巴集团控股有限公司 | 一种实现驱动的系统及方法 |
CN109190411A (zh) * | 2018-07-25 | 2019-01-11 | 百富计算机技术(深圳)有限公司 | 一种操作系统的主动安全防护方法、系统及终端设备 |
CN109711161A (zh) * | 2018-12-03 | 2019-05-03 | 联想(北京)有限公司 | 一种监控方法及电子设备 |
CN111669349A (zh) * | 2019-03-05 | 2020-09-15 | 中国环境监测总站 | 一种基于控制驱动管理的数据访问安全控制方法及装置 |
WO2022022422A1 (zh) * | 2020-07-31 | 2022-02-03 | 华为技术有限公司 | 一种权限管理方法及终端设备 |
Non-Patent Citations (4)
Title |
---|
ROBERTO BATTISTONI等: "A Host Intrusion Prevention System for Windows Operating Systems", COMPUTER SECURITY - ESORICS 2004 * |
刘文祺: "基于UEFI固件的安全性研究及恶意代码检测", 中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑 * |
朱兴泉;俞烈彬;: "嵌入式设备驱动程序独立加载技术", 指挥控制与仿真, no. 03 * |
谭茁;翟高寿;: "设备驱动非内核化通信架构的研究与实现", 信息网络安全, no. 11 * |
Also Published As
Publication number | Publication date |
---|---|
CN116049809B (zh) | 2023-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3835983B1 (en) | Artificial intelligence (ai) processing method and ai processing device | |
CN106605233B (zh) | 使用处理器提供可信执行环境 | |
EP3050335B1 (en) | Systems and methods for nfc access control in a secure element centric nfc architecture | |
US12118128B2 (en) | Running a trusted application using a dynamic library | |
US8375221B1 (en) | Firmware-based trusted platform module for arm processor architectures and trustzone security extensions | |
US9721101B2 (en) | System wide root of trust chaining via signed applications | |
US20160182238A1 (en) | Partitioning access to system resources | |
US20240273241A1 (en) | Processing unit, electronic device, and security control method | |
CN112149144A (zh) | 聚合密码引擎 | |
EP2537115B1 (en) | Method and apparatus to reset platform configuration register in mobile trusted module | |
CN113569245A (zh) | 处理装置、嵌入式系统、片上系统以及安全控制方法 | |
CN112068903A (zh) | 应用程序的加载方法、应用程序的加载装置、介质与设备 | |
Feng et al. | TEEM: A user-oriented trusted mobile device for multi-platform security applications | |
US11604656B2 (en) | Method and apparatus for managing application | |
CN116049809B (zh) | 一种驱动调用方法和设备 | |
CN114844726B (zh) | 防火墙实现方法、芯片、电子设备及计算机可读存储介质 | |
CN114647453B (zh) | 多处理器的可信动态启动方法、系统、存储介质及终端 | |
US20230350738A1 (en) | Method for Reusing Shared Library and Electronic Device | |
WO2019067133A1 (en) | DEVICE MANAGER PROVIDING RESOURCE CONTROL AND SYNCHRONIZATION | |
US20240220626A1 (en) | Secure boot using parallelization | |
CN117852565B (zh) | Nfc卡片生成方法、系统、装置、电子设备及服务器 | |
CN115016886B (zh) | 业务处理方法和装置 | |
US20240037237A1 (en) | System and method for flexible startup of data processing systems | |
CN116186709B (zh) | 基于虚拟化VirtIO技术卸载UEFI安全启动的方法、装置及介质 | |
US20240015156A1 (en) | Electronic device for controlling access to device resource and operation method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |