隔离的集合中的密码操作的制作方法

文档序号:18518527发布日期:2019-08-24 09:37阅读:261来源:国知局
隔离的集合中的密码操作的制作方法

密码术可以提供各种身份验证和数据保护工具。作为示例,非对称密钥对的公钥可以用于加密数据并验证密码签名,而非对称密钥对的私钥可以用于解密数据并生成密码签名。结果,双方可以使用多个非对称密钥对(例如,每一方一个密钥对)来安全地通信,验证所接收数据的来源,并验证对方的身份。传统上,建立这样的密码系统需要各种密钥交换协议或机制中的至少一个,以确保密码系统内的用户能够访问用于执行这种密码操作的必要密钥(例如,加密和签名验证,除其他外)。

关于这些和其他一般性考虑,已经进行了本文公开的方面。而且,尽管可以讨论相对具体的问题,但是应该理解,这些实施例不应限于解决在本公开的

背景技术:
或其他地方所识别的具体问题。



技术实现要素:

本公开的示例描述了用于在隔离的集合中执行密码操作的系统和方法。在示例中,用户可以与隔离的集合内的用户资源相关联。用户资源可以与一个或多个密码密钥相关联,其可以从用户自动生成或接收。在一些示例中,提供密码密钥可以是获得对隔离的集合的访问的先决条件。在一个示例中,用户可以通过访问由隔离的集合存储的与接收方相关联的公钥来加密资源。在另一示例中,接收方可使用由隔离的集合存储的与发送方相关联的公钥来验证密码签名。结果,这种加密操作可以自动发生,因为必要的密码密钥可以从已知位置供隔离的集合的其他用户访问。

在另一示例中,可以在发起对话会话时生成密码密钥。在对话会话期间发送的消息可以使用密码密钥加密并存储在隔离的集合中。在一些示例中,还可以如上所述对消息进行签名。密码密钥可以使用每个会话参与者的公钥加密并提供给每个会话参与者。当新会话参与者希望获得对话会话的访问权时,可以从现有会话参与者请求授权并由其提供授权。授权可以使现有会话参与者的加密的密码密钥被解密,之后可以使用新会话参与者的公钥对其进行重新加密。然后可以将重新加密的密码密钥提供给新的会话参与者,并且然后新的会话参与者可以使用它来访问和参与对话会话。

提供本发明内容是为了以简化的形式介绍一些概念,这些概念将在下面的具体实施方式中进一步描述。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。示例的其他方面、特征和/或优点将部分地在下面的描述中阐述,并且部分地将从描述中显而易见,或者可以通过本公开的实践来学习。

附图说明

参考以下附图描述非限制性和非穷举性示例。

图1示出了用于在隔离的集合内执行密码操作的示例系统的概述。

图2示出了用于管理资源标识符的隔离的集合和对应关系的示例系统的概述。

图3a示出了示例隔离的集合的概述。

图3b到图3e示出了可用于遍历隔离的集合的示例查询模型。

图4示出了示例隔离的集合的概述。

图5a示出了存储在隔离的集合中的示例加密对话的概述。

图5b-图5c示出了与加密对话相关联的示例密钥库的概述。

图6示出了用于验证隔离的集合内的签名的示例方法的概述。

图7示出了用于加密隔离的集合内的资源的示例方法的概述。

图8示出了用于隔离的集合内的参与者当中的加密分组通信的示例方法的概述。

图9示出了用于新参与者获得对分组对话会话的访问的示例方法的概述。

图10是示出了可以利用其实现本公开的各方面的计算设备的示例物理组件的框图。

图11a和图11b是利用其可以实践本公开的各方面的移动计算设备的简化框图。

图12是其中可以实践本公开的各方面的分布式计算系统的简化框图。

图13示出了用于执行本公开的一个或多个方面的平板计算设备。

具体实施方式

下面参考附图更全面地描述本公开的各个方面,附图形成本发明的一部分,并且示出了具体的示例性方面。然而,本公开的不同方面可以以许多不同的形式实现,并且不应该被解释为限于这里阐述的方面;而是,提供这些方面,使得本公开彻底和完整,并且将向本领域技术人员充分传达这些方面的范围。方面可以作为方法、系统或设备来实施。因此,方面可以采用硬件实现、完全软件实现或组合软件和硬件方面的实现的形式。因此,以下详细描述不应被视为具有限制意义。

本公开提供了用于在隔离的集合内执行密码操作的系统和方法。资源可以是文档、与文档有关的信息(例如,修订、评论或注释、元数据、属性等)、消息、对话、存在更新或指示、日历事件、包括与用户有关的信息(例如,用户名、用户身份、电子邮件地址、电话号码等)的用户资源以及其他。文档可以包含任何类型的信息,包括但不限于文本数据、图像或视频数据、音频数据、绘图、模拟、3d模型、密码密钥、共享秘密、计算、算法、配方、公式或任何其组合。在一些示例中,资源可以由资源标识符标识,资源标识符可以是指向特定资源的持久统一资源标识符(uri)。资源标识符还可以是统一资源定位符(url)、统一资源名称(urn)或指向资源本身的其他合适的标识符或指针。在一个示例中,资源可以存储在隔离的集合中。在另一示例中,资源可以存储在数据集合中,而相关联的资源标识符可以存储在隔离的集合中。例如,资源可以驻留在远程服务器上,并且资源标识符可以用于取回资源(例如,资源可以存储在远程web服务器上,其中资源标识符包括url)。识别资源的位置可以包括使用例如正则表达式来解析资源标识符,将资源标识符的一个或多个部分提供给搜索实用程序,执行资源标识符等。隔离的集合内的关系可以识别隔离的集合中的两个或多个资源之间的相关性。在一些示例中,隔离的集合可以是多个通用数据节点(udn)、文档图或资源和关系的其他集合。

资源或资源标识符和/或关系可以由开发者或其他外部源提供。这些资源、资源标识符和关系在本文中称为断言资源、断言资源标识符和断言关系。通过针对已经在隔离的集合中的数据执行规则集,还可以丰富每个隔离的集合以创建附加关系,并且在一些示例中,创建附加资源标识符。通过执行这样的规则集生成的附加数据在本文中称为推断数据,诸如推断关系、推断资源和推断资源标识符。然后可以针对隔离的集合执行查询,该隔离的集合包括断言的数据和推断的数据,以提供比单独仅从断言的数据可获得的更丰富的结果。隔离的集合也可以存储为图形数据库,并且可以以图形格式显示对隔离的集合的查询的结果,其中资源被显示为节点并且关系被显示为边,以及其他显示格式(例如,作为树、有向图、矩阵、表格等)。如这里所使用的,资源标识符的隔离的集合以及那些资源或资源标识符之间的关系可以被称为“集合”。此外,可以通过各种技术来控制对隔离的集合的访问,以便为每个隔离的集合中的内容提供额外的安全措施,并且每个隔离的集合可以具有不同的规则集以生成唯一且不同的推断数据以满足每个应用的特定需求。

在隔离的集合内,可以使用密码密钥来对资源进行签名和/或加密。在一些示例中,与资源(例如,关于加密操作、最后修改时间、视图计数、安全访问控制列表等的信息)相关的附加信息(例如,元数据、属性等)可以嵌入在资源中或与资源相关联。在一个示例中,资源和/或与资源有关的附加信息的至少一部分可以被加密,而资源和/或相关信息的至少另一部分可以保持未加密。此外,可以使用不同的密码密钥来对不同资源、资源部分或与隔离的集合内的资源相关的信息进行签名和/或加密。在其他示例中,密码密钥或密码密钥对的一部分(例如,公钥)可以存储在隔离的集合内或另一个已知位置,以便于在执行密码操作时进行取回。密码密钥可以是对称密钥或由公钥和私钥组成的非对称密钥对以及其他密钥类型。在一个示例中,公钥可以用于加密和签名验证,而私钥可以用于解密和签名生成。在另一示例中,私钥可以存储在一位置处或具有除公钥的访问控制之外的访问控制,使得私钥的可用性低于公钥。

可以使用各种加密算法,包括但不限于高级加密标准(aes)、数字签名算法(dsa)、rivest-shamir-adleman(rsa)和椭圆曲线密码术(ecc)以及其他或其任何组合。在一些示例中,一个密码密钥(或密钥对)可以用于签名或验证操作,而另一密码密钥(或密钥对)可以用于执行加密或解密操作。与其他密码密钥相比,每个密码密钥可以具有相似或不同的属性。作为示例,每个密钥可以具有相似或不同的密钥长度,或者可以使用相似或不同的密码算法,以及可以对特定密码算法唯一的其他类似或不同的属性。本领域技术人员将意识到,在不脱离本公开的精神的情况下,可以使用其他密码算法、密钥类型或系统。

