客户端应用侧的安全加固方法、装置及电子设备与流程

文档序号:29822223发布日期:2022-04-27 11:11阅读:114来源:国知局
客户端应用侧的安全加固方法、装置及电子设备与流程

1.本发明涉及通信技术领域,具体涉及客户端应用侧的安全加固方法、装置及电子设备。


背景技术:

2.可信执行环境(trusted execution environment,tee)可以保证不被常规操作系统干扰的计算,因此称为“可信”。tee通常用于移动支付、机密数据的安全存储、数字版权保护等。tee已经成为生物识别设备的标配,通过使用tee来隔离指纹的采集、存储、验证等过程。即使终端被越狱,攻击者也无法获取指纹数据。tee内部运行一个完整的操作系统,与不可信执行环境(rich execution environment,ree)隔离运行,tee与ree通过共享内存进行交互。tee内部也分为内核态与用户态,tee的用户态可以运行多个不同的安全应用,在ree中使用tee的最直接的办法就是同tee中的ta进行通讯,在ree中的通讯端称为客户端应用(client application,ca)。
3.原本ca的主体代码逻辑是暴露在ree世界中的,很容易被外界所观察,比如,超级用户程序可以通过ptrace系统调用“抓住”ca运行程序,观察ca的所有的系统调用的行为;如果ca本身有临时数据文件产生,也会被有权限的ree中的其他程序所读取;ca本身内部的多个进程中间的开辟的共享内存可以被有权限的其他程序所共享读取。基于此,ca的代码行为一旦有疏忽或者漏洞,就很容易被抓住,或者被造成中间人攻击。
4.综上,目前亟需一种客户端应用侧的安全加固方法,用于解决上述现有技术存在的问题。


技术实现要素:

