安全认证并切换至加密域的制作方法
【专利摘要】一种用于在实施多个安全域的操作系统中切换至需要认证的加密域的设备和方法。提供与加密域和当前域不同的中间域。一旦接收到切换至加密域的请求,系统就切换至中间域。在中间域中显示针对对加密域的访问的认证质询。接收认证信息被用于解密用于提供对加密文件系统的访问的文件系统密钥。然后,安装加密文件系统,并且启动加密域。
【专利说明】
安全认证并切换至加密域
技术领域
[0001]本公开一般来说涉及移动设备安全性。更具体地,本公开涉及用于移动设备的安全域管理。
【背景技术】
[0002]在诸如基于Android?、Linux?或任何基于Unix?的操作系统(例如,如iPhone?)的智能手机、平板电脑和移动互联网设备之类的移动设备上需要多个隔离的域,其中驻留在域中的应用程序和数据与可能由驻留在域外、在网站上、或在同一设备上的其他域中的应用程序产生的安全威胁隔离。这多个安全域通常会被单个用户、设备所有者使用以解决与不同的移动设备使用情况关联的变化的访问容易性、私密性和安全性需求。例如,对于移动银行应用和数据,与游戏应用相比,设备所有者可能具有不同的访问容易性、私密性和安全性要求,或者设备所有者可能希望与家人或朋友临时共享他们设备上的某些应用程序而不共享诸如个人邮件、联系人和文本消息之类的其他应用程序和数据。此外,存在不同的域由不同的实体(诸如设备所有者或诸如机构或公司的外部团体)管理的需求,其中每个实体可能对访问和使用他们所管理的域中的应用程序和数据有不同的安全性要求。例如,对于在每个域内允许的各个应用程序,以及应用程序可以在一域内执行需依据的条件(每一种条件都可能需要由对域进行管理的实体针对每个域可唯一配置),各个域之间的要求可能不同。还存在支持依赖于域中包含的应用程序和数据的类型的、进入不同域所需要的不同用户认证机制、不同重认证时间帧(或者,可选的不要认证)的需求(例如,设备所有者可能不希望输入密码来玩游戏或者访问Google?地图,但他们可能希望具有强有力的认证来访问移动银行应用)。
[0003]移动设备安全性和域隔离的技术的当前状态已经使用了传统个人计算机(PC)和服务器计算安全技术,诸如用户账户、管理程序/虚拟化、应用程序包装和反病毒扫描。然而,移动设备的典型使用实质上与这些传统环境不同。本质上,移动设备是移动的,并且通常与设备所有者一起移动。它们联网,总是开启,并且需要对短周期任务的快速访问。它们以实质上与传统工作站和主机共享不同的方式共享。功耗也是移动设备的关键,这是耗电的病毒扫描和虚拟化技术还没有在移动设备上得到广泛使用的一个原因。
[0004]—个传统的域隔离方法是在设备上创建独立的用户账户,凭借该账户,每个用户必须登录到已为该用户配置的账户。依赖于操作系统(OS),这可以强迫另一个用户被注销。这个方法支持单个设备上的多个用户,并且隔开或隔离每个用户的应用程序数据。全部用户利用相同的操作系统,并且全部用户具有相同的用户界面特征。安装的应用程序可由全部用户访问,这是存储器和中央处理单元(CPU)资源的有效使用。这还允许用户将他们的账户配置有他们希望的外观和感觉。
[0005]虽然用户账户提供数据隔离以及在不同用户账户间使用相同应用程序和OS的功效,但是这个方法有以下局限性。其提供对设备全有或全无的访问,而没有临时访问的灵活性。“来宾”用户账户可以被建立为具有有限访问,但是这不利于与移动设备(例如,与家人或朋友)进行普通的自发共享。用户账户在被认为是个人设备的移动设备上通常不可用。用户仍旧必须在每个用户账户之间切换,这不反映人们希望使用他们的移动设备的方式。在切换用户账户时,用户必须登录,这使这个方法更不方便,因为在具有多个用户账户的第一用户和第二用户之间不存在隐含关系。通常不存在使得在切换域时不总是需要登录的不活动定时器或类似的机制。用户(账户)之间的隔离处于用户空间,或者处于应用程序级,并且由OS实施。具有管理员或root访问的任一个或任意软件,包括恶意软件,都可以访问全部用户的数据。一些系统确实使一些用户数据能够加密以有助于缓解这个攻击,但是通常用户数据仍然十分脆弱,并且任意内核级利用或处理都可以修改应用程序、进程、拦截数据并访问其所期望的任意文件/对象。
[0006]此外,在大型计算机时代开发并类似地扩展到台式机的传统用户账户,不能在诸如智能手机的真正个人设备上很好地工作。移动设备以与大型机或台式机不同的方式共享。设备所有者和用户越来越希望具有传统屏锁或者对移动设备的“全有或全无”的访问控制机制的替代。例如,设备所有者希望具有被频繁访问且在不需要用户认证的域中不包含敏感信息的应用程序;这与对个人受保护域或工作受保护域的需求不同。在这些应用程序和数据的安全性不被用户认为很重要(例如,天气或导航)时,这种开放的、共享的或公共域的主要目的是易于使用和快速访问。就这一点来说,用户不想在每次访问这种开放域时都输入密码或PIN。此外,这种开放域可以包括可能比用户或域所有者在他们的受保护域中可以允许的那些应用程序更不可靠的应用程序。例如,安卓(Android)上的许多应用程序被人熟知的是访问联系人数据库。最后,虽然在安装时间期间这种权限必须被授予以实现应用程序的安装,但是许多用户不会严密检查和理解授予这种权限的含义。
[0007]现在结合图1A至图1D描述其他传统的域隔离方法。
[0008]本领域众所周知,且如图1A所示,诸如实施操作系统的移动设备之类的计算设备可以被理解为包括:硬件、包括内核和中间件的操作系统以及应用程序空间(或用户空间)。内核管理并提供输入/输出(I/O)服务至软件应用程序供其访问硬件,并且中间件向软件应用程序提供除内核提供的那些之外的服务。
[0009]图1B和图1C中示出的一个传统域隔离方法采用基于管理程序的虚拟化或虚拟机。使用虚拟机,操作系统一定程度地被复制以提供不同的隔离的域。依赖于管理程序,存在不同类型的虚拟机。图1B示出的类型1(或裸机)管理程序直接在设备CPU( “裸机”)上运行,并通过针对每个域支持完整且独立的操作系统的去特权实例来提供域隔离。隔离只依赖于管理程序。图1C中示出的类型2管理程序是另一种虚拟化方法,其中第二来宾OS在主机OS上运行。还存在其他混合操作系统级虚拟化方法。
[0010]基于管理程序的虚拟化提供域之间的隔离,但有以下局限性。OS和应用程序的复制意味着在设备存储器、CPU和功耗方面存在显著的设备开销。管理程序方案的高资源需求使得多个域的支持不切实际。虽然在被管理程序支持的情况下一些交叉域数据共享通过专门消息传送服务进行,但数据、应用程序共享和进程间通信(IPC)通常是不可能的。每个OS被暴露于可以破坏域之间的隔离的内核层恶意软件。用户必须在域之间来回切换(例如,从个人应用切换至工作应用),这不反映人们希望使用他们的移动设备的方式。将类型I或类型2管理程序整合到移动设备上的时间和开销非常高,使得这种方法对低成本移动设备来说不可行。在域之间切换的性能影响很高。最后,不管这些方案支持什么,用户账户和用户认证都是被每个OS提供,这是传统的全有或全无的访问。
[0011]图1D中示出的用于移动设备上的域隔离的第三传统方法涉及应用程序级的容器化。在这种情况下,应用程序容器(或域)共享相同的硬件和OS,但是使用容器化或包装技术作为容器中的应用程序与OS之间的代理。这通过提供间接层来创建多个独立的域,以使较低级设备资源、存储器和文件系统可以被透明地映射为应当只被容器或域中的应用程序访问的较高级资源。在移动设备资源的消耗方面,容器化是相对有效的,特别是与虚拟化相比,因为虽然应用程序通常在容器内和容器外被复制(例如,可以被用于容器内的工作和容器外的个人使用的电子邮件应用),但只存在一个版本的OS。作为应用程序级方案,容器方案具有非常实际的益处,因为其可以被下载到已经在实际应用中的设备(例如,逆向兼容性)。
[0012]在容器化中,全部安全性和全部实施都围绕着包含应用程序的容器包装。这样,下载所包含的应用程序的任何人不仅接收应用程序,而且接收与该应用程序关联的全部安全性信息。使用容器化,恶意的个人仍然可能:(I)对安全性策略进行逆向工程;或(2)在诸如可以从其中提取信息的仿真器上的环境中执行应用程序。
[0013]然而,应用程序级容器化作为域隔离方法有以下局限性。从安全性角度看,对于具有一些基本技能的黑客或驻留在设备上的恶意软件来说,拦截容器和OS之间的调用以打破隔离并捕获数据和个人信息是相对容易的。容器化不在操作系统或内核中实施,而是被暴露至可能存在于设备上的恶意软件。例如,如果操作系统是Linux或Android并且攻击者获得root访问特权,则从RAM提取域数据或其他关键信息(例如,用于访问域的密码,或用于加密域中的数据的密钥)很容易,或者对于这种内核层恶意软件来说,对诸如麦克风或帧缓存器的I/O驱动器进行窃听很容易。容器隔离被容器“包装”的应用程序和数据,但是不限制不在容器中的其他应用程序访问存储器、文件或网络等。在各个域之间共享单个应用程序图像是不可能的,并且这种技术不允许同一应用程序既在容器内又在容器外。结果,容器通常只支持已经被修改为容器的预定应用程序,诸如电子邮件、消息传送、浏览、联系人、日历等。这不提供用户或公司IT部门希望的应用程序选择。普通应用程序必须被修改为支持容器,这复制设备上的存储空间和存储器,并增加应用程序开发者的工作和介入。私人应用商店经常必须专门针对容器方案来创建,这增加了供应商方案的锁定并需要应用程序开发者的介入,进一步限制了选择。使用应用程序包装方法,可执行代码可能需要使用控制数据如何被存储、共享和传输的安全性库来打补丁。这引入了许可证和版权问题,因为许可证通常不会授权被许可人修改应用程序。用户必须仍然在域或容器之间来回切换,这不反映人们使用他们的移动设备的方式。最后,域通常具有其自身的预定用户界面,这不同于本地OS用户体验,并且不可能被设备用户定制。
[0014]域隔离的又一个方法是设备操作系统中的内核级平台安全性方法,诸如安全增强式LinuxTYSELiniD^hSELinux为应用程序和用户提供对诸如文件的对象和资源的强制访问控制(MAC)。每个用户或应用程序被赋予安全标签,并且策略可以被赋给全部标签。虽然Android?不以这种方式使用用户标识符,但SELinux可以被用于与域切换机制联合的基于角色的访问控制。SELinux使用依靠Linux中的Linux安全模块(LSM)界面的特定内核模块,以基于安全策略实施进程之间的隔离。在加载之前,应用程序可以针对SELinux策略进行验证,并且全部进程可以被限制为预定访问,以使一个应用程序在不被策略允许的情况下不能启动或访问另一个进程、目录或数据。使用正确的策略机制,可以防止应用程序、恶意软件甚至内核root包访问属于另一个用户或应用程序的应用程序和数据。
[0015]虽然与容器和虚拟化方法相比,本地OS方案在安全性、性能和应用程序隔离方面具有许多优点,但其具有内核没有对中间件级的足够可见性以能够实施中间件级所需要的域隔离的缺陷。
[0016]此外,内核级平台安全性作为域隔离方法有以下局限性。这种内核模块方法没有任何用户界面或域的概念,但是通常使用现有的传统用户账户,包括允许具有横跨全部域的特权的root账户或管理员账户。在这个方法中使用的内核模块在操作系统中是非常低的,并且不具备细分的、应用程序特定的信息以提供为满足客户和公司在移动设备上使用隔离域的需求而需要的策略控制(例如,域的用户认证策略)和应用程序控制(例如,将应用程序限制到某些域)的类型。到中间件的扩展SELinux型策略语言和实施显著增加了方案的复杂性。这种策略通常是静态且不更新的。已经存在提供SELinux的远程策略更新的项目,但是策略应用到整个设备,并且对于每个域不是唯一的。例如Android上的进程间通信(IPC)难于监控,因为权限检查和调用者/被调用者检查在Android中间件中执行,并且内核不访问足够的信息以监控和控制域之间的IPC。最后,通常不具有对用户和应用程序访问的细分的足够控制以限定域之间的数据共享,这带来了数据泄露的问题,数据泄露对于某些类型的数据是不可接受的。虽然这对于一些共享应用程序(例如,相机和相册)来说可能是可接受的,但对于文件和不可能使用内核级方案的文件阅读器应用程序(例如,Pdf查看器)来说需要更高程度的粒度。
[0017]提供安全性的另一个传统方法是加密文件系统,诸如密码堆叠文件系统。例如,企业加密(eCryptFS)文件系统(http://ecryptf s.0rg)是针对Linux的POSIX兼容的企业密码堆叠文件系统。然而,加密文件系统不是用于提供多个域的适用手段。
[0018]因此,希望提供用于在移动设备上创建多个域的手段,其中驻留在域中的应用程序和数据与可能由驻留在网站上域外部或同一设备上的另一个域中的应用程序导致的安全威胁隔离,并且上述手段减轻上面描述的传统方法中每一个的一个或多个缺点,提供优于这些传统方法的优点,或提供这些传统方法的替代。
【附图说明】
[0019]现在结合附图,仅通过示例的方式,描述本公开的实施例。
[0020]图1A、1B、IC和ID示出图解操作系统结构和用于域隔离的传统方法的框图。
[0021]图2示出图解用于提供隔离的域的本发明系统的框图。
[0022]图3示出图解多个用户账户和多个域的实施方式的示意图。
[0023]图4示出图解从第一域切换至第二域的方法的框图。
[0024]图5示出图解域消息传送方法的框图。
[0025]图6示出图解交叉域执行方法的框图。
[0026]图7示出图解域应用程序安装方法的框图。
[0027]图8示出图解更新策略方法的框图。
[0028]图9示出图解从当前域切换至另一个域的方法的框图。
[0029]图10示出图解从当前域切换到不在运行的、被加密的并需要访问认证的目标域的方法的框图。
【具体实施方式】
[0030]这里公开的方案为移动设备提供灵活、有效并安全的隔离域以及这些域的管理,并且减少上面描述的传统方法中的每一个的一个或多个缺点,提供优于这些传统方法的优点,或者提供这些传统方法的替代。具体来说,该方案提供切换至加密域的安全方法。
[0031]以下因素与克服传统方法的上述缺点的方案有关。首先,近年来已经从主要对移动电话和SMS(短消息服务)的移动设备使用转移至用于网站浏览、社交网络、游戏、电子邮件,即时通讯、基于位置的服务和移动商务的移动设备使用。使用经由服务提供者和WiFi的广泛互联网连接,移动计算通常被联网并真正具有移动性。此外,由于应用程序和包括诸如相机、GPS、加速度计、气压计等的传感器的设备的性能的激增,移动设备存在更多不同的用法。它们被用于娱乐、社交网络、相机/视频、导航、两个人访问云服务(例如,照片共享)或针对工作(例如,企业CRM系统)访问云服务或者组合(例如,诸如Drop Box的文件共享),加上通过IP或传统电话网络源于文本、聊天、电子邮件和声音的许多形式的消息传送。同样,随着能力、连接性以及这些移动设备上应用程序数目的增加,用户在这些设备上越来越多地存储并追踪更多的敏感信息(例如,个人数据、证书、密钥、信用卡号码、密码、联系人、过去位置、当前位置、网上冲浪历史、所安装的应用程序和设备的当前状态(例如,未移动)等)。这种敏感信息经常是恶意用户和恶意软件的目标。此外,因为移动设备由人携带,并且由于它们的扩展性能,所以希望能够快速地访问这些设备,以进行快速回复、快速网上搜索等。传统设备锁的使用产生了不便。例如,用户可能不希望输入密码来解锁设备以便查找字典中的词。此外,移动设备经常被共享(或者,希望被共享),例如用于临时目的,诸如打电话、让家人玩游戏,或者在设备所有者开车时进行车辆导航。这与传统计算或服务器环境中的传统用户账户存在很大不同,在传统计算或服务器环境中,一个设备或服务被在多个人之间共享,但是用户事先知道,并且这种共享使用趋向于以持续和定期为基础。此外,与笔记本电脑或PC相比,由于移动设备的较小形式因素以及使用的频率和位置,移动设备更频繁地丢失或被偷,因此可能落入攻击者的手中。许多用户和企业需要远程锁定、定位和/或“抹掉”(从设备删除全部应用程序和数据)丢失或被偷的移动设备的手段,包括一些国家的智會K手机反窃法规(http: //www.ctia.0rg/policy-1nitiatives/voluntary-guide lines/smartphone-ant1-theft-vol untary-commitment)。此外,普遍的是,员工在公司环境中对于个人和工作都使用一个设备。这是另一种形式的共享一一只共享硬件和网络服务一一其中安全性、私密性和数据隔离需求更高,因为公司希望拥有并控制工作数据的散播(例如,特别是在员工解约的情况下),并且用户可能具有他不想要与雇主共享的私人数据。在许多情况下,相同的应用程序可以被用于个人和公司使用两者一一因为这提高了生产力一一但是,应用程序数据必须被隔离,以使在不会影响个人数据的情况下可以删除(抹掉)公司数据,或反之亦然。此外,因为设备性能、敏感信息、共享和双重使用,越来越需要私密且灵活的访问控制。通知经常显示设备所有者通常不想要任何人看到或访问的敏感个人信息(聊天信息、软件升级、广告)。用户想要灵活地借出他们的设备,但是想要将访问限制到诸如只读、只接收电话呼叫或某些账户(例如,Facebook)之类的某些功能和/或服务。许多用户面对在全有或全无的设备锁的不够理想的替代之间进行选择,而完全不能确保设备的安全。最后,移动设备实质上比PC连接到更多网络(例如,饭店、宾馆和机场的WiFi网络),这会将这些设备暴露至更多的基于网络的攻击、入侵和数据包捕获)。此外,移动设备用户可以访问使用户能够下载可能包含恶意软件的应用程序的第三方应用商店。例如,基于Android操作系统的移动设备现在占作为恶意软件的目标的移动设备的超过90%。
[0032]“±或”在这里可以被认为代表一组资源一一例如数据文件、应用程序和服务一一与规则组或“策略”之间的关系,由此进程对资源的访问至少部分被策略控制。例如,特定域可以被认为包括或包含与该域关联的许多数据文件,并且对数据文件的访问至少部分被与该域关联限定的策略控制。类似地,应用程序可以被安装在特定域或与特定域关联,并且对该应用程序(包括执行应用程序的能力)的访问例如至少部分被与该域关联限定的策略控制。
[0033]例如,希望在单用户设备中能够提供多个域,多个域具有对选择的应用程序和其他资源提供不同访问的不同策略。在一种情况下,希望提供需要认证并包含不打算让儿童访问的数据或应用程序的受限域,以及不需要认证而打算让儿童访问(以例如玩游戏)的儿童模式域。因此,在开放域中操作时,希望受限域的数据或应用程序对于与该开放域关联的进程不可访问。
[0034]如上面讨论,域的期望功能中的一些可以由通常在多用户操作系统中实现的传统用户账户提供。由于除了别的之外用户账户代表一组资源(例如,用户的数据文件、应用程序)和与那个用户账户关联的控制对用户资源的访问的规则组或策略(例如,权限、特权),所以这些用户账户可以被认为构成一种类型的域。
[0035]然而,对于提供不同域资源的安全隔离的益处以及移动设备上方便且统一的单用户体验来说,传统用户账户不是适当的手段。除了上面的期望功能,提供希望的体验还需要同时执行涉及两个域的动作的能力,例如从一个域复制并粘贴至另一个域,提供用于同时访问多个域的资源的单个用户界面,或者从在第一域中操作的邮件客户端开放与第二域关联的电子邮件。传统的用户账户不打算使能这些功能,因为通常被集成在操作系统服务中并且在逻辑上遵从不同用户账户打算被不同人使用的假设的用户隔离控制,不允许或不轻易使能为了使能期望功能而需要的不同域的进程和资源的即时共享和合作,其中各个域被个人同时使用。
[0036]虽然如上面讨论诸如虚拟化和容器化的替代性隔离机制不会以与用户账户相同的方式受限,但它们遭受如上面所讨论的不同缺点。因此,希望提供隔离的域管理作为操作系统的集成方面。并且,虽然如上面讨论的一些期望功能可以借助于驻留在操作系统内核中的服务来提供,但当前操作系统内核通常不使能或允许足以提供同时涉及多个域的动作所需要的进程共享和合作的域信号发送和域管理。
[0037]这样,所公开的方案经由对操作系统的现有部件或服务的修改或新部件或服务的引入来提供域感知。在一些实施例中,部件和服务中的至少一些被提供在内核外部的操作系统中,也就是在中间件中(这里用于表示内核外部且在内核与用户应用程序之间的操作系统)。在一些实施例中,部件和服务中的至少一些被提供在操作系统内核中。在一些实施例中,域的创建和管理通过操作系统中间件的修改的或新的部件或服务而被使能,并且域实施由操作系统内核执行,并且为此目的提供修改的或新的内核模块或内核修改。
[0038]在一个或多个域被加密时,希望以不危害期望的加密域隔离的方式提供从当前域切换至加密域的方法。
[0039]因此,在一个实施例中,在包括处理器和用于存储可被处理器执行(以实施提供包括当前域和目标域的多个域的操作系统)的指令的存储器的设备中,其中目标域至少部分存储在加密文件系统中,其中对目标域的访问需要对加密文件系统的认证和访问,从当前域切换至目标域的方法可以被执行如下。提供与当前域和目标域不同的中间域。接收切换至目标域的请求。确定目标域未在运行,至少部分存储在加密文件系统中,并且需要对访问的认证。切换至中间域。用于访问目标域的认证质询被显示在中间域中。接收响应于认证质询的认证信息。基于认证信息,解密用于提供对加密文件系统的访问的文件系统密钥。基于文件系统密钥,提供对加密文件系统的访问。最后,安装加密文件系统。
[0040]现在结合图2描述用于提供隔离域的示例性系统100。
[0041 ]该系统可以被实施在包括诸如智能手机、平板电脑、笔记本电脑或台式机或具有易失性存储器和处理器的任何其他电子设备之类的移动设备的任何计算设备中,易失性存储器包含可被处理器执行以提供操作系统和软件应用程序(或“应用程序”或“应用”)的计算机代码。计算设备可以进一步包括接口,该接口可以包括用户输入设备,诸如键盘、指示设备、触摸屏,并且计算设备可以进一步包括用于通过有线或无线通信网络进行通信的诸如音频和关联控制电路之类的通信接口,其中有线或无线通信网络可以是因特网和/或蜂窝式或WiFi链路或蓝牙,或近场通信(NFC)。
[0042]操作系统可以被特征化为包括内核和中间件,内核对输入/输出(I/O)服务进行管理,并且从设备的处理器和其他硬件部件向软件应用程序提供输入/输出(I/O)服务,中间件提供除了内核所提供的那些服务之外的服务。
[0043]通常,本方案包括修改操作系统级协议以使能域感知。多个域被创建在移动设备上。在此后描述的实施例中,操作系统是Android?,虽然这种选择不应当被认为是限制方案的预期范围。Android仅被用作示例,并且类似于其他多用户操作系统(例如,QNX、Windows)。
[0044]因此,如图2所示,系统100包括内核,在系统100被实施在运行Android?操作系统的移动设备中时,该内核是Linux?内核110。核100包括:安全数据存储112、域内核模块116和Linux安全模块114,在一个实施例中,Linux安全模块114是增强Linux安全模块,下面会进一步描述实施Linux安全模块的相应功能。对于本领域普通技术人员来说,可以理解的是内核110可以进一步具有另外的传统部件(例如,驱动器),或与前面的描述不同的其他部件。
[0045]系统100进一步包括操作系统中间件120,操作系统中间件120包括:域消息服务122、域管理器124、域策略服务126、用户管理器128、系统设置模块130、密钥保护中间器132、活动管理器134、包管理器136、以及窗管理器138。用户管理器128、系统设置模块130、密钥保护中间器132、活动管理器134、包管理器136和窗管理器138对应于并拥有Android?的已知部件或服务的相应功能,但是如以下讨论,被修改为能够感知域。域消息服务122、域管理器124和域策略服务126是附加部件,下面讨论它们的功能。
[0046]系统100进一步包括用于实施一个或多个域的应用程序空间140(或用户空间)。为了说明,示出第一域142-1和第二域142-2,但是可以理解的是任意数目的域可以被实施。每个域可以包括域设置模块的实例化,诸如域设置模块的第一实例化144-1和第二实例化144-2,并且每个域通常会包括域导航模块的第一实例化146-1和第二实例化146-2以及域管理应用程序148-1、148-2。每个域还可以具有第一应用程序的分离的实例化150-1、150-2,而第一域142-1可以实例化不同于在第二域142-2中实例化的第三应用程序154的第二应用程序152。
[0047]^
[0048]诸如第一域142-1和第二域142-2的域,是保持任意应用和分别与这些应用关联的数据的隔离区。域可以被远程(例如,由企业信息技术(IT)管理者)或本地(例如,由设备所有者)控制以针对特定域指定应用、数据、配置、连接和安全策略。例如,来自特定域的网络访问可以被控制。密码重认证时间可以被控制(例如,以使用户在特定时段内切换域时不需要重认证)。域的管理员通常具有这种控制。管理员可以是个人用户或企业IT管理者或其他远程实体。
[0049]由于它们的隔离和分离的本质,这里讨论的域可以被认为是受保护的域。例如,如果设备丢失或被偷,或者如果设备被设备所有者下载在另一个域中的恶意软件危害,则一个域可以被不想要其信息和自营业务应用程序被危害的企业在外部进行管理。设备所有者不想要企业追踪它们的偏好、网上冲浪习惯或个人通信,因此他也想要他自己的受保护域。再次,设备所有者不想对设备上所有的应用程序和服务应用相同级别的认证,但是能确保受保护域中的数据仍然安全。
[0050]提供多个域向设备所有者提供传统的“全有或全无”设备访问控制的替代。使用同时支持安全域和开放域的能力,访问可以被用户根据需要而配置不同的注销时间和访问控制(例如,PIN、密码、面部识别或全无)。这种灵活减小了由于不方便而在设备上完全不使用任何密码的可能性,同时还给予设备所有者独立于远程管理员的选择。
[0051]只通过示例,图3示出其中实施系统100的设备305被配置有两个用户:用户A310和用户B 315的示意图300,其中三个域Al 320、A2 325,A3 330被创建为与用户A关联,并且两个域BI 335和B2 340被创建为与用户B关联。如图所示,域Al的策略可以允许访问选择的电子邮件账户345,而域A2的策略可以允许访问Gmail?账户和Facebook?350。
[0052]为了清楚起见,实施系统100的设备也可以被配置有仅一个用户,但是这里所描述的多个域可以被创建,并且这里还描述的方法和协议可以与这些多个域一起被实施。
[0053]域感知
[0054]域感知可以基于实施在Unix?和Linux?操作系统中的用户标识符(UID)和群组标识符(GID)概念而提供。UID和GID在Unix和Linux中用于将权限赋给进程和文件。超级用户或root通常被赋予UID 0,并且其他范围经常为系统进程预留。
[0055]然而,在Android?中,UID未被用于表示用户;相反,每个应用程序在被安装时,被分配唯一的UID和GID,并且可能被认为是应用程序标识符的这个(UID、GID)对被赋给与该应用程序关联的进程和数据文件。在最新版本的Android? (Android 4.2)中,引入了多用户能力,该多用户能力在整个操作系统中添加信令以指示哪个用户账户是活动的。UID中的某些比特被预留以表示用户账户,并且因此构成用户标识符。在进程被启动时,用户标识符与在安装时赋予应用程序的应用程序标识符组合在一起创建执行文本标识符,以表示正在运行的进程和关联的私密数据文件。使用这种信令,应用程序数据可以基于用户而独立创建并存储。
[0056]与之前的版本相比较,Androi d?4.2的服务已被修改为能感知用户账户。例如,并且结合图2,Android包管理器136被修改为控制哪些应用程序对每个用户可用。类似地,窗管理器138被修改为控制针对每个用户显示什么,并且活动管理器134被修改为针对每个用户控制应用程序的启动和权限的实施。此外,叫作用户管理器128的新服务被添加在Android 4.2中,并操纵用户之间的创建、认证、删除和切换。
[0057]在本方案的一个实施例中,域感知信令机制被添加至操作系统,这类似于被添加在AndroidTM4.2中的多用户能力,同时现有服务被修改为变得能感知域。具体来说,域信令通过扩展添加至UID,或者作为新字段的添加,其构成域标识符或“DID” WID中的预定比特被预留以表示域,并且与在安装时赋予应用程序的应用程序标识符组合在一起创建执行文本标识符,以表示相对于该域正在运行的进程和关联的私密数据文件。在一个实施例中,包管理器136被配置为维护安装的每个应用程序的应用程序标识符和每个域之间的关联的列表。然后,执行文本标识符基于应用程序的应用程序标识符和应用程序被执行所在的域的域标识符而针对进程被创建。在一个实施例中,UID还具有与特定用户账户关联的预留比特。这种预留或扩展UID字段以同时表示域的方法减少了操作系统改变的程度,简化了实施方式,并减少部署的时间。
[0058]在一个实施例中,叫作域管理器124的新服务被实施为以下描述的对域的创建、认证和删除进行管理。
[0059]使系统能感知域的替代方法是使用安全标签,诸如SELinux如何识别不同的资源和对象。在一些实施例中,SELinux安全标签可以被用于这种目的。在其他实施例中,标识域的另一个标签或参数被添加。
[0060]域创建
[0061]在一个实施例中,用户管理器128的功能被修改为使能添加新用户以及还添加域,这可以被认为类似于单用户的子账户。这样做使得多个域能够与每个用户账户关联。修改用户管理器128的功能提供了某些优点。例如,在具有多个用户的实施方式(例如,在图3中示出)中,有利的是域创建与用户创建被整合在用户管理器128中。在只具有单用户的替代实施例(例如,在不支持多个用户账户的智能手机上)中,这种功能可以被实施在域管理器124 中。
[0062]因此,在一个实施例中,用户管理器128被修改以提供以下中的一个或多个:(i)在不提示典型登录屏的情况下,允许在单用户下的域之间容易地切换;(ii)当切换至另一个域的持续时间为在域的策略中指定的时间段时保持至该域的登录;以及(iii)保持各个域是活动的以利于各个域之间的快速切换。使用附加的域信令,用户管理器128可以被配置为仅在存在不止一个用户账户时请求用户名。
[0063]在创建新域的情况下,用户管理器128可以调用域管理器服务124。创建新域可以类似于创建新用户,区别在于所应用的是域,诸如新用户欢迎屏会被跳过。在域创建期间,包管理器136可以被自动调用以安装现有的应用程序或下载新应用程序至新域。域策略服务126可以设置缺陷策略,并且向导可以被执行以帮助用户根据期望调整新域的策略。
[0064]在创建工作域(或者其策略至少部分被实体而不是设备所有者进行外部控制的任意其他域)的情况下,该域可以被登记到用于该特定工作域的远程域管理服务器。这可以要求使用用户工作证明进行登记。服务器会同意这种工作域的创建,然后下载专用于用户组、设备和工作域的策略、图标、证书、文件、壁纸和应用程序。
[0065]域策略
[0066]—旦创建域,则包括策略规范或策略数据的相应的安全策略就与该域关联存储。在一些实施例中,至少一些域特定策略和跨域策略在应用程序级和/或中间件级(例如,认证超时)实施。在一些实施例中,与每个域关联的进程和实体的隔离至少部分在内核级并根据多个域的相应的安全策略而实施。在一些实施例中,隔离至少部分在中间件级实施,这通过操作系统服务和在内核外部操作的设施进行。依赖于域的预期角色或域与诸如公司企业服务之类的其他实体的关系或关联性,与每个域关联的相应策略可以不同。
[0067]例如,在不同实施例中,一个或多个策略可以是:(i)预定且静态的;(ii)预定的,但是具有一些运行时配置或选择;(iii)在管理服务器上配置之后下载的;或(iv)用户在设备上可配置的。相应策略的特定参数可以考虑任何相关条件或变量,同样涉及所关联的域的特定角色及其与其他实体的关系。例如,不同策略的特征可以在于:(i)某些OS服务之间的隔离可以是静态且预定的;(ii)可以提供可基于布尔值设定的预定的低/中/高安全级别;(iii)可以下载GPS区域限定参数或应用程序白名单;或(iv)可在设备上本地配置用于调试针对个人域的访问的能力。也可以实施任意组合。
[0068]在一些情况下,可以在设备上修改策略(例如,经由域设置应用144-1、144_2),并且在其他情况下,策略可以从远程服务器(例如,针对工作域)下载。在一个实施例中,域消息服务122管理策略的下载、验证、认证和更新,并且域策略服务126针对每个域管理策略的应用。然后,策略可以被分发给可能处于应用程序级、中间件级或内核级的应用策略的系统部件。
[0069]应用程序管理
[0070]上面讨论的提供域信令使能了横跨不同域的应用程序的域特定安装和管理。通常,包管理器136可以被配置为基于当前域或选择的域的DID或者与这个域关联的策略而允许或禁止程序的安装或执行。
[0071]横跨不同域的应用程序的域特定安装和管理使能了某些优点。例如,域信令使能了横跨域的不同应用程序版本的安装和管理。目前Android?就是这种情况,在应用程序被一个用户更新时,其也针对全部用户更新。这种结果并不总是期望的。例如,对应用程序的更新可能请求另外的权限或包括未被企业测试或支持并因此在工作域中不期望的特征。此夕卜,企业可能想要关联的工作域只允许白名单中所列的应用程序,或者特别地允许黑名单中所列的某些应用程序。
[0072]提供不同域中的不同应用程序访问和控制还提供改进的安全选项,即使是在域永远只被特定个人访问时。例如,Android?设备所有者可能不喜欢在一般不受限制、开放的域中建立G00gleTMPlayTM商店账户;如果设备被偷,则该账户可能在开放的域中可用,并且偷窃可能通过小偷使用设备所有者的账户而给设备所有者造成花费。因此,设备所有者可能不希望在开放域中,而相反只在具有更多限制性安全策略的、例如通常请求可能被不希望地认为应用到开放域会不方便的访问密码的另一个域中,使能Play?商店应用程序。
[0073]因此,本方案可以包括对Android?包管理器136的一个或多个修改,以使其能够感知域,使得应用程序可以根据域策略而安装和更新。在一个实施例中,包管理器136被配置为以维持安装的每个应用程序的应用程序标识符和每个域的域标识符之间的关联的列表。在进程被启动时,针对进程而创建的执行文本标识符基于应用程序的应用程序标识符和执行应用程序所在的域的域标识符。通过这种方法,包管理器136可以被配置为:(i)允许在选择域中实施应用程序白名单和/或黑名单,以使只有许可的应用程序可以被安装在域中;
(ii)使应用程序能够从一个域拷贝或移动至另一个域;(iii)在下载应用程序时,提示用户应用程序应当被安装到哪个域或哪些域内,而不考虑账户证书驻留在哪个域;(iv)在建立新域时,使能现有的应用程序,并且使得它们的配置和数据能够被拷贝或移动至该新域中;(V)在应用程序更新被下载时,考虑任意应用程序白名单或黑名单上的软件版本,以使得不同域中有应用程序的多个不同版本(因此使得企业能够选择性控制例如经测试并许可的应用程序版本的安装和更新,由此提供与管理程序方案类似程度的应用程序版本控制);并且(vi)使得能够基于用户输入或基于下载的策略(针对与该策略有关的域)从一个域或多个域但或许不从其他域选择性删除应用程序。
[0074]窗管理
[0075]在一个实施例中,窗管理器138的默认配置为不同域提供不同屏幕,类似于现有技术。各个域可以使用通知阴影、导航器应用程序(例如,域导航器146-1、146_2)或经由按钮、图标、手势或这些的一些组合等来切换。
[0076]本方案还使得窗管理器138能够提供具有混合UI的更具创新性的用户界面,其中与不同域关联的应用程序被显示在单个屏幕上。例如,在一个实施例中,窗管理器138提供对一个或多个应用程序图标的覆盖图,这个覆盖图指示应用程序与哪个域关联。与不止一个域关联的应用程序可以提供多个图标,每个图标具有不同的覆盖图(例如,不同的颜色、不同的符号、不同的轮廓等),以表示应用程序与哪个域关联。这个方法将不需要在域之间切换,其中域访问由图标指示,并且根据所访问的应用程序的域策略的要求,在访问与不同于当前域的域关联的应用程序时,用户可能被要求进行认证。每个域策略和数据隔离被独立于显示机制进行维护和实施。本方案的性能不会受到具有多个图标的影响。这个方法的优点是在域之间不存在可见的切换。缺点是设备主屏幕可能因为图标而变得混乱,并且存在其中用户正在操作的域的较少视觉指示。
[0077]交叉域通信
[0078]系统100可以包括域管理器服务124,其用于管理交叉域通信,诸如用于剪切和粘贴数据、启动电话呼叫、通知、数据共享、传输数据和应用程序安装等功能。域策略服务126可以作为用于实施域之间的策略的单个点。
[0079]例如,用户可能希望在域之间移动或拷贝应用程序。工作域策略可以实施应用程序白名单方法以确保恶意软件不能进入工作域盗取公司信息(例如,工作联系人或工作文件)。通过进一步示例,一个域中的通知当显示在另一个域中时可能变得不透明,或者可能根本不显示,除非处于对应的受保护域内部时。作为另一个示例,工作域可以限制诸如联系人的数据离开工作域,以防止数据泄露。虽然用户可接受将其个人联系人导入工作域,但是反向可能不被工作域策略所允许。这是由受域策略服务126管理的策略所配置的域之间的单向数据共享的示例。
[0080]外部通信
[0081 ]系统100还可以管理设备内的进出通信。为此,在一个实施例中,域管理器服务124管理网络连接和可能需要通知的进入事件,或者管理针对多个域的意图(intent)。简单示例是双号(例如,双SIM卡)智能手机的情况,其中策略会规定对一个号码的呼叫应当被路由至特定域,并且对第二个号码的呼叫应当被登记到不同的域。在单电话号码设备接收呼入电话的情况下,这种通信更复杂。策略可以指定为来电显示的目的可访问哪些联系人,以及指定呼叫日志信息应当被登记在哪里。在一些实施例中,域策略服务126可以是针对至少一些策略实施(包括访问诸如VPN、蓝牙和WIFI网络资源之类的硬件资源)的点。例如,一些受保护域的策略可以允许只在指定网络上时的通信。
[0082]域实施
[0083]系统100还提供域和每个域策略的实施,这是对创建并管理域的软件功能的附加要求。在没有域和域策略的实施的情况下,恶意软件或黑客程序可以静态或动态地修改系统或内核代码以防止策略被实施,或者以更新策略。
[0084]在一个实施例中,系统100使用SELinux?和Linux?安全模块(LSM)来实施强制访问控制(MAC) eMAC确保主体(例如应用程序)仅访问被策略允许的对象(例如,应用程序、文件和资源)。这经由在每个应用程序被安装时唯一创建的UID/GID组合来实施。如上讨论,在系统100的一个实施例中,UID还被扩展或分配为表不域。
[0085]然而,SELinux?通常将相同的类型(因此相同的策略)应用至用户下载的所有应用程序,这意味着其不实施域。因此,SELinux也可以被修改为变得能够感知域。在一个实施例中,这经由策略中的基于角色的访问控制字段或者通过针对不同域创建不同策略和动态地使用域管理器124以在运行时期间调整策略来实现,或者在Android?的情况下,通过修改SEAndro id?的合子(Zygote)和/或中间件强制访问控制特征而在进程被创建时将域特定SELinux?安全标签赋予进程来实现,以变得能够感知域。
[0086]紧紧限制应用程序对系统级资源的访问仅仅是可以在内核级实施的多个安全增强中的一个。域内核模块114可以执行其他域感知安全性,诸如:控制调试访问、检查对策略的更新(认证和完整性验证)、域数据的加密、检查加载时应用程序签名、访问安全硬件和安全操作系统部件(如果可用)以及控制对诸如网络、像机和GPS之类的硬件资源的访问。域内核模块114还可以提供设备范围的安全设置,诸如:开机时内核的完整性验证、策略的安全存储、其本身和其他系统级资源(例如,域策略引擎)的完整性验证、确保SEAndroid?被开启和远程证明。
[0087]应当注意的是,域与用户和管理员账户不同。虽然设备所有者可以具有被授予创建和删除账户的某些特权的特别账户,但是这些特权不等效于root访问,并且可能针对被第三方管理员(例如,工作IT管理员)管理的域受到限制。通过与这里描述的细分的域信令一起使用SELinux?和SEAndroid?,应用程序和应用程序数据保持隔离,甚至在域之间存在不同的策略和访问控制。一个域中的恶意软件不能访问另一个域中的数据和应用程序。
[0088]域切换
[0089]示出从第一域142-1至第二域142-2的域切换方法的一个实施例的框图400被示出在图4中。用户使用域导航器146-1录入请求切换至第二域的输入。域导航器146-1发信号(动作405)至活动管理器134以切换至第二域142-2。如果第二域142-2与不同于第一域142-1所关联的用户的用户关联,(例如从图3中的域Al至域BI),则活动管理器134发信号(动作410)至用户管理器服务128以注销用户,否则不这样做。响应于来自用户管理器服务128的调用(动作412),域管理器服务124与系统设置模块130—起检查与第二域142-2关联的登录策略(动作415),并且针对使这种切换能够发生的任何其他策略(例如,GPS区域限定、网络访问要求、内核完整性)检查域策略服务126(动作420)。活动管理器134向密钥保护中间器132通知第一域142-1的任何暂停(其可以是立即的或者被延迟预定时段)(动作425)。密钥保护中间器132实施与第二域142-2关联的策略。如果策略检查被满足,则密钥保护中间器13 2被通知切换至第二域14 2 - 2并决定基于策略(例如访问所需要的认证)的访问(动作430),或者直接访问域(例如,在不需要认证的情况下)(动作435),或替代地可以拒绝切换。在该切换之后,活动管理器134执行第二域142-2中的应用程序启动器424。
[0090]在另一个实施例中,如上面提及,在选择应用程序时,域切换可以被暗示,并且不需要域导航器。
[0091]在一些实施例中,域切换方法可以被配置为使能到加密域的安全切换。与一个或多个域关联的数据文件可以被加密,诸如使用密码堆叠文件系统。例如,eCryptFS文件系统(http: / / ecryptf s.0rg)是用于Linux的POSIX兼容企业密码堆叠文件系统。在与域关联的数据文件被这样加密的情况下,该域可以被认为是加密域。对称密钥可以被用于加密和解密加密域的数据,并且可以被存储在Linux内核密钥环(内核存储器中的安全存储)中,但是也可以被存储在任意安全存储中。在密码堆叠文件系统中,典型的是多个对称密钥被使用,但是可以理解的是,在一些实施例中,可以使用单个密钥。在这种实施例中,域数据文件的加密与块级或设备级数据加密相兼容,其中最后的效果是对数据进行双重加密。
[0092]如上所述,具有多个域的设备可以包括需要访问认证的一个或多个域。例如,在设备操作系统是Android的情况下,内置Android锁屏认证(图案、PIN、密码等)可以被用于控制对域的访问。如果域还被加密,则这个锁屏认证还可以被用于加密和解密供密码文件系统使用的密钥以访问加密域的数据。
[0093]由于设备可以具有多个域,多个域中的一个以上可以被加密,并且多个域中的一个以上可能需要认证,所以在从当前域(当前拥有用户界面焦点的域)切换至不同的目标域时存在四种可能的场景:该域已经在运行;该域未在运行,并且未被加密;该域未在运行,被加密,但是不需要认证;以及该域未在运行,被加密,并且需要认证。(如果与域关联的进程正在运行,则该域被认为正在运行。)
[0094]鉴于这些可能性,从当前域切换至目标域的切换方法900被示出在图9中。如图所示,可以立即切换至正在运行的域。一旦接收到切换至目标域的输入(开始902),就确定该域是否正在运行(决定904),并且如果是这样(分支906),则目标域被示出在UI中(步骤908)并且切换完成(结束910)。如果该域未在运行(分支912),则确定该域是否被加密(确定914);如果否(分支916 ),则该域被启动(步骤918 ),被示出在UI中(步骤908 ),并且切换完成(结束910)。如果该域被加密(分支920),则确定该域是否需要认证(决定922);如果否(分支924),则解密密钥可以被加载,并且文件系统被安装(步骤926),该域被启动(步骤918),被示出在UI中(步骤908),并且切换完成(结束910)。如果需要认证(分支928),则认证信息被接收(步骤930),文件系统密钥基于认证信息被解密(步骤932),解密密钥被加载并且文件系统被安装(步骤926),该域被启动(步骤918),被示出在UI中(步骤908),并且切换完成(结束910)。
[0095]因此,如在图9中可以看到的,当前未在运行的未加密域可以被启动,并立即切换至该域。然而,如果试图切换至加密域,则密码文件系统密钥必须在该域可以被使用之前被载入Linux内核密钥环中。如果加密域不需要认证,则密码文件系统密钥可以被加载,并且在用户不干预的情况下文件系统被安装。然而,如果加密域需要认证,则在密码文件系统密钥可被加载和文件系统被安装之前,密码文件系统密钥自身必须首先被解密。因此,在启动需要认证的加密域的最后一种情况下,需要在该域的数据可以被访问(安装)之前收集目标域的认证数据的机制。
[0096]然而,在许多设备操作系统中,认证进程必须在当前域中操作或与当前域关联操作。例如,内置于Android的现有锁屏认证机制对当前用户或域进行认证。在向目标域切换时,Android锁屏从诸如锁屏微件、动态壁纸和输入法编辑器(Hffi)之类的锁屏运行目标域的进程。为了保留传统的Android用户体验,认证需要在域切换之后发生。
[0097]存在提供这个功能的几种替代方法,如下。
[0098]在第一替代例中,定制用户界面(UI)被提供为在切换至目标域之前获取认证信息。虽然这个方法拥有使其适用在一些情形中的若干好处,但是其还是会有某些缺点,如下。例如,这个方法实际上需要复制已经内置在Android内的认证机制,并且需要更新以维持与内置Android机制的更新的互通性。此外,这个方法引入安全顾虑,因为定制认证UI进程会在用户从其切换的域中运行。富有经验的攻击者可以替换可能不受信任的域中诸如输入法编辑器(ME)之类的重要应用程序包,以捕获受信任的加密域的域认证信息。
[0099]在第二替代例中,方法首先切换至目标域,但是不安装目标域的数据。然后,在安装目标域的数据之前,该方法只运行锁屏运作必需的那些进程,然后完成到目标域内的切换。虽然这个方法拥有可以使其适用于一些情形的若干好处,但是其还有某些缺点,如下。例如,通常从锁屏(锁屏微件、动态壁纸、和输入法编辑器(IME))运行的应用程序部件可能需要访问加密的文件系统。通常不可能先验地确定什么包会运行,因为用户和初始设备制造商(OEM)都可能改变、升级或移除这些部件,所以不可能预期到并补偿这些问题。此外,域切换操作在域认证信息被提供之前不会完成。这将设备置于Android没有被设计为处理的中间的不确定的状态。这在Andr ο i d的发布之间必须要被正确处理、测试和维护的Andro i d中间件中,产生了许多附加的边缘情况。
[0100]在第三个替代例中,方法切换至在设备上有意创建的中间域,以促进认证信息的安全收集并使能域之间的安全过渡。在切换至未在运行的加密域时,中间域被启动,并且要求认证。这个方法克服了如上所述的前两个替代例所具有的许多缺点。
[0101]因此,图10中示出了从正在运行的第一域切换至不同的目标域的方法1000,其中目标域是加密域(与包含在加密文件系统中的数据文件关联或具有包含在加密文件系统中的数据文件)并且未在运行。启动到目标域的域切换(开始1002)。目标域未在运行,被加密,并且要求认证。中间域变成当前域(这要向Android中间件报告)(步骤1004),并且在中间域启动锁屏进程(步骤1006)。锁屏部件被修改或者被提供为使得在被调用时其会示出目标域的认证质询,并且示出标识目标域的一些指示。
[0102]如果与目标域关联的一些UI元件不被存储在加密的文件系统中,而是被存储在另一个位置(例如,未加密文件或数据库中的元数据),则这种UI元件可以与认证质询一起示出。例如,在这种情况下,可以示出与目标域关联的壁纸。可替代地,一些其他壁纸或图像可以被示出以指示到目标域的切换正在发生。类似地,如果与目标域关联的頂E被另外存储而不存储在加密的文件系统中,则其可以被用于接收认证信息。可替代地,用于录入认证信息的ME的用户选择可以被接收(步骤1008)。(这可以包括例如中间域中的语言不同于目标域的语言的情况)。
[0103]然后,使用选择的頂E接收认证信息(步骤1010)。如果用户提供目标域的正确认证信息,则目标域的密码文件系统密钥被解密(步骤1012),密钥被加载,并且文件系统被安装(步骤1014)。通常显示在目标域中的锁屏被摒弃(步骤1016)。(这与用户已经在域中直接被认证的情况不同,并且提供了锁屏认证针对未加密域如何工作的无缝用户体验)。目标域被启动变为当前域(步骤1018)。新域在UI中示出(步骤1020),并且域切换完成(结束1022)。
[0104]如上指出,这个方法克服了切换至未在运行的加密域的其他方法的缺点中的至少一些,并且进一步提供许多优点,如下。
[0105]例如,优点是认证进程发生在任何用户可控域的外部,使得认证信息的收集更加安全。从锁屏运行的进程是在不易于受到其他用户可访问域中的改变的干扰的受控环境中运行的。Andro i d中间件中需要的改变易于维护,并且更容易地与内置于Andr o i d的多用户状态机相兼容。这导致较少的缺陷、较少的维护和较好的前向兼容性。对ME的攻击(例如,替代或特权提升)或者针对密钥保护的用户界面更难于执行,并与上面列出的其他选项相比会最小化收益(例如,访问中间域)。所需的附加性能和存储是最小的。
[0106]许多实施选项是可用的。中间域可以在操作系统的第一次启动时创建,或者可替代地可以在第一加密域被创建之前的任意其他时间创建。中间域可以被锁定以防止用户做除了认证之外的任何事情。表述“锁定”可以被理解为意味着禁用任何不需要的应用程序、服务或其他方面,或者替代地只选择性使能需要的那些特定应用程序、服务或其他方面。例如,其可以包括禁用锁屏微件和谷歌搜索。中间域可以进一步使用策略机制(包括SELinux和SEAndroid)锁定以进一步最小化安全风险。不像其他域,中间域只在域之间进行切换时短暂运行。在运行时,针对Android维持的三个活动运行域的最大限制,中间域不算作是运行域。因此,移动至中间域不会使其他域被关闭。在启动和停止中间域时,Andro i d不发送通常在启动域时发送的许多广播。这显著改进了性能,因为其防止不必要的进程和应用被启动。中间域可以具有使用白名单、禁用列表、黑名单等安装在该域中的最少应用,以降低这些应用可能出现的安全风险。
[0107]中间域可以被预配置有允许的应用程序、服务等的某个选择,或者可以使用与所有域所使用的实施机制相同或类似的实施机制,例如通过使用专用于中间域的策略,以类似于其他域的方式来动态配置。中间域可以在加密域被创建或初次启动时或者在任意其他适当的时间创建。
[0108]域消息服务协议
[0109]图5中示出图解域消息传送方法的框图500。与第一域142-1关联的第一进程505产生事件消息(例如,消息接收通知(其中消息可以是电子邮件)、剪切和粘贴动作、文件复制)。产生事件的第一进程505发送关于该事件的消息(其可以采用广播的形式),并且该消息被域管理器服务124接收(动作510)。在一个实施例中,在第二域142-2中操作的第二进程515可以是监听进程,但是可以理解的是,可替代地,可以使用API。域消息服务122检查其他域中的监听进程,诸如第二域142-2中的第二进程515,是否被配置为对接收的事件消息进行响应。
[0110]在已确定第二域142-2中的第二进程515被这样配置时,域管理器服务124向域策略服务126发关于事件消息类型(例如,通知、剪贴板缓存、文件)的信号(动作520)。域策略服务126实施可以产生许多不同动作的相关策略。例如,请求的事件可以被允许(例如,小于100个字符的缓存可以被传递),或者不被允许(例如,策略可以允许文件被传输至域,而防止这种文件从该域传输)。可替代地,策略可以导致该消息被过滤(例如,某些字段可以变得不透明,或只提供标记通知,诸如电子邮件接收通知,但没有诸如发送者、主题等的细节)。根据策略,事件消息被传递至第二域142-2中的第二进程515 (动作525)。
[0111]交叉域执行协议
[0112]图6中示出图解交叉域执行方法的框图600。
[0113]在该方法中,第一域142-1中的第一进程605产生动作,其中该动作请求关于第二域142-2执行一些动作。例如,新邮件通知可以在第一域中选择,并且为查看邮件而录入的请求在第二域中。可替代地,使用第一域142-1中的域设置144-1服务,可以录入删除第二域142-2的请求。或者,在第一域142-1中进行操作的同时,可以录入执行来自第二域142-2的至特定电话号码的电话呼叫的请求。
[0114]在由第一域142-1中的第一进程505创建动作之后,活动管理器134接收域切换请求(动作610)。如果针对切换需要认证,则在认证失败的情况下,拒绝请求。活动管理器134给域策略服务126发信号以检查与第一域142-1和第二域142-2关联的相应策略(动作615),以便确定两个策略允许发出请求的第一域142-1启动第二域142-2的请求动作。
[0115]如果两个策略允许如此,则活动管理器134启动与第二域142-2关联的请求的第二进程620(动作625)。进一步继续上面引入的示例,邮件服务可以被启动,或者域设置144-1服务可以被启动,并且提示用户确认第二域142-2的删除,或者电话服务可以被启动同时显示呼叫的期望号码。
[0116]域应用程序安装协议
[0117]图7中示出图解域应用程序安装方法的框图700,其中安装在第一域中的应用程序被移动或拷贝至第二域。
[0118]如上面所讨论,应用程序可以与选择的安全域关联安装,在这种情况下,域的DID与所安装的应用程序的应用程序标识符关联存储。
[0119]使用域设置144-1服务,用户可以选择将应用程序移动或拷贝至不同域,例如,从第一域142-1至第二域142-2。域设置144-1服务给包管理器136发信号以将应用程序安装在第二域142-2中(动作705)。包管理器136给域管理器124发信号以确定第二域142-2的安全标签(动作710)。然后,包管理器136使用从域管理器124接收的正确的安全标签,将应用程序安装在第二域142-2中。如果所选择的动作是移动,而不是拷贝,则域设置144-1服务给包管理器136发信号以从第一域142-1卸载应用程序(动作715),并也将应用程序用户数据传输至新域。
[0120]更新策略协议
[0121]图8中示出图解更新策略方法的框图800。
[0122]域消息服务122从远程管理服务器805,或者可替代地经由设备上的设置屏幕,或经由API,接收策略(动作810),然后域消息服务122将策略传递至域策略服务126(动作815),然后至域内核模块114(动作820),其可以适当地将策略存储在安全存储112中(动作825)。策略的起源的完整性和可靠性由域内核模块116验证。防回滚机制可以被应用在域内核模块116或安全存储112内,以确保较早的策略不会被重新使用或重新播放。然后,域策略服务126加载策略和之前的策略,以便只智能地应用已经在更新的策略中改变的那些策略。域策略服务126可以发信号至增强Linux安全性模块116,以加载策略的更新的SELinux部分(动作830)。域策略服务126给系统设置模块130服务发信号,以更新在系统设置模块130中应用并被其实施的策略,诸如密码强度、壁纸和启动器(动作835)。然后,域策略服务126更新其自身的专用于域的策略,诸如域加密、域调试访问、交叉域策略和域名。
[0123]魅
[0124]本方案提供手段以安全地建立、维护和管理分离的受保护域并限定和隔离这种分离的受保护域中的应用程序和数据。与现有技术相比,本方案在存储器、空间和计算能力方面是有效的。其维持了本地操作系统特征,包括应用程序的反向兼容性。其维持了一些域中的本地且直观的设备用户界面,又使能了其他域中的许多不同用户界面选项和策略,而不是传统的“全有或全无”的设备锁和/或用户账户访问。其使能了具有不同的域所有者的一个设备上的多个人、多个工作和“开放”域之间的双人、多人、多域使用。其使能了这多个域的远程管理和策略更新。其允许针对每个域的不同的访问控制和策略。其允许策略确定数据是否可以在域之间传送。其使能了更适用于移动设备的新的使用模型,包括临时共享。与其他方案相比,其使能了可以在每个域中使用的应用程序的更细分的控制。本方案可以显著地简化或甚至消除与基于管理程序的虚拟化关联的域之间的操作系统级“硬切换”,在基于管理程序的虚拟化中,每个域与可以被每个对应的管理程序复制的独立的操作系统进程组关联操作。其在没有当前方案的弱点的情况下,隔离了域之间的应用程序和应用程序数据。其将域中的应用程序和数据与域之外的恶意应用程序隔离。最后,其解决了移动设备用户的私密性问题和选择的自由。
[0125]与实施方式的细节无关,域信令、域管理和域实施引入了显著的益处和特征。如下。本方案维持了初始的本地操作系统特征,包括应用程序的反向兼容性。全部本地操作系统权限检查和IPC机制会共存并仍然有效。操作系统的操作不变,并且本方案与之前的操作系统反向兼容。与现有技术相比,本方案在存储器、空间和计算能力方面是有效的。与诸如复制操作系统堆栈的导致大量(PU和RAM开销的虚拟化之类的替代方法相比,设备性能和存储及存储器利用非常高效。因为本地OS实施方式,与现有技术相比,域之间的切换非常快且尚效。
[0126]本方案使能了具有不同的域所有者的一个设备上的多个人、多个工作和“开放”域之间的双人、多人、多域使用。多个受保护域可以容易地被添加并被实施,而伴随着可以忽略的存储器和性能影响。单个设备上可以存在多个受保护的工作域。例如,如果用户具有多个客户,则在同一设备上可以存在公司X域和公司Y域。可替代地,设备可以被配置为具有公司机密域和公司分类域,每个域具有不同的策略(例如,驻留在公司分类域中的应用程序的安全性策略可以更有限制性,诸如它们只可以在正常工作时间期间或者在设备连接至公司WiFi网络时访问)ο设备可以被配置为具有易于访问的开放共享域,并被配置为使能与家人或同事专门共享开放域中的设备和应用程序。用户可以具有针对私密性目的的受保护域,诸如以隔离与秘密关系有关的消息传送和联系人信息,或用户可以具有针对手机银行和商业目的的受保护域。不是设备所有者的雇主的服务提供者,诸如银行,可能希望设备上有包含用于访问其服务(诸如账户访问、信用卡或借记卡服务、股票交易、诸如保险、贷款等服务的报价)的各种应用程序的受保护域。服务提供者会具有它们的应用程序和与这些应用程序关联的用户个人信息是安全的并且倘若设备丢失也可以被抹掉或锁定的信心。
[0127]本方案针对不同域、在域之间以及针对单个设备上的受保护域的进出通信允许不同的访问控制和策略。域策略可以是在本地管理(例如经由设备设置)或远程管理(例如经由云服务)。策略还可以由设备所有者或诸如雇主或服务提供者的第三方管理。交叉域通信和数据共享可以根据策略被限定和实施。数据加密可以能够感知域。电话功能、来电显示通知和紧急呼叫等可以能够感知域并基于策略。例如,来自某些域的呼出电话可以被阻止。网络连接性可以能够感知域,并且可根据策略实施。任务选择器和进程显示可以能够感知域。例如,如果域被登录,则进程可以只被显示。通知可以基于策略能够感知域。例如,工作域通知只可以从某个页面可见,以避免共享期间的数据泄露。或者,通知可以指示提供通知的应用程序,但具有减少的信息(例如,不公开接收的电子邮件的标题,或者接收的SMS的发送者等)。云备份和同步机制也可以能够感知域。例如,开放域可以被备份,即使不存在关联于该域的专用账户。
[0128]本方案维持了本地且直观的初始用户界面,又使能了不同域之间的许多不同用户界面选项和策略,而不是传统的“全有或全无”的设备锁和/或传统多用户账户访问。用户界面和域之间的切换现在可以被定制为域过渡类型。传统用户账户风格界面可以被维持,并且每个域仍旧可以被个性化,并针对每个域被配置有全部的标准本地OS能力,诸如每个域具有不同背景和/或不同启动屏幕。每个域可以配置用户认证机制(例如,密码、生物识别、图案、没有认证)。域登录策略可以被用于在域之间切换时减少或消除对用户进行重复认证的需要。访问控制和认证技术可以针对每个受保护域、根据针对该域设置的策略来实施(例如,在设备不活动15分钟之后自动注销,或者在域不活动5分钟之后自动域注销,或者在特定域内时每10分钟重新认证,等等)。本方案使能了更适用于移动设备的新的使用模型,包括诸如经由开放域进行应用程序的专门共享。这是对移动设备的最近特征的扩展,在这些移动设备中,一些设备能力可以在设备锁屏时可用,而不需要认证(例如,用户可以仍然拍照或接听呼入电话)。除了对功能进行限制之外,使用域信令和域隔离实施,开放区域提供对应用程序的全部特征访问,虽然可能具有其他特定策略,诸如受限的互联网访问(例如,没有,或只经由WiFi)和受限的电话访问(例如,只来电或只市话等)。域之间的切换可以通过使用用于显示域的其他手段(例如,图标上的覆盖)来消除。设备所有者可以保持域被独立地分组(可能为了私密性原因或个人偏好)在文件夹、标签或操作系统支持的任何其他机制中。每个域的认证策略仍旧会在访问标签或特定应用程序时应用,但是对于切换及不同域“主屏”和壁纸等的需求可以被消除。
[0129]在每个域中可用的应用程序可以被控制并且以更加细分的水平显示,而在设备上只存储一个拷贝,因此提供存储器和(PU的非常高效的使用。包管理器可以管理每个域中的应用程序的安装一一每个域确实已经在用户账户之间一一但是使用更优雅的域特定机制。可用性、显示和对应用程序的访问可以由策略针对每个域进行控制。应用程序数据可以针对每个域进行隔离(除了每个用户账户之外),并且可以容易地针对每个域进行删除和管理(例如,如果设备丢失或人事任用终止等)。应用程序可以以更直观且更富创造性的方式在域之间移动或刷过,类似于在主页和标签之间移动应用程序,而不是在诸如Android 4.2的情况下针对每个域执行应用程序安装。
[0130]在能够感知域的SELinux版本的情况下,本方案可以实施由域指定的应用程序和应用程序数据隔离。其可以确保在一个域上应用程序的访问不可以访问另一个域。其确保交叉域呼叫只可以经由实施策略的域管理器服务进行。其确保一个域上的恶意软件不能影响另一个域中的应用程序和数据。其确保在没有认证的情况下使用域不影响其他域的安全性。
[0131]本方案不影响其他安全性技术的使用,诸如虚拟化和容器,因为本方案与那些技术反向兼容。具体地,具有修改的类型2管理程序可以利用域信息作为不同操作系统之间的切换的一部分。应用程序容器方案也可以被部署在本方案中。
[0132]虽然已经具体结合Android和Linux操作系统描述了上面的实施例,但可以理解的是这里公开的原理可应用于拥有本公开要解决的相关特征的任意操作系统。
[0133]虽然上面操作操作系统的设备被认为是移动设备,其可以包括智能手机、平板电脑、个人数字助理(PDA)、智能手表或任何类似的设备,但可以理解的是这里公开的原理可应用于本公开要解决的相关特征的任意设备,并且在某些实施例中包括通用计算机。
[0134]在前面的描述中,为了解释,陈述了许多细节,以提供本发明实施例的全面理解。然而,对于本领域技术人员来说显而易见的是,实践本发明不需要这些特定细节。在其他实例中,以框图的形式示出熟知的电结构和电路,以不模糊本发明。例如,关于这里描述的发明的实施例是否被实施为软件例程、硬件电路、固件或其组合,未提供具体细节。
[0135]本发明的实施例可以被表示为存储在机器可读介质(也被称为计算机可读介质、处理器可读介质或具有这里体现的机器可读程序代码的计算机可用介质)中的软件产品。机器可读介质可以是任意适合的有形介质,包括软盘、光盘只读存储器(CD-ROM)、存储器设备(易失性或非易失性)或类似的存储机制的磁性、光学或电性存储介质。机器可读介质可以包含在被执行时使处理器执行根据本发明实施例的方法中的步骤的各种指令集、代码序列、配置信息或其他数据。本领域普通技术人员会意识到实施所描述的发明必需的其他指令和操作也可以被存储在机器可读介质上。从机器可读介质运行的软件可以与电路交互以执行所描述的任务。
[0136]本发明的上面描述的实施例只作为示例。改变、修改和变化可以由本领域技术人员对特定实施例实现,而不会偏离所附权利要求单独限定的本发明的范围。
【主权项】
1.在包括处理器和存储指令的存储器的设备中,其中所述指令由所述处理器可执行以实施提供包括当前域和目标域的多个域的操作系统,其中所述目标域被至少部分地存储在加密文件系统中,其中对所述目标域的访问需要认证和对所述加密文件系统的访问,一种从所述当前域切换至所述目标域的方法,所述方法包括: 提供与所述当前域和所述目标域不同的中间域; 接收切换至所述目标域的请求; 确定所述目标域未在运行,至少部分存储在所述加密文件系统中并且需要访问认证; 切换至所述中间域; 在所述中间域中显示针对对所述目标域的访问的认证质询; 接收响应于所述认证质询的认证信息; 基于所述认证信息解密用于提供对所述加密文件系统的访问的文件系统密钥; 基于所述文件系统密钥提供对所述加密文件系统的访问,并且安装所述加密文件系统;以及 启动所述目标域。2.根据权利要求1所述的方法,其中在没有与所述目标域关联的进程在运行时,所述目标域未在运行。3.根据权利要求1所述的方法,其中与所述目标域关联的至少一些用户界面元素被存储在与所述加密文件系统不同的文件系统中,所述方法进一步包括与所述认证质询一起显示所述用户界面元素。4.根据权利要求1所述的方法,进一步包括与所述认证质询一起显示标识所述目标域的视觉元素。5.根据权利要求4所述的方法,其中所述视觉元素是壁纸。6.根据权利要求1所述的方法,其中与所述目标域关联的输入法编辑器被存储在与所述加密文件系统不同的文件系统中,并且其中接收响应于所述认证质询的认证信息包括:通过所述输入法编辑器接收所述认证信息。7.根据权利要求1所述的方法,其中与所述目标域关联的输入法编辑器被存储在所述加密文件系统中,所述方法进一步包括: 在接收所述认证信息之前,接收输入法编辑器的选择,其中接收响应于所述认证质询的认证信息包括:通过所述输入法编辑器接收所述认证信息。8.根据权利要求1所述的方法,其中所述操作系统包括Linux内核,并且其中基于所述文件系统密钥提供对所述加密文件系统的访问包括:将所述文件系统密钥存储在内核密钥环中。9.根据权利要求1所述的方法,其中所述加密文件系统是密码堆叠文件系统。10.根据权利要求1所述的方法,其中所述加密文件系统是eCryptFS文件系统。11.根据权利要求1所述的方法,其中附加的块级数据加密被应用于所述加密文件系统。12.根据权利要求1所述的方法,其中附加的设备级数据加密被应用于所述加密文件系统。13.根据权利要求1所述的方法,进一步包括:在安装所述加密文件系统之后摒弃与所述目标域关联的锁屏。14.根据权利要求1所述的方法,其中所述中间域被配置为允许只启动来自应用程序或服务的预定组的进程。15.根据权利要求1所述的方法,其中所述中间域的策略被配置为允许只启动应用程序或服务的预定组。16.根据权利要求15所述的方法,其中所述操作系统是SEAndroid操作系统,并且其中所述中间域的所述策略包括SEAndro id策略。17.根据权利要求1所述的方法,其中提供中间域包括:在所述操作系统的启动或初始配置时创建所述中间域。18.根据权利要求1所述的方法,其中提供中间域包括:响应于所述目标域的创建而创建所述中间域。19.根据权利要求1所述的方法,其中所述操作系统通过以下提供多个域,针对每个域: (a)将隔离域的资源与唯一域标识符关联,所述资源包括至少一个数据文件或至少一个应用程序; (b)存储与所述唯一域标识符关联的策略,所述策略包括用于控制对所述资源的访问的规则组;以及 (C)基于与所述隔离域关联的策略而控制对所述隔离域的资源的访问。20.根据权利要求19所述的方法,其中所述操作系统通过执行所述操作系统的至少部分地位于所述操作系统的内核外部的至少一个服务来提供所述多个域。21.根据权利要求20所述的方法,其中所述操作系统通过执行所述操作系统的位于所述操作系统的内核内的至少一个进一步服务来提供所述多个域。22.根据权利要求19所述的方法,其中所述操作系统实施多个用户账户,并且其中所述当前域和所述目标域共同与所述用户账户中的一个关联。23.根据权利要求19所述的方法,其中(c)包括基于与所述目标域关联的策略而控制进程对所述目标域资源的访问,其中所述进程与不同于所述目标域的其他域中的一个关联。24.根据权利要求23所述的方法,其中所述进程基于所述其他域的唯一域标识符而与执行文本标识符关联,并且其中(c)包括基于所述执行文本标识符控制所述进程对所述目标域资源的访问。25.根据权利要求24所述的方法,其中所述其他域的资源包括所述至少一个应用程序,并且其中所述执行文本标识符基于所述其他域的唯一域标识符和与被执行以产生所述进程的所述至少一个应用程序关联的唯一应用程序标识符。26.根据权利要求25所述的方法,其中所述操作系统是Android操作系统,所述唯一应用程序标识符是在安装时赋予应用程序的Unix型用户标识符(UID),所述执行文本标识符包括应用程序的UID,并且所述唯一域标识符被包含在所述UID的预留比特中。27.—种计算机可读介质,包括存储于其上的指令,所述指令在被计算机执行时执行权利要求I所述的方法。28.—种包括处理器和存储指令的存储器的设备,所述指令由所述处理器可执行以实施提供包括当前域和目标域的多个域的操作系统,其中所述目标域被至少部分地存储在加密文件系统中,其中对所述目标域的访问需要认证和对所述加密文件系统的访问,其中所述指令进一步可执行以执行从所述当前域切换至所述目标域的方法,所述方法包括: 提供与所述当前域和所述目标域不同的中间域; 接收切换至所述目标域的请求; 确定所述目标域未在运行,至少部分被存储在所述加密文件系统中,并且需要访问认证; 切换至所述中间域; 在所述中间域中显示针对对所述目标域的访问的认证质询; 接收响应于所述认证质询的认证信息; 基于所述认证信息解密用于提供对所述加密文件系统的访问的文件系统密钥; 基于所述文件系统密钥提供对所述加密文件系统的访问,并且安装所述加密文件系统;以及 启动所述目标域。
【文档编号】H04L9/32GK105981027SQ201480055972
【公开日】2016年9月28日
【申请日】2014年8月11日
【发明人】詹姆士·亨利·阿兰·普德雷尔, 詹姆斯·亚历山大·缪尔, 亚历山大·詹姆斯·迈因
【申请人】哥莱菲特软件公司