密码密钥可以存储在密钥库中。在一个示例中,与密码密钥有关的信息也可以存储在密钥库中,所述信息包括但不限于算法类型、一个或多个初始化向量或密钥到期日期。密钥库可以是软件组件(例如,隔离的集合、加密的数据存储、访问受限的数据库等),或者可以是硬件设备(例如,硬件安全模块、可信平台模块或其他加密硬件设备)。一个或多个密钥库可以与用户(例如,用户资源)相关联并且用于存储与用户相关联的密码密钥。在一些示例中,通过密钥库存储密码密钥可以使用用户的公钥加密,使得它们仅可以使用用户的私钥来访问。在一个示例中,不是将密码密钥存储在与用户相关联的密钥库中,替代地而是密码密钥本身可以与用户相关联并被存储。

在另一示例中,可以存在用于存储用于一个或多个用户的密码密钥的中央密钥库。作为示例,除了其他原因之外,可以使用中央密钥库来保留密码密钥以便满足数据保留要求或法律义务。在一个示例中,中央密钥库可以被加密,使得必需的解密密钥由受信任的第三方存储在托管中。可以使用访问控制列表或其他访问控制机制来控制对密码密钥的访问。在一些示例中,与用户相关联的私钥可以与相关公钥分开地存储或访问受限,使得仅用户(或用户的一小分组,例如,在部门内、用户的经理等)可以访问私钥,而相关的公钥可以更广泛地可用和/或存储在如上所述的已知位置。

密码密钥可以与标识符相关联。标识符可用于访问或定位密码密钥(例如,在密钥库、隔离的集合、数据存储等中)。在一些示例中,标识符可以指示特定密钥库或提供可以用于定位密码密钥的另一指示。此外,标识符可以与密码密钥一起存储或与密码密钥相关联。作为示例,存储密码密钥的密钥库还可以存储与密码密钥相关联的标识符。密钥库可以使用标识符来索引密码密钥以便促进取回。标识符可以是密钥指纹、密钥的散列或与密钥有关的信息(例如,md5、sha-1等),或标识符(例如,全局唯一标识符(guid))、统一资源标识符(uri)等)以及其他。

用户可以是访问、修改或与隔离的集合交互的一个或多个实体。作为示例,用户可以是个人,包括但不限于具有特定职位或职称的人或雇员(例如,系统管理员,管理者等)。在另一示例中,用户可以是一组人,诸如组织、组织内的部门、组内的人员列表等。在一些示例中,用户可以是计算系统内的一个或多个实体,包括但不限于用户帐户、应用、服务、进程或硬件或软件模块。本领域技术人员将意识到,在不脱离本公开的精神的情况下,任何实体可以是用户。

用户可以在隔离的集合中具有与其用户资源相关联的一个或多个密码密钥。在某些实例中,这种关联可以是与隔离的集合交互的先决条件(例如,访问资源、存储资源、发送资源、创建关系和/或修改关系以及其他)。在一个示例中,可以自动生成一个或多个密码密钥,可以从另一个实体(例如,从用户、不同的硬件或软件模块等)接收或确定一个或多个密码密钥或其任何组合。在一些示例中,可以将一个或多个安全策略应用于密码密钥。作为示例,密码密钥可能需要使用某种算法,具有一定长度,或者以某种方式存储(例如,使用加密硬件设备、访问受限数据存储等)以及其他。要求可以基于上下文而变化,包括但不限于与用户相关联的特征或属性或由用户在隔离的集合内存储或访问的数据。

隔离的集合的用户可以具有与在一个或多个已知位置处可容易地访问的其他用户相关联的密码密钥,从而提供对用户的密码密钥的随时访问,以便执行密码操作(例如,签名验证、资源加密,等等。)。作为示例,可以使用用户的密码密钥(例如,密钥对的私钥)自动或手动地对资源进行签名,使得其他用户可以使用从已知的位置可用的密码密钥(例如,密钥对的公钥,其可以与用户的用户资源相关联)来自动或手动验证密码签名。当用户与其交互时(例如,当用户创作资源、修改资源、共享或发送资源等)时,资源可以由用户自动签名。类似地,当另一个用户访问资源时,可以自动验证签名。作为示例,反病毒应用可以是用户,并且可以在确定资源不是恶意的或未以其他方式被感染之后,提供这样的指示(例如,作为元数据、作为一个或多个属性、作为关系等),所述指示伴随着使用与反病毒应用相关联的私钥(例如,与反病毒应用的用户资源相关联的密码密钥)生成的签名。

在另一示例中,当发送方将资源发送给接收方时,可以自动加密资源。在一个示例中,资源可以包括指示不应该发送资源,除非可以以加密格式发送资源的标志。假定接收方的公钥可以从已知位置获得,则发送方可以访问与接收方相关联的密码密钥(例如,密钥对的公钥,其可以与接收方的用户资源相关联)。然后,发送方可以使用公钥加密资源,并将加密的资源提供给接收方。接收方可以访问密钥对的私钥以解密资源。在另一示例中,访问私钥可以包括将加密资源的数据的至少一部分提供给包含私钥的密钥库,其中密钥库可以解密数据的一部分并作为响应提供未加密的数据。结果,接收方不需要接收实际的密码密钥来执行解密或签名生成操作。在一些示例中,如上所述,资源也可以由发送方签名,因此接收方还可以验证发送方的签名。

资源和用户资源之间可能存在一个或多个断言或推断的关系。在一个示例中,可以在用户对资源执行加密操作时(例如,当用户对资源进行签名时,当用户加密资源时等)创建关系。在另一示例中,资源和用户资源之间可能已经存在预先存在的关系(例如,因为用户创作或修改资源、发送或接收资源,或参与与资源的各种其他交互)。在一些示例中,与用户资源相关联的用户和执行密码操作的用户可以是不同的。例如,当第一用户使用第二用户的公钥对资源进行加密时,可以在资源和与第二用户相关联的用户资源(而不是与第一用户相关联的用户资源)之间形成关系,从而指示可以使用与第二用户相关联的密码密钥来解密资源。结果,可以通过评估资源的关系来确定与资源相关联的用户。类似地,可以使用与用户相关联的用户资源的关系来确定用户与之交互的一个或多个资源。

为了加密资源以供由接收方解密,用户可以访问与接收方相关联的用户资源。用户资源可以具有与一个或多个密码密钥的关系,并且然后该一个或多个密码密钥可以被访问并用于生成资源的加密表示。在一个示例中,密钥对可以与资源本身相关联。密钥对中的至少一个密钥可以是访问受限的,使得它不能被广泛访问(例如,它可以由发送方和接收方或某个分组的用户访问,以及其他)。在该示例中,相关联的密钥对的公钥可以用于生成资源的加密表示。加密的表示可以被存储和/或提供给接收方。提供资源可以包括将资源发送到接收方或将资源存储在隔离的集合中(作为新资源、重写或替换未加密的资源等)并向接收方提供通知以及其他。在一些示例中,可以在加密的资源和接收方之间形成关系(例如,“接收方”关系),其中该关系可以提供关于哪个用户的密码密钥用于加密操作的指示。

在另一示例中,资源可以由用户签名(例如,在发送资源之前或之后,以使其他用户能够验证资源的状态,作为不可否认技术等)。可以使用与用户相关联的私钥或者在一个示例中与资源相关联的私钥来对资源签名。可以在签名的资源和与用户相关联的用户资源之间形成关系,使得可以基于该关系来确定哪个用户对资源进行签名。结果,为了验证资源的签名,可以评估资源的关系以确定与签名者相关联的用户资源。可以评估签名者的用户资源的关系以识别与签名者相关联的公钥,然后可以使用该公钥来验证资源的签名。

对话会话的消息可以存储在隔离的集合中,其中可以使用密码密钥来加密对话的消息。如上所述,密码密钥可以是非对称密钥对或对称密钥以及其他。可以在发起对话会话时生成密码密钥。在一些示例中,与密码密钥相关联的标识符可以存储在隔离的集合中,使得可以在密码密钥和在对话会话期间发送的消息之间形成关系。密码密钥可以分发给会话的参与者。在一个示例中,分发密码密钥可以包括将密码密钥的加密表示发送给每个用户,其中密码密钥已经用如隔离的集合所指示的用户的公钥加密。然后,每个用户可以存储密码密钥的加密表示(例如,存储在密钥库中、隔离的集合中等)。在另一示例中,可以将密码密钥提供给参与者,之后参与者可以加密和存储密钥(例如,存储在密钥库中,使用加密硬件设备等)。在一个示例中,作为存储密钥的结果,密钥可以由存储组件加密。在一些示例中,密码密钥可以由系统保留(例如,在中央密钥库中,由受信任的第三方托管等),以便满足数据保留策略或其他法律义务。当访问对话会话或发送消息时,用户可以使用他/她的私钥来解密加密的密钥并相应地使用解密的密钥。在一些示例中,根据本文公开的方面,在对话会话期间传送的消息可以由发送方签名和/或由接收方验证。在另一示例中,可以针对对话会话的至少一部分在本地缓存解密的密钥。