5.由于现有方法存在上述问题,本发明提出客户端应用侧的安全加固方法、装置及电子设备。
6.第一方面,本发明提供了一种客户端应用侧的安全加固方法,包括:
7.在客户端应用的主调用程序与客户端应用主体代码间创建私有通讯;
8.创建运行所述客户端应用主体代码的第一容器;
9.将所述第一容器的运行环境映射成所述客户端应用的主调用程序的运行环境;
10.通过所述第一容器运行所述客户端应用主体代码;
11.在运行结束后返回执行结果到所述客户端应用的主调用程序。
12.进一步地,所述在客户端应用的主调用程序与客户端应用主体代码间创建私有通讯,包括:
13.在客户端应用的主调用程序与客户端应用主体代码间创建匿名管道;和/或,
14.在客户端应用的主调用程序与客户端应用主体代码间创建匿名套接字对。
15.进一步地,所述在客户端应用的主调用程序与客户端应用主体代码间创建匿名管道,包括:
16.通过管道系统调用在客户端应用的主调用程序与客户端应用主体代码间创建匿名管道。
17.进一步地,所述将所述第一容器的运行环境映射成所述客户端应用的主调用程序的运行环境,包括:
18.创建临时私有目录;
19.将所述第一容器外的文件系统环境映射到所述临时私有目录中。
20.进一步地,所述方法还包括:
21.在所述客户端应用的主调用程序外创建第二容器;
22.通过所述第二容器调用所述客户端应用主体代码;
23.将调用结果返回到所述第二容器外的调用程序。
24.第二方面,本发明提供了一种客户端应用侧的安全加固装置,包括:
25.创建模块,用于在客户端应用的主调用程序与客户端应用主体代码间创建私有通讯;创建运行所述客户端应用主体代码的第一容器;
26.处理模块,用于将所述第一容器的运行环境映射成所述客户端应用的主调用程序的运行环境;通过所述第一容器运行所述客户端应用主体代码;在运行结束后返回执行结果到所述客户端应用的主调用程序。
27.进一步地,所述创建模块具体用于:
28.在客户端应用的主调用程序与客户端应用主体代码间创建匿名管道;和/或,
29.在客户端应用的主调用程序与客户端应用主体代码间创建匿名套接字对。
30.进一步地,所述创建模块具体用于:
31.通过管道系统调用在客户端应用的主调用程序与客户端应用主体代码间创建匿名管道。
32.进一步地,所述处理模块具体用于:
33.创建临时私有目录;
34.将所述第一容器外的文件系统环境映射到所述临时私有目录中。
35.进一步地,所述处理模块还用于:
36.在所述客户端应用的主调用程序外创建第二容器;
37.通过所述第二容器调用所述客户端应用主体代码;
38.将调用结果返回到所述第二容器外的调用程序。
39.第三方面,本发明还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的客户端应用侧的安全加固方法。
40.第四方面,本发明还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述的客户端应用侧的安全加固方法。
41.由上述技术方案可知,本发明提供的客户端应用侧的安全加固方法、装置及电子设备,通过在客户端应用内部创建容器使得客户端应用主体代码在容器下运行,隔离外界对客户端应用的观察,可有效减少对ca以及ta的攻击面,起到ca安全加固的作用。
附图说明
42.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。
43.图1为本发明提供的客户端应用侧的安全加固方法的系统框架;
44.图2为本发明提供的客户端应用侧的安全加固方法的流程示意图;
45.图3为本发明提供的客户端应用侧的安全加固方法的流程示意图;
46.图4为本发明提供的客户端应用侧的安全加固装置的结构示意图;
47.图5为本发明提供的电子设备的结构示意图。
具体实施方式
48.下面结合附图,对本发明的具体实施方式作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
49.随着face id、指纹识别、5g、ai等技术的发展,移动互联网已经悄然根植于现代生活中,伴随着日常生活的移动化,移动终端中存储的各种敏感信息日益增多,移动终端自身的安全性面临着巨大的挑战。
50.移动端系统运行的环境叫做ree(rich execution environment),在其中运行的系统叫做rich os,比如最常见的android系统,但是ree是一个开放的环境,容易受到恶意软件的攻击,比如敏感数据被窃取、数字版权被滥用、移动支付被盗用等。因此可信执行环境(trusted execution environment,tee)应运而生。tee是一个与ree并存运行的独立执行环境,它具有其自身的执行空间,比rich os的安全级别更高,为rich os提供安全服务,如指纹的录入比对、支付校验认证等操作。
51.进一步地,在ree中运行的系统和应用分别是rich os和ca。而在tee中运行的系统和应用分别是trusted os和ta。
52.具体的,ca(client app)对应一些上层应用,比如指纹采集、支付应用等,通过调用tee client api实现与tee环境的交互。ta(trusted application)是tee中完成特定功能的应用。由于在tee中完成计算因此具有较高的安全性。每一个ta在ree中有一个或多个对应的ca,在ree环境中可以通过调用ca的接口,将信息传送到tee环境中执行ta,完成对应功能然后返回计算结果。
53.在上述tee的架构中,ca所处的运行环境极为复杂,最容易受到攻击。举例来说,ca的临时文件可能被外部观察,ca的进程间通信资源、ca的代码行为也可被外部观察,从而可以为攻击ta创建素材。
54.本发明实施例提供的客户端应用侧的安全加固方法,可以适用于如图1所示的系统架构中,该系统架构包括ree100、tee200。
55.具体的,ree100的ca调用tee client api触发系统调用,进入ree100的操作系统内核态,根据ca调用的参数找到对应的ree驱动程序,ree驱动程序通过调用smc汇编指令进入monitor模式,并将处理器切换到安全内核状态,进入安全模式。
56.进一步地,切换进入tee200以后,ca的服务请求通过总线传到tee侧,然后tee os
通过tee internal api调用对应的ta,最后ta运行结束后将运行结果和数据返回给ca,执行完以后回到tee内核态调用smc汇编指令进入monitor切回ree100的环境。
57.需要说明的是,图1仅是本发明实施例系统架构的一种示例,本发明对此不做具体限定。
58.基于上述所示意的系统架构,图2为本发明实施例提供的一种客户端应用侧的安全加固方法所对应的流程示意图,如图2所示,该方法包括:
59.步骤201,在客户端应用的主调用程序与客户端应用主体代码间创建私有通讯。
60.本发明实施例中,客户端应用的主调用程序首先创建私有通讯,用于主调用程序和客户端应用主体代码间的通讯。
61.在一种可能的实施方式中,在客户端应用的主调用程序与客户端应用主体代码间创建匿名管道。
62.具体的,通过管道pipe系统调用创建单向通讯的管道。
63.管道pipe系统调用中fd参数是个整数数组,有两个元素,pipe调用成功后,fd[0]成为了匿名管道的读端,fd[1]成为了匿名管道的写端。
[0064]
在另一种可能的实施方式中,在客户端应用的主调用程序与客户端应用主体代码间创建匿名套接字对。
[0065]
具体的,通过socketpair系统调用创建一对相互连通的套接字,并以数组的形式返回套接字描述词。
[0066]
上述方案,在客户端应用内部容器创建之前,预留容器和外部的通讯通道,实现了客户端应用的主调用程序与客户端应用主体代码间的私有通讯。
[0067]
步骤202,创建运行客户端应用主体代码的第一容器。
[0068]
需要说明的是,创建容器的动作本身就是应用不同的属性创建一个新的进程,该进程为容器的第一个进程,新进程的目的就是运行客户端应用主体代码,新进程通过私有通讯与客户端应用的主调用程序进行通讯。
[0069]
在一种可能的实施方式中,pipe调用成功后,容器内外各持管道的一端,即可实现容器内外的通讯。
[0070]
在另一种可能的实施方式中,通过socketpair系统调用创建一对相互连通的套接字后,容器内外各持一端,即可实现双向通讯。
[0071]
需要说明的是,容器内外通讯的主要内容是原本没有容器时ree对客户端应用主体代码直接调用时的返回结果,由于客户端应用主体代码被放入容器中,主调用程序无法直接调用得到结果只能通过匿名通讯完成。此外,主调用程序给客户端应用主体代码传递参数也是通过匿名通讯完成。
[0072]
需要说明的是,容器的特点是可以做到众多隔离效果,如文件系统隔离、网络隔离等。
[0073]
上述方案,将客户端应用主体代码放入客户端应用内部创建的容器中,可以起到对客户端应用安全加固的作用,防止客户端应用处于非安全环境中遭受到攻击,从而降低了攻破ta的风险。
[0074]
步骤203,将第一容器的运行环境映射成客户端应用的主调用程序的运行环境。
[0075]
本发明实施例在运行客户端应用主体代码前,创建和容器外部一样的文件系统环
境。
[0076]
具体的,创建临时私有目录;
[0077]
将第一容器外的文件系统环境映射到临时私有目录中。
[0078]
本发明实施例中,映射的实质就是绑定。映射的目的就是解决容器内客户端应用主体代码对于原有文件系统的依赖,比如,需要某些系统库的支持。
[0079]
上述方案,通过创建临时私有目录将容器的运行环境映射成客户端应用的主调用程序的运行环境,解决了客户端应用主体代码对外界的依赖和对外界的结果返回问题,实现了客户端应用在一个封闭的环境下独立运行。
[0080]
步骤204,通过第一容器运行客户端应用主体代码。
[0081]
步骤205,在运行结束后返回执行结果到客户端应用的主调用程序。
[0082]
本发明实施例中,客户端应用主体代码运行结束后进程返回执行结果到客户端应用的主调用程序并且退出,容器自动销毁。
[0083]
上述方案,通过在客户端应用内部创建容器使得客户端应用主体代码在容器下运行,隔离外界对客户端应用的观察,可有效减少对ca以及ta的攻击面,起到ca安全加固的作用。
[0084]
进一步地,如果客户端应用的开发上没有使用内部容器,还可以通过创建客户端应用外部容器调用客户端应用。图3为本发明实施例提供的一种客户端应用侧的安全加固方法所对应的流程示意图,如图3所示,该方法包括:
[0085]
步骤301,在客户端应用的主调用程序外创建第二容器。
[0086]
步骤302,通过第二容器调用客户端应用主体代码。
[0087]
步骤303,将调用结果返回到第二容器外的调用程序。
[0088]
本发明实施例中,如果需要多次调用客户端应用,就多次创建第二容器。
[0089]
需要说明的是,上述采用集成容器进行集成调用的方法的原因在于客户端应用主体代码不可修改,从而无法在客户端应用内部创建容器。
[0090]
上述方案,客户端应用主体代码无需修改,由客户端应用的主调用程序创建容器创建环境,然后在容器内部调用客户端应用主体代码,得到返回值后,主调用程序再把结果通过匿名通讯传送到容器外的调用程序。
[0091]
基于同一发明构思,图4示例性的示出了本发明实施例提供的一种客户端应用侧的安全加固装置,该装置可以为一种客户端应用端的安全加固的方法的流程。
[0092]
所述装置,包括:
[0093]
创建模块401,用于在客户端应用的主调用程序与客户端应用主体代码间创建私有通讯;创建运行所述客户端应用主体代码的第一容器;
[0094]
处理模块402,用于将所述第一容器的运行环境映射成所述客户端应用的主调用程序的运行环境;通过所述第一容器运行所述客户端应用主体代码;在运行结束后返回执行结果到所述客户端应用的主调用程序。
[0095]
进一步地,所述创建模块401具体用于:
[0096]
在客户端应用的主调用程序与客户端应用主体代码间创建匿名管道;和/或,
[0097]
在客户端应用的主调用程序与客户端应用主体代码间创建匿名套接字对。
[0098]
进一步地,所述创建模块401具体用于:
[0099]
通过管道系统调用在客户端应用的主调用程序与客户端应用主体代码间创建匿名管道。
[0100]
进一步地,所述处理模块402具体用于:
[0101]
创建临时私有目录;
[0102]
将所述第一容器外的文件系统环境映射到所述临时私有目录中。
[0103]
进一步地,所述处理模块402还用于:
[0104]
在所述客户端应用的主调用程序外创建第二容器;
[0105]
通过所述第二容器调用所述客户端应用主体代码;
[0106]
将调用结果返回到所述第二容器外的调用程序。
[0107]
基于相同的发明构思,本发明又一实施例提供了一种电子设备,参见图5,所述电子设备具体包括如下内容:处理器501、存储器502、通信接口503和通信总线504;
[0108]
其中,所述处理器501、存储器502、通信接口503通过所述通信总线504完成相互间的通信;所述通信接口503用于实现各设备之间的信息传输;
[0109]
所述处理器501用于调用所述存储器502中的计算机程序,所述处理器执行所述计算机程序时实现上述客户端应用侧的安全加固的方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:在客户端应用的主调用程序与客户端应用主体代码间创建私有通讯;创建运行所述客户端应用主体代码的第一容器;将所述第一容器的运行环境映射成所述客户端应用的主调用程序的运行环境;通过所述第一容器运行所述客户端应用主体代码;
[0110]
在运行结束后返回执行结果到所述客户端应用的主调用程序。
[0111]
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的客户端应用侧的安全加固的方法,该方法包括:在客户端应用的主调用程序与客户端应用主体代码间创建私有通讯;创建运行所述客户端应用主体代码的第一容器;将所述第一容器的运行环境映射成所述客户端应用的主调用程序的运行环境;通过所述第一容器运行所述客户端应用主体代码;在运行结束后返回执行结果到所述客户端应用的主调用程序。
[0112]
基于相同的发明构思,本发明又一实施例提供了一种非暂态计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述客户端应用侧的安全加固的方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:在客户端应用的主调用程序与客户端应用主体代码间创建私有通讯;创建运行所述客户端应用主体代码的第一容器;将所述第一容器的运行环境映射成所述客户端应用的主调用程序的运行环境;通过所述第一容器运行所述客户端应用主体代码;
[0113]
在运行结束后返回执行结果到所述客户端应用的主调用程序。
[0114]
此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,客户端应用侧的安全加固的装置,或者网络设备等)
执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0115]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0116]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,客户端应用侧的安全加固的装置,或者网络设备等)执行各个实施例或者实施例的某些部分所述的客户端应用侧的安全加固的方法。
[0117]
此外,在本发明中,诸如“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0118]
此外,在本发明中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0119]
此外,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0120]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1