操作计算设备的方法、计算设备及计算机程序的制作方法

文档序号:7791702阅读:112来源:国知局
操作计算设备的方法、计算设备及计算机程序的制作方法
【专利摘要】生成(330)数据访问应用程序密钥。由数据访问应用程序(116)使用该数据访问应用程序密钥被以能够利用该数据访问应用程序密钥解密以加密的形式存储在计算设备上的数据。数据访问应用程序密钥使用数据访问应用程序(116)的标识符和特定于计算设备和/或计算设备的用户中的至少一个的应用程序密钥(320)来生成。
【专利说明】操作计算设备的方法、计算设备及计算机程序

【技术领域】
[0001] 本发明涉及操作计算设备的方法、计算设备及计算机程序。

【背景技术】
[0002] 存在许多当存储和/或传输数据时期望或需要加密数据以便主要防止对数据进 行未授权访问的情况。已知大量不同的用于加密数据的方法和技术。其中一些利用"容器 (container)"概念:数据被加密并"包装(wrapped)"在(数字)容器中,该容器在各种访 问策略可以用于控制哪些用户可以访问容器内的(加密)数据并在什么情况下对其进行访 问。容器是其规范描述了不同的数据元素和元数据如何共同存在于计算机文件中的元文件 格式。用于加密(并相应解密)数据的加密密钥本身可以加密以便进行安全存储,在现有 技术中通常通过使用用户输入的密码作为用于此加密的加密密钥。
[0003] 在某些传输系统上可以以加密的形式发送数据,例如包括无线和有线连接、局域 网和广域网、因特网、蜂窝(移动)电话系统等中的一个或多个。数据可以在用户设备之间 发送或者可以上传到一些中央服务器或多个服务器,诸如用户的工作场所或从其下载。
[0004] 然而,加密数据的问题使得用户是容易进行访问的。这是一个特定的问题,其中用 户正在使用移动设备,例如包括无线设备(诸如所谓的智能手机或平板电脑等)或包括利 用有线连接来连接至网络的设备的相对低的计算功率的其他设备,因为这些设备可以具有 相对有限量的存储性和功能性。特定的实例使用户能够具有总体上查看和/或编辑数据或 文件的安全方式,或就数据或文件而言实现其他动作,例如包括其他的操纵、转换、处理、存 储、传输和其他计算操作。这样的文件可能已经在用户设备处以电子邮件附件的形式或通 过一些其他文件传输协议或方法被下载或接收。由于容器可以包含许多文件,因此这会导 致一些问题,因为通常存储许多不同类型的文件并且每种不同类型的文件都需要不同的应 用程序代码来查看/编辑/操纵等,所以容器应用程序变得更大,其就支持更不相同的类型 的文件。期望使加密文件可用于用户设备(诸如查看器/编辑器等)上的第三方应用程序, 但是该可用性必须以安全的方式实现,而不危及加密文件的安全性。
[0005] 在实践中可能产生的另一个问题是用户设备上的安全容器可能需要在某些方面 进行实时更新。例如,可能存在管理用户设备和存储在用户设备上的至少一些文件的一些 中央控制中心。可能是因为用户设备已经丢失或被盗,中央控制中心例如可能想要修改用 于容器中的一个或多个文件的某些访问策略等或删除容器或其内的文件。然而,可能是用 户设备上的一些容器从来不会只有效地连接至中央控制中心,因此在实践中难以及时地针 对用户设备上关注的所有容器更新访问策略等或删除文件。
[0006] 产生的另一个问题是如何生成将被用于加密和解密数据的加密密钥的问题。这是 一个特定问题,其中存在运行于计算设备上的几个应用程序,其要求以加密的形式访问或 存储数据。这包括上述的情况,其中计算设备上存在以加密的形式访问和/或存储数据的 几个应用程序(诸如查看器/编辑器等)。每当特定应用程序访问用户设备上的数据时必 须输入密码对于用户来说不方便,但出于安全性目的,还优选地不将相同的加密密钥用于 每个应用程序。
[0007] 本发明的各个方面针对克服上文陈述的一个或多个问题。


【发明内容】

[0008] 根据本发明的第一方面,提供了一种操作计算设备的方法,该方法包括:生成由数 据访问应用程序使用的数据访问应用程序密钥以能够利用所述数据访问应用程序密钥解 密以加密的形式存储在所述计算设备上的数据;使用所述数据访问应用程序的标识符和特 定于计算设备和/或计算设备的用户中的至少一个的应用程序密钥来生成所述数据访问 应用程序密钥。
[0009] 这方面的实施例的实例使能够针对数据访问应用程序而生成唯一数据访问应用 程序密钥,以使得如果必要可以基于特定于计算设备和/或计算设备的用户的信息来生成 相同的密钥。此信息可以被使用或被存储在某个远程服务器处,例如以便如果必要则允许 再次生成密钥。
[0010] 在实施例中,在计算设备上接收来自远程数据存储器的特定于计算设备和/或计 算设备的用户中的至少一个的应用程序密钥。
[0011] 在实施例中,在计算设备上接收来自远程数据存储器特定于计算设备和/或计算 设备的用户中的至少一个的应用程序密钥,在远程数据存储器中所述应用程序密钥基于计 算设备和/或计算设备的用户中的所述至少一个的标识符来生成。
[0012] 在实施例中,数据访问应用程序使用所述数据访问应用程序密钥被解密用于加密 数据的密钥以使数据访问应用程序能够解密该数据。
[0013] 根据本发明的第二方面,提供了一种计算设备,包括构造并配置为使计算设备进 行以下操作的处理系统:生成由数据访问应用程序使用的数据访问应用程序密钥以能够利 用所述数据访问应用程序密钥解密以加密的形式存储在所述计算设备上的数据;数据访问 应用程序密钥使用所述数据访问应用程序的标识符和特定于计算设备和/或计算设备的 用户中的至少一个的应用程序密钥来生成。
[0014] 处理系统可以包括至少一个处理器和包括计算机程序代码的至少一个存储器,至 少一个存储器和计算机程序代码配置为利用至少一个处理器使计算设备进行上述操作。
[0015] 根据本发明的第三方面,提供了一种计算机程序,包括代码使得当计算机程序在 计算设备上执行时,所述计算设备配置为:生成由数据访问应用程序使用的数据访问应用 程序密钥以能够利用所述数据访问应用程序密钥解密以加密的形式存储在所述计算设备 上的数据;使用所述数据访问应用程序的标识符和特定于计算设备和/或计算设备的用户 中的至少一个的应用程序密钥来生成数据访问应用程序密钥。
[0016] 可以提供一种非瞬态计算机可读存储介质,包括其上存储的当由处理系统执行时 使处理系统实现如上所述方法的一组计算机可读指令。
[0017] 本发明的另外的特征和优点根据仅通过实例的方式给出的参照附图做出的本发 明的优选实施例的以下描述将变得显而易见。