在某些时候,可以将新的会话参与者添加到对话会话中。新会话参与者可以请求来自先前存在的参与者的访问,如果被授权,则可以使用先前存在的参与者的私钥来解密先前存在的参与者的加密的密码密钥,并使用新会话参与者的公钥(例如,可以由隔离的集合存储)来重新加密。然后,新的对话参与者可以存储加密的密码密钥,并使用加密的密码密钥的解密的表示来访问和参与对话会话。作为接收密码密钥的结果,新参与者可能能够访问使用密码密钥加密的消息,即使它们可能已经在新参与者加入对话会话之前被传送。

图1示出了用于在隔离的集合内执行密码操作的示例系统的概述。示例系统100可以是相互依赖的组件的组合,其相互作用以形成用于执行委托认证的集成整体。在各方面,系统100可以包括硬件组件(例如,用于执行/运行操作系统(os))和/或在硬件上运行的软件组件(例如,应用、应用程序编程接口(api)、模块、虚拟机、运行时库等)。在特定方面,系统100可以为软件组件提供执行、评估操作约束集以及利用系统100的资源或设施的环境。在这些方面,环境可以包括或安装在一个或多个处理设备上。例如,软件(例如,应用、操作指令、模块等)可以在诸如计算机、移动设备(例如,智能手机/电话、平板电脑、膝上型电脑、个人数字助理(pda)等)的处理设备和/或任何其他电子设备上运行。作为处理设备操作环境的示例,参考图10-图13中描绘的示例性操作环境。在其他实例中,这里公开的系统的组件可以分布在多个设备上并且可以由多个设备执行。例如,可以在客户端设备上进行输入,并且可以从网络中的其他设备(例如,服务器设备、网络设备、其他客户端设备等)处理或访问信息。

如所呈现的,系统100包括客户端设备102a-c、分布式网络104,以及包括一个或多个服务器(例如,服务器设备106a-c)的分布式服务器环境。本领域技术人员将意识到,诸如系统100之类的系统的规模可以变化,并且可以包括比图1中描述的组件更多或更少的组件。在一些方面,系统100的组件之间的接合可以远程发生,例如,其中系统100的组件可以分布在分布式网络的一个或多个设备上。

在方面中,客户端设备102a-c可以被配置为经由用户界面组件或其他输入单元接收输入。输入的示例可以包括语音、视觉、触摸和文本输入。界面组件可以实现各种数据集和图形表示的创建、修改和导航。在示例中,各种数据集可以包括(或以其他方式与其相关联),例如,资源标识符、资源元数据、关系信息、断言关系、图形映射信息、查询数据、规则集,例如推理规则、授权信息、认证信息等,如下面进一步详细讨论的。通常,数据集存储在一个或多个服务器设备106a-c上并且可由客户端设备102a-c访问。然而,在一些示例中,数据集可以至少部分地存储在客户端设备102a-c中的一个或多个上。各种数据集中表示的底层资源可以本地存储或存储在客户端设备102a-c可访问的数据存储中,例如云存储应用。在至少一个示例中,各种数据集(或其部分)中表示的底层资源可以分布在客户端设备102a-c上。例如,客户端设备102a(例如,移动电话)可以本地存储数据集中表示的资源的第一部分,客户端设备102b(例如,平板电脑)可以本地存储资源的第二部分,以及客户端设备102c(例如,膝上型计算机)可以在本地存储数据集中表示的资源的剩余部分。在示例中,客户端设备102a-c可以访问数据集中包括的所有资源,可以访问数据集中包括的资源的子集,或者可替换地,不能访问数据集中包括的任何资源。

客户端设备102a-c还可以被配置为询问包括与各种数据集中的资源标识符相对应的资源的数据存储。在示例中,客户端设备102a-c可以经由分布式网络104询问内容提供商,例如服务器设备102a-c。询问可以包括识别资源所在的远程设备,和/或确定远程设备(或者服务/单独的远程设备)是否具有对资源的经认证的访问。如果已经认证了对资源的访问,则客户端设备102a-c可以从远程设备取回认证指示。客户端设备102a-c可以使用认证指示来提供对包括相对应的资源标识符的各种数据集中的一个或多个的访问。

服务器设备106a-c可以被配置为存储和/或提供对一个或多个资源的访问。例如,服务器设备102a可以是web服务器,服务器设备102b可以是包括协作消息传送工具和日历应用的设备,而服务器设备102c可以是电子邮件服务器。这些设备中的每一个可以包括可以通过一个或多个认证机制访问的资源库。在示例中,服务器设备106a-c可以在接收到针对资源的请求时执行或监视认证过程。如果认证成功,则认证设备可以存储认证指示或在指定时间段维持该认证指示。当该时间段期满时,服务器设备106a-c可以移除或尝试更新认证指示。在示例中,服务器设备106a-c可以向询问客户端设备提供认证指示。在一些方面,服务器设备106a-c还可以被配置为存储各种数据集和图形表示的至少一部分,如上所述。

图2示出了用于管理资源标识符和对应的关系的隔离的集合的示例系统200的概述。在系统200中实现的隔离的收集技术可以包括图1中描述的委托认证技术中的一个或多个或与之相关联。在替换示例中,单个设备(包括诸如处理器和/或存储器的一个或多个组件)可以执行分别在系统100和200中描述的处理。

关于图2,系统200可以包括集合创建应用202和204、集合环境206、集合208和210、实体212和214、资源标识符216、218、220、222、224和226,以及资源228、230、232、234、236以及238。在各方面,集合创建应用202和204可以是被配置为创建、推断、操纵、导航和可视化各种资源、关系和图形表示的应用或服务。集合创建应用202和204可以定义资源(例如,人、文件、任务、邮件、文档、日历事件等)之间的关系集合以及对这些集合执行查询。集合创建应用202和204还可以提供用于定义和存储用于推断集合中的一个或多个关系的规则集,以及显示集合数据的图形表示。定义的规则集可以存储在集合本身中,并且在一些示例中作为元数据存储在集合内。在示例中,可以在客户端设备上或在分布式环境中的一个或多个设备上安装和执行集合创建应用202和204。例如,集合创建应用202可以安装在客户端设备102a上,集合创建应用204可以安装在客户端设备102b上,并且与服务器设备106a相关联的集合创建服务可以是客户端设备102c可访问的。

在各方面中,集合创建应用202和204可以访问文件目录或执行环境,例如环境206。环境206可以与集合创建应用并置,或者环境206可以本地远离集合创建应用。环境206可以提供对数据集合(例如,集合208和210)中的一个或多个的访问。在示例中,可以使用由集合创建应用202和204生成和/或维护的一组或多组许可来确定对数据集合的访问。这些权限集可以在一个或多个数据集合中不同。结果,可能无法从集合创建应用202和204中的一个或多个访问数据集合(或与其相关联的功能)中的一个或多个。

集合208和210可以分别包括断言的资源标识符和对应关系的隔离的集合。隔离的集合中的关系可以手动定义,或者可以使用一个或多个规则集自动导出。可以使用直接关联数据集合中的资源并提供用单个操作取回关系数据的图形结构来表示隔离的集合。每个隔离的集合可以包括对该隔离的集合唯一的资源标识符。可替换地,隔离的集合可以包括一个或多个备选的隔离的集合中包括的资源标识符。例如,如图2所示,集合208可以包括资源标识符216、218、220和222,并且集合210可以包括资源标识符220、222、224和226。资源标识符216、218、220、222、224和226可以对应于和/或标识一个或多个资源的位置。如这里所使用的,资源标识符引用现有资源,但其本身不是资源。资源标识符的示例性类型包括但不限于统一资源标识符(例如,统一资源定位符(url)、统一资源名称(urn)等)、ip地址、存储器或存储地址,以及类似。本领域技术人员将意识到,在不脱离本公开的范围的情况下,本文公开的各个方面可以采用任何类型的标识符。识别资源的位置可以包括使用例如正则表达式来解析资源标识符,向搜索实用程序提供资源标识符的一个或多个部分,执行资源标识符等。在各方面,访问数据集合不保证访问由每个数据集合中包含的资源标识符标识的资源。例如,尽管用户可能能够访问和操纵集合208,但是用户可能未被授权访问与集合208中的资源标识符相对应的底层资源中的一个或多个。

