用于应用安全性的方法和系统与流程

未命名 08-26 阅读:109 评论:0
用于应用安全性的方法和系统1.相关申请的交叉引用2.本技术要求对2020年12月18日提交的发明名称为“用于应用安全性的方法和系统(methodandsystemforapplicationsecurity)”的第17/127,793号美国非临时申请的优先权,其内容在司法管辖区通过引用并入本技术中。
技术领域
:3.本发明涉及应用安全性,更具体地,涉及用于应用安全性的方法和系统。
背景技术
::4.应用安全性是现代计算的重要方面。计算设备上的应用面临黑客攻击、病毒、恶意软件等安全性风险。快速应用(也被称为迷你应用、迷你程序和web应用)是可以在智能电话等计算设备上运行的一种应用。快速应用通常是设计成在被称为主机应用的另一应用中运行的基于javascript的轻量级应用。主机应用可以是任何合适类型的应用,包括社交应用、消息传递应用、web浏览器、游戏或计算设备的操作系统的启动器应用。除了原生应用生态系统外,快速应用还为主机计算设备提供备选应用生态系统。应用生态系统是共享应用代码的应用的集合。应用生态系统中的应用通常具有基于共享应用代码与主机应用和可能的其它快速应用的继承或依赖的分层关系。5.快速应用提供了快速开发、快速部署和易用性的好处,近年来在电子商务、社交媒体、娱乐等领域越来越受欢迎。快速应用通常用作迷你游戏、应用内购买和应用内数字奖励(通常与应用内广告相关)的手段。但是,由于缺乏监管并且大多数javascript引擎中持续存在巨大攻击面,快速应用会带来关键的安全威胁。允许恶意快速应用在用户计算设备上自由操作而没有限制或不受检查,用户可能会遭受重大损失。至少出于这些原因,需要提高应用安全性的方法和系统。技术实现要素:6.本发明提供用于应用安全性的方法和系统。本发明的所述方法和系统提高了应用安全性,并且可以用于保护主机应用和操作系统免受恶意快速应用的影响。本发明的方法和系统解决了与快速应用相关的至少两个安全问题:弱边界和缺乏事先检查。7.本发明的方法和系统旨在通过引入附加的防御措施来提高快速应用运行时的安全性,以控制不可信的快速应用代码减轻遭遇攻击时的损害,并且在攻击之前检测恶意快速应用。本发明的方法和系统所呈现的方案使用三个特征的一个特征或其组合:用户标识符(useridentifier,uid)隔离、低权限javascript引擎沙盒隔离和javascript完整性测量代理(javascriptintegritymeasurementagent,jima)。uid隔离在快速应用的javascript引擎适配器与主机应用之间强制执行操作系统(operatingsystem,os)等级的分离。低权限应用沙盒进一步隔离了javascript引擎。这些功能共同创造了更强大的障碍,以防止恶意快速应用获得与主机应用相同的许可集。jima定期测量快速应用代码的完整性,以确保自安装以来和整个执行过程中保持不变。8.快速应用被配置为在主机应用中操作,并且访问主机应用可访问的资源,如用户数据、硬件、文件系统、密钥配置数据和加密材料等。快速应用对主机计算设备上资源的访问由javascript引擎和由底层javascript引擎适配器强制执行的基于角色的访问控制(role-basedaccesscontrol,rbac)控制,该适配器支持javascript引擎的平台相关功能。javascript引擎适配器是应用编程接口(applicationprogramminginterface,api),将一个接口(例如,对象的属性和方法)转换为另一接口,这样以对象为中心的api,以启用对象实时通信。每个快速应用都有一个对应的javascript引擎实例和一个javascript引擎适配器实例。9.现在参考图1,图1是根据已有技术的软件架构的框图,以解释根据已有技术恶意快速应用62可以用于经由主机应用60对计算设备102实施攻击的方式。主机应用60具有逻辑边界,被称为应用边界20,该逻辑边界由将其与计算设备102的其它应用158分离的操作系统150强制执行。在应用边界20内驻留有主机应用60、javascript(js)引擎54、javascript(js)引擎适配器56、快速应用62。快速应用,诸如恶意快速应用62,通常在主机应用60的应用边界20内的弱逻辑边界30内操作。10.javascript引擎具有巨大的攻击面,并且由于其设计复杂性而易受攻击,例如任意ram读/写。因此,javascript引擎可以控制在弱边界内的不可信快速应用代码。javascript引擎适配器通常与javascript引擎和主机应用驻留在同一进程空间中。在恶意快速应用的恶意代码(例如,恶意脚本)脱离所述javascript引擎的控制后,恶意脚本可以操纵javascript引擎适配器,以脱离它强制执行的任何检查(例如,伪造用户未授权的许可)并且获得与主机应用相同的权限和许可集。主机应用可以被授权访问各种资源的权限和许可,以支持多种快速应用。因此,存在安全性风险,即主机应用的许多权限和许可以及对授权主机应用的资源的访问可能被恶意快速应用的恶意脚本获取。本发明的一个目的是在攻击的情况下减轻损害以阻止恶意代码到达主机应用。11.常规上,快速应用启动和操作而没有任何事先检查。javascript很容易被篡改,因为它比二进制代码更可读,因此更容易被攻击者修改。此外,由于javascript语言的灵活性,可以构建在运行时自动更改自身的部分的自变形(self-morph)代码。这种动态行为无法由静态分析检测到。因此,攻击者可以创建自变形的快速应用,这些应用可能不会被部署在快速应用商店服务器上的恶意软件分析软件检测到,从而欺骗用户将其作为看似合法的应用下载。在运行时,攻击者可以远程触发应用变形、执行网络钓鱼攻击或通过许可提升攻击设备。本发明的目的中的一个目的是防止这种快速应用在代码的变化被检测到之后进一步运行。例如,这可以通过向用户通知攻击,使得可以安全地删除恶意快速应用来实现。12.根据本发明的第一方面的第一实施例,提供了一种用于在计算设备上强制执行应用安全性的方法。方法包括:由计算设备的操作系统从在计算设备上的主机应用内操作的快速应用的应用适配器接收访问计算设备的资源的请求。主机应用和应用适配器各自与唯一用户标识符(useridentifier,uid)相关联。响应于确定请求与包括在快速应用的许可列表中的资源相关联,由操作系统将应用适配器的uid转换为主机应用的uid,并且基于主机应用的uid来确定是否允许请求。响应于确定请求与未包括在快速应用的许可列表中的资源相关联,请求与密钥管理服务相关联,或者请求与文件系统相关联,操作系统不将应用适配器的uid转换为主机应用的uid,并且基于应用适配器的uid来确定是否允许请求。13.在第一方面的第一实施例的部分或全部示例中,方法还包括响应于确定允许请求,执行请求。14.在第一方面的第一实施例的部分或全部示例中,快速应用和用于执行快速应用的脚本引擎在低权限应用沙盒内操作,其中,对计算设备的、在低权限应用沙盒外的资源的访问由应用适配器控制。15.在第一方面的第一实施例的部分或全部示例中,低权限应用沙盒提供运行时环境,在运行时环境中,对计算设备的、在低权限应用沙盒外的资源的访问由应用适配器通过双向通道进行控制。16.在第一方面的第一实施例的部分或全部示例中,其中,快速应用是javascript应用,脚本引擎是javascript引擎,应用适配器是javascript引擎适配器。17.在第一方面的第一实施例的部分或全部示例中,方法还包括:在操作快速应用之前,在参考低权限应用沙盒内加载参考快速应用,并且获得参考快速应用的编译字节码;使用加密哈希函数来生成参考快速应用的编译字节码中的字节码的每个可分割部分的加密签名;将加密签名存储在签名缓存中;在操作快速应用期间定期:生成运行时的快速应用的字节码的每个可分割部分的加密签名;确定运行时的快速应用的字节码的加密签名是否与存储在签名缓存中的参考快速应用的字节码的加密签名匹配;响应于确定运行时的快速应用的字节码的加密签名与存储在签名缓存中的参考快速应用的字节码的加密签名不匹配,执行安全性动作。18.在第一方面的第一实施例的部分或全部示例中,安全性动作包括:终止快速应用。19.在第一方面的第一实施例的部分或全部示例中,安全性动作包括:生成用户通知。20.在第一方面的第一实施例的部分或全部示例中,用户通知是显示在计算设备的显示器上的屏幕上通知。21.在第一方面的第一实施例的部分或全部示例中,其中,屏幕上通知是快速应用在其中操作的主机应用的可视界面屏幕的部分或覆盖可视界面屏幕。22.在第一方面的第一实施例的部分或全部示例中,每个uid与访问计算设备的资源的许可集相关联,其中,主机应用的uid比应用适配器的uid被授权的更多的许可。23.根据本发明的第一方面的第二实施例,提供了一种用于在计算设备上强制执行应用安全性的方法。在操作在计算设备上的主机应用内操作的快速应用之前,在参考低权限应用沙盒内加载参考快速应用,并且获得参考快速应用的编译字节码;使用加密哈希函数生成参考快速应用的编译字节码中的字节码的每个可分割部分的加密签名;将加密签名存储在签名缓存中。在操作快速应用期间定期:生成运行时的快速应用的字节码的每个可分割部分的加密签名;确定运行时的快速应用的字节码的加密签名是否与存储在签名缓存中的参考快速应用的字节码的加密签名匹配;响应于确定运行时的快速应用的字节码的加密签名与存储在签名缓存中的参考快速应用的字节码的加密签名不匹配,执行安全性动作。24.在第一方面的第二实施例的部分或全部示例中,快速应用和用于执行快速应用的脚本引擎在低权限应用沙盒内操作,其中,对计算设备的在低权限应用沙盒外的资源的访问由应用适配器控制。25.在第一方面的第二实施例的部分或全部示例中,安全性动作包括终止快速应用。26.在第一方面的第二实施例的部分或全部示例中,安全性动作包括生成用户通知。27.根据本发明的另一方面,提供了一种包括处理器和存储器的计算设备。存储器上面有形地存储有用于由处理器执行的可执行指令。响应于处理器的执行,可执行指令使计算设备执行上述和本文描述的方法。在第一实施例中,处理器用于:计算设备的操作系统从在计算设备上的主机应用内操作的快速应用的应用适配器接收访问计算设备的资源的请求。主机应用和应用适配器各自与唯一用户标识符(useridentifier,uid)相关联。响应于确定请求与包括在快速应用的许可列表中的资源相关联,由操作系统将应用适配器的uid转换为主机应用的uid,并且基于主机应用的uid确定是否允许请求。响应于确定请求与未包括在快速应用的许可列表中的资源相关联,请求与密钥管理服务相关联,或者请求与文件系统相关联,由操作系统不将应用适配器的uid转换为主机应用的uid,并且基于应用适配器的uid确定是否允许请求。28.根据本发明的另一方面,提供了一种非瞬时性机器可读介质,其上具有有形地存储的用于由计算设备的处理器执行的可执行指令。响应于处理器的执行,可执行指令使计算设备执行上述和本文描述的方法。在第一实施例中,响应于处理器的执行,可执行指令使计算设备:由计算设备的操作系统从在计算设备上的主机应用内操作的快速应用的应用适配器接收访问来自在主机应用内操作的快速应用的资源的请求。主机应用和应用适配器各自与唯一用户标识符(useridentifier,uid)相关联。响应于确定请求与包括在快速应用的许可列表中的资源相关联,由操作系统将应用适配器的uid转换为主机应用的uid,并且基于主机应用的uid来确定是否允许请求。响应于确定请求与未包括在快速应用的许可列表中的资源相关联,请求与密钥管理服务相关联,或者请求与文件系统相关联,由操作系统不将应用适配器的uid转换为主机应用的uid,并且基于应用适配器的uid来确定是否允许请求。29.在结合附图回顾对申请的具体实施方式的以下描述后,本发明的其它方面和特征对于本领域普通技术人员来说将变得清楚。附图说明30.图1是根据已有技术的软件架构的框图。31.图2是适用于实践本发明的教导的示例性计算设备的框图。32.图3是根据本发明的第一实施例的软件架构的框图。33.图4是根据本发明的第一实施例的用于在计算设备上强制执行应用安全性的方法的流程图。34.图5是根据本发明的第二实施例的软件架构的框图。35.图6是根据本发明的第三实施例的软件架构的框图。36.图7是根据本发明的第三实施例的用于在计算设备上强制执行应用安全性的方法的流程图。具体实施方式37.本发明是参考附图作出的,在附图中示出了实施例。但是,可以使用许多不同的实施例,因此描述不应被解释为限于本文中阐述的实施例。相反,提供这些实施例使得本技术将是详尽和完整的。在可能的情况下,在附图和以下描述中使用相同的附图标记来指代相同的元素,并且在备选实施例中使用素数表示法来指示相似的元素、操作或步骤。所示的系统和设备的功能元素的单独框或所示的分离不一定需要这些功能的物理分离,因为这些元素之间的通信可以在没有任何这种物理分离的情况下通过消息传递、函数调用、共享内存空间等方式发生。因此,尽管本文为了便于解释单独示出功能,但是这些功能不需要在物理或逻辑上分离的平台中实现。不同的设备可以具有不同的设计,使得尽管一些设备在固定功能硬件中实现一些功能,但其它设备可以在可编程处理器中实现这些功能,该可编程处理器具有从机器可读介质获得的代码。最后,除非上下文明确或固有地指示,否则以单数提及的元素可以是复数,反之亦然。38.首先参考图1,图1示出了适合于实践本发明的教导的计算设备102。计算设备102可以是多用途通信设备,例如有线或无线通信设备。计算设备102的示例包括但不限于智能电话、平板计算机、个人相机或相机外设、台式机或笔记本计算机等个人计算机、智能眼镜或其它安装在头部设备上的显示器、智能扬声器或智能电器等其它智能或物联网(internetofthings,iot)设备等以及其它可能性。或者,计算设备102可以是服务器、接入点(accesspoint,ap)或计算系统。图1示出了每个组件的单个实例。但是,计算设备102中的每个组件可以有多个实例,并且它可以使用并行和/或分布式架构实现。39.计算设备102包括处理系统,该处理系统包括控制计算设备102的整体操作的处理器104(例如微处理器或中央处理器(centralprocessingunit,cpu))。处理系统可以包括耦合到处理器104的用于卸载某些计算任务的一个或多个其它类型的处理器,例如图形处理单元(graphicprocessingunit,gpu)、张量处理单元(tensorprocessingunit,tpu)、神经处理单元(neuralprocessingunit,npu)、专用集成电路或现场可编程门阵列(fieldprogrammablegatearray,fpga)。处理器104通过通信总线(未示出)耦合到多个组件,该通信总线提供组件与处理器104之间的通信路径。处理器104耦合到随机存取存储器(randomaccessmemory,ram)108、只读存储器(readonlymemory,rom)110和持久(非易失性)存储器112,例如闪存和通信子系统130。通信子系统130包括用于与无线网络交换射频信号的一个或多个无线收发器。通信子系统130还可以包括用于与有线网络进行有线通信的有线收发器。无线收发器可以包括以下各项中的一项或其组合:蓝牙收发器或其它短程无线收发器、用于通过无线局域网(wirelesslocalareanetwork,wlan)接入点(accesspoint,ap)与wlan通信的wi-fi或其它wlan收发器、或用于与无线接入网(例如,蜂窝网络)通信的蜂窝收发器等无线广域网(wirelesswideareanetwork,wwan)收发器。蜂窝收发器可以在其地理覆盖区域内与蜂窝网络的多个固定收发器基站中的任何一个通信。无线收发器可以包括支持多个射频频段的多频段蜂窝收发器。其它类型的短程无线通信包括近场通信(nearfieldcommunication,nfc)、ieee802.15.3a(也被称为超宽带(ultrawideband,uwb))、z-wave、zigbee、ant/ant+或红外(例如,红外数据关联(infrareddataassociation,irda)通信)。无线收发器可以包括用于从卫星网络接收卫星信号的卫星接收器,该卫星网络包括作为全球或区域卫星导航系统的部分的多个卫星。40.计算设备102还可以包括耦合到处理器104的麦克风132和扬声器134。计算设备102还可以包括相机136、触摸屏138和用于从卫星网络接收卫星信号的卫星接收器140,这取决于计算设备102的类型。触摸屏138通常是电容式触摸屏。计算设备102还可以包括耦合到处理器104的多个传感器120。传感器120可以包括生物识别传感器122(例如,面部扫描仪或指纹扫描仪)、运动传感器124(例如加速度计)、红外(infrared,ir)传感器126和/或接近传感器128。在可能的实施例中,传感器120可以包括其它传感器(未示出),例如定向传感器、电子罗盘或高度计。计算设备102还可以包括一个或多个其它输入设备142,诸如按钮、开关、拨号盘、键盘或小键盘或导航工具,这取决于计算设备102的类型。41.存储器112存储可由处理系统执行的软件,以提供操作系统150(例如androidtm)、包括例如javascript(js)引擎154的脚本引擎(例如由chromiumproject开发的v8开源javascript引擎)的低权限应用沙盒152、以及应用158。低权限应用沙盒152是以最小权限执行的特殊受限进程,以将沙盒内容与系统的其余部分隔离,如下文将更全面地描述。42.操作系统150提供可视用户界面(visualuserinterface,vui),来以经由触摸屏138和/或其它输入设备142检测到的触摸输入的形式与计算设备102进行用户交互。应用158包括至少一个主机应用160、用于在主机应用160内执行的至少一个快速应用162、以及脚本语言完整性测量代理,例如javascript完整性测量代理(javascriptintegritymeasurementagent,jima)164。主机应用160提供可以启动一个或多个快速应用162的快速应用框架。为每个快速应用162提供应用适配器,例如javascript(js)引擎适配器156。js引擎适配器156提供应用编程接口(applicationprogramminginterface,api),该api可以使快速应用162访问操作系统150的各种服务,例如存储器、相机、密钥库等。js引擎适配器156可以作为主机应用进程的部分运行,并且快速应用162访问操作系统服务的任何请求必须通过ipc与主机应用进程路由。备选地,快速应用162具有自己的js引擎适配器156,该js引擎适配器156将与操作系统150交互。43.主机应用160的示例包括操作系统110的社交媒体应用、消息传递应用、web浏览器、游戏或启动器应用。存储器112以字节码存储快速应用162来由javascript引擎154处理。主机应用160可以用各种编程语言编写。44.操作系统150控制进程(例如,软件组件或应用152)与计算设备102的各种硬件组件之间的进程间通信(inter-processcommunication,ipc)。操作系统150提供快速应用框架与在低权限应用沙盒152内操作的进程(被称为沙盒进程)之间的ipc通信机制。操作系统150还授权和拒绝应用152(例如,主机应用160和快速应用162)访问计算设备102的资源的许可。如上所述,快速应用162是旨在在主机应用160内运行的基于javascript的轻量级应用。快速应用162是比主机应用160更小和更快的应用,并且驻留在主机应用边界内。45.jima164由操作系统150控制。或者,jima164可以是操作系统150的一部分。jima164在快速应用162的第一次启动之前制作快速应用162的字节码的副本。jima164使用加密哈希函数来计算每个字节码部分的加密签名,并且将加密签名存储在存储器112中。当快速应用162运行时,jima164定期生成在隔离沙盒中运行的快速应用162参考快速应用的字节码部分的加密签名,并且将生成的加密签名与存储的加密签名进行比较以标识任何不匹配。不匹配意味着快速应用162的代码自安装以来已经改变,这表明快速应用162可能是恶意的。响应于检测到不匹配,jima164可以将终止相应的快速应用162的请求发送给操作系统150。jima164的操作将在下文更详细地描述。46.存储器112存储各种数据170,包括由多个传感器120获取的传感器数据,包括由生物识别传感器122获取的传感器数据、由运动传感器124(即计算设备102的加速度计、陀螺仪或惯性测量单元(inertialmeasurementunit,imu))获取的传感器数据、由红外传感器126获取的传感器数据、以及由接近传感器128获取的传感器数据。存储器112还存储由触摸屏138和/或其它输入设备142获取的输入数据172、包括用户偏好、设置和可能的关于用户用于认证和/或标识的生物识别数据的用户数据、包括通过无线收发器下载的数据的下载缓存以及保存的文件。系统软件、软件模块、特定设备应用或其部分可以临时加载到ram108中。由计算设备102接收的通信信号也可以存储在ram108中。虽然描述了各种类型的存储器的特定功能,但这仅仅是一个实施例,并且在其它实施例中可以使用对存储器类型的不同功能分配。47.计算设备102还可以包括作为电源的电池(未示出),例如可以通过耦合到电池接口(例如串行数据端口)的充电电路充电的一个或多个可充电电池。电池将电力提供给计算设备102的至少一些组件,并且电池接口(未示出)为电池提供机械和电气连接。48.图3是根据本发明的一个实施例的软件架构300的框图。计算设备102上的主机应用160与操作系统150通信,以在执行期间访问用户数据、硬件、文件系统、密钥配置数据和加密材料等资源。主机应用160在逻辑应用边界20内操作。主机应用具有至少一个快速应用162。快速应用162具有javascript引擎154和javascript引擎适配器156的对应实例。快速应用162在弱逻辑应用边界30内操作。49.作为应用安装过程的部分,操作系统150将用户标识符(useridentifier,uid)分配给每个应用158。例如,当授权对计算设备102的资源的访问时,操作系统150使用用户标识符相关联、评估和执行来自每个应用158的指令。在快速应用162的安装过程期间,为快速应用162的javascript引擎适配器156分配与主机应用162的uid不同的唯一uid。在所示的示例中,为主机应用160分配uid0,为快速应用162的javascript引擎适配器156分配uid1。常规上,不能为javascript引擎适配器156分配uid。相反,javascript引擎适配器156将使用主机应用160的uid。将uid分配给快速应用162的javascript引擎适配器156被称为uid隔离,在图3中由附图标记301示出为逻辑边界。uid隔离旨在防止javascript引擎适配器156具有与主机应用160的许可集相同的权限和许可集,以在javascript引擎适配器156被破坏的情况下至少部分地保护主机应用160。在便携式操作系统接口(portableoperatingsysteminterface,posix)和类posix系统上,uid是程序隔离的主要工具之一。posix和类posix系统是遵循便携式操作系统接口标准的操作系统。主机应用160或快速应用162等应用只能访问操作系统150针对应用的uid允许的资源。50.此外,在移动系统上,每个uid还与用户授权的许可集相关联,该许可集规定应用可以访问哪些系统服务(例如硬件传感器)和加密资源(例如加密密钥)。由于主机应用160可能必须支持多种快速应用162并且充当所有快速应用162的管理员,因此主机应用160可以从用户获得更丰富的许可集,并且有权访问与所有安装的快速应用1262相关的关键配置数据。由于允许javascript引擎适配器156具有与主机应用相同的uid,因此存在在恶意快速应用162控制javascript引擎适配器156之后被授权这些许可的风险。51.javascript引擎适配器156通过系统进程间通信(systeminter-processcommunication,ipc)304或通过系统调用请求对文件系统的访问。系统ipc304管理操作系统150的共享数据。将唯一uid分配给javascript引擎适配器156改变了系统服务或内核在处理请求时感知javascript引擎适配器156的标识的方式。这可能导致访问拒绝,因为与请求相关联的标识(例如uid)可能不拥有请求所需的许可。在大多数情况下,此结果是理想的,因为它隔离javascript引擎适配器156。但是,在一些情况下,拒绝服务是不可取的。提供uid转换器306以减少或消除不必要的拒绝服务。uid转换器306是操作系统150的部分。在所示的一些实施例中,uid转换器306可以是系统ipc304的部分。uid转换器306选择性地将javascript引擎适配器156的uid转换(变换)为主机应用160的uid,以基于每个请求将主机应用160的许可授权给javascript引擎适配器156。uid转换器306基于快速应用162的许可列表(作为仅对管理员可用的配置数据的部分)和请求的目的地选择性地转换javascript引擎适配器156的uid。许可列表标识已被授权特定快速应用162的资源,例如操作系统150的服务。许可取决于操作系统150。例如,许可可以包括操作系统150的完整集或子集,例如androidtm许可的完整集或子集。许可示例包括读/写设备存储、访问粗略/精确位置、访问相机、访问麦克风、访问互联网、读/写联系人和读/写日历。52.对于基于快速应用162的许可列表允许快速应用162访问的允许的服务308,uid转换器306将javascript引擎适配器156的uid转换为主机应用160的uid,从而使请求成功。53.对于基于快速应用162的许可列表不允许快速应用162访问的拒绝的服务310,uid转换器306不将javascript引擎适配器156的uid转换为主机应用160的uid,从而拒绝请求。54.对于密钥管理服务(keymanagementservice,kms)312,uid转换器306不将javascript引擎适配器156的uid转换为主机应用160的uid,从而拒绝请求。在这种情况下,快速应用162被识别为kms的唯一客户端,以防止跨客户端访问存储在kms312中的密钥配置数据和加密材料。55.对于文件系统访问314,uid转换器306不将javascript引擎适配器156的uid转换回主机应用160的uid,从而拒绝请求。在这种情况下,快速应用只能访问javascript引擎适配器156的uid拥有的私密文件。56.使用如上所述的uid隔离,恶意快速应用162可以脱离javascript引擎控制,并且能够操纵javascript引擎适配器156以脱离它强制执行的任何检查。但是,恶意快速应用162将无法获得主机应用160的权限和许可,因为javascript引擎适配器156的uid不同于主机应用160的uid。通过将javascript引擎适配器156的uid与主机应用160的uid分离,破解的javascript引擎适配器156仍将被操作系统150识别,但被识别为与主机应用160不同的应用,从而防止恶意快速应用162访问主机应用160有权访问的资源。57.图4是根据本发明的第一实施例的用于在计算设备上强制执行应用安全性的方法400的流程图。方法400的至少部分由计算设备102的处理器104执行的软件执行。计算设备102安装有许多应用158,包括具有唯一uid(在所示示例中为uid0)的主机应用160。58.在操作402处,将快速应用162与用于快速应用162的javascript引擎适配器156一起安装在计算设备102上。在安装过程期间,为快速应用162的javascript引擎适配器156分配与主机应用160的uid不同的唯一uid。快速应用162可以通过下载从外部来源接收进行安装。59.在操作404处,在主机应用160内启动、运行、执行或操作快速应用162。60.在操作406处,快速应用162通过javascript引擎适配器156请求访问计算设备102的资源。资源可以是用户数据、硬件、文件系统、密钥配置数据和加密材料或其它资源。61.在操作408处,uid转换器306基于快速应用162的许可列表和如上所述的请求的目的地确定是否将javascript引擎适配器156的uid转换为主机应用160的uid。62.在操作410处,响应于确定请求与包括在快速应用的许可列表中的资源相关联,操作系统150通过uid转换器306将javascript引擎适配器156的uid转换为主机应用160的uid,并且将请求以及转换后的uid(主机应用,在所示的示例中为uid0)发送到系统ipc304,所述系统ipc304基于转换的uid来确定是否允许请求。63.在操作412处,响应于确定请求与不包括在快速应用的许可列表中的资源相关联、请求与密钥管理服务相关联或请求与文件系统相关联,操作系统150不将javascript引擎适配器156的uid转换为主机应用的uid,并且将请求和javascript引擎适配器156的uid(在所示示例中为uid1)发送到系统ipc,系统ipc基于javascript引擎适配器156的uid来确定是否允许请求。64.在操作414处,系统ipc基于javascript引擎适配器156或主机应用160的uid来确定是否允许请求,视情况而定。在操作416处,系统ipc304响应于确定允许请求执行请求。在操作418处,系统ipc304响应于确定拒绝请求将错误消息或拒绝消息返回给快速应用162。错误消息或拒绝消息是系统ipc,但系统消息可以触发发往计算设备102的用户的屏幕上消息。通常,错误消息或拒绝消息由主机应用160(例如androidtm上的java.lang.securityerror)处理,该主机应用160可以显示错误对话框或指示访问拒绝错误的消息。65.图5是根据本发明的第二实施例的软件架构320的框图。软件架构320类似于图3中的软件架构300,区别在于它还借助于低权限应用沙盒152包括低权限应用沙盒隔离。javascript引擎154通过低权限应用沙盒152与计算环境的其余部分隔离,该低权限应用沙盒152由快速应用162的javascript引擎适配器156生成。低权限应用沙盒152的实现依赖于平台,但对于每个平台,低权限应用沙盒152提供javascript运行时环境,其中,访问外部资源是不可能的。低权限应用沙盒152可以使快速应用162和javascript引擎154的不可信javascript代码被安全地执行。低权限应用沙盒152实现隔离的javascript环境,该隔离的javascript环境可以用于操作任何代码,而不能够逃出低权限应用沙盒152,该低权限应用沙盒152与uid隔离相结合提供在低权限应用沙盒152内操作的不可信代码的完全隔离。低权限应用沙盒152可以使用操作系统150的隔离服务来实现,例如androidtm的隔离服务。隔离服务使用特殊隔离进程执行,该特殊隔离进程被配置为使得隔离服务无法访问任何系统服务或资源,并且只能通过系统ipc通道与启动隔离服务的主机进程通信。66.javascript引擎适配器156生成双向通道,以与低权限应用沙盒152之外的资源通信。双向通道是快速应用162访问低权限应用沙盒152之外的资源的唯一途径。访问低权限应用沙盒152外部资源的任何请求都要受到javascript引擎适配器156强制执行的许可检查。可选地,当允许请求的许可不足时,可以请求用户的授权。例如,可能会提示用户授权与请求相关联的一个或多个所需许可,而不是拒绝许可不足的请求。低权限应用沙盒152在恶意快速应用通过接管javascript引擎适配器156升级权限和许可之前进一步阻碍恶意快速应用突破限制。67.图6是根据本发明的第三实施例的软件架构340的框图。软件架构340类似于图5中的软件架构320,区别在于它提供脚本语言完整性测量代理,例如jima164。jima164定期监控运行时的javascript代码的完整性,以检测篡改或自变形行为。jima164通常是操作系统150的部分,可以是主机应用160的部分。68.jima164使用在由参考162i标识的jima参考低权限应用沙盒152i中操作的快速应用162的参考版本。当快速应用162即将启动时,jima164将javascript代码加载到jima参考低权限应用沙盒152i中,而不操作该javascript代码(执行其代码)。jima参考低权限应用沙盒152i用于编译代码并且生成其中的函数的参考哈希签名,如本文所述。参考快速应用162i可以被提供有uid隔离,示出为在图6中由附图标记301i标识的逻辑边界。类似于快速应用162,参考快速应用162i加载在主机应用160的应用边界120内的弱逻辑边界30i内。虽然未被操作,但参考快速应用162i具有javascript引擎154i和javascript引擎适配器156i的相关联实例。可以是主机应用160的部分或对主机应用160可访问的签名缓存328存储如下所述的加密签名。69.在jima参考低权限应用沙盒152i内,参考快速应用162i的编译字节码是从jsjavascript引擎154i获得,并且编译字节码的加密签名(也被称为哈希)是在每个字节码部分上使用例如sha-256(安全哈希算法256)等加密哈希函数生成的。代替根据参考快速应用162i的整个字节码计算单个加密签名,为字节码的每个可分割部分生成一个加密签名,使得如果字节码部分的顺序稍后被打乱(这可能取决于javascript引擎的动态发生),加密签名仍然可以使用。在一些示例中,每个编译的javascript函数都被认为是字节码的可分割部分。通过将javascript函数用作字节码的最小可分割部分,调用函数的顺序不会影响方案。因此,为字节码的每个可分割部分(例如,每个javascript函数)生成一个加密签名(或哈希)。70.加密签名存储在签名缓存328中。当快速应用162运行时,基于字节码的每个可分割部分,定期从常规应用低权限应用沙盒152生成加密签名,并且将加密签名与签名缓存中的加密签名进行比较以检测字节码中的任何变化。在比较期间,按在代码快速应用162中的出现顺序将操作的快速应用162的每个加密签名与存储在签名缓存328中的加密签名进行比较,直到找到匹配或已经尝试存储在签名缓存328中的所有加密签名并且未找到匹配为止,在这种情况下确定存在不匹配。不匹配意味着快速应用162已经改变其源代码,并且可能是恶意快速应用162。可以调整定期检查的间隔或频率,以平衡安全性与性能开销。例如,检查可以在开始时执行一次,每次操作应用时执行一次,每隔几分钟、每分钟执行一次,或者可能每分钟执行几次。响应于检测到收集的签名与缓存的签名不匹配,jima164可以将终止快速应用162的请求或指令发送给操作系统150。作为终止发往操作系统150的终止快速应用162的指令的补充或替代,jima164还可以通知用户不匹配。71.因为加密签名是在字节码等级生成的,所以jima164可以检测快速应用162的代码中的任何操作,这可能无法通过仅基于源代码的简单静态分析检测到。与静态分析相比的另一优势在于jima模块检查运行时的代码。因此,它可以在安装快速应用162之后检测篡改或自变形行为。另一方面,静态分析仅进行一次性检查。72.图7是根据本发明的第三实施例的用于在计算设备上强制执行应用安全性的方法700的流程图。方法700的至少部分由计算设备102的处理器104执行的软件执行。方法700在数个方面与方法400相似,区别在于它包括上述脚本语言完整性测量代理(例如,jima164)的附加操作。73.在操作402处,将快速应用162与用于快速应用162的javascript引擎适配器156一起安装在计算设备102上。在安装过程期间,为快速应用162的javascript引擎适配器156分配与主机应用160的uid不同的唯一uid。快速应用162可以通过下载从外部来源接收进行安装。74.在操作702处,在快速应用162在主机应用160内启动、运行、执行或操作之前,将参考快速应用162i加载在jima参考低权限应用沙盒152i中,但不对其进行操作(例如,不运行),并且jima164获得参考快速应用162i的编译字节码。75.在操作704处,在快速应用162首次在主机应用160内启动、运行、执行或操作之前,jima164使用加密哈希函数生成参考快速应用162i的编译字节码中的字节码的每个可分割部分的加密签名。加密签名存储在签名缓存328中。签名缓存328可以在快速应用162的安装期间生成。备选地,签名缓存328可以在第一次启动时生成。76.在操作706处,在低权限应用沙盒152内的主机应用160内启动、运行、执行或操作快速应用162。77.在操作708处,jima164生成运行时的快速应用162的字节码的加密签名。78.在操作710处,jima164将运行时的快速应用162的字节码的加密签名与存储在签名缓存328中的参考快速应用162i的字节码的加密签名进行比较,并且确定对应的加密签名是否匹配。79.响应于确定运行时的快速应用的字节码的加密签名与存储在签名缓存328中的参考快速应用的字节码的加密签名不匹配,执行安全性动作。可以选择安全性动作的性质以平衡安全性与性能开销。在所示的示例中,在操作712处,响应于确定运行时的快速应用的字节码的加密签名与存储在签名缓存328中的参考快速应用的字节码的加密签名不匹配,jima164可以将终止快速应用162的请求或指令发送给操作系统150。操作系统150可以响应于从jima164接收到请求或指令而自动终止快速应用162。在操作714处,响应于确定运行时的快速应用的字节码的加密签名与存储在签名缓存328中的参考快速应用的字节码的加密签名不匹配,jima164可以通知用户不匹配。用户通知可以是显示在例如触摸屏138的计算设备102的显示器上的屏幕上通知,例如,作为快速应用162在其中操作的主机应用160的可视界面屏幕的部分或覆盖该可视界面屏幕。作为终止发往操作系统150的终止快速应用162的指令的补充或替代,可以执行操作714。例如,可以为用户呈现显示在计算设备102的显示器上的提示,该提示提供关于继续进行的选项,即终止快速应用162或继续进行快速应用162。80.操作708到714可以响应于定时器执行,以确保检查是定期执行的。81.然后执行来自方法400的操作406到418。备选地,操作406到418可以在操作708到714之前被执行。82.虽然上述实施例使用javascript引擎,但应当理解,本发明的教导可以扩展到其它脚本语言、其它脚本引擎和具有类似功能的其它应用适配器。83.综述84.本文描述的流程图和附图中的步骤和/或操作仅用于示例目的。这些步骤和/或操作可以有许多变化而不脱离本发明的教导。例如,步骤可以以不同的顺序执行,或者在适当情况下,可以添加、删除或修改步骤。85.考虑到本发明,用于执行描述的上述方法的软件编码介于本领域普通技术人员的范围内。可以由一个或多个相应设备的一个或多个处理器执行以执行上述方法的机器可读代码可以存储在数据管理器的存储器等机器可读介质中。术语“软件”与“固件”在本发明中是可互换的,并且包括存储在存储器中供处理器执行的任何计算机程序,包括随机存取存储器(randomaccessmemory,ram)存储器、只读存储器(readonlymemory,rom)存储器、eprom存储器、电eprom(electricallyeprom,eeprom)存储器和非易失性ram(non-volatileram,nvram)存储器。上述存储器类型仅仅是示例,因此并不限制可用于存储计算机程序的存储器类型。86.还公开了所公开范围内的所有值和子范围。此外,虽然本文公开和示出的系统、设备和过程可以包括特定数量的元素,但是可以修改这些系统、设备和组件以包括更多或更少这样的元素。虽然本文描述了几个示例性实施例,但修改、调整和其它实现方式是可能的。例如,可以对附图所示的元素进行替换、添加或修改,并且可以通过替换、重新排序或添加所公开的方法的步骤来修改本文描述的示例性方法。87.可以选择来自上述实施例中的一个或多个实施例的特征,以创建由上面可能未明确描述的特征的子组合组成的备选实施例。此外,可以选择和组合来自上述实施例中的一个或多个实施例的特征,以创建由上面可能未明确描述的特征组合组成的备选实施例。在将本发明作为一个整体时,适用于这种组合和子组合的特征对于本领域技术人员来说是清楚的。88.此外,阐述了许多具体细节,以便于透彻理解本文描述的示例性实施例。但是,本领域的普通技术人员将理解,本文描述的示例性实施例可以在没有这些具体细节的情况下加以实践。此外,为了不模糊本文描述的示例性实施例,未详细描述公知的方法、过程和元素。本文以及陈述的权利要求中描述的主题旨在覆盖和涵盖技术中的所有合适的变化。89.尽管本发明在方法方面至少部分地进行了描述,但本领域普通技术人员将理解,本发明也针对用于执行所述方法的至少一些方面和特征的各种元素,无论是通过硬件、软件或其组合。因此,本发明的技术方案可以体现在非易失性或非瞬时性机器可读介质(例如,光盘、闪存等)中,该介质上存储有有形地存储在其中的使处理设备能够执行本文公开的方法的示例的可执行指令。90.术语“处理器”可以包括任何可编程系统,包括使用微处理器/控制器或纳米处理器/控制器、中央处理器(centralprocessingunit,cpu)、神经处理单元(neuralprocessingunit,npu)、张量处理单元(tensorprocessingunit,tpu)、硬件加速器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)简化指令集电路(reducedinstructionsetcircuit,risc)、逻辑电路和能够执行本文描述的功能的任何其它电路或处理器。术语“数据库”可以指数据体、关系数据库管理系统(relationaldatabasemanagementsystem,rdbms)或两者。本文使用的数据库可以包括任何数据集,包括层次数据库、关系数据库、平面文件数据库、对象关系数据库、面向对象的数据库和存储在计算机系统中的任何其它结构化记录或数据集。以上示例仅仅是示例,因此并不旨在以任何方式限制术语“处理器”或“数据库”的定义和/或含义。91.本发明可以通过其它特定形式实施而不脱离权利要求书的主题。描述的示例性实施例在各方面都仅仅是示意性的,而不是限制性的。本发明旨在覆盖和涵盖所有适当的技术变更。本发明的范围因此由随附权利要求而不是由先前描述描述。权利要求书的范围不应受实施例中阐述的实施例限制,而应被给予与整个描述一致的最广泛的解释。当前第1页12当前第1页12
技术特征:
1.一种在计算设备上强制执行应用安全性的方法,其特征在于,包括:所述计算设备的操作系统从在所述计算设备上的主机应用内运行的快速应用的应用适配器接收访问所述计算设备的资源的请求,其中,所述主机应用和所述应用适配器各自与唯一用户标识符(uid)关联;响应于确定所述请求与包括在所述快速应用的权限列表中的资源关联:所述操作系统将所述应用适配器的所述uid转换为所述主机应用的所述uid;所述操作系统基于所述主机应用的所述uid确定是否允许所述请求;响应于确定所述请求与未包括在所述快速应用的所述权限列表中的资源关联,所述请求与密钥管理服务关联,或所述请求与文件系统关联:所述操作系统不将所述应用适配器的所述uid转换为所述主机应用的所述uid;所述操作系统基于所述应用适配器的所述uid确定是否允许所述请求。2.根据权利要求1所述的方法,其特征在于,还包括:响应于确定允许所述请求,执行所述请求。3.根据权利要求1或2所述的方法,其特征在于,所述快速应用和用于执行所述快速应用的脚本引擎在低权限应用沙盒内运行,其中,对所述计算设备的、在所述低权限应用沙盒外的资源的访问由所述应用适配器控制。4.根据权利要求3所述的方法,其特征在于,所述低权限应用沙盒提供运行时环境,在所述运行时环境中,对所述计算设备的、在所述低权限应用沙盒外的资源的访问由所述应用适配器通过双向通道进行控制。5.根据权利要求3所述的方法,其特征在于,所述快速应用是javascript应用,所述脚本引擎是javascript引擎,所述应用适配器是javascript引擎适配器。6.根据权利要求3所述的方法,其特征在于,还包括:在运行所述快速应用之前:在参考低权限应用沙盒内加载参考快速应用,并且获得所述参考快速应用的编译字节码;使用加密哈希函数生成所述参考快速应用的所述编译字节码中的字节码的每个可分割部分的加密签名;将所述加密签名存储在签名缓存中;在所述运行所述快速应用期间定期进行以下操作:生成运行时的所述快速应用的所述字节码的每个可分割部分的加密签名;确定运行时的所述快速应用的所述字节码的所述加密签名是否与存储在所述签名缓存中的所述参考快速应用的所述字节码的所述加密签名匹配;响应于确定运行时的所述快速应用的所述字节码的所述加密签名与存储在所述签名缓存中的所述参考快速应用的所述字节码的所述加密签名不匹配,执行安全性动作。7.根据权利要求6所述的方法,其特征在于,所述安全性动作包括:终止所述快速应用。8.根据权利要求6所述的方法,其特征在于,所述安全性动作包括:生成用户通知。9.根据权利要求8所述的方法,其特征在于,所述用户通知是显示在所述计算设备的显示器上的屏幕上通知。10.根据权利要求9所述的方法,其特征在于,所述屏幕上通知是运行有所述快速应用
的所述主机应用的可视界面屏幕的部分或覆盖所述可视界面屏幕。11.根据权利要求1至10中任一项所述的方法,其特征在于,每个uid与访问所述计算设备的资源的权限集关联,其中,所述主机应用的所述uid比所述应用适配器的所述uid被授权的更多的权限。12.一种计算设备,其特征在于,包括:处理器,用于:所述计算设备的操作系统从在所述计算设备上的主机应用内运行的快速应用的应用适配器接收访问来自在主机应用内运行的快速应用的资源的请求,其中,所述主机应用和所述应用适配器各自与唯一用户标识符(uid)关联;响应于确定所述请求与包括在所述快速应用的权限列表中的资源关联:所述操作系统将所述应用适配器的所述uid转换为所述主机应用的所述uid;所述操作系统基于所述主机应用的所述uid确定是否允许所述请求;响应于确定所述请求与未包括在所述快速应用的所述权限列表中的资源关联,所述请求与密钥管理服务关联,或所述请求与文件系统关联:所述操作系统不将所述应用适配器的所述uid转换为所述主机应用的所述uid;所述操作系统基于所述应用适配器的所述uid确定是否允许所述请求。13.根据权利要求12所述的计算设备,其特征在于,所述控制器还被配置为:响应于确定允许所述请求,执行所述请求。14.根据权利要求12至13中任一项所述的计算设备,其特征在于,所述快速应用和用于执行所述快速应用的脚本引擎在低权限应用沙盒内运行,其中,对所述计算设备的、在所述低权限应用沙盒外的资源的访问由所述应用适配器控制。15.根据权利要求14所述的计算设备,其特征在于,所述低权限应用沙盒提供运行时环境,在所述运行时环境中,对所述计算设备的、在所述低权限应用沙盒外的资源的访问由所述应用适配器通过双向通道进行控制。16.根据权利要求14所述的计算设备,其特征在于,所述快速应用是javascript应用,所述脚本引擎是javascript引擎,所述应用适配器是javascript引擎适配器。17.根据权利要求14所述的计算设备,其特征在于,所述控制器还被配置为:在运行所述快速应用之前:在参考低权限应用沙盒内加载参考快速应用,并且获得所述参考快速应用的编译字节码;使用加密哈希函数生成所述参考快速应用的所述编译字节码中的字节码的每个可分割部分的加密签名;将所述加密签名存储在签名缓存中;在所述运行所述快速应用期间定期进行以下操作:生成运行时的所述快速应用的所述字节码的每个可分割部分的加密签名;确定运行时的所述快速应用的所述字节码的所述加密签名是否与存储在所述签名缓存中的所述参考快速应用的所述字节码的所述加密签名匹配;响应于确定运行时的所述快速应用的所述字节码的所述加密签名与存储在所述签名缓存中的所述参考快速应用的所述字节码的所述加密签名不匹配,执行安全性动作。
18.根据权利要求17所述的计算设备,其特征在于,所述安全性动作包括:终止所述快速应用。19.根据权利要求17所述的计算设备,其特征在于,所述安全性动作包括:生成用户通知。20.一种非瞬时性机器可读介质,其特征在于,所述非瞬时性机器可读介质存储有用于由计算设备的处理器执行的可执行指令,其中,响应于所述处理器的执行,所述计算设备的操作系统从在所述计算设备上的主机应用内运行的快速应用的应用适配器接收访问来自在主机应用内运行的快速应用的资源的请求,其中,所述主机应用和所述应用适配器各自与唯一用户标识符(uid)关联;响应于确定所述请求与包括在所述快速应用的权限列表中的资源关联:所述操作系统将所述应用适配器的所述uid转换为所述主机应用的所述uid;所述操作系统基于所述主机应用的所述uid确定是否允许所述请求;响应于确定所述请求与未包括在所述快速应用的所述权限列表中的资源关联,所述请求与密钥管理服务关联,或所述请求与文件系统关联:所述操作系统不将所述应用适配器的所述uid转换为所述主机应用的所述uid;所述操作系统基于所述应用适配器的所述uid确定是否允许所述请求。

技术总结
用于应用安全性的方法和系统。本发明的方法和系统提高了应用安全性,并且可以用于保护主机应用和操作系统免受恶意快速应用的影响。访问计算设备的资源的请求是从在计算设备上的主机应用内操作的快速应用的应用适配器接收的。响应于确定请求与包括在快速应用的许可列表中的资源相关联,操作系统将应用适配器的唯一用户标识符(UID)转换为主机应用的UID,操作系统基于主机应用的UID来确定是否允许请求。否则,操作系统基于应用适配器的UID来确定是否允许请求。是否允许请求。是否允许请求。


技术研发人员:Z
受保护的技术使用者:华为技术有限公司
技术研发日:2021.05.20
技术公布日:2023/8/24
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