【专利附图】

【附图说明】
[0018] 图1示意性地示出了根据且适用于实施本发明的实施例的计算设备的实例的组 件;
[0019] 图2示意性地示出了用于本发明的实施例的网络组件和设备的实例;
[0020] 图3示意性地示出了获得加密密钥和安全查看器/编辑器应用程序与客户端程序 之间最初配对的过程的实例;
[0021] 图4示意性地示出了经由客户端程序将动作命令从中央控制服务器发送至安全 查看器/编辑器应用程序的实例;以及
[0022] 图5示意性地示出了将文件发送至安全查看器/编辑器应用程序的实例。

【具体实施方式】
[0023] 图1示意性地示出了计算设备100的实例的组件。所示的实例是客户端或用户设 备100。具体实例是便携式计算设备100,但是本发明的实施例同样适用于非便携式计算设 备,例如包括台式计算机、信息亭式计算机等。在任何一种情况下,对于便携式或非便携式 计算设备来说,设备1〇〇可以经由有线或无线连接或有线和无线连接的组合而连接至一些 类型网络。便携式计算设备100可以采用智能手机、个人数字助理(PDA)、电子阅读器、平板 电脑或笔记本电脑等的形式。
[0024] 计算设备100包括可以是能够接收用户输入的触摸屏显示屏102和/或计算设备 100可以具有诸如键盘104或一些点设备(未示出)的独立的输入设备,其可以无线地或通 过有线连接集成到或连接到计算设备100。计算设备100还包括处理器106、非易失性存储 设备1〇8(诸如硬盘驱动器和/或非易失性存储器等)和随机存取存储器(RAM) 110。处理 器106处理存储在随机存取存储器110中的已经从非易失性存储设备108加载的指令。这 些指令呈现计算机软件的形式,所述计算机软件呈现实现操作系统和客户端程序的一个或 多个程序的形式。RAM 110还被处理器106上运行的程序用作以电子信号的形式存储并访 问数据的工具,其中在执行程序期间使用该数据。操作系统提供用于存储、修改并访问非易 失性存储设备108中保存的文件的文件系统。该文件系统可经由操作系统提供的程序设计 接口访问在处理器106上运行的其他程序。处理器102上运行的程序还经由触摸屏102或 键盘104等处理从用户输入获得的用户输入。计算设备100还包括网络接口 112 (或多个 这样的接口),其允许处理器102上运行的程序经由通信网络(或多个这样的网络)、经由 有线和/或无线连接至并从其它设备和系统传输和接收数据。
[0025] 在图2中示意性地示出了可以由计算设备100使用网络接口 112做出的通信链接 的实例。网络接口 112可以包括能够与无线访问节点120通信的无线电访问网络接口,诸如 基站或无线访问点的无线访问节点120提供对通信网络130的访问。网络接口 112也许能 够使用例如包括全球移动通信系统(GSM)、通用移动通信系统(UMTS)、长期演进技术(LTE) 及固定的无线访问(诸如IEEE 802. 16 WiMax)及无线联网(诸如IEEE 802. llWiFi)的数 个无线电访问技术中的一个或多个连接至无线访问节点120。可选地或另外地,网络接口 112可以提供诸如经由调制解调器或路由器等至通信网络130的有线连接。通信网络130 可以是或可以包括因特网和/或公共陆地移动电话网络(PLMN)和/或公共交换电话网络 (PSTN)。
[0026] 计算客户端设备100可以包括允许经由通信网络130在处理器106上运行的程序 与外部装置之间通信的联网程序。可以经由通信网络130进行通信的外部设备可以包括诸 如网络操作中心(NOC) 140的远程数据处理设备装置。NOC 140可以是一个计算机服务器或 多个计算机服务器,其可以经由通信网络150与其他远程数据处理设备,诸如连接至企业 级网络(未示出)的一个或多个企业级服务器160、162、164通信。通信网络150例如可以 是或可以包括因特网、PLMN、PSTN等。通常可以通过放置在通信网络150与企业级网络之 间的防火墙170来防止从通信网络150对一个或多个企业级服务器160、162、164和企业级 网络的一般访问,使得如果不满足防火墙170执行的标准,则可以监控并(任选地)丢弃在 通信网络150与企业级网络之间传递的所有的网络流量。例如,防火墙170可以被配置为 只允许N0C 140和一个或多个企业级服务器160、162、164之间的网络连接并丢弃从通信网 络150至一个或多个企业级服务器160、162、164和/或企业级网络的所有其他网络连接。
[0027] 为了访问由诸如N0C 140的远程数据处理设备和一个或多个企业级服务器160、 162U64提供的内容和服务,计算设备100的用户可以使用计算设备100上的客户端程序 114。客户端程序114例如可以在用户购买计算设备100之前预加载到计算设备100上或 随后由用户下载并安装到计算设备100上。一个或多个企业级服务器160、162、164可以 提供对包括存储、发送并接收电子邮件的企业电子邮件服务的企业级服务的访问;存储并 检索文件的企业级文件共享服务;访问并修改企业级数据库(或多个数据库)的企业级数 据库服务;访问并修改诸如联系人列表、日历、任务列表的个人信息的企业级个人信息管理 (PM)服务;以及其他服务,包括企业级资源规划、客户关系管理、现场/支持力自动化、客 户数据内容存储等。这些服务中的每一个可以由一个或多个企业级服务器160、162、164和 /或由可以连接至一个或多个企业级服务器160、162、164的企业级网络内的一个或多个其 他服务器提供以提供对这些服务的访问。为了访问这些服务,客户端程序114的用户通过 用户输入一些识别和认证详情首先由N0C 140和/或一个或多个企业级服务器160、162、 164来识别并认证。一旦用户输入识别和认证详情,这些详情就可以通过安全(例如,加密) 数据连接从计算设备100传输至N0C 140,安全(例如,加密)数据连接通过(相对不安全) 通信网络130来建立。一旦用户已经通过N0C 140识别并认证,客户端程序114就可以保持 其与N0C 140之间的数据连接以便允许客户端程序114与N0C 140之间的通信。该数据连 接可以是通过数据通信网络130进行的安全连接并允许数据在计算设备100与一个或多个 企业级服务器160、162、164之间发送。因此,N0C 140可以充当客户端程序114与一个或多 个企业级服务器160、162、164之间的中继器并帮助确保计算设备100与一个或多个企业级 服务器160、162、164之间安全的数据传输。客户端程序114与N0C 140之间的数据连接还 可以用于将从一个或多个企业级服务器160、162、164接收的信息"推动(push) "至计算设 备100上运行的应用程序。N0C 140的网络接口还可以允许N0C140经由通信网络180 (例 如包括因特网)与诸如提供其他服务的一个或多个第三方计算机服务器190的其他远程数 据处理设备通信。应该注意,当上面的大多数情况被视为用户提供企业级服务的"企业级" 服务器时,本发明的实施例广泛应用于客户端设备100的用户通过网络连接至一些远程数 据存储器或其他服务器的许多场景。而且,另外,客户端设备100可以在无需经由N0C 140, 而再次经由有线或无线或有线和无线连接的组合(例如包括经由因特网)连接的情况下直 接连接至第三方计算机服务器190。
[0028] 存储在计算设备100上的至少一些数据(诸如经由N0C 140获得的数据)以安全 加密的形式存储。如上所述,已知大量不同的加密数据的方法和技术。在本实例中,加密利 用可应用于控制哪些用户可以访问容器内的(加密)数据的(数字)容器,其中数据被加 密并"包装"在用于各种访问策略的容器中。例如,可以确定访问策略,并且如果需要则由 诸如一个或多个企业级服务器160、162、164的管理员的远程用户来改变。访问策略的改变 可以经由NOC 140通信至计算设备100。
[0029] 通常,计算设备100将包括就计算设备100上的数据或文件而言允许实现各种动 作(例如包括查看、编辑、其他操纵、转换、处理、存储、传输以及其他计算操作)的一个或多 个程序或应用程序。为简洁起见,该说明书中讨论的具体实例是包括一个或多个安全查看 器/编辑器应用程序116的计算设备100的实例,所述一个或多个安全查看器/编辑器应 用程序116可以用于查看和/或编辑以安全的形式存储在计算设备100上的数据,该数据 通常以计算机文件的形式存储。然而,将理解,这仅仅是就计算设备100上的数据或文件而 言实现动作的应用程序的一个具体实例并且本发明的方面可广泛适用于其他这样的应用 程序。一般地说,在一个实例中,其操作如下。应该注意,在实践中,可能存在几个不同的安 全查看器/编辑器或安装在计算设备100上的其他应用程序116。然而,再次为了简单起 见,以下描述主要考虑只存在一个安全查看器/编辑器应用程序116的情况。
[0030] 正如下面进一步讨论的,安全查看器/编辑器应用程序116必须从计算设备100 上运行的客户端程序114获得数据或文件来访问应用程序密钥以便能够针对此安全查看 器/编码器应用程序116解锁以加密的形式存储在计算设备100上的安全存储装置中的文 件。从客户端程序114传递至安全查看器/编辑器应用程序116的请求和其他消息被认证 为源自客户端程序114。相反,从安全查看器/编辑器应用程序116传递至客户端程序114 的请求和其他消息被认证为源自所支持的安全查看器/编辑器应用程序。这些认证可以基 于发送请求的请求应用程序或程序的一些标识符。而且,客户端程序114与安全查看器/ 编辑器应用程序116之间的所有容器间通信(它们是否是对文件进行访问的请求,例如传 输文件本身)出于安全性目的都进行加密,例如以停止可以在能够拦截并解释通信、访问 文件等的计算设备1〇〇上运行的一些"窃听(eavesdropping) "应用程序。(此窃听应用程 序可以是设备的操作系统的合法功能,但在数据的安全性至关重要的环境下是不可取的。) 为了启用该加密,在一个实施例中,客户端程序114和安全查看器/编辑器应用程序116交 换用于后续通信的"容器间传输(Inter-container Transport) "密钥,任选受到密钥转动 间隔的影响。客户端程序114随机为每个安全查看器/编辑器应用程序116生成容器间传 输密钥并将这些密钥保持在安全存储装置中。因此,如果存在多个安全查看器/编辑器应 用程序116,则客户端程序114因此有效地与安全查看器/编辑器应用程序116的每一个分 开"配对",每次配对都具有其自身的密钥。以这种方式,安全查看器/编辑器应用程序116 不需要回调客户端程序114以在每个文件/策略推动之后获得容器间传输密钥,而仅当其 当前没有在存储器中高速缓存与请求中指示的密钥ID(keylD)匹配的容器间传输密钥时。
[0031] 应注意,用于共享或获得容器间传输密钥的请求自身不能利用该密钥进行加密。 因此,在一个实施例中,使不利用容器间传输密钥进行加密的所有请求是请求对的一部 分,其中加密密钥在客户端程序114与安全查看器/编辑器应用程序116之间正在进行 (on-the-fly)协商或交换。大量密钥交换方法可以用于该目的。用于此的一个实施例使 用"匿名迪菲-赫尔曼密钥交换"算法,但是优选实施例使用更安全的"椭圆曲线迪菲-赫 尔曼密钥交换"算法。这些算法只要求从每个端点(在该实例中分别为客户端程序114和 安全查看器/编辑器应用程序116)发送一条消息以完成交换。这些迪菲-赫尔曼密钥交 换方法本身是已知的并允许之前不了解彼此的两方通过不安全通信信道共同建立共享秘 密密钥。该密钥然后用于使用对称密钥密码来加密后续通信。概括地,基本迪菲-赫尔曼 密钥交换算法操作如下:
[0032] 1、艾丽丝和鲍勃同意使用质数p和作为本原根(primitive root)模p的数g。
[0033] 2、艾丽丝选择秘密整数a,并且然后向鲍勃发送A = ^模?。
[0034] 3、鲍勃计算s = Ab模p。
[0035] 4、鲍勃选择秘密整数b,并且然后向艾丽丝发送B = gb模p。
[0036] 5、艾丽丝计算s = Ba模p。
[0037] 6、艾丽丝和鲍勃现在共享秘密"s"(给出Ab模p = Ba模p = s)。
[0038] 该方法的重要优点是需要每个方向上的仅一条消息以便建立共享密钥s,在该实 例中,其用于加密随后用于加密客户端程序114与安全查看器/编辑器应用程序116之 间的后续通信的容器间传输密钥请求。另外,假设消息如在上文的概述中一样排序,"鲍 勃"(即,客户端程序114或安全查看器/编辑器应用程序116,根据情况而定)另外可以 包括利用步骤4的消息中的共享秘密s (即,共享加密密钥)加密的数据,其节约了时间,随 着发送分开的消息涉及处理以包括交换共享密钥之后的加密数据。应该注意,可以使P和 g是公共的。只有a、b和s必须保持秘密。椭圆曲线迪菲-赫尔曼是上文讨论的迪菲-赫 尔曼密钥交换算法的变型,其使用椭圆曲线密码学并且根据交换密钥的速度和尺寸一般更 安全并且更有效,但使用相同的基本原则和方法进行操作。在该说明书中,这两种方法一般 被称为迪菲-赫尔曼密钥交换,除非上下文另外要求。
[0039] 因此,在这里,如果没有用于加密至并自客户端程序114发送并接收的消息的容 器间传输密钥,或当前容器间传输密钥例如已经过期,则在一个实施例中,安全查看器/编 辑器应用程序116与客户端程序发起迪菲-赫尔曼密钥交换以便获得共享加密密钥。客户 端程序114然后使用此共享加密密钥以加密的形式将容器间传输密钥发送至安全查看器/ 编辑器应用程序116,此容器间传输密钥用于加密客户端程序114与安全查看器/编辑器应 用程序116之间的后续交换。
[0040] 作为获得如上所述的用于加密至并自客户端程序114发送并接收的消息的容器 间传输密钥的选择或补充,安全查看器/编辑器应用程序116 (或其他应用程序)和客户端 程序114可以分别生成公共/私有密钥对,其中各个公共密钥用于加密应用程序之间发送 的后续消息并且各个私有密钥用于签名所述消息,或者其中各个证书用于确保应用程序之 间的后续TLS(传输层安全性)连接,如下所述。对于安全查看器/编辑器应用程序116和 客户端程序114之间的初始配对来说,每个应用程序将包含其自身公共密钥的证书发送至 其他应用程序。在安全查看器/编辑器应用程序116和客户端程序114之间的后续TLS连 接期间,发起连接的应用程序通过核实初始握手期间提供的证书与先前从其他应用程序获 得的证书匹配来认证其连接的应用程序。类似地,接受传入连接的应用程序通过核实握手 期间提供的客户端证书与先前从其他应用程序获得的证书匹配来认证其连接的应用程序。 在此情况下,如下面进一步讨论的,对称会话密钥在初始握手期间可以在应用程序之间协 商,会话密钥用于加密应用程序之间的后续通信。
[0041] 安全查看器/编辑器应用程序116优选地依赖客户端程序114认证本地 用户,而不直接提示用于客户端密钥以允许其生成访问加密文件的密钥。"单点登录 (single-sign-on) "元件允许用户通过在客户端程序114的用户接口输入单个用户选择客 户端密码来同时解锁客户端程序114和所有相关联的安全查看器/编辑器应用程序116,这 对用户来说更方便。
[0042] 因此,每当启动或重新启动时,每个安全查看器/编辑器应用程序116从客户端程 序114请求其自身的"客户端密码(client password)"或文件访问应用程序密钥以便能够 解锁以加密的形式存储在其自身的安全存储装置中的文件。该文件访问应用程序密钥通过 客户端程序114具体针对安全查看器/编辑器应用程序116来生成并且例如不匹配被用户 用来访问客户端程序114自身的用户选择的密码。当客户端程序114首先从指定的安全查 看器/编辑器应用程序116接收此请求时(例如,当安全查看器/编辑器应用程序116首 先在计算设备100上启动或开始时),其生成用于应用程序的应用程序密钥并且还存储密 钥以供以后获取。如果客户端程序114接收此请求并且已经解锁(即,正在运行并且已经 使用用于客户端程序114的用户选择的密码打开),则通过将适当的文件访问应用程序将 密钥发送至安全查看器/编辑器应用程序116来做出响应。如果尚未解锁,则客户端程序 114提示用户输入用于客户端程序114的用户选择的密码,并且然后在输入正确的用于客 户端程序114的用户选择的密码之后,利用此安全查看器/编辑器应用程序116的文件访 问应用程序密钥来响应于安全查看器/编辑器应用程序116。与上文一致,对此文件访问应 用程序密钥的传输例如使用如上所述的迪菲-赫尔曼密钥交换的共享秘密密钥或公共/私 有密钥对的公共密钥进行加密。
[0043] 一旦安全查看器/编辑器应用程序116从客户端程序114获得其文件访问应用程 序密钥,则文件访问应用程序密钥被用于推导出用于加密/解密用于加密/解密计算设备 100上的数据的主数据库密钥的密钥。为了重申这一点,为了增加安全性,计算设备100上 的数据使用主数据库密钥进行加密,并且此主数据库密钥自身使用用于所述(或此特定) 安全查看器/编辑器应用程序116的针对所述(或此特定)安全查看器/编辑器应用程序 116以该加密的形式存储在计算设备100上的数据存储器中的文件访问应用程序密钥来进 行加密。在需要时,此加密的主密钥可以使用文件访问应用程序密钥由安全查看器/编辑 器应用程序116进行访问和解密,使得安全查看器/编辑器应用程序116然后可以解密数 据。用于数据自身的加密可以使用任何合适的加密技术。特定适用的实例是例如使用随机 的192位密钥作为主数据库密钥的AES-CBC (密码分组链接模式下的高级加密标准密码算 法)。
[0044] 由于安全查看器/编辑器应用程序116取决于用于解锁其自身本地数据存储器的 文件访问应用程序密钥的客户端程序114,因此优选的是,文件访问应用程序密钥不单是由 客户端程序114随机生成并只存储在客户端程序114的本地数据库中的串。如果是这样的 情况,则客户端程序114的卸载/重装通常会导致无法访问先前存储有任何这些查看器/ 编辑器应用程序116的所有数据。因此,优选的是,文件访问应用程序密钥可远程地并且尤 其独立于客户端设备100和客户端程序114回收。
[0045] 实现这一点的特别有用的方式是使文件访问应用程序密钥可从可以远程地从客 户端设备100存储的信息回收。(特定合适的位置例如是上文提及的防火墙170后面的企 业级服务器160、162、164中的一个或一些其他远程数据存储器。)另外,由于文件访问应用 程序密钥在设备记录从远程数据存储器中删除,然后重新提供客户端设备100的情况下可 进行理想回收,因此该文件访问应用程序密钥信息优选存储在与客户端设备100和/或企 业级用户ID的唯一 ID相关联的记录中的远程数据存储器处。优选进行考虑的另一个因素 是安全查看器/编辑器应用程序116首先可以在客户端程序114处于NOC 140或其他远程 数据存储器的覆盖范围之外时(例如可能因为客户端设备100的网络连接不可用)使用并 且在其随后回到覆盖范围之前客户端程序114可以被卸载。因此,恢复安全查看器/编辑 器应用程序116的文件访问应用程序密钥优选地不取决于在除客户端程序114初始激活或 再激活时之外的任何时候客户端程序114使信息与远程数据存储器同步的能力。
[0046] 满足要被安全查看器/编辑器应用程序116使用的文件访问应用程序密钥的这 些要求的一种方式是通过客户端程序114从特定于客户端设备100和/或客户端设备100 的用户的应用程序密钥和所涉及的特定安全查看器/编辑器应用程序的标识符的组合生 成文件访问应用程序密钥。参照图3,在详细的具体实例中,其可实现如下。远程数据存储 器300 (其例如可以是N0C 140或一些其他服务器)存储利用服务的每个企业级用户ID的 随机24字节的"用户安全查看器/编辑器应用程序密钥"。对于与企业级用户ID相关联 的每个激活设备100,即在设备100将激活请求310发送至远程数据存储器之后激活设备 100,从用户安全查看器/编辑器应用程序密钥推导出"设备安全查看器/编辑器应用程序 密钥"320。该推导例如可以是一些基于密码的加密技术。合适实例是公共密钥加密标准的 PKCS#5技术。推导出的设备安全查看器/编辑器应用程序密钥320从远程数据存储器300 发送至客户端设备100上的客户端程序114。客户端程序114然后从接收的设备安全查看 器/编辑器应用程序密钥320并使用唯一对应于各个安全查看器/编辑器应用程序116并 发送至客户端程序114的标识符(诸如数值标识符),例如再次使用PKCS#5技术为客户端 设备100上的每个安全查看器/编辑器应用程序116生成(330)文件访问应用程序密钥。 这会为每个客户端设备100上的每个安全查看器/编辑器应用程序116产生唯一文件访问 应用程序密钥。重要的是,存储在远程数据存储器300处的用户安全查看器/编辑器应用 程序密钥的知识足以推导出所有这些文件访问应用程序密钥。然而,一个安全查看器/编 辑器应用程序116情况的文件访问应用程序密钥的知识不允许推导出不同情况的文件访 问应用程序密钥。因此这提供了安全文件访问应用程序密钥,其可以从远程地从客户端设 备100存储的信息中回收并且不披露用于其他安全查看器/编辑器应用程序116的其他文 件访问应用程序密钥(无论在相同还是在不同客户端设备100上)。
[0047] 图3还示意性地示出了用户将安全查看器/编辑器应用程序116初始安装在客户 端设备100上并启动(340)。而且,图3还示出了在一个实施例中,对于安全查看器/编辑 器应用程序116和客户端程序114之间的初始配对,安全查看器/编辑器应用程序116使用 命令(这里是"AUTH0RIZEREQ"命令350和"AUTHORIZE_RESP"命令360)来交换然后在如 上讨论的椭圆曲线迪菲-赫尔曼密钥交换计算中使用的一对椭圆曲线点。客户端程序114 使用响应AUTHORIZE_RESP命令360来使用获得的共享加密密钥以加密的形式将容器间传 输密钥发送至安全查看器/编辑器应用程序116。此容器间传输密钥然后被用于加密客户 端程序114和安全查看器/编辑器应用程序116之间的后续交换。而且,客户端程序114 使用响应AUTHORIZE_RESP命令360来将文件访问应用程序密钥发送至安全查看器/编辑 器应用程序116,其使用文件访问应用程序密钥来根据需要加密并解密所加密的主密钥,使 得安全查看器/编辑器应用程序116然后可以加密并解密370存储在客户端设备100上的 相关数据。如上文注意到的并且如下面更详细讨论的,用于加密从客户端程序114至安全 查看器/编辑器应用程序116或从安全查看器/编辑器应用程序116至客户端程序114的 交换的加密密钥可以可选地或另外地是分别由客户端程序114和安全查看器/编辑器应用 程序116生成的公共/私有密钥对的公共密钥。作为上述另一个实例,加密密钥可以是初 始握手过程期间,尤其在客户端程序114与安全查看器/编辑器应用程序116之间的连接 是TLS连接的情况下在客户端程序114与安全查看器/编辑器应用程序116之间协商的会 话密钥。
[0048] 在实施例中,客户端程序114支持将各种动作和策略从一些中央控制服务器发送 至以安全的形式将文件或数据存储在客户端设备100上的安全查看器/编辑器应用程序 116和/或其他应用程序和/或容器。此中央控制服务器例如可以是企业级服务器160、 162、164和/或N0C 140或一些其他控制服务器之一并管理客户端设备100以及存储在 客户端设备100上的至少一些应用程序和文件。中央控制中心例如可能想要修改用于容 器中的一个或多个应用程序或文件的某些访问策略等,或删除应用程序或容器或其内的文 件,可能是因为用户设备100已经丢失或被盗。这些动作和策略例如因此可以包括擦除 (wipe)、停工(lockout)、剪切/粘贴限制策略、认证超时(authentication timeout)、硬件 /0S支持等。"停工"是可以发送至客户端设备100以防止对客户端设备100进行访问的消 息。"擦除"是可以发送至客户端设备100以导致擦除(即,删除)容器中包含的所有数据 的消息。诸如剪切/粘贴限制等限制策略防止用户复制、剪切、粘贴使得经由安全查看器/ 编辑器应用程序116对用户可访问的数据。"认证超时"发送至每个安全查看器/编辑器应 用程序116以指示在与客户端程序114重新进行认证交换之前允许多少空闲时间经过(起 然后重新提示用户输入密码)。客户端程序114通常不会将密码复杂性/过期等策略发送 至安全查看器/编辑器应用程序116,因为每个安全查看器/编辑器应用程序116的密码的 设置由客户端程序114自身处理,如上文讨论的。
[0049] 在实例中,客户端程序114可以发送利用安全查看器/编辑器应用程序116或所 涉及的其他应用程序或容器的相关共享容器间传输密钥加密的策略消息,尤其是如果策略 更新被"推动"至安全查看器/编辑器应用程序116或所涉及的其他应用程序或容器。另 夕卜,策略消息例如可以使用如上文讨论的迪菲-赫尔曼密钥交换的共享秘密密钥来进行加 密,尤其是如果策略更新或消息在认证阶段期间发送。再者,可选地或另外地,用于加密客 户端程序114和安全查看器/编辑器应用程序116之间的这些交换的加密密钥可以是分别 由客户端程序114和安全查看器/编辑器应用程序116生成的公共/私有密钥对的公共密 钥,和/或在应用程序之间协商的作为TLS握手处理的一部分的会话密钥。客户端程序114 可以将动作消息(例如,擦除/停工)发送至安全查看器/编辑器应用程序116或所涉及 的其他应用程序或数据或文件容器,而不使用传输加密,因为其不包含必须保密的用户特 定内容,并且当客户端程序114和安全查看器/编辑器应用程序116或其他应用程序或容 器中的任意一个处于锁定状态下时,发送并处理这些消息必须是可能的。在安全查看器/ 编辑器应用程序116或其他应用程序或容器接收并处理这些消息之后,优选将确认消息发 送至客户端程序114,但是这是任选的。要注意,这些动作和策略消息独立于可以从客户端 程序114发送至安全查看器/编辑器应用程序116或其他应用程序的任何文件进行发送, 所述动作和策略消息有效地在"侧信道(side channel)"中发送。
[0050] 图4中示意性地示出了这种情况的实例。中央控制中心400将设备擦除命令410 发送至客户端设备100上的客户端程序114。客户端程序114利用确认应答(ACK)420做 出响应。客户端程序114删除(430)对客户端程序114来说可访问的对应的本地加密数据 库。客户端程序114还将对应的擦除命令(WIPE)440发送至对应的安全查看器/编辑器应 用程序116,其作为响应发送确认应答(WIPE_ACK) 450。安全查看器/编辑器应用程序116 然后还删除460与安全查看器/编辑器应用程序116相关联并符合擦除命令的对应的本地 加密数据库。
[0051] 当客户端程序114以这种方式用于代理动作和策略或将其从中央控制服务器传 递至安全查看器/编辑器应用程序116或其他应用程序时,优选的是,安全查看器/编辑器 应用程序116和其他应用程序都不与中央控制服务器直接连接。反而优选的是,应用程序 将用户认证全部委托给客户端程序114并且在每个这样的用户认证交换期间客户端程序 114单独向它们代理动作和策略。以这种方式,使客户端程序114与中央控制服务器之间的 频繁通信更可能,从而帮助确保动作和策略及时传递至预期安全查看器/编辑器应用程序 116或其他应用程序。
[0052] 为了安全地例如将文件从客户端程序114发送至安全查看器/编辑器应用程序 116或将文件从安全查看器/编辑器应用程序116发送至客户端程序114,在不将未加密的 信息传输或写入至客户端设备1〇〇的存储区域(诸如硬盘或一些其他非瞬态存储装置)的 情况下,文件在一些实施例中以安全的方式通过客户端设备100上的"内部" TCP (传输控 制协议)套接字进行发送。在苹果(商标)i〇S操作系统的环境中这尤其是有用的,因为缺 少NSURL(尤其是内存限制)和UIDocumentlnteractionController (不能使用加密文件名 称)这两者,这些是通常用于允许用户与运行要管理的i〇s的设备上的文件交互的处理。
[0053] 参照图5,在苹果(注册商标)iOS操作系统的环境中使用TCP套接字实现安全套 接字传输的实施例的实例操作如下。交换开始于用户选择500需要发送(因为用户希望访 问文件等)的文件和该文件的目的地(例如,要用于查看或编辑文件的安全查看器/编辑 器应用程序116)。该文件以加密的形式存储在客户端设备100上,其通常可以不同于安全 查看器/编辑器应用程序116访问的加密。一旦用户选择文件和目的地应用程序,发送应用 程序开始在绑定到随机选择端口的本地IP地址(例如,127. 0. 0. 1)的TCP套接字上进行侦 听510。接收安全查看器/编辑器应用程序116 -连接至此本地端口,在端口上进行侦听的 线程就将开始发送加密文件数据。与此同时,发送应用程序组装其将使用iOS openURL命 令发送(520)至接收安全查看器/编辑器应用程序116的STREAM_PUSH命令URL。STREAM_ TOSH命令的目的是改变其应用连接至本地端口以接收(加密)文件数据的安全查看器/编 辑器应用程序116。STREAM_PUSH命令包含要连接的端口号和发送的文件的名称,这两者都 使用容器间传输密钥进行加密。然而,并不是一定需要加密端口号,另外,文件名称相反利 用文件数据通过TCP连接发送。加密IV(初始化向量)可以添加到通过TCP连接发送的文 件数据前面。安全查看器/编辑器应用程序116接收消息,然后在给定的TCP端口上连接 至客户端程序114 (在背景中),并且它们建立套接字连接530。仍然在该背景下,客户端程 序114然后逐块地将文件解密到存储器中,将文件重新加密成可以由安全查看器/编辑器 应用程序116解密的格式,并通过套接字将成块的数据(540)发送至解密、重新加密并写入 数据的安全查看器/编辑器应用程序116。该方法避免未加密数据被发送至或写入至客户 端设备100的磁盘。
[0054] 在客户端程序114将文件传输至安全查看器/编辑器应用程序116的实例的环境 中讨论上述对文件进行的安全套接字传输。当安全查看器/编辑器应用程序116将文件传 输至客户端程序114时,反转过程本质上是适用的。例如如果用户希望发送包含或附有使 用安全查看器/编辑器应用程序116查看和/或编辑的文件的电子邮件,或希望保存此文 件,则这种情况可能会发生。将文件从安全查看器/编辑器应用程序116发送至客户端程 序114,其然后可以保存文件和/或使其发送至或附在电子邮件等上。
[0055] 更详细地,在客户端设备100运行苹果(注册商标)iOS操作系统的环境下,本发 明实施例的具体实例可以操作如下。首先,为了将从客户端程序114传递至安全查看器/ 编辑器应用程序116的请求认证为源自客户端程序114,并且相反,为了将从安全查看器/ 编辑器应用程序116传递至客户端程序114的请求认证为源自所支持的安全查看器/编辑 器应用程序,检查作为每个请求的"sourceApplication"参数传递的应用程序bundlelD。 当发送过程进行接收过程的应用程序被注册为处理程序的URL的"openURL"调用时,发送 过程的应用程序"bundlelD"通过主机操作系统发送至接收过程。保证这些"bundlelD" 对苹果AppStore提供的应用程序来说是唯一的。因为只有企业提供的或AppStore的应 用程序才可以安装在(没有破解的)iOS设备上,该信息可以被用作正在提出请求的应用 程序的认证的形式。然后,为了将文件发送至安全查看器/编辑器应用程序116,客户端程 序114最初使用iOS UIDocumentlnteractionController来向用户呈现接受特定附件的 应用程序列表(基于文件类型)。支持文件查看和/或编辑的每个安全查看器/编辑器 应用程序116在应用程序的属性列表中注册为与由安全查看器/编辑器应用程序116支 持的文件类型对应的文件扩展名的处理程序。例如,为了处理pdf文件,安全查看器/编 辑器应用程序116应该注册处理带有扩展名"pdf"的文件。出于安全的原因,客户端程序 114 实现 UIDocumentlnteractionControllerDelegate 的 documentlnteractionControll er: canPerformAction方法以便防止"复制"和"打印"选项出现在"打开方式"对话框中。 UIDocumentlnteractionController机制也用于将大文件从安全查看器/编辑器应用程序 116传输至客户端程序114。客户端程序114在其自身的应用程序属性列表中注册为特定 统一类型标识符(UTI)的处理程序。这允许安全查看器/编辑器应用程序116,在实例化 UIDocumentlnteractionController之后,通过将控制器的UTI设定为特定UTI对其进行 配置以便只将文件发送至客户端程序114。控制器仍然需要显示"打开方式"对话框,但对 话框只列出客户端程序114(原因是其大概只是支持指定UTI的应用程序)。openURL可以 用于所有非文件传输消息并且用于发起上文讨论的TCP STREAM_PUSH通信。另外,可以注 意,优选不允许0S使用标准UIDocumentlnteractionController机制将文件发送至安全查 看器/编辑器应用程序116。反而,一旦用户选择文件的目标应用程序,就进行检查以确定 目标应用程序116是否为表明其是安全查看器而不是标准iOS文件查看器的特殊URL的支 持刊登广告。如果这样,则取消UIDocumentInteractionController(550)并使用上述本地 TCP连接/STREAM_PUSH机制520将文件推动至所选的应用程序116。图5还示出了上文提 到的"AUTH0RIZE_REQ"命令350以及"AUTH0RIZE_RESP"命令360以及存储在客户端设备 100上的相关数据的加密和解密370。
[0056] 正如上面注意到的,可选地或另外地,安全查看器/编辑器应用程序116(或其他 应用程序)和客户端程序114可以分别生成公共/私有密钥对,其中各个公共密钥是用于 加密应用程序之间的通信的共享加密密钥。对于安全查看器/编辑器应用程序116与客户 端程序114之间的初始配对,每个应用程序将包含其自身公共密钥的证书发送至其他应用 程序。在一些实施例中,各个公共密钥被用作用于加密应用程序之间的后续通信的共享加 密密钥。在这些实施例中,通信的发送者优选签名利用其私有密钥发送的消息。在其他实施 例中,通过TCP连接的所有后续通信都可以使用TLS(传输层安全性)确保。在此情况下,公 共/私有密钥对分别用于加密/签名安全查看器/编辑器应用程序116 (或其他应用程序) 和客户端程序114之间的初始握手,在此期间,协商对称"会话"密钥,此会话密钥然后用于 批量加密通过连接发送的数据。在这些情况下,在安全查看器/编辑器应用程序116和客 户端程序114之间的后续通信期间,发起连接的应用程序通过核实初始TLS握手期间提供 的证书与先前从其他应用程序获得的证书匹配来认证其连接的应用程序。类似地,接受传 入连接的应用程序通过核实TLS握手期间提供的客户端证书与先前从其他应用程序获得 的证书匹配来认证其连接的应用程序。另外,证书的交换也可以使安全查看器/编辑器应 用程序116 (或其他应用程序)和客户端程序114能够确定是否授权它们彼此交换,例如通 过验证这两个证书是否由相同的权威(例如,相同的企业)签名。例如,指定企业可以允许 由指定企业激活的应用程序只与针对相同企业激活的应用程序交互。如果证书由不同企业 签名,则一个企业或其他的策略可以被实现为防止应用程序交互。对于这种情况和相关事 件的进一步讨论,可以参照2012年7月17日提交的共同未决美国专利申请第61/672, 457 号,其全部内容通过引用并入本文。
[0057] 尽管参照附图在本文中描述的实施例的至少某些方面包括在处理系统或处理器 中执行的计算机处理,但是本发明还扩展到计算机程序,特别是在适于将本发明付诸实践 的载体上或其中的计算机程序。程序可以是非瞬态源代码、目标代码、代码中间源代码和目 标代码的形式(诸如以部分编译的形式),或者适用于实现根据本发明的处理的任何其他 非瞬态形式。载体可以是能够携带程序的任何实体或设备。例如,载体可包括存储介质,诸 如固态驱动器(SSD)或其他基于半导体的RAM ;R0M(例如CD ROM或半导体ROM);磁记录介 质(例如软盘或硬盘);一般的光学存储设备等。
[0058] 上述实施例应被理解为本发明的说明性实例。可设想本发明的其他实施例。应理 解,关于任何一个实施例所描述的任何特征可单独使用或与所描述的其它特征组合,并且 还可与任何其他实施例中的一个或多个特征或任何其他实施例的任何组合来组合使用。此 夕卜,在不脱离在所附权利要求中所限定的本发明的范围的情况下,也可采用上面未描述的 等价物和修改。
【权利要求】
1. 一种操作计算设备的方法,所述方法包括: 生成由数据访问应用程序使用的数据访问应用程序密钥以能够利用所述数据访问应 用程序密钥解密以加密的形式存储在所述计算设备上的数据; 利用所述数据访问应用程序的标识符和特定于所述计算设备和/或所述计算设备的 用户中的至少一个的应用程序密钥来生成所述数据访问应用程序密钥。
2. 根据权利要求1所述的方法,其中,在所述计算设备上接收来自远程数据存储器的 特定于所述计算设备和/或所述计算设备的用户中的至少一个的所述应用程序密钥。
3. 根据权利要求1所述的方法,其中,在所述计算设备上接收来自远程数据存储器的 特定于所述计算设备和/或所述计算设备的用户中的至少一个的所述应用程序密钥,在所 述远程数据存储器中基于所述计算设备和/或所述计算设备的用户中的所述至少一个的 标识符来生成所述应用程序密钥。
4. 根据权利要求1所述的方法,其中,通过所述数据访问应用程序使用所述数据访问 应用程序密钥来解密被用于加密所述数据的密钥以使所述数据访问应用程序能够解密所 述数据。
5. -种包括处理系统的计算设备,所述处理系统被构造并配置为使所述计算设备: 生成由数据访问应用程序使用的数据访问应用程序密钥以能够利用所述数据访问应 用程序密钥解密以加密的形式存储在所述计算设备上的数据; 利用所述数据访问应用程序的标识符和特定于所述计算设备和/或所述计算设备的 用户中的至少一个的应用程序密钥来生成所述数据访问应用程序密钥。
6. 根据权利要求5所述的计算设备,被配置为从远程数据存储器接收特定于所述计算 设备和/或所述计算设备的用户中的至少一个的所述应用程序密钥。
7. 根据权利要求5所述的计算设备,被配置为从远程数据存储器接收特定于所述计算 设备和/或所述计算设备的用户中的至少一个的所述应用程序密钥,在所述远程数据存储 器中基于所述计算设备和/或所述计算设备的用户中的所述至少一个的标识符生成所述 应用程序密钥。
8. 根据权利要求5所述的计算设备,经配置使得所述数据访问应用程序密钥能够被所 述数据访问应用程序使用以解密用于加密所述数据的密钥以使所述数据访问应用程序能 够解密所述数据。
9. 一种包括代码的计算机程序,该代码使得当在计算设备上执行所述计算机程序时, 所述计算设备被配置为: 生成由数据访问应用程序使用的数据访问应用程序密钥以能够利用所述数据访问应 用程序密钥解密以加密的形式存储在所述计算设备上的数据; 利用所述数据访问应用程序的标识符和特定于所述计算设备和/或所述计算设备的 用户中的至少一个的应用程序密钥来生成所述数据访问应用程序密钥。
10. 根据权利要求9所述的计算机程序,包括使得所述计算设备被配置为从远程数据 存储器接收特定于所述计算设备和/或所述计算设备的用户中的至少一个的所述应用程 序密钥的代码。
11. 根据权利要求9所述的计算机程序,包括使得计算设备被配置为从远程数据存储 器接收特定于所述计算设备和/或所述计算设备的用户中的至少一个的所述应用程序密 钥的代码,在所述远程数据存储器中基于所述计算设备和/或所述计算设备的用户中的所 述至少一个的标识符生成所述应用程序密钥。
12.根据权利要求9所述的计算机程序,包括使得所述数据访问应用程序密钥能够被 所述数据访问应用程序使用以解密用于加密所述数据的密钥以使所述数据访问应用程序 能够解密所述数据的代码。
【文档编号】H04L9/08GK104145446SQ201380011113
【公开日】2014年11月12日 申请日期:2013年2月27日 优先权日:2012年2月29日
【发明者】肖恩·迈克尔·昆兰, 凯文·查尔斯·勒曼, 哈尼夫·索马尼, 彼得·马克西米利安·巴克 申请人:良好科技公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1