资源提供者212和214可以被配置为存储和/或提供对一个或多个资源的访问。这样,这里使用的资源提供者可以是数据存储、云服务提供者、客户端计算设备、服务器计算设备、分布式设备系统,例如,企业网络、应用、软件平台(例如,操作系统、数据库等)等。在各方面,资源提供者212和214可以(或可以访问)各种不同的数据源,例如内容提供者、数据存储、各种应用数据集等。数据存储可以包括与一个或多个资源标识符相对应的一个或多个资源。例如,如图2所示,资源提供者212可以是包括各种不同类型的资源的数据存储,所述各种不同类型的资源诸如资源228(例如,文档1(d1))和资源230(例如,呈现2(pi))并且资源提供者214可以是联系人管理应用,包括联系人资源232(例如,联系人1(ci))、234(例如,联系人2(c2))、236(例如,联系人3(c3))和238(例如,联系人4)(c4))。在该示例中,资源标识符216可以对应于资源228;资源标识符218可以对应于资源230;资源标识符220可以对应于资源232;资源标识符222可以对应于资源234;资源标识符224可以对应于资源236;资源标识符226可以对应于资源238。在一些方面,资源提供者212和214可以由集合创建应用202和204访问。集合创建应用202和204可以访问资源提供者212和214以确定资源的存在和/或取回与资源相关联的信息(例如,资源元数据、资源位置、资源标识符、许可集、认证数据等)。从资源提供者212和214取回的信息可以用于确定与可用资源中的一个或多个相对应的一组资源标识符。该组资源标识符可用于创建断言的资源标识符和对应关系的一个或多个隔离的集合。如上所述,资源标识符可以是或包括针对其对应的资源的持久uri。例如,资源标识符216可以包括针对实际文档(d1)228的uri。因此,在这样的示例中,用户能够从集合中确定文档(d1)228的位置,并且取决于认证以及访问限制,来取回文档(d1)228。作为另一个例子,如图2所示,资源提供者212可以由集合创建应用程序202访问。集合创建应用程序202可以确定资源提供者212至少包括资源228和230,并且可能确定针对每个资源的资源标识信息。基于所确定的资源标识信息,资源标识符216和218可以分别应用/关联到资源228和230,并且提供给环境206。然后,环境206可以使资源标识符216和218有资格进行包含分析到一个或多个隔离的集合。

图3a示出了断言的资源标识符和对应关系的示例隔离的集合300。示例隔离的集合300包括资源标识符302、304、306、308、310、312和314,以及关系316、318、320、322、324和326。在方面中,可以使用集合创建实用程序来生成和/或操纵隔离的集合300,所述集合创建实用程序可以作为上面讨论的集合创建应用的一部分包含在内。当以图3a中描绘的图形形式呈现时,每个资源标识符可以被称为“节点”,并且每个关系可以被称为“边”。集合创建实用程序还可以使用一个或多个规则集来识别资源和/或确定针对集合的资源类型,所述规则集可以包括根据语义web技术定义的规则,例如资源描述框架(rdf)、rdf模式(rdfs)、sparql协议。以及rdf查询语言(sparql)、web本体语言(owl)等。例如,集合300包括表示底层资源的资源标识符312,在所描绘的示例中为“email789(电子邮件789)”。类似地,资源标识符304表示资源文档“doc123(文档123)”,而资源标识符302表示资源任务“taskl23(任务123)”。隔离的集合300中包括的每个资源和关系可以由开发者通过集合创建应用程序断言。例如,开发者可以手动添加每个资源标识符和资源标识符之间的关系。作为示例,开发者可以手动指示“taskl23(任务123)”是“docl23(文档123)”上的任务,如由“taskon(其上的任务)”关系316在集合300中表示的。资源标识符和关系也可以由外部自动程序(bot)或由开发人员创建的应用断言。例如,可以对加载项进行编程以监视浏览器或其他应用中的活动以跟踪应用的使用。基于应用的使用,加载项发送要包括在集合300中的附加资源和关系。

与断言的资源标识符和关系不同,集合创建实用程序可以执行规则集以确定附加关系和资源类型,这里称为“推断关系”和“推断资源标识符”或“推断资源类型”。例如,在执行规则集时,集合创建实用程序可以确定资源标识符312表示电子邮件消息,并且资源标识符304表示文档。下面进一步详细讨论推断的关系和资源的生成。

隔离的集合300进一步描绘资源标识符302与资源标识符304、306以及308以及资源标识符310相关联。集合创建实用程序可确定资源标识符302表示要对标识符304、306以及308执行的任务。基于该确定,集合创建实用程序可以分配关系316、318和320(例如,“taskon(其上的任务)”)以定义资源标识符302和资源标识符304、306和308之间的关联。在其他示例中,关系如上所述,可以断言316、318和320。诸如“hasdiscussion(讨论)”关系322的附加关系可以由开发者手动断言,或者从分析电子邮件101的内容的电子邮件应用的加载项断言。虽然特定类型的资源和关系是如图3a中所描述的,本领域技术人员将意识到,在不脱离本公开的精神的情况下,其他类型的资源和/或关系可以包括在隔离的集合中。

图3b-图3e示出了可用于遍历集合300的示例查询模型。在各方面中,可以经由由集合创建实用程序提供的接口来执行查询。可以针对包括诸如资源标识符、资源类型、资源元数据、许可数据等信息的一个或多个文件和/或目录来执行查询。查询结果可以以图形形式可视化为一个或多个集合,例如集合300。例如,整个集合300数据集可以仅包括集合300中示出的那些元素(例如,资源标识符302、304、306、308、310、312和314以及关系316、318、320、322、324和326)。在该特定示例中,资源标识符312可以表示包括主题“api设计”的电子邮件,并且资源标识符314可以表示包括主题“集合”的电子邮件。可以针对集合300执行查询'http://.../collection300/taskl23'。查询结果可以包括资源标识符302并且可视化,如图3b所示。在图3c中,查询已被修改为'http://..jcollection300/taskl23?$expand=taskon'并针对集合300执行。查询结果可包括资源标识符302、304、306和308以及关系316、318以及320,并且可视化,如图3c所示。在图3d中,查询已修改为'http://..jcollection300/taskl23?$expand=taskon($expand=attachmenton)'并针对集合300执行。查询结果可包括资源标识符302、304、306、308、312和314以及关系316、318、320、324以及320,并且可视化如图3d所示。在图3e中,查询已被修改为'http://..jcollection300/taskl23?($expand=taskon($expand=attachmenton)($filter=subjecteq'setsets'))'并针对集合300执行。由于仅资源标识符包括314以及主题“集合”,所以查询结果可以包括资源标识符302、306和314以及关系318和326,并且可视化如图3e所示。

图4示出了示例隔离的集合400的概述。隔离的集合400可以包括person(人)1402和person(人)2416,其可以是如本文所述的用户资源。私钥404和公钥406可以通过关系408-14与person(人)1402相关联。在一些示例中,私钥404和公钥406可以是密钥标识符,其中实际密码密钥可以存储在密钥库或其他数据存储(未示出)中。当person(人)1402首次获得对隔离的集合400的访问时,私钥404和公钥406可能已由person(人)1402提供。在另一示例中,私钥404和公钥406可能已被自动生成。关系408和412使用实线箭头来指示分别在person(人)1402和私钥404以及person(人)1402和公钥406之间存在“密钥”的断言的关系。关系408和412是方向性的,因为它们指示私钥404和公钥406都是针对person(人)1402的密钥,而不是相反的方式。类似地,关系410和414使用虚线箭头来指示分别在私钥404和person(人)1402以及公钥406和person(人)1402之间存在“keyfor(针对其的密钥)”的推断关系。关系410和414是方向性的,因为它们指示私钥404是person(人)1402的密钥,并且公钥406是person(人)1402的密钥,而不是其他方式。

类似地,密钥库418可以通过关系420和422与person(人)2416相关联。密钥库418可以是如本文所述的密钥库,并且可以用于存储与person(人)2416相关联的密码密钥。在一些示例中,密钥库418可以存储公钥和私钥,仅存储公钥、非对称密钥、对称密钥、加密或未加密的密钥或其任何组合。在一个示例中,密钥库418可以存储在隔离的集合400中,而在其他示例中,密钥库418可以是与存储在别处的密钥库(例如,在数据存储、硬件安全模块等中)相关联的资源标识符。当person(人)2416首次获得对隔离的集合400的访问时,密钥库418存储的密钥可能已经由person(人)2416提供。在另一个示例中,可以自动生成密钥。密钥库418可以存储所提供的密钥和生成的密钥的组合。关系420使用实线箭头来指示在person(人)2416和密钥库418之间存在“密钥”的断言的关系。关系420是方向性的,因为它表示密钥库418存储针对person(人)2416的密钥,而不是其他方式。类似地,关系422使用虚线箭头来指示密钥库418和person(人)2416之间存在“keysfor(针对其的密钥)”的推断关系。关系422是方向性的,因为它指示密钥库418是针对person(人)2416的密钥库,而不是其他方式。

person(人)1402和person(人)2416均可以是共享资源424的作者。这可以由关系426和428指示,关系426和428是断言的方向“作者”关系,如分别在共享资源424和person(人)1402之间以及在共享资源424和person(人)2416之间的实线方向箭头所示。相反,“authorof(其作者)”关系430和432是推断的关系,分别由person(人)1402和共享资源424之间以及在person(人)2416和共享资源424之间的虚线指示。而用户资源402和416与共享资源424之间的特定关系在此描述,本领域技术人员将意识到,在不脱离本公开的精神的情况下,可以存在资源之间的其他类型的关系。例如,其他示例性关系包括但不限于“ownerof(其所有者)”、“senderof(其发送方)”、“editorof(其编辑者)”等。共享资源424可以是如本文所述的资源,并且可以被隔离的集合400的其他用户使用。这样,共享资源424可以由person(人)l402和/或person(人)2416签名,从而使其他用户能够在签名时验证资源的状态。可以通过识别与person(人)l402和/或person(人)2416(例如,分别公钥406和由密钥库418存储的公钥)相关联的密码密钥(例如公钥)来执行签名验证。然后可以基于所识别的密码密钥来验证共享资源424及其签名。

