一种多进程访问可信应用的方法和系统
技术领域
本发明涉及网络技术,特别涉及一种多进程访问可信应用的方法和系统。
背景技术
随着智能终端技术的不断发展,用户可以很方便的将各种应用下载到终端设备中使用,随之而来的是用户对这些应用安全性的关注,尤其是在涉及到一些敏感数据的应用(即具有安全性和保密性要求的数据)时,用户更加期望这些数据能够得到有效的安全保护。可信执行环境(Trusted execution environment,TEE)是在终端设备上创建的一个能够提供安全保护功能的执行环境,在该环境中的应用执行或数据安全性较高;并且,TEE中还提供了一些可信应用(Trusted Application,TA),为该TA提供安全服务。终端设备中的普通执行环境中的进程可能会访问TA,相关技术中,TA只支持单进程访问,如果有多个进程都访问同一个TA时,将会导致部分进程访问失败,影响该进程对应的业务执行效率。
发明内容
有鉴于此,本发明提供一种多进程访问可信应用的方法和系统,以实现多进程同时访问TA,提高业务执行效率。
具体地,本发明是通过如下技术方案实现的:
第一方面,提供一种多进程访问可信应用的方法,包括:
在同一时刻接收多个进程分别发送的对同一可信应用的访问请求,每个访问请求包括:所述可信应用的应用标识、所述进程访问可信应用的进程参数;
将所述多个进程加入访问队列,并控制所述访问队列中的进程逐个访问所述应用标识对应的可信应用,直至所述可信应用处理所述进程参数结束。
第二方面,提供一种多进程访问可信应用的系统,包括:
可信执行环境TEE统一接口,用于在同一时刻接收多个进程分别发送的对同一可信应用的访问请求,每个访问请求包括:所述可信应用的应用标识、所述进程访问可信应用的进程参数;
TEE管理中心,用于将所述多个进程加入访问队列,并控制所述访问队列中的进程逐个访问所述应用标识对应的可信应用,直至所述可信应用处理所述进程参数结束。
本发明提供的多进程访问可信应用的方法和系统,通过将多个进程加入访问队列逐个访问可信应用,实现了多进程同时访问TA,提高业务执行效率。
附图说明
图1是一个例子中TEE设置的系统架构图;
图2是一个例子中多进程访问TA的系统的设置结构图;
图3是一个例子中多进程访问可信应用的方法的流程图;
图4是一个例子中多进程逐个访问TA的处理示意图;
图5是一个例子中多进程访问可信应用的方法的应用示意图;
图6是一个例子中多进程访问可信应用的队列示意图;
图7是一个例子中多进程访问可信应用的流程图;
图8是一个例子中进程访问可信应用的中断示意图。
具体实施方式
随着网络技术和智能终端的高速发展,用户可以将大量应用下载到终端设备中,为了保证这些应用的安全性,TEE创建了一个可信任环境,在此运行涉及敏感资料的应用将更加安全。图1示例了TEE设置的系统架构,终端设备11(例如,移动终端、平板电脑、可穿戴设备、POS机等)中包括处理器12(例如,系统级芯片SOC、主处理器CPU等),该处理器12可以是设置在终端设备11的印刷电路板(Printed Circuit Board,PCB)上,并且该处理器12上设置有两个执行环境,分别为富执行环境(Rich Execution Environment,REE)和TEE。
其中,REE是普通的非保密执行环境,可以包括多个客户端应用(ClientApplication,CA),并执行普通的富指令操作系统。例如,CA可以为淘宝客户端、天猫客户端、新浪客户端等各种应用(APP),用户可以将自己需要的应用方便的下载到该区域;而富指令操作系统即普通的终端操作系统(Operation System,OS),例如,Andriod。TEE中也可以包括多个可信应用(Trusted Application,TA),并运行更加安全的可信操作系统(Trusted OS)。
TEE中的可信应用TA可以提供很多服务,比如数据存储、密码输入、密码验证等,并且TEE中可以包括分别用于执行不同数据处理的多个TA;而可信操作系统能够为TA的运行提供用于保证TA运行安全的可信功能(例如,安全存储、安全输入等),使得TA运行更加可靠。当REE中的一些应用CA涉及到敏感数据时,就可以使用TEE中的TA来保证数据的安全,例如,用户在使用REE中的CA淘宝时,在进行到需要输入密码等敏感数据时,该应用淘宝就可以调用TEE中的用于保证安全输入密码的TA以确保安全。
为了实现上述REE中的CA对TEE中的TA的访问,REE中的操作系统OS提供了Tee-Client-API,TEE中的OS也提供了TEE通讯代理,CA可以调用Tee-Client-API,触发REE的OS建立与TEE之间的通信通道,该通信通道由两端的通讯代理来提供,REE的OS可以通过该通道向TA发送访问请求,并接收TA返回的处理数据;该过程使得CA通过Tee-Client-API接入到TEE提供的TA安全服务。而当一个CA启动时,也即为启动该CA对应的进程,因此,一个运行的CA访问TA,也就是该CA对应的进程访问TA,这就是“进程对可信应用TA的访问”。例如,淘宝的进程在执行到密码输入时,要访问TEE中的用于输入密码的TA,以保证密码输入过程是安全的。
本申请实施例的方法,描述是在REE侧有多个进程同时访问TA时的方法。在传统方式中,由于TEE侧在同一时刻只支持单个进程访问TA,因此如果在同一时刻有多个进程都要访问TA时,可能会导致其中一些进程访问失败,影响该进程的执行效率。而本实施例的方法在REE的OS中设置了“多进程访问可信应用的系统”,参见图2的结构示例。
如图2所示,相当于在CA和TEE-CLIENT-API之间设置了该“多进程访问可信应用的系统”,传统方式中是由CA直接调用TEE-CLIENT-API访问TA,而在本实施例的方法中,相当于由“多进程访问可信应用的系统”接收各个CA进程对TA的访问请求,并由该系统来调用TEE-CLIENT-API访问TA。该系统可以是设置于REE的OS中,可以包括:TEE统一接口21和TEE管理中心22。其中,TEE统一接口21可以直接集成在OS的framework,或者单独提供为jar包的形式;TEE管理中心22可以作为OS的service模块单独存在,也可以集成在framework,上述的framework或service是OS框架中的组成部分,不再详述。
图3示例了本申请实施例的多进程访问可信应用的方法,该方法可以是由图2中的多进程访问可信应用的系统执行,并且是当该系统接收到同一时刻多进程访问TA的请求时,根据该方法控制各个进程对TA的访问。该方法包括:
301、在同一时刻接收多个进程分别发送的对同一可信应用的访问请求,每个访问请求包括:所述可信应用的应用标识、进程访问可信应用的进程参数;
302、将所述多个进程加入访问队列,并控制所述访问队列中的进程逐个访问所述应用标识对应的可信应用,直至所述可信应用处理所述进程参数结束。
其中,需要说明的是,图3所示例的是本实施例的多进程访问TA的方法的原理,该方法在具体实施中可以是通过软件逻辑的形式实现,但是图3并不限定该软件逻辑的具体实现流程和方式,只要逻辑中包括上述301和302中的功能即可。例如,在302中描述的“控制所述访问队列中的进程逐个访问所述应用标识对应的可信应用,直至所述可信应用处理所述进程参数结束”,具体实现中的软件逻辑可以按照用户设定的方式来控制进程对TA的访问,可以有多种控制方式,本实施例不限定,只要该逻辑实现了上述功能即可。
在301中,可以由“多进程访问可信应用的系统”的TEE统一接口接收多个进程对同一TA的访问请求。结合图2的示例,假设REE中的CA1、CA2(也可以是数量更多的CA)均要访问TEE中的同一个TA,这些CA的访问请求都被TEE统一接口接收。
例如,该TEE统一接口可以是一个封装的与上述TA对应的供REE调用的接口,比如TA是用于提供存储密码数据的服务,可以称为密码服务TA,该TA具有用于唯一标识该服务的TA标识(如,01010),可以将与TA调用相关的一些信息封装在一起组成该“TEE统一接口”,该接口的接口信息中包括上述的TA标识。当某个CA要使用TA服务时,只要调用上述的TEE统一接口,系统就可以获知该CA要使用TA服务,而且还能够根据接口中的TA标识获知CA要访问的是哪个TA。而系统通过CA对TEE统一接口的调用,相当于接收到了该CA对TA服务的访问请求。
此外,CA的执行实际上是该CA对应的进程在运行,所以也可以称为是进程对TA的访问,本实施例中,进程通过调用TEE统一接口所发送的访问TA的访问请求中,还可以携带进程的进程参数。该进程参数包括需要TA处理的一些数据,比如,新浪应用要将密码信息存储在TEE中,调用的是用于安全存储数据的TA,则进程参数中可以包括要存储的密码信息,将该密码信息传输至TA,以供TA进行存储处理;当然还可以包括其他一些参数,比如TA侧在执行数据处理时需要依据的其他信息。至此,系统通过接收访问请求,获知了哪个进程要访问哪个TA,并且还获取了该进程要TA处理的进程参数。
TEE统一接口都会将上述的信息传输至TEE管理中心,由TEE管理中心负责对REE的多进程的管理。在302中,TEE管理中心可以将多个进程加入访问队列,并控制所述访问队列中的进程逐个访问所述应用标识对应的可信应用,直至所述可信应用处理所述进程参数结束。
其中,上述的多个进程是在同一时刻要访问同一个TA的进程,结合图4的示例,假设进程1(对应CA1)、进程2(对应CA2)、进程3(对应CA3)都要访问同一TA1,这些进程的访问请求都通过TEE统一接口传输至TEE管理中心。TEE管理中心将这些进程加入访问队列,该队列例如是位于内存中,管理中心在将多个进程加入到队列后,可以控制这些进程逐个访问TA。
在将进程加入队列时,例如可以是按照接收到请求的先后顺序,先接收到请求的进程在队列中排在前面,后接收到请求的进程排在队列的后面。对于TEE侧来说,仍然是同一时刻只接受单进程的访问,所以是由TEE管理中心来控制多个进程的逐个访问TA,例如,管理中心已经获取到了进程访问TA所需要的一些参数信息,比如TA标识、进程参数等,假设图4中示例的,进程1先执行,管理中心将调用REE与TEE的通信接口即Tee-Client-API,并将进程1的相关参数传输至TA1进行处理。待TA反馈处理进程1的数据结束后,管理中心将进程1由访问队列中移出,开始执行进程2,调用Tee-Client-API传输进程2的相关参数至TA处理,依次执行各个进程。在其中一个进程的执行过程中,其他进程处于等待状态。
此外,可以由管理中心设定访问队列中所容纳的进程数量,比如可以考虑进程的等待时间,如果队列中进程的数量已经较多,为了避免进程等待时间过长,可以暂时杜绝部分进程的访问请求,不将该进程加入队列;或者也可以不对访问队列的进程数量设限,可以根据实际情况灵活设定,本实施例不做限制。
需要说明的是,本实施例的方式中,将同一时刻访问TA的多个进程采用队列的方式逐个访问,相比于传统方式具有如下进步:传统方式中,每个进程都各自独立的去调用Tee-Client-API,而该Tee-Client-API在同一时刻只接受一个进程的调动,因此部分进程在访问TA时会接收到“访问失败”的反馈,而这种失败反馈将导致该进程停止,即进程无法继续执行,下一次进程还要重新启动,影响进程对应的业务效率;而本实施例的方法中,在进程和Tee-Client-API之间增加了多进程访问TA的系统,该系统将多个进程加入队列,从某个时刻来看,这多个进程在该时刻都处于运行状态,都在运行中,尽管有的进程实际上在队列中处于等待状态,但是该进程并没有被停止,而且该进程可以单独分配一个线程用于TA访问的处理,其他线程可以继续处理该进程的其他事务,从而相对于传统方式将提高业务的执行效率。
在一个实施例中,TEE侧所提供的TA服务可以有多个,比如包括数据存储TA、密码输入TA等,REE侧也可以运行有很多进程,可能出现的情况是,进程1、进程2和进程3都同时请求访问TA1,进程4和进程5都同时请求访问TA2。参见图5所示,本实施例可以在多进程访问TA的系统中,提供两个TEE统一接口,其中一个接口51对应TA1,当进程要访问TA1时调用该接口;另一个接口52对应TA2,当进程要访问TA2时调用该接口即可。在TEE管理中心,也根据接收到请求中对应的TA,生成两个队列,其中的访问队列1中放入调用接口51的进程1、进程2和进程3,另一个队列2放入调用接口52的进程4和进程5。每个队列都分别是逐个进程执行对应TA的访问,在调用时都是调用同一个Tee-Client-API,两个队列的执行顺序可以由管理中心设定。
在另一个实施例中,进程通过调用TEE统一接口向系统发送访问请求时,还携带进程对应的进程优先级。该进程优先级用于表示访问TA对于该进程是否紧急,如果该进程比较紧急访问TA,则进程可以在调用TEE统一接口时将优先级设置为高优先级;如果进程需要访问TA但是不太紧急,则进程可以在调用TEE统一接口时将优先级设置为低优先级。例如,进程优先级可以是在开发进程对应的CA时,根据该CA的业务特点确定访问TA的紧急程度,并预先设置进程优先级,当进程调用TEE统一接口时传输该优先级至系统即可。示例性的,本实施例的优先级可以包括:0和1,数字越小,优先级越高。
TEE管理中心可以根据进程优先级将进程加入访问队列,示例性的,管理中心可以设置两个队列,其中一个是排队队列,另一个是运行队列,如图6所示。运行队列61的进程执行时间先于排队队列62中的进程,也就是说,TEE管理中心将优先执行运行队列61的进程,当然也是逐个进程访问TA;当运行队列61中的进程都执行结束后,将排队队列中的进程都置换入运行队列61。如图6的示例,假设系统接收到两个新的进程访问请求,分别为进程6和进程7,其中,进程6的优先级是1,则管理中心将该进程6加入到排队队列62,该排队队列62中已经有等待的两个进程,进程6依序排在后面即可;而进程7的优先级是0,则管理中心直接将其加入到运行队列61,管理中心将先执行运行队列61中的各个进程,再执行排队队列62中的进程。
某个时刻,如果运行队列不为空,就按照上述图6的原理将接收的进程加入队列即可,如果运行队列为空了,即运行队列中的进程都运行结束,则将排队队列中的进程都置换入运行队列61,也就是说将排队队列62中的所有进程一次性全部放入运行队列61中,然后排队队列继续接收后续新的进程。
图7的流程图,以其中一个进程通过本实施例的系统对TA进行访问为例,描述了本实施例的进程访问TA的方法。如图7所示,包括:
701、CA通过调用TEE统一接口,向TEE管理中心传输TA访问参数;
例如,CA调用TEE统一接口相当于CA的进程发送的访问请求,所述的TA访问参数,可以包括进程优先级、进程参数、TA标识等。
702、TEE管理中心根据优先级将进程加入队列;
例如,TEE管理中心根据请求中携带的进程优先级,具体实现中,管理中心进行优先级判断,查看优先级的数值,若进程优先级为表示所述进程相对重要的第一标识,比如优先级是0,则将进程加入到运行队列;若进程优先级为表示进程相对次要的第二标识,比如优先级是1,则将进程加入到排队队列。
本实施例可以假设进程的优先级是1,加入排队队列。
703、TEE管理中心置换排队队列的进程至运行队列;
例如,当管理中心将CA的进程在702中加入到排队队列后,很快运行队列中的各个进程都执行结束,此时管理中心将进行队列置换,将排队队列中的进程全部放入空的运行队列,其中包括本实施例的进程。如果该进程在运行队列中不是排在首位,那么该进程将等待。
704、TEE管理中心执行进程的TA请求;
例如,当本实施例的进程等待至排在其前面的进程都执行结束时,管理中心将执行该进程,比如管理中心将该进程相关的访问参数(如,TA标识、进程参数等)调用Tee-Client-API进行封装,向TEE发送访问TA的请求。
705、TA处理数据;
例如,TA可以存储数据、或者进行密码验证等各种数据处理。
706、TA返回数据处理结果;
例如,TA只是本实施例进程的其中一部分服务,比如是新浪应用的其中一个密码输入或密码验证环节,在TA处理结束后还需要将处理结果反馈至进程,以便进程继续执行其他流程,因此,本步骤TA将处理结果反馈至管理中心。
707、TEE管理中心将TA处理结果反馈至CA。
例如,TEE管理中心仍然可以是通过TEE统一接口将结果反馈至CA。
在又一个实施例中,系统接收到的进程访问可信应用的进程参数,可以包括:分别对应多次可信应用访问请求的多个参数。例如,结合图8所示,某个进程中包括三个命令M1、M2和M3,传统方式中,该进程将访问三次TA分别执行对应的三个命令,比如进程第一次访问TA使得TA处理参数s1,结束第一次访问之后再执行第二次访问使得TA处理参数s2,即这三次命令是分开访问TA的。这种分开访问方式将使得有可能进程被其他进程的访问打断,例如,当进程执行完命令M1的访问之后,第二次M2的访问之前,就被另一个进程X打断,进程X抢到了对TEE-CLIENT-API的调用,造成了本实施例进程访问中的断点(图8的黑色圆点示意),从而导致进程中断无法执行。
而本实施例的方法中,进程Y可以将上述三个命令的所有参数s1至s3都发送至TEE管理中心,管理中心将可以将这三个命令作为一个原子操作,即管理中心在执行该进程对TA的访问请求时,将执行完该进程的所有操作,将M1命令执行作为初始,将M3命令执行作为结束,等该进程所有需要访问TA的操作都结束,才将进程Y移出队列,继续下一个进程。这种方式可以避免其他进程对进程访问TA的中断,从而也可以提高业务的执行效率。
在本实施例中,可以设定TEE管理中心将接收到的进程的所有操作作为一个原子操作执行,比如上述包括三个命令的进程Y,管理中心可以对该进程执行多次TA访问,直至该进程的三个命令的进程参数都处理结束。
本实施例的多进程访问可信应用的方法和系统,通过将访问同一TA的多个进程加入访问队列,逐个执行进程对TA的访问,实现了多进程同时访问TA,提高了业务执行效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。