相反,加密资源434可以是加密通信或在person(人)1402和person(人)2416之间通信的其他资源。如图所示,person(人)2416将加密资源434发送到person(人)1402。这由关系438指示,这是断言的方向加密资源434和person(人)2416之间的“发送方”关系。相反,关系442是方向推断的“发送”关系,其指示person(人)2416发送加密资源434。类似地,断言的方向“接收方”关系436指示加密资源434的接收方是person(人)2。相反,方向推断的“接收”关系440指示person(人)1402接收加密资源434。person(人)2416可以使用私钥(例如,存储在密钥库418中的密钥,或者至少与密钥库418相关联的密钥)对加密资源434进行签名,之后person(人)2416可能已经识别出与接收方person(人)1402相关联的密码密钥。person(人)2可能已经使用所识别的密码密钥(例如,公共密钥406)来加密加密资源434。

person(人)1402可以使用私钥404生成加密资源434的解密表示,私钥404是包括公钥406的密钥对的私钥。在解密加密资源434之后,通过检查与加密资源434相关联的关系(例如,基于关系438),person(人)1402可以确定person(人)2416是发送方。结果,person(人)l402可以识别与person(人)2416相关联的密码密钥。在一些示例中,密码密钥可以是存储在密钥库418中的公钥,person(人)l402可以使用该公钥来验证加密资源434的未加密表示的签名。

图5a示出了存储在隔离的集合500中的示例加密对话的概述。隔离的集合500包括消息1502、消息2504和消息3506。消息1502、消息2504和消息3506可以是如本文所公开的在对话会话期间传送的消息(或对消息的引用)。关系508和510使用实线箭头来指示分别在消息2504和消息1502以及消息3506和消息2504之间存在“replyto(回复)”断言的关系。关系508和510是方向性的,因为它们表明message(消息)2是对message(消息)1的回复,而message(消息)3是对message(消息)2的回复,而不是以其他方式。类似地,关系512和514使用虚线箭头来指示分别在message(消息)1502和message(消息)2504以及message(消息)2504和message(消息)3506之间存在“repliedtoby(由其回复)”的推断关系。关系512和514是方向性的,因为它们指示message(消息)1502由message(消息)2504回复,并且message(消息)2504由message(消息)3506回复,而不是以其他方式。

隔离的集合500还包括convlenckey516,其可以是用于加密在对话会话期间传送的消息的密码密钥(或对密码密钥的引用)。更具体地,可以在对话会话被初始化并且用于加密message(消息)1502、message(消息)2504和message3506时生成convlenckey516。因此,关系518、520和522使用实线箭头来指示在message(消息)1502和convlenckey516、message(消息)2504和convlenckey516之间存在,并且消息3506和convlenckey516之间存在的“encryptedby(由其加密)”的断言关系。这样,关系518、520和522指示消息1502、消息2504和消息3506各自由convlenckey516加密。此外,关系524、526和528使用虚线箭头来指示分别在convlenckey516和message(消息)1502、convlenckey516和message(消息)2504,以及convlenckey516和消息506之间存在“usedtoencrypt(用于加密)”的推断关系。。结果,可以确定convlenckey516用于加密message(消息)1502、message(消息)2504和message3506。

图5b示出了与加密对话会话相关联的示例性密钥库530的概述,所述加密对话会话例如存储在隔离的集合500中的对话会话,如上面关于图5a所讨论的。如上所述,密钥库530可以是与用户相关联(例如,“participant(参与者)l”)并存储在隔离的集合中。密钥库530可以包括一个或多个密钥条目,其中每个密钥条目可以包括密钥标识符和密钥值。如上所述,密钥标识符可以是密钥指纹、密钥的散列或与密钥有关的信息(例如,md5、sha-1等),或标识符(例如,guid、uri等等)以及其他。密钥值可以是与密钥库存储的密码密钥有关的数据。

密钥库530可以包括第一密钥条目532a-b和第二密钥条目534a-b。第一密钥条目包括密钥标识符convlenckey532a和密钥值532b。类似地,第二密钥条目包括密钥标识符conv2enckey534a和密钥值534b。在一些示例中,可以根据密钥标识符532a和534a来索引示例密钥库530,使得可以使用密钥标识符(例如,“convlenckey”或“conv2enckey”)来搜索关联的密钥值(例如,密钥值532b和534b)。

图5c示出了与加密的对话会话相关联的示例性密钥库540的概述,所述加密的对话会话例如存储在隔离的集合500中的对话会话,如上面参考图5a所讨论的。如本文所讨论的,密钥库540可以与用户(例如,“participant(参与者)2”)相关联并存储在隔离的集合中。在一些示例中,密钥库540可以是与person(人)2416相关联的密钥库418,如图4所示。密钥库540可以包括一个或多个密钥条目,其中每个密钥条目可以包括密钥标识符和密钥值。如上所述,密钥标识符可以是密钥指纹、密钥的散列或与密钥有关的信息(例如,md5,sha-1等),或标识符(例如,guid、ur,等等)以及其他。密钥值可以是与密钥库存储的密码密钥有关的数据。

密钥库540可以包括第一密钥条目542a-b和第二密钥条目544a-b。第一密钥条目包括密钥标识符convlenckey542a和密钥值542b。类似地,第二密钥条目包括密钥标识符conv3enckey544a和密钥值544b。在一些示例中,可以根据密钥标识符542a和544a来索引示例密钥库540,使得可以使用密钥标识符(例如,“convlenckey”或“conv3enckey”)来搜索关联的密钥值(例如,密钥值542b和544b)。

参考图5a-图5c,会话参与者(例如,“participant(参与者)1”或“participant(参与者)2”)可能希望访问由隔离的集合500(例如,message(消息)1502,message(消息)2504和/或message(消息)3506)存储的消息。可以访问和使用会话消息中的至少一个来确定解密会话消息所需的密码密钥。在示例中,可以通过评估关系518、520或522中的至少一个来确定适当的密码密钥,以确定应该使用convlenckey516来解密对话消息。结果,可以确定是否可以访问convlenckey516来解密对话消息。在一些示例中,可以访问密钥库530或密钥库540以确定是否存在与convlenckey516的标识符匹配的标识符。如果确定对话参与者可以访问与密钥标识符“convlenckey”(例如,分别针对participant(参与者)1或participant(参与者)2的密钥标识符532a或542a)相关联的密码密钥,则密钥值(例如,分别为密钥值532b或542b)可以使用参与者的私钥解密。然后,解密的密钥可用于解密存储在隔离的集合500中的消息。

相反,如果确定与密钥标识符“convlenckey”相关联的密码密钥不可用,则可以向participant(参与者)1和/或participant(参与者)2提供请求。如果当前参与者授权访问请求,则可以使用当前参与者的私钥来解密具有标识符“convlenckey”的当前参与者密钥,之后可以使用请求者的公钥对其进行重新加密。然后可以将重新加密的密码密钥提供给请求者。请求者可以如上所述解密所接收的密钥,以便访问由隔离的集合500存储的对话会话。

图6示出了用于验证隔离的集合内的签名的示例方法600的概述。方法600开始于操作602,其中可以接收签名的资源。签名的资源可以是共享资源424,如图4所示。签名的资源可能被接收作为由用户(例如person(人)l402或person(人)2416)提供的指示的结果。签名的资源可以存储在隔离的集合(例如,隔离的集合400)中。在一些示例中,方法600可以在访问签名的资源时自动发生。

移至操作604,可针对资源确定签名者。确定签名者可以包括评估与签名的资源相关联的一个或多个关系以识别与签名者相关联的用户资源。在一些示例中,与签名的资源相关联或存储的元数据或属性可以提供可以在确定中使用的指示。在识别签名者之后,流程移动到操作606,其中可以在隔离的集合内识别与签名者相关联的公钥。识别公钥可以包括访问与签名者相关联的用户资源以评估用户资源的一个或多个关系。在一些示例中,用户资源可以与包括密钥库、密码密钥或密码密钥标识符的资源具有一个或多个“key(密钥)”关系(或类似关联)。在另一示例中,可以存在多个关系,并且标识公钥可以包括评估多个密码密钥。在一个示例中,签名的资源可以包括元数据或属性,其可以提供关于可以在标识中使用的特定密码密钥的指示。

在操作608,可以从隔离的集合访问公钥。访问公钥可以包括从与签名者的用户资源相关联的密码密钥资源中取回公钥,如操作606中所标识的。在另一个示例中,密码密钥资源可以包括可以用于访问密钥库或其他数据存储中的公钥的标识符。移至操作610,可以使用公钥来验证签名的资源的签名。在一些示例中,可以使用各种指示符(例如,视觉、听觉、电子等)中的至少一个来指示验证的结果。在一个示例中,可以响应于验证的结果来呈现选项(例如,即使验证失败或未完成也继续进行选项、忽略签名的资源的选项等)。流程在操作610处终止。

图7示出了用于加密隔离的集合内的资源的示例方法700的概述。在示例中,资源(例如,图4中的加密资源434)可以由诸如person(人)2416的发送方加密,并且由诸如person(人)l402的接收方接收。方法700在操作702开始,其中可以访问发送方的私钥。在一些示例中,可以从隔离的集合(例如,存储要加密的资源的相同的隔离的集合)访问发送方的私钥,其中限制对私钥的访问。在其他示例中,私钥可以存储在别处,诸如私有数据存储或加密硬件设备等。在另一示例中,可以不直接访问私钥,并且可以替代地将资源提供给另一个用于签名的组件(例如,密钥库或加密硬件设备等)。

在操作704处,可以使用发送方的私钥来对资源进行签名。对资源进行签名可以包括将附加信息与同密码签名相关的资源存储或关联(例如,作为元数据、属性等)。在一些示例中,可以在资源和与发送方相关联的用户资源之间形成一个或多个关系。移至操作706,可以在隔离的集合内识别与接收方相关联的公钥。识别公钥可以包括访问与接收方相关联的用户资源以评估用户资源的一个或多个关系。在一些示例中,用户资源可以与包括密钥库、密码密钥或密码密钥标识符的资源具有一个或多个“key(密钥)关系(或类似关联)。在另一个示例中,可以存在多个关系或密钥,并且识别公钥可以包括基于例如要加密的数据的类型、发送方或接收方的身份、发件方和接收方之间的关系等来评估多个密码密钥。

在操作708处,可以从隔离的集合中访问在操作706中识别的公钥。访问公钥可以包括从与接收方的用户资源相关联的密码密钥资源中取回公钥,如操作706中所识别的。在另一个示例中,密码密钥资源可以包括可以用于访问密钥库或其他数据存储中的公钥的标识符。

在操作710,可以使用在操作708访问的接收方的公钥来加密资源。加密资源可以包括嵌入或关联可能有助于在解密资源时确定密码密钥的元数据或属性。移至操作712,可以将加密的资源提供给接收方。提供资源可以包括将资源存储在隔离的集合中并生成加密资源与隔离的集合中的其他资源之间的一个或多个关系。作为示例,可以在加密资源和发送方之间以及在加密资源和接收方之间生成关系。接收方可以接收资源在隔离的集合中可用的指示。在另一示例中,可以将加密资源或与加密资源相关联的资源标识符提供给接收方。流程在操作712处终止。

图8示出了用于隔离的集合内的参与者之间的加密组通信的示例方法800的概述。作为示例,可以通过执行类似于方法800的操作来创建由如图5所示的隔离的集合500存储的对话。方法800开始于操作802,其中可以生成密码密钥。如上所述,密码密钥可以是非对称密钥对或对称密钥以及其他。可以在发起对话会话时生成密码密钥。在一些示例中,可以在正在进行的对话会话期间(例如,响应于事件)生成密码密钥,以便旋转用于对话会话的密码密钥。在一个示例中,与密码密钥相关联的标识符可以存储在隔离的集合中,使得可以在其与使用密码密钥加密的消息之间形成关系。这可以向参与者提供关于解密在对话会话期间发送的消息所需的密码密钥的指示。

移至操作804,可使用每个参与者的公钥来针对每个参与者加密在操作802中生成的密码密钥。在一些示例中,对于每个参与者,标识公钥可以包括访问与参与者相关联的用户资源以评估用户资源的一个或多个关系。用户资源可以与包括密钥库、密码密钥或密码密钥标识符的资源具有一个或多个“key(密钥)关系(或类似关联)。在另一示例中,可以存在多个关系或密钥,并且识别公钥可以包括基于例如要加密的数据的类型、发送方或接收方的身份或发件方和接收方之间的关系来评估多个密钥以及其他。然后可以使用每个参与者的确定的公钥来针对每个参与者加密密码密钥。

在操作806处,可以向每个参与者提供加密的密码密钥。提供密码密钥可以包括将每个密码密钥存储在与参与者相关联的密钥库中。在一个示例中,可以向每个参与者提供用于指示密码密钥的位置的指示。在另一示例中,可以将密码密钥发送给每个参与者。本领域技术人员将意识到,可以使用任何递送密码密钥的方法而不背离本公开的精神。

移至操作808,可以从参与者接收消息。该消息可以包括任何类型的数据,包括但不限于文本数据、图像或视频数据、音频数据或其任何组合。可以从参与者的计算设备(例如,移动计算设备、平板计算设备、个人计算设备等)接收消息。在一些示例中,可以从图1中的客户端设备102a-c接收消息。

在操作810处,可以使用参与者的私钥来解密参与者的加密密码密钥。在一些示例中,私钥可以存储在密钥库中、隔离的集合中,或者使用加密硬件设备以及其他。类似地,加密的密码密钥可以存储在密钥库中、在隔离的集合等中。密码密钥和私钥可以存储在相似或不同的位置。在一些示例中,可以对解密的密码密钥进行高速缓存,使得在对话会话期间不需要对其进行连续解密。

移至操作812,可使用解密的密码密钥来对消息进行加密。在一些示例中,可以在执行加密操作之前或之后对消息进行签名。可以使用参与者的私钥来对消息进行签名,使得其他会话参与者可以使用与私钥相关联的公钥来验证签名,该私钥可以与同参与者相关联的用户资源相关联。

在操作814处,可以将加密的消息提供给会话参与者。提供加密的消息可以包括存储消息(例如,作为隔离的集合中的资源)或对消息的引用(例如,作为包括隔离的集合中的资源标识符的资源)。可以在消息和隔离的集合内的密码密钥的密钥标识符之间形成关系。在一个示例中,参与者可以接收在隔离的集合中新消息可用的指示,或者参与者可以周期性地轮询隔离的集合以确定是否存在新消息。在另一示例中,可以将加密的消息发送到对话参与者。当会话参与者继续彼此通信时,流程可以在对话会话期间循环通过操作808-814。在一些示例中,可以将会话参与者添加到会话中,如下面参考图9更详细地讨论的。

图9示出了用于由新参与者获得对群组对话会话的访问的示例方法900的概述。方法900开始于操作902,其中可以接收针对对访问组会话的请求。可以从请求对对话的访问的潜在参与者的计算设备(例如,移动计算设备、平板计算设备、个人计算设备等)接收该请求。在一些示例中,可以从图1中的客户端设备102a-c接收消息。

在操作904处,可以确定对话会话的当前参与者。可以基于对话的消息与一个或多个用户资源之间存在的关系(例如,在隔离的集合内存储的消息和用户资源之间可以存在“发送方”或“接收方”关系)来进行确定。在一个示例中,参与者列表或其他数据结构可以与对话相关联,使得可以对其进行评估以便确定对话参与者。在另一示例中,与用于加密对话会话和与对话参与者相关联的用户资源的密码密钥相关联的密钥标识符与之间可存在关系。结果,可评估密钥标识符的关系以确定与对话参与者相关联的一个或多个用户资源。

移至操作906,可以向确定的对话参与者中的一个或多个发送授权请求。授权请求可以包括各种信息,包括但不限于围绕会话的上下文、与请求者有关的身份信息,或者与当前的会话参与者列表有关的信息。参与者可以授权或拒绝该请求。在一些示例中,参与者可以提供可以在响应授权请求时使用的较早指示。作为示例,参与者可以指定应该自动接受、拒绝或忽略这些请求以及其他。在另一示例中,参与者可以创建在响应授权请求时可以评估的一个或多个规则。

在操作908处,可以从参与者接收授权。授权可以包括可以将请求者添加到对话的指示。在一个示例中,该指示可以包括与必须如何存储与会话相关联的密码密钥有关的一个或多个要求(例如,必须使用的加密强度或加密算法以及其他)。

移至操作910,可使用参与者的私钥来解密与对话相关联的密码密钥。在一些示例中,当提供授权指示时,参与者可能已经提供了解密的密码密钥。在另一示例中,可以从参与者指示的位置(诸如,密钥库或数据存储等)取回参与者的私钥。在一个示例中,可以将密码密钥提供给另一个组件(例如,密钥库、加密硬件设备等),其可以使用参与者的私钥来提供解密的密码密钥作为响应。

在操作912处,可以使用请求者的公钥来加密解密的密码密钥。使用请求者的公钥来加密密钥可以包括通过访问与请求者相关联的用户资源以评估用户资源的一个或多个关系来识别公钥。在一些示例中,用户资源可以与包括密钥库、密码密钥或密码密钥标识符的资源具有一个或多个“key(密钥)”关系(或类似关联)。在另一示例中,可以存在多个关系或密钥,并且识别公钥可以包括基于例如要加密的数据的类型、请求者的身份或其他会话参与者或授权参与者提供的要求以及其他来评估多个密码密钥。

移至操作914,可将密码密钥提供给请求者。提供密码密钥可以包括将密码密钥存储在与请求者相关联的密钥库中。在一个示例中,可以向请求者提供指示密码密钥的位置的指示。在另一示例中,可以将密码密钥发送给请求者。然后,请求者可以使用密码密钥来访问和参与组会话(例如,通过执行图8中的操作808-814)。流程在操作914处终止。

图10-图13和相关联的描述提供了可以在其中实践本公开的各方面的各种操作环境的讨论。然而,关于图10-图13示出和讨论的设备和系统是出于示例和说明的目的,并且不限制可用于实践本文所述的本公开的各方面的大量计算设备配置。

图10是示出了可用其来实践本发明的方面的计算设备1000的物理组件(例如,硬件)的框图。下面描述的计算设备组件可以适用于上述计算设备,包括客户端计算设备102a-c和服务器计算设备106a-c。在基本配置中,计算设备1000可以包括至少一个处理单元1002和系统存储器1004。取决于计算设备的配置和类型,系统存储器1004可以包括但不限于易失性存储器(例如,随机存取存储器)、非易失性存储器(例如,只读存储器)、闪存或这些存储器的任何组合。系统存储器1004可以包括操作系统1005和适合于执行本文公开的各个方面的一个或多个程序模块1006,诸如密码密钥识别组件1024和自动加密操作组件1026。例如,操作系统1005可以控制计算设备1000的操作。此外,本公开的实施例可以结合图形库、其他操作系统或任何其他应用程序来实践,并且不限于任何特定应用或系统。该基本配置在图10中由虚线1008内的那些组件示出。计算设备1000可以具有附加特征或功能。例如,计算设备1000还可以包括附加数据存储设备(可移动和/或不可移动),例如磁盘、光盘或磁带。这种附加存储在图10中由可移动存储设备1009和不可移动存储设备1010示出。

如上所述,多个程序模块和数据文件可以存储在系统存储器1004中。当在处理单元1002上执行时,程序模块1006(例如,应用1020)可以执行以下处理,包括但不限于如本文所述的这些方面。可以根据本公开的方面使用的其他程序模块可以包括电子邮件和联系人应用、文字处理应用、电子表格应用、数据库应用、幻灯片演示应用、绘图或计算机辅助应用程序等。

此外,本公开的实施例可以在包括以下的电路中实施:分立电子元件、包含逻辑门的封装或集成电子芯片、利用微处理器的电路或包含电子元件或微处理器的单个芯片。例如,可以经由片上系统(soc)来实践本公开的实施例,其中图10中示出的每个或许多组件可以集成到单个集成电路上。这样的soc器件可以包括一个或多个处理单元、图形单元、通信单元、系统虚拟化单元和各种应用功能,所有这些都作为单个集成电路集成(或“烧制”)到芯片衬底上。当经由soc操作时,本文描述的关于客户端切换协议的能力的功能可以经由与单个集成电路(芯片)上的计算设备1000的其他组件集成的专用逻辑来操作。还可以使用能够执行逻辑运算的其他技术来实践本公开的实施例,所述逻辑运算例如,and、or和not,所述其他技术包括但不限于机械、光学、流体和量子技术。此外,本公开的实施例可以在通用计算机或任何其他电路或系统中实施。

计算设备1000还可以具有一个或多个输入设备1012,诸如键盘、鼠标、笔、声音或语音输入设备、触摸或滑动输入设备等。还可以包括输出设备1014诸如显示器、扬声器、打印机等。上述设备是示例,可以使用其他设备。计算设备1000可以包括允许与其他计算设备1050通信的一个或多个通信连接1016。合适的通信连接1016的示例包括但不限于射频(rf)发射器、接收器和/或收发器电路;通用串行总线(usb)、并行和/或串行端口。

这里使用的术语计算机可读介质可以包括计算机存储介质。计算机存储介质可以包括以用于存储信息(诸如,计算机可读指令、数据结构或程序模块)的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。系统存储器1004、可移动存储设备1009和不可移动存储设备1010都是计算机存储介质示例(例如,存储器存储)。计算机存储介质可包括ram、rom、电可擦除只读存储器(eeprom)、闪存或其他存储器技术、cd-rom、数字通用盘(dvd)或其他光学存储装置、磁带盒、磁带、磁盘存储器或者其他磁存储设备,或可以用于存储信息并且可以由计算设备1000访问的任何其他制品。任何这样的计算机存储介质可以是计算设备1000的一部分。计算机存储介质不包括载波或其他传播或调制的数据信号。

通信介质可以由计算机可读指令、数据结构、程序模块或调制数据信号中的其他数据(诸如载波或其他传输机制)来体现,并且包括任何信息传递介质。术语“已调制数据信号”可以描述具有以对信号中的信息进行编码的方式设置或改变的一个或多个特性的信号。作为示例而非限制,通信介质可以包括有线介质,诸如有线网络或直接有线连接,以及无线介质,诸如声学、射频(rf)、红外和其他无线介质。

图11a和图11b示出了移动计算设备1100,例如,移动电话、智能电话、可穿戴计算机(诸如智能手表)、平板计算机、膝上型计算机等,利用其可以试试本公开的实施例。在一些方面,客户端可以是移动计算设备。参考图11a,示出了用于实现这些方面的移动计算设备1100的一个方面。在基本配置中,移动计算设备1100是具有输入元件和输出元件的手持式计算机。移动计算设备1100通常包括显示器1105和允许用户将信息输入到移动计算设备1100中的一个或多个输入按钮1110。移动计算设备1100的显示器1105还可以用作输入设备(例如,触摸屏显示器)。如果包括,则可选的侧输入元件1115允许进一步的用户输入。侧输入元件1115可以是旋转开关、按钮或任何其他类型的手动输入元件。在替代方面,移动计算设备1100可以包含更多或更少的输入元件。例如,在一些实施例中,显示器1105可以不是触摸屏。在又一替换实施例中,移动计算设备1100是便携式电话系统,例如蜂窝电话。移动计算设备1100还可以包括可选的小键盘1135。可选的小键盘1135可以是物理小键盘或在触摸屏显示器上生成的“软”小键盘。在各种实施例中,输出元件包括用于示出图形用户界面(gui)的显示器1105、视觉指示器1120(例如,发光二极管)和/或音频换能器1125(例如,扬声器)。在一些方面,移动计算设备1100包括振动换能器,以用于向用户提供触觉反馈。在又一方面,移动计算设备1100包括输入和/或输出端口,诸如音频输入(例如,麦克风插孔)、音频输出(例如,耳机插孔)和视频输出(例如,udmi端口),以用于向外部设备发送信号或从外部设备接收信号。

图11b是示出了移动计算设备的一个方面的架构的框图。也就是说,移动计算设备1100可以合并系统(例如,架构)1102以实现某些方面。在一个实施例中,系统1102被实现为能够运行一个或多个应用(例如,浏览器、电子邮件、日历、联系人管理器、消息传递客户端、游戏和媒体客户端/玩家)的“智能电话”。在一些方面,系统1102被集成为计算设备,诸如集成的个人数字助理(pda)和无线电话。

可以将一个或多个应用程序1166加载到存储器1162中并在操作系统1164上或与其相关联地运行。应用程序的示例程序包括电话拨号程序、电子邮件程序、个人信息管理(pim)程序、文字处理程序、电子表格程序、因特网浏览器程序、消息传送程序等。系统1102还包括存储器1162内的非易失性存储区域1168。非易失性存储区域1168可用于存储如果系统1102断电则不应丢失的持久信息。应用程序1166可以在非易失性存储区域1168中使用和存储信息,诸如电子邮件或电子邮件应用程序使用的其他消息等。同步应用(未示出)也驻留在系统1102上,并被编程为与驻留在主机计算机上的相应同步应用交互,以使存储在非易失性存储区域1168中的信息与存储在主机计算机中的相对应的信息保持同步。应当意识到,可以将其他应用加载到存储器1162中并在本文描述的移动计算设备1100上运行(例如,搜索引擎、提取器模块、相关性排名模块、答案评分模块等)。

系统1102具有电源1170,其可以实现为一个或多个电池。电源1170还可以包括外部电源,例如ac适配器或电源对接支架,其对电池进行补充或重新充电。

系统1102还可以包括执行发送和接收射频通信的功能的无线电接口层1172。无线电接口层1172经由通信运营商或服务提供商来促进系统1102与“外部世界”之间的无线连接。在操作系统1164的控制下进行去往和来自无线电接口层1172的传输。换句话说,无线电接口层1172接收的通信可以经由操作系统1164传播到应用程序1166,反之亦然。

视觉指示器1120可用于提供视觉通知,和/或音频接口1174可用于经由音频换能器1125产生可听通知。在所示实施例中,视觉指示器1120是发光二极管(led)而音频换能器1125是扬声器。这些设备可以直接耦合到电源1170,使得当被激活时,即使处理器1160和其他组件可能关闭以节省电池电量,它们也保持开启由通知机制指示的持续时间。led可以被编程为无限期地保持开启,直到用户采取行动来指示设备的通电状态。音频接口1174用于向用户提供可听信号并从用户接收可听信号。例如,除了耦合到音频换能器1125之外,音频接口1174还可以耦合到麦克风以接收可听输入,例如以便于电话交谈。根据本公开的实施例,麦克风还可以用作音频传感器以便于控制通知,如下所述。系统1102还可以包括视频接口1176,其使得车载相机1130的操作能够记录静止图像、视频流等。

实现系统1102的移动计算设备1100可以具有附加特征或功能。例如,移动计算设备1100还可以包括附加数据存储设备(可移动和/或不可移动),例如磁盘、光盘或磁带。这种附加存储在图11b中由非易失性存储区域1168示出。

如上所述,由移动计算设备1100生成或捕获并经由系统1102存储的数据/信息可以本地存储在移动计算设备1100上,或者数据可以存储在可以任意数量的存储介质上,所述存储介质可以由设备经由无线电接口层1172或经由移动计算设备1100和与移动计算设备1100相关联的单独计算设备之间的有线连接来访问,所述单独计算设备例如,分布式计算网络中的服务器计算机,所述分布式计算网络例如互联网。应当意识到,可以经由无线电接口层1172或经由分布式计算网络经由移动计算设备1100访问这样的数据/信息。类似地,根据众所周知的数据/信息传送和存储装置,包括电子邮件和协作数据/信息共享系统,可以在计算设备之间容易地传送这样的数据/信息用于存储和使用。

图12示出了用于处理在计算系统处从远程源(例如个人计算机1204、平板计算设备1206或移动计算设备1208)接收的数据的系统的架构的一个方面,如上所述。在服务器设备1202处显示的内容可以存储在不同的通信信道或其他存储类型中。例如,可以使用目录服务1222、网络端口1224、邮箱服务1226、即时消息存储1228或社交网站1230来存储各种文档。自动加密操作组件1221可以由与服务器设备1202通信的客户端使用,和/或密码密钥识别组件1220可以由服务器设备1202使用。服务器设备1202可以通过网络1215提供来自和去往诸如个人计算机1204、平板计算设备1206和/或移动计算设备1208(例如,智能电话)之类的客户端计算设备的数据。举例来说,上述计算机系统可以体现在个人计算机1204、平板计算设备1206和/或移动计算设备1208(例如,智能电话)中。除了接收可用于在图形发起系统处预处理或在接收计算系统处进行后处理的图形数据之外,计算设备的这些实施例中的任何一个都可以从存储1216获得内容。

图13示出了可以执行本文公开的一个或多个方面的示例性平板计算设备1300。此外,这里描述的方面和功能可以在分布式系统(例如,基于云的计算系统)上操作,其中应用功能、存储器、数据存储和取回以及各种处理功能可以通过分布式计算网络(例如,互联网或内联网)彼此远程操作。用户界面和各种类型的信息可以经由车载计算设备显示器或经由与一个或多个计算设备相关联的远程显示单元显示。例如,可以在墙面上显示和交互各种类型的用户界面和信息,在该墙面上投影用户界面和各种类型的信息。与可以实践本发明的实施例的多个计算系统的交互包括键击输入、触摸屏输入、语音或其他音频输入、姿势输入,其中相关联的计算设备配备有用于捕获并且解释用于控制计算设备的功能的用户手势的检测(例如,相机)功能等。

从前面的公开内容可以理解,本技术的一个方面涉及一个系统,包括:至少一个处理器;以及存储器,存储指令,所述指令当由所述至少一个处理器执行时,执行一组操作。所述操作包括访问由隔离的集合存储的资源;基于资源的一个或多个关系,识别隔离的集合中的用户资源,其中,用户资源与资源相关;基于用户资源的一个或多个关系,识别隔离的集合中的密码密钥资源,其中密码密钥资源与用户资源相关联;基于密码密钥资源访问密码密钥;以及使用密码密钥对资源执行密码操作。在示例中,密码操作是以下中的一个:加密针对与所确定的用户资源相关联的用户的资源;并且验证资源的密码签名,其中资源由与所确定的用户资源相关联的用户密码签名。在另一示例中,所识别的密码密钥资源是用于存储与用户资源相关联的密码密钥的密钥库,并且访问密码密钥包括访问密钥库中的密码密钥。在另一示例中,所识别的密码密钥资源包括密钥标识符,并且访问密码密钥包括评估密钥标识符以确定密码密钥的位置。在又一示例中,验证资源的密码签名还包括:当确定不能验证密码签名时,提供指示,其中该指示是通知、视觉指示和听觉指示中的至少一个;并且当确定可以验证密码签名时,提供指示,其中该指示是通知、视觉指示和听觉指示中的至少一个。在又一个示例中,资源是以下中的一个:文档;与文件有关的信息;对话;以及消息。在另一个例子中,密码密钥是密码密钥对的公钥,并且其中密码密钥对的私钥未存储在密钥库中。

在另一方面,该技术涉及一种计算机实现的方法。该方法包括:在对话会话期间生成用于由多个计算设备使用的密码密钥;对于多个计算设备中的每个计算设备,使用与计算设备相关联的公钥加密密码密钥,并将加密的密码密钥提供给计算设备;从计算设备接收对话会话的消息;使用密码密钥生成消息的加密消息;将加密的消息存储在隔离的集合中,其中加密的消息与密码密钥相关联;并且向多个计算设备中的一个或多个计算设备提供加密消息的指示。在示例中,该方法还包括:从新计算设备接收针对访问对话会话的请求;向多个计算设备中的至少一个计算设备发送授权请求;从多个计算设备中的至少一个计算设备接收授权;基于所接收的授权:访问与至少一个计算设备相关联的加密密码密钥;基于与至少一个计算设备相关联的私钥,从加密的密码密钥生成未加密的密码密钥;基于与新计算设备相关联的公钥,从未加密的密码密钥生成重新加密的密码密钥;以及将重新加密的密码密钥提供给新的计算设备。在另一示例中,生成加密消息还包括:使用与计算设备相关联的私钥来对消息签名。在另一示例中,密码密钥由受信任的第三方存储在托管中。在又一示例中,将授权请求发送到多个计算设备中的至少一个计算设备还包括:基于隔离的集合中的加密消息的一个或多个关系,识别多个计算设备中的至少一个计算设备。计算设备。在另一个例子中,所接收的授权包括在生成未加密的密码密钥时可以使用的信息。

在另一方面,该技术涉及用于提供加密的对话会话的另一计算机实现的方法。该方法包括:访问由隔离的集合存储的资源;基于资源的一个或多个关系,识别隔离的集合中的用户资源,其中,用户资源与资源相关;基于用户资源的一个或多个关系,识别隔离的集合中的密码密钥资源,其中密码密钥资源与用户资源相关联;基于密码密钥资源来访问密码密钥;以及使用密码密钥来对资源执行加密操作。在示例中,加密操作是以下中的一个:加密针对与所确定的用户资源相关联的用户的资源;并且验证资源的密码签名,其中资源由与所确定的用户资源相关联的用户密码签名。在另一示例中,所识别的密码密钥资源是用于存储与用户资源相关联的密码密钥的密钥库,并且访问密码密钥包括访问密钥库中的密码密钥。在另一示例中,所识别的密码密钥资源包括密钥标识符,并且访问密码密钥包括评估密钥标识符以确定密码密钥的位置。在又一示例中,验证资源的密码签名还包括:当确定不能验证密码签名时,提供指示,其中该指示是通知、视觉指示和听觉指示中的至少一个;当确定可以验证密码签名时,提供指示,其中该指示是通知、视觉指示和听觉指示中的至少一个。在又一个示例中,资源是以下中的一个:文档;与文档有关的信息;对话;以及信息。在另一示例中,密码密钥是密码密钥对的公钥,并且密码密钥对的私钥不存储在密钥库中。

例如,以上参考根据本公开的方面的方法、系统和计算机程序产品的框图和/或操作图示描述了本公开的各方面。块中标注的功能/动作可能不按如图所示任何流程图的顺序发生。例如,连续示出的两个方框实际上可以基本上同时执行,或者这些方框有时可以以相反的顺序执行,这取决于所涉及的功能/动作。

本申请中提供的一个或多个方面的描述和说明不旨在以任何方式限制或约束本公开的范围。本申请中提供的方面、示例和细节被认为足以传达占有并使其他人能够制作和使用所要求保护的最佳模式。要求保护的公开内容不应被解释为限于本申请中提供的任何方面、示例或细节。无论是组合地还是单独地示出和描述,旨在选择性地包括或省略各种特征(结构和方法)以产生具有特定特征集的实施例。已经提供了本申请的描述和说明,本领域技术人员可以设想落入本申请中体现的总体发明构思的更广泛方面的精神内的变型、修改和替换方面,其不脱离本申请要求保护的公开的更广泛的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1