在成员更改时经由密钥对对话进行部分加密的制作方法

文档序号:18457462发布日期:2019-08-17 01:44阅读:180来源:国知局
在成员更改时经由密钥对对话进行部分加密的制作方法

群组对话使得多人能够灵活且方便地交谈和分享想法。在对话会话期间,对话的参与者可以进入和退出对话会话。在一些示例中,新参与者可能无法看到在他们进入之前发送的消息,并且类似地,前参与者可能无法看到他们退出之后已经发送的消息。传统上,这是对话消息被发送到在传输时存在的参与者而没有在对话会话之后被进一步存储或保留的事实的结果。然而,在会话消息持久(而不是短暂)的场景中,必须以提供类似保密和安全性的方式来存储对话消息。

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

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



技术实现要素:

本公开内容的示例性描述了用于在成员改变时使用不同密码密钥来对对话进行部分加密的系统和方法。在示例中,可以在发起对话时生成密码密钥。然后可以使用密码密钥来对在对话会话期间发送的消息进行加密。密码密钥可以被存储或以其他方式可由对话参与者访问,以使得对话参与者可以在对话会话期间使用密码密钥来对消息进行加密和解密。在对话期间的某个时刻,可以发生事件(例如,对话成员资格的变化、可以经过的一段时间等等)。作为该事件的结果,可以生成新密码密钥并且将其提供给对话参与者。然后,对话参与者可以在发送和接收加密消息时使用新密码密钥。如此,对于不具有旧密码密钥的新成员,先前加密的消息可以是不可访问的。类似地,对于离开对话并且因此不具有新密码密钥的前成员,新加密的消息可以是不可访问的。

在对话会话期间发送的消息可以被存储在隔离的集合中。在示例中,每个消息可以与资源标识符相关联,其中,消息可以被存储在数据存储库中,并且与消息相关联的资源标识符可以被存储在隔离的集合中。在一些示例中,用于对对话消息进行加密的密码密钥可以被存储在密钥库中。为了促进搜索和检索,可以使用密钥标识符来在密钥库内索引密钥。密码密钥或密钥标识符可以被存储在与用于存储对话消息的隔离的集合相同的隔离的集合中。由隔离的集合存储的资源当中(例如,消息和密码密钥当中)可以存在关系。作为示例,消息可以彼此相关,并且每个消息也可以与用于对它进行加密的密码密钥相关。作为结果,可以可能的是确定对消息进行解密需要哪个密码密钥,以及相反地,可以使用特定密码密钥来解密哪些消息。

提供本发明内容是为了以简化的形式介绍在以下详细描述中被进一步描述的一些构思。本发明内容并非旨在识别所要求保护的主题的关键特征或基本特征,也并非旨在用于限制所要求保护的主题的范围。示例的附加方面、特征和/或优点将部分地在下面的描述中进行阐述,并且部分将根据描述而变得显而易见,或者可以通过对本公开内容的实践而被了解。

附图说明

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

图1示出了用于对对话进行部分加密的示例性系统的概况。

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

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

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

图4a示出了被存储在隔离的集合中的示例性部分加密的对话的概况。

图4b示出了与部分加密的对话相关联的示例性密钥库的概况。

图5示出了用于对包括部分加密的对话的消息进行加密的示例性方法的概况。

图6示出了用于对部分加密的对话内的消息进行解密的示例性方法的概况。

图7示出了用于执行部分加密的通信的示例性方法的概况。

图8是示出可以用其实践本公开内容的各方面的计算设备的示例性物理组件的框图。

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

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

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

具体实施方式

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

本公开内容提供了用于基于对话成员资格使用不同密钥来部分加密对话的系统和方法。对话可以包括一个或多个消息。在一些示例中,每个消息可以是资源。资源可以由资源标识符标识,所述资源标识符可以是指向特定资源的持久的统一资源标识符(uri)。资源标识符还可以是统一资源定位符(url)、统一资源名称(urn)或指向资源本身的其他合适的标识符或指针。在一个示例中,资源可以被存储在隔离的集合内。在另一示例中,资源可以被存储在数据集合中,而相关联的资源标识符可以被存储在隔离的集合中。例如,资源可以驻留在远程服务器上,并且资源标识符可以用于检索资源(例如,资源可以被存储在远程网络服务器上,其中,资源标识符包括url)。识别资源的位置可以包括:使用例如正则表达式来解析资源标识符,将资源标识符的一个或多个部分提供给搜索实用程序,执行资源标识符,等等。隔离的集合内的关系识别隔离的集合中的两个或多个资源之间的相关性。例如,第一资源(例如,第一消息)可以是对第二资源(例如,第二消息)的回复。在这样的示例中,第一消息与第二消息之间的关系可以是“对其回复(replyto)”或表示两个资源之间的关系的其他类似的标识文本。

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

可以使用一个或多个隔离的集合来存储对话。例如,每个对话消息可以是与资源标识符相关联的资源,并且每个资源标识符可以被存储在隔离的集合中。在一个示例中,一个隔离的集合可以用于存储与对话相关联的所有消息,或者可以使用多个隔离的集合来存储消息(例如,基于对话成员资格、与消息相关联的发送者或接收者、时间标准、对话话题等)。在另一示例中,可以在多个隔离的集合当中划分对话,或者可以在多个隔离的集合当中复制对话的至少一个子部分。

可以使用密码密钥来对消息进行加密,以使得只有在适当的密码密钥是可访问的情况下该消息才可以被解密。在一些示例中,可以使用不同的密码密钥来对对话内的不同消息进行加密。密码密钥可以是对称密钥或由公钥和私钥组成的非对称密钥对,以及其他密码密钥类型。可以使用各种密码算法,包括但不限于高级加密标准(aes)、数据加密标准(des)、rivest-shamir-adleman(rsa)和椭圆曲线密码体制(ecc)等。与多个密码密钥中的其他密码密钥相比,每个密码密钥可以具有类似或不同的属性。作为示例,每个密钥可以具有类似或不同的密钥长度,或者可以使用类似或不同的密码算法。本领域技术人员将领会,在不脱离本公开内容的精神的情况下,可以使用其他密码算法、密钥类型或系统。

密码密钥可以被存储在密钥库中。在一个示例中,与密码密钥有关的信息也可以被存储在密钥库中,包括但不限于算法类型、一个或多个初始化向量或密钥到期日期。密钥库可以是软件组件(例如,加密数据存储库、访问受限的数据库等),或者可以是硬件设备(例如,硬件安全模块、可信平台模块或其他密码硬件设备)。密钥库可以与对话参与者相关联,以使得每个参与者具有用于存储与参与者是其中一方的对话的消息相关联的密码密钥的密钥库。在一些示例中,密钥库可以进一步与对话相关联,以使得每个对话参与者可以具有多个密钥库,所述密钥库用于存储与参与者是其成员的每个个体对话相关联的密码密钥。在另一示例中,可以存在用于存储一个或多个对话和/或一个或多个参与者的密码密钥的集中式密钥库。作为示例,可以使用中央密钥库来保留密码密钥,以便满足数据保留要求或法律义务等其他原因。

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

用于对对话消息进行加密的一个或多个密码密钥可以被存储在隔离的集合中。在一个示例中,隔离的集合可以存储与密码密钥相关联的标识符,而密码密钥可以被存储在别处(例如,在密钥库、数据存储库中等)。在一些示例中,密码密钥(或相关联的标识符)可以被存储在与密码密钥相关的消息相同的隔离的集合中。在一个示例中,密码密钥可以基于相关性或其他间接关联与消息相关联或相关(反之亦然)。例如,可以评估或分析密码密钥和/或消息的各种因素,包括但不限于元数据(例如,时间戳、作者等)、存储方法或位置、或所使用的通信方法。在另一示例中,在隔离的集合内,消息资源与密码密钥资源之间可以存在一个或多个断言或推断的关系。作为结果,可以通过评估消息资源的关系来确定用于对消息进行加密的密码密钥。类似地,可以通过评估密码密钥资源的关系来确定与密码密钥相关联的消息。因此,当对加密消息进行解密时,消息资源与密码密钥资源之间的关系可以用于确定应当使用哪个密码密钥。在一些示例中,如果密码密钥资源包括资源标识符,则资源标识符可以用于从存储位置(例如,密钥库、数据存储库等)访问密码密钥。类似地,如果加密消息资源包括资源标识符,则资源标识符可以用于从存储位置访问加密消息。

当发起会话时,可以生成密码密钥。如以上所讨论的,密码密钥可以是非对称密钥对或对称密钥等。密码密钥可以分发给对话的参与者。在另一示例中,可以存储密码密钥,以使得其可供参与者使用,但是密码密钥本身不可以被直接提供给参与者。作为示例,密码密钥可以被存储在每个参与者的相应密钥库中。

当对话参与者发送消息时,可以在存储消息和/或将消息发送到其他对话参与者之前使用密码密钥来对消息进行加密。在一些示例中,可以使用多个密码密钥来对消息进行连续加密。在一个示例中,对话参与者可以在传输之前使用密码密钥来对消息进行加密。在对话参与者不具有对密码密钥的直接访问的示例中,可以由具有对密码密钥的访问的计算设备接收和加密该消息。加密消息可以被存储在隔离的集合内。隔离的集合可以仅包含消息是其一部分的对话,可以包含对话的消息的子集,可以包含多个对话,或者其任何组合。在一些示例中,可以在消息与用于对消息进行的密码密钥之间形成关系。在其他示例中,属性或元数据可以与加密消息一起存储,所述属性或元数据指示使用哪个密码密钥来对消息进行加密。

其他对话参与者可以接收加密消息。加密消息可以被发送到其他对话参与者,参与者可以接收关于新消息是可用的指示(例如,使用websocket,webhook等),或者对话参与者可以周期性地轮询资源(例如,在隔离的集合中、隔离的集合内的资源等,使用长轮询或其他轮询机制),以确定是否有新消息是可用的。在一些示例中,对话参与者然后可以使用所接收或检索的信息来访问加密消息(例如,从隔离的集合、从数据存储库等)。本领域技术人员将领会,在不脱离本公开内容的精神的情况下,可以使用各种消息递送方法。

一旦对话参与者已经接收或访问加密消息,就可以确定对加密消息进行解密所需的密码密钥。在一些示例中,可以需要多个密码密钥来对加密消息进行解密。该确定可以基于隔离的集合中的消息资源与密码密钥资源之间的关系。在其他示例中,对话参与者可以评估与消息相关联的属性或元数据。然后可以进一步确定所需的密码密钥是否是可访问的以用于对消息进行解密。确定密码密钥是否可访问可以包括评估密码密钥是否在密钥库中可用。如以上所讨论的,密钥库可以是参与者特定的、对话特定的、集中的、或其任何组合等。在一些示例中,与密码密钥相关联的标识符可以用于执行搜索或生成访问请求。在使用多个密码密钥来已经对消息进行连续加密的示例中,可以进行多个确定,以便确定多个密码密钥中的每个密码密钥是否可访问。每个密码密钥可以被存储在与其他密码密钥相同的密钥库或不同的密钥库中,或者可以具有类似或不同的属性。

如果确定了密码密钥可访问,则密码密钥可以用于对消息进行解密并且将消息内容提供给对话参与者。在一个示例中,可以使用多个密码密钥来对消息进行连续解密并且将消息内容提供给对话参与者。然而,如果确定了密码密钥不可访问(例如,不存在于密钥库中、访问请求被拒绝等),则加密消息可以被忽略。在一些示例中,可以向对话参与者提供关于消息被接收但其内容未被解密的指示。作为示例,指示可以包括视觉指示符(例如,乱码或以其他方式编写的文本、图标等)。

在对话会话期间,可以发生导致新密码密钥的生成的事件。该事件可以是周期性的(例如,每小时、每天、六小时后、一周中特定的一天、特定时间等),或者可以是基于规则的(例如,对话成员资格的变化、来自对话参与者的请求等)。与旧的密码密钥相比,新密码密钥可以具有类似的属性或者可以具有不同的属性。在一些示例中,可以在生成新密码密钥时评估对话状态或事件的属性。作为示例,可以确定高级员工已加入对话,并且作为结果,应使用更高安全性密钥长度和/或更强加密算法来加密消息。新密码密钥可以以与以上所讨论的旧密码密钥类似或不同的方式存储。

当对话参与者离开对话会话时,用于对话会话的密码密钥可以改变,从而确保未来的消息不可以由现在的前对话参与者解密。然而,假设前对话参与者仍然具有对用于先前加密的对话消息的密码密钥的访问,则前对话参与者可以是仍然能够访问来自对话会话的旧消息的。类似地,当对话参与者加入对话时,新对话参与者可以接收新生成的密码密钥,并且作为结果可以是能够在对话中发送和接收消息的。然而,假设新对话参与者不具有对先前的密码密钥的访问,则新对话参与者可以是不能够对先前发送的消息进行解密的。

作为使用密码密钥来对消息进行加密的结果,通过删除对消息进行解密所需的密码密钥来容易地清除或删除过去的消息可以是可能的。作为示例,可以周期性地清除被存储在密钥库中的密钥,或者可以响应于对规则的满足来清除密钥,从而确保与清除的密钥相关联的消息不可访问或被有效地删除。在另一示例中,密钥和/或相关联的加密消息可以代替地被保留或置于托管中以便遵守治理策略、数据保留策略或法律义务以及其他原因。在一些示例中,某些消息可以被更换密钥,以便仅清除与密码密钥相关联的消息的子集。

即使对话由不同的一组人访问,对话成员资格也可以保持不变。更具体地,参与者的对话成员资格可以与用户帐户或组织内的职位等相关联。如此,可以基于对与对话的消息相关联的对话参与者的密码密钥的访问来授予或撤销对话成员资格。这可以允许多个人或用户占据对话参与者的角色,而不需要每当对话参与者的身份改变时生成新密码密钥。作为示例,这可以允许访问被授予轮流的“当天的官员”,其中,多个用户中的一个用户被给予对该对话的定期轮流的访问。

在密码密钥是非对称密钥对的示例中,密钥对的公钥可以被提供给比具有对密码密钥对的私钥的访问的对话参与者更具包容性或除了具有对密码密钥对的私钥的访问的对话参与者以外的群组。作为结果,可以存在具有“只写”访问的附加对话参与者,其中,只写对话参与者可以向会话添加消息,但是不能读取或以其他方式获得对会话内容的访问。作为对比,那些具有对私钥的访问的参与者可以具有对消息的“读访问”,这是因为他们能够对使用相关联的公钥加密的对话消息进行解密。

在一些示例中,读访问对话参与者可以使用不同的密码密钥来对公钥加密消息进行重新加密,从而“揭露(uncloack)”由只写对话参与者发送的消息。不同的密码密钥可以比私钥更广泛地可用。例如,可以将不同的密码密钥提供给与具有对公钥的访问的对话参与者群组类似的对话参与者群组。作为结果,具有对不同密码密钥的访问的对话参与者可以是能够读取所揭露的消息的。以这种方式,提供用于讨论的被主持的论坛可以是可能的,其中,主持人群组(例如,读取访问对话参与者)可以批准或揭露从较大的对话参与者(例如,只写对话参与者)群组接收的消息。在一些示例中,揭露的消息可以被存储在与原始公钥加密消息相同的隔离的集合中,或者可以被存储在不同的隔离的集合中。

作为示例,可以在多个对话参与者之间发起对话会话。对话会话可以使用许多通信方法中的至少一种来发生,所述许多通信方法包括但不限于电子邮件、即时消息传送或者文本或多媒体消息传送。类似地,可以在对话会话期间传送许多类型的数据,例如包含文本数据、音频数据、视频数据、图像数据或二进制数据等的消息。本领域技术人员将领会,可以使用不同的通信方法,并且可以在不脱离本公开内容的精神的情况下传送不同的内容。

当发起对话会话时,可以生成密码密钥并且将其存储在一个或多个密钥库中。可以使密码密钥对多个对话参与者可用。然后,对话参与者可以交换消息,其中,每个消息可以在其被提供给对话参与者之前使用密码密钥来加密。此外,加密消息可以被存储在一个或多个隔离的集合中,以使得对话消息可供对话参与者使用相关联的密码密钥来解密。在一些示例中,密码密钥可以被存储在每个加密消息中或与每个加密消息相关联,以促进对必需的密码密钥的检索。

在某些时候,可能发生事件。如以上所讨论的,事件可以是周期性的或基于规则的。作为示例,事件可以包括对话成员资格的变化(例如,对话参与者可以加入或离开会话等)。作为该事件的结果,可以生成新密码密钥并且使其对于当前的对话参与者群组可用(例如,通过将其存储在一个或多个密钥库中)。然后,对话参与者可以在对话会话继续时使用新密码密钥来对消息进行加密和解密,从而确保后续消息保持安全并且不可由前对话参与者读取。类似地,如果新参与者加入了对话会话,则新参与者将只具有对新密码密钥的访问(但不具有对任何旧密码密钥的访问),并且将因此不能对在加入对话会话之前传送的消息进行解密。

对话会话可以继续,在此期间,可以作为一个或多个周期性或基于规则的事件的结果来旋转用于对对话消息进行加密和解密的密码密钥。如此,会话可以保持安全,并且可以通过控制对各个对话子部分进行加密所使用的一个或多个密码密钥的访问来管理对该对话的子部分的访问。在一些示例中,可以清除密码密钥以有效地删除对话的子部分。在其他示例中,可以保留密码密钥以便满足数据保留要求或其他法律义务。

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

如所呈现的,系统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可以是网络服务器,服务器设备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(p1)),并且资源提供者214可以是联系人管理应用,其包括联系人资源232(例如,联系人1(c1))、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中描绘的图形形式呈现时,每个资源标识符可以被称为“节点”,并且每个关系可以被称为“边”。集合创建实用程序还可以使用一个或多个规则集来识别资源和/或确定集合的资源类型,所述规则集可以包括根据语义网络技术定义的规则,所述语义网络技术例如资源描述框架(rdf)、rdf模式(rdfs)、sparql协议、rdf查询语言(sparql)、网络本体语言(owl)等。例如,集合300包括表示底层资源(在所描绘的示例中为“email789”)的资源标识符312。类似地,资源标识符304表示资源文档“doc123”,并且资源标识符302表示资源任务“task123”。被包括在隔离的集合300中的资源和关系中的每一者可以已经由开发者通过集创建应用来断言。例如,开发者可以手动添加资源标识符和资源标识符之间的关系中的每一者。作为示例,开发者可以手动指示“task123”是“doc123”上的任务,如由“taskon(其上的任务)”关系316在集合300中表示的。资源标识符和关系也可以由外部机器人或由开发人员创建的应用断言。例如,可以对加载项进行编程以监控浏览器或其他应用中的活动以跟踪应用的使用。基于应用的使用,加载项发送要被包括在集合300中的附加的资源和关系。

与断言的资源标识符和关系形成对比,集合创建实用程序可以执行规则集以确定附加的关系和资源类型,其在本文中被称为“推断的关系”和“推断的资源标识符”或“推断的资源类型”。例如,在执行规则集时,集合创建实用程序可以确定资源标识符312表示电子邮件消息,并且资源标识符304表示文档。下面更详细地讨论了推断的关系和资源的生成。

隔离的集合300还描绘了资源标识符302与资源标识符304、306和308以及资源标识符310相关联。集合创建实用程序可确定资源标识符302表示要对标识符304、306执行的任务。基于该确定,集合创建实用程序可以指派关系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/task123'。查询结果可以包括资源标识符302并且被可视化,如图3b所示。在图3c中,查询已被修改为'http://.../collection300/task123?$expand=taskon'并且针对集合300执行。查询结果可以包括资源标识符302、304、306和308以及关系316、318和320,并且被可视化,如图3c所示。在图3d中,查询已被修改为'http://.../collection300/task123?$expand=taskon($expand=attachmenton)'并且针对集合300执行。查询结果可以包括资源标识符302、304、306、308、312和314以及关系316、318、320、324和326,并被可视化,如图3d所示。在图3e中,查询已被修改为'http://.../collection300/task123?($expand=taskon($expand=attachmenton)($filter=subjecteq'sets'))'并且针对集合300执行。由于只有资源标识符包括314主题“集”,所以查询结果可以包括资源标识符302、306和314以及关系318和326,并且可以被可视化,如图3e所示。

图4a示出了被存储在隔离的集合400中的示例性部分加密的对话的概观。隔离的集合400包括消息1402、消息2404和消息3406。消息1402、消息2404和消息3406可以是如本文所公开的在对话会话期间被传送的消息(或对消息的引用)。关系408和410使用实线箭头来指示分别在消息2404与消息1402以及消息3406与消息2404之间存在断言的关系“replyto(对其回复)”。关系408和410是方向性的,这是因为它们指示消息2是对消息1的回复,并且消息3是对消息2的回复,而不是相反。类似地,关系412和414使用虚线箭头来指示分别在消息1402与消息2404以及消息2404与消息3406之间存在推断的关系“repliedtoby(由其回复)”。关系412和414是方向性的,这是因为它们指示消息1404由消息2404回复,并且消息2404由消息3406回复,而不是相反。

隔离的集合400还包括密钥1416和密钥2418,其可以是用于对部分加密的对话内的消息进行加密的密码密钥(或对密码密钥的引用)。更具体地,密钥1416可以早先已经在对话会话中被生成并且用于对消息1402和消息2404进行加密。因此,关系424和426使用实线箭头来指示分别在消息1402与密钥1416以及消息2404与密钥1416之间存在断言的关系“encryptedby(由其加密)”。如此,关系424和426指示消息1402和消息2404均由密钥1416加密。此外,关系420和422使用虚线箭头来指示分别在密钥1416与消息1402以及密钥1416与消息2404之间存在推断的关系“usedtoencrypt(用于加密)”。作为结果,确定密钥1416被用于对消息1402和消息2404二者进行加密是可能的。

类似地,如本文所公开的,可以在事件的发生之后生成密钥2418,之后可以已经生成密钥2418并且将其用于对消息3406进行加密。因此,关系430使用实线箭头来指示在消息3406与密钥2418之间存在断言的关系“encryptedby”。此外,关系428使用虚线箭头来指示密钥2418与消息3406之间存在推断的关系“usedtoencrypt”。作为结果,确定密钥2418被用于对消息3406进行加密并且消息3406由密钥2418加密可以是可能的。

图4b示出了与部分加密的对话相关联的示例性密钥库450的概观。如以上所讨论的,密钥库450可以是特定于对话参与者、对话的密钥库,或者它可以是中央密钥库等。密钥库450可以包括一个或多个密钥条目,其中,每个密钥条目包括密钥标识符和密钥值。如以上所讨论的,密钥标识符可以是密钥指纹、密钥或与密钥有关的信息的散列(例如,md5、sha-1等)或标识符(例如,guid、uri等)等等。密钥值可以是与由密钥库存储的密码密钥有关的数据。

密钥库450包括第一密钥条目452a-b和第二密钥条目454a-b。第一密钥条目包括密钥标识符密钥1452a和密钥值452b。类似地,第二密钥条目包括密钥标识符密钥2454a和密钥值454b。在一些示例中,可以根据密钥标识符452a和454a来索引示例性密钥库450,以使得使用密钥标识符(例如,“密钥1”或“密钥2”)来搜索相关联的密钥值(例如,密钥值452b和454b)可以是可能的。

参考图4a和4b,对话参与者可以希望对由隔离的集合400存储的消息进行解密。如此,可以访问消息1402并且可以确定适当的密码密钥。在示例中,可以通过评估关系424来确定适当的密码密钥,以确定应当使用密钥1416来对消息1402进行解密。作为结果,可以确定密钥1416是否可访问以执行对消息1402的解密。在一些示例中,可以访问密钥库450以确定是否存在与密钥1416的标识符匹配的标识符。如果对话参与者具有对密钥库450中的密钥1452a的访问,则可以使用密钥值452b来对消息1402进行解密。替代地,如果确定密钥值452b不可访问,则可以提供关于消息1402未被解密的指示。

类似地,可以访问消息2404(例如,基于“repliedtoby”关系412)并且可以确定适当的密码密钥。在示例中,可以通过评估关系426来确定适当的密码密钥,以确定应当使用密钥1416来对消息2404进行解密。作为结果,可以确定密钥1416是否可访问以执行对消息2404的解密。在一些示例中,可以访问密钥库450以确定是否存在与密钥1416的标识符匹配的标识符。如果对话参与者具有对密钥库450中的密钥1452a的访问,则可以使用密钥值452b来对消息2404进行解密。替代地,如果确定密钥值452b不可访问,则可以提供关于消息2404未被解密的指示。假定使用了相同的密码密钥密钥1416来对消息1402和消息2404进行加密,可以对与密钥1416有关的信息进行缓存,以使得可以不需要以上关于对消息2404的解密描述的至少一些后续访问确定。

在对话会话期间,对话成员资格可以已经改变,使得新密钥(例如,密钥2418)被生成。如此,后续消息(例如,消息3406)可以已经使用新密钥来加密。因此,为了对消息3406进行解密,可以访问该消息(例如,基于“repliedtoby”关系414)并且可以确定适当的密码密钥。在示例中,可以通过评估关系430来确定适当的密码密钥,以确定密钥2418应当用于对消息3406进行解密。作为结果,可以确定密钥2418是否可访问以执行对消息3406的解密。在一些示例中,可以访问密钥库450以确定是否存在与密钥2418的标识符匹配的标识符。如果对话参与者具有对密钥库450中的密钥2454a的访问,则密钥值454b可以用于对消息3406进行解密。替代地,如果确定密钥值454b不可访问,则可以提供关于消息3406未被解密的指示。

在另一示例中,对话参与者可以希望对对话参与者可访问的、对话内的那些消息进行解密。如果对话参与者具有对与密钥1416相关联的密钥1452a-b的访问,则可以确定可以基于“usedtoencrypt”关系420和422来对消息1402和消息2404进行解密(例如,使用密钥值452b)。类似地,如果对话参与者具有对与密钥2418相关联的密钥2424a-b的访问,则可以确定消息3406可以基于“usedtoencrypt”关系428来解密(例如,使用密钥值454b)。因此,正如使用“encryptedby”关系来确定需要哪个密码密钥可以是可能的,基于“usedtoencrypt”关系来确定可以使用特定密钥来解密的消息可以是可能的。

图5示出了用于对包括部分加密的对话的消息进行加密的示例性方法500的概观。方法500在操作502处,其中,消息可以被接收。可以从对话参与者的计算设备(例如,移动计算设备、平板计算设备、个人计算设备等)接收消息。在一些示例中,可以从图1中的客户端设备102a-c接收消息。

移至操作504,可以确定是否应使用现有密码密钥。可能早先在对话会话中已经生成了现有的密码密钥。该确定可以包括评估自生成现有密码密钥以来是否已发生事件。如本文进一步描述的,事件可以是周期性的或基于规则的。如果确定了自生成现有密码以来已发生这样的事件,则流程进入分支否(no)到操作506,其中,可以生成新密码密钥。新密码密钥可以是非对称密钥对或对称密钥等。新密码密钥可以被分发给对话的参与者,或者可以被存储以使得它可供参与者使用但是不可由对话参与者直接访问。在一些示例中,可以在生成新密码密钥时评估对话状态或事件的属性。在示例中,新密码密钥可以与关联于新密码密钥的标识符一起被存储在密钥库中。此外,标识符可以被存储在隔离的集合中,例如其中存储了对话会话的消息的隔离的集合。在另一示例中,密码密钥可以被直接存储在隔离的集合中。然后,流程继续到操作508以使用新生成的密码密钥,如下面更详细讨论的。然而,如果确定了应当使用现有的密码密钥,则流程进入分支是(yes)到操作508以使用现有的密码密钥。

在操作508处,可以使用所确定的密码密钥(例如,基于确定操作504的结果,其为新生成的密码密钥或现有的密码密钥)来对在操作502处接收的消息进行加密。然后,流程移至操作510,其中,加密消息可以被存储在数据存储库中。在一些示例中,加密消息可以被存储在隔离的集合中(例如,图4中的隔离的集合400)。在另一示例中,加密消息可以与资源标识符相关联并且被存储在数据存储库中,而与加密消息相关联的资源标识符可以被存储在隔离的集合中。加密消息可以与用于对消息进行加密的密码密钥相关联,通过形成隔离的集合内的消息与密码密钥之间的关系,或者通过存储提供关于使用哪个密码密钥的指示的属性或元数据,等等。流程在操作510处终止。

图6示出了用于对部分加密的对话内的消息进行解密的示例性方法600的概观。方法600在操作602处开始,其中,可以接收访问请求。访问请求可以用于消息,其中,消息可以根据本文公开的方面已被加密(例如,使用如图5所示的方法500)。可以已经从对话参与者的计算设备(例如,移动计算设备、平板计算设备、个人计算设备等)接收访问请求。在一些示例中,可以从图1中的客户端设备102a-c接收消息。

移至操作604,可以访问加密消息。在一些示例中,访问加密消息可以包括访问隔离的集合内的加密消息。在另一示例中,与加密消息相关联的资源标识符可以被存储在隔离的集合中,然后可以使用所述资源标识符来从数据存储库中检索消息。在操作606处,可以识别与加密消息相关联的密钥。识别密钥可以包括评估隔离的集合内的加密消息的关系(例如,“encryptedby”关系,其例如图4a中的关系424、426和430)。在另一示例中,可以基于与加密消息一起存储的或相关联的属性或元数据来识别密钥。

在操作608处,可以确定密钥是否可访问。在一些示例中,这可以包括在密钥库中搜索所识别的密钥(例如,使用与密钥相关联的密钥标识符)。如本文所讨论的,密钥库可以是与对话参与者、对话或其某个组合相关联的密钥库。替代地,密钥库可以是集中式密钥库。在另一示例中,确定可以包括评估访问控制列表或与对话参与者有关的其他特权,以确定对话参与者是否能够访问密钥(例如,在密钥库中、在数据存储库中等等)。如果确定了密钥不可访问,则流程分支进入否到操作610,其中,可以提供关于密钥不可访问的指示。作为示例,该指示可以包括视觉指示符(例如,乱码或以其他方式编写的文本、图标等)。在其他示例中,可以不提供指示。流程在操作610处终止。

替代地,如果在确定操作608处确定了密钥是可访问的,则流程移至操作612,其中,可以使用密钥来对消息进行解密。对消息进行解密可以包括访问密钥和执行解密操作。在另一示例中,可以将消息提供给具有对密钥的访问的另一组件或模块,并且组件或模块可以对该消息进行解密。在操作614处,可以提供解密消息。在一个示例中,可以将解密消息传送到对话参与者的客户端设备。在一些示例中,可以向对话参与者显示解密消息。流程在操作614处终止。

图7示出了用于执行部分加密的通信的示例性方法700的概观。方法700在操作702处开始,其中,可以在多个参与者之间建立对话会话。建立对话会话可以包括与参与者中的每一个建立连接。在另一示例中,可以创建隔离的集合,其中,可以存储在对话会话期间被传送的消息。可以向参与者授予对隔离的集合的访问。在一些示例中,可以生成一个或多个密钥库,其中,可以存储在对话会话期间被使用的密钥。密钥库可以是参与者特定的、对话特定的或其组合。在一些示例中,中央密钥库可以用作其他密钥库的替代方案或者附加于其他密钥库来使用。

移至操作704,可以确定密码密钥。假定不存在预先存在的密钥,则可以生成新密码密钥。如以上所讨论的,密码密钥可以是非对称密钥对或对称密钥等。密码密钥可以分发给对话参与者。在另一示例中,可以存储密码密钥以使得其可供参与者使用(例如,在一个或多个密钥库中),但是密码密钥本身不可以被直接提供给参与者。在一些示例中,密码密钥(或相关联的标识符)可以被存储在隔离的集合中,其中,将存储来自对话会话的消息。

在操作706处,可以从参与者接收消息。在一些示例中,可以从图1中的客户端设备102a-c接收消息。可以使用安全或不安全的通信信道来接收消息。在接收到消息之后,流程移至操作708,其中,可以使用在操作704中确定的密码密钥来对消息进行加密。对消息进行加密可以包括从密钥库(例如,中央密钥库、参与者密钥库等)访问密码密钥。加密消息可以被存储在隔离的集合中,并且还可以与密码密钥相关联(例如,通过在存储的消息与密码密钥之间形成“encryptedby”关系)。

移至操作710,可以将加密消息提供给对话参与者。在一个示例中,可以将加密消息发送到对话参与者。在另一示例中,参与者可以接收关于在隔离的集合中新消息可用的指示,或者参与者可以周期性地轮询隔离的集合以确定是否存在新消息。作为结果,对话参与者可以发出对消息的请求,从而使得图6所示的方法600的操作被执行。

从操作710,当参与者使用在操作704中确定的密码密钥彼此通信时,流程可以在操作706-710之间循环。最后,流程可以代替地移至操作712,其中,发生事件。该事件可以是周期性的(例如,每小时、每天、六小时后、一周中特定的一天、或特定时间等)或者可以是基于规则的(例如,对话成员资格的变化、来自对话参与者的请求等)。

作为事件发生的结果,流程可以返回到操作704,其中,可以再次确定密码密钥。在一些示例中,所确定的密码密钥可以是先前使用的密钥(例如,密钥先前用于相同的对话参与者群组,密钥在特定会话或环境条件下使用,等等)。在其他示例中,可以生成新密钥。新密码密钥可以具有类似的属性或者可以具有不同的属性。在一些示例中,可以在生成密码密钥时评估在操作712处发生的事件或对话状态的属性。作为示例,可以确定高级员工已加入对话,并且作为结果现在应使用更高安全性的密钥长度和/或密码算法来对消息进行加密。新密码密钥可以以与如以上所讨论的用于先前密码密钥的方式类似或不同的方式存储。

然后,流程可以在操作706和710之间继续,其中,对话参与者可以使用来自操作704的新确定的密钥在彼此之间传送消息。流程可以代替地进入分支(例如,周期性地、作为满足规则的结果等等)到操作712,以使得新密码密钥针对向前移动的对话会话被确定并用于所述对话会话中。

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

图8是示出可以用其实践本公开内容的各方面的计算设备800的物理组件(例如,硬件)的框图。下面描述的计算设备组件可以适用于上述计算设备,包括客户端计算设备102a-c和服务器计算设备106a-c。在基本配置中,计算设备800可以包括至少一个处理单元802和系统存储器804。取决于计算设备的配置和类型,系统存储器804可以包括但不限于易失性存储装置(例如,随机存取存储器)、非易失性存储装置(例如,只读存储器)、闪存或这样的存储器的任何组合。系统存储器804可以包括操作系统805和适合于执行本文公开的各个方面的一个或多个程序模块806,例如隔离的集合对话组件824和对话加密组件826。例如,操作系统805可以适合控制计算设备800的操作。此外,本公开内容的实施例可以与图形库、其他操作系统或任何其他应用程序相结合来实现,而不限于任何特定的应用或系统。该基本配置通过虚线808内的那些组件在图8中示出。计算设备800可以具有附加的特征或功能。例如,计算设备800还可以包括附加的数据存储设备(可移动和/或不可移动),例如磁盘、光盘或磁带。这样的附加存储装置由可移动存储设备809和不可移动存储设备810在图8中示出。

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

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

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

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

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

图9a和9b示出了用其可以实践本公开内容的实施例的移动计算设备900,例如移动电话、智能电话、可穿戴计算机(例如,智能手表)、平板计算机、膝上型计算机等。在一些方面中,客户端可以是移动计算设备。参考图9a,示出了用于实现各方面的移动计算设备900的一个方面。在基本配置中,移动计算设备900是具有输入元件和输出元件二者的手持式计算机。移动计算设备900通常包括显示器905以及允许用户将信息录入到移动计算设备900中的一个或多个输入按钮910。移动计算设备900的显示器905还可以充当输入设备(例如,触摸屏显示器)。如果被包括,可选的侧输入元件915允许另外的用户输入。侧输入元件915可以是旋转式开关、按钮或任何其他类型的手动输入元件。在替代的方面中,移动计算设备900可以包括更多或更少的输入元件。例如,在一些实施例中,显示器905可以不是触摸屏。在又一替代实施例中,移动计算设备900是便携式电话系统,例如蜂窝电话。移动计算设备900还可以包括可选的按键板935。可选的按键板935可以是物理按键板或生成在触摸屏显示器上的“软”按键板。在各个实施例中,输出元件包括用于示出图形用户接口(gui)的显示器905、视觉指示器920(例如,发光二极管)和/或音频换能器925(例如,扬声器)。在一些方面中,移动计算设备900包括用于向用户提供触觉反馈的振动换能器。在又一方面中,移动计算设备900包括输入端口和/或输出端口,例如音频输入(例如,麦克风插口)、音频输出(例如,耳机插口)以及视频输出(例如,hdmi端口),以用于将信号发送到外部设备或者从外部设备接收信号。

图9b是示出了移动计算设备的一个方面的架构的框图。即,移动计算设备900可以包括用于实现一些方面的系统(例如,架构)902。在一个实施例中,系统902被实现为能够运行一个或多个应用(例如,浏览器、电子邮件、日历、联系人管理器、消息传送客户端、游戏和媒体客户端/播放器)的“智能电话”。在一些方面中,系统902被集成为计算设备,例如集成的个人数字助理(pda)以及无线电话。

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

系统902具有电源970,所述电源970可以被实现为一个或多个电池。电源970可能还包括外部电源,例如ac适配器或为电池补电或再充电的电动对接支架。

系统902还可以包括执行发送和接收射频通信的功能的无线电接口层972。无线电接口层972经由通信载波或服务提供者促进系统902与“外界”之间的无线连接。去往和来自无线电接口层972的传输是在操作系统964的控制下进行的。换言之,由无线电接口层972接收的通信可以经由操作系统964散播到应用程序966,反之亦然。

视觉指示器920可以用于提供视觉通知,并且/或者音频接口974可以用于经由音频换能器925产生可听的通知。在所示实施例中,视觉指示器920是发光二极管(led),并且音频换能器925是扬声器。这些设备可以直接耦合到电源970,以使得当被激活时,它们在由通知机制规定的持续期间内保持开启,即使处理器960和其他组件可能为了节约电池电力而关闭也是如此。led可以被编程为保持无限开启直至用户采取措施来指示设备的加电状态。音频接口974用于将可听信号提供给用户以及从用户接收可听信号。例如,除了耦合到音频换能器925之外,音频接口974还可以耦合到麦克风以接收可听输入,例如以促进电话对话。根据本公开内容的实施例,麦克风还可以充当音频传感器以促进对通知的控制,如以下将描述的。系统902还可以包括视频接口976,其实现机载相机(on-boardcamera)930的用于记录静态图像、视频流等的操作。

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

通过移动计算设备900生成或捕获并且经由系统902存储的数据/信息可以本地地存储在移动计算设备900上,如以上所讨论的,或者数据可以被存储在可以由设备经由无线电接口层972或者经由移动计算设备900与关联于移动计算设备900的单独的计算设备(例如,诸如因特网之类的分布式计算网络中的服务器计算机)之间的有线连接访问的任何数量的存储介质上。应当领会,这样的数据/信息可以经由移动计算设备900通过无线电接口层972或者通过分布式计算网络来访问。类似地,根据公知的数据/信息传输和存储手段(包括电子邮件和协作数据/信息共享系统),这样的数据/信息可以容易地在计算设备之间传输以进行存储和使用。

图10示出了用于处理在计算系统处从远程源(例如,如上所述的个人计算机1004、平板计算设备1006或移动计算设备1008)接收的数据的系统的架构的一个方面。在服务器设备1002处显示的内容可以被存储在不同的通信信道或其他存储类型中。例如,可以使用目录服务1022、网络门户1024、邮箱服务1026、即时消息传送存储库1028或社交网络站点1030来存储各种文档。对话加密组件1021可以由与服务器设备1002通信的客户端采用,并且/或者隔离的集合会话组件1020可以由服务器设备1002采用。服务器设备1002可以通过网络1015提供去往和来自诸如个人计算机1004、平板计算设备1006和/或移动计算设备1008(例如,智能电话)之类的客户端计算设备的数据。例如,上述计算机系统可以体现在个人计算机1004、平板计算设备1006和/或移动计算设备1008(例如,智能电话)中。除了接收可用于在图形发起系统处预处理或在接收计算系统处后处理的图形数据之外,计算设备的这些实施例中的任何实施例还可以从存储库1016获得内容。

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

根据前述公开内容将理解,技术的一个方面涉及一种系统,包括:至少一个处理器;以及存储器,其存储指令,所述指令在由所述至少一个处理器执行时执行一组操作。所述操作包括:从多个计算设备中的计算设备接收对话会话的第一消息;使用第一密码密钥来生成所述第一消息的第一加密消息;存储所述第一加密消息,其中,所述第一加密消息与所述第一密码密钥相关联;向所述多个计算设备中的一个或多个计算设备提供对所述第一加密消息的指示;确定发生的事件;响应于所述确定,生成用于在所述对话会话期间使用的第二密码密钥;从所述多个计算设备中的计算设备接收所述对话会话的第二消息;使用所述第二密码密钥来生成所述第二消息的第二加密消息;存储所述第二加密消息,其中,所述第二加密消息与所述第二密码密钥相关联;以及向所述多个计算设备中的一个或多个计算设备提供对所述第二加密消息的指示。在示例中,所述第一密码密钥和所述第一加密消息被存储在隔离的集合中。在另一示例中,提供对所述第一加密消息的指示包括提供关于新消息在所述隔离的集合中是可用的指示。在另外的示例中,将所述第一加密消息与所述第一密码密钥相关联包括创建所述隔离的集合中的所述第一加密消息与所述第一密码密钥之间的关系。在又一示例中,生成所述第二密码密钥包括评估所述事件的属性和所述对话会话的属性中的至少一者。在又一示例中,所述事件是所述多个计算设备的成员资格的变化以及对于已经经过一定量的时间的确定之一。在另一示例中,所述多个计算设备的成员资格的所述变化包括将计算设备添加到所述多个计算设备以及从所述多个计算设备中移除计算设备中的至少一者。

在另一方面中,技术涉及一种用于对部分加密的对话的消息进行解密的计算机实现的方法。所述方法包括:从计算设备接收对加密消息的访问请求;访问由隔离的集合存储的所述加密消息;识别与所述加密消息相关联的密码密钥;确定所识别的密码密钥是否是可访问的;当确定了所述密码密钥是不可访问的时,提供关于所述密码密钥是不可访问的指示;当确定了所述密码密钥是可访问的时,使用所述密码密钥来生成所述加密消息的解密消息;以及将所述解密消息提供给所述计算设备。在示例中,所述密码密钥被存储在密钥库中,并且与所述密码密钥相关联的密钥标识符被存储在所述隔离的集合中。在另一示例中,识别与所述加密消息相关联的所述密码密钥包括:使用所述隔离的集合中的所述加密消息的一个或多个关系来确定所述密钥标识符。在另外的示例中,确定所识别的密码密钥是否是可访问的包括基于所述密钥标识符来确定所识别的密码密钥是否在所述密钥库中。在又一示例中,所述密钥库是中央密钥库、与所述计算设备相关联的密钥库以及与部分加密的对话相关联的密钥库之一。在又一示例中,所述访问请求是响应于关于新加密消息是可用的指示而被接收的。

在另一方面中,技术涉及另一种用于提供加密的对话会话的计算机实现的方法。所述方法包括:从多个计算设备中的计算设备接收所述对话会话的第一消息;使用第一密码密钥来生成所述第一消息的第一加密消息;存储所述第一加密消息,其中,所述第一加密消息与所述第一密码密钥相关联;向所述多个计算设备中的一个或多个计算设备提供对所述第一加密消息的指示;确定发生了事件;响应于所述确定,生成用于在所述对话会话期间使用的第二密码密钥;从所述多个计算设备中的计算设备接收所述对话会话的第二消息;使用所述第二密码密钥来生成所述第二消息的第二加密消息;存储所述第二加密消息,其中,所述第二加密消息与所述第二密码密钥相关联;以及向所述多个计算设备中的一个或多个计算设备提供对所述第二加密消息的指示。在示例中,所述第一密码密钥和所述第一加密消息存储在隔离的集合中。在另一示例中,所述方法还包括:确定发生了第二事件;响应于对所述第二事件的所述确定,生成第三密码密钥;使用所述第二密码密钥来生成所述第二加密消息的解密消息;使用所述第三密码密钥来生成所述解密消息的更换密钥的加密消息;以及存储所述更换密钥的加密消息,其中,所述更换密钥的加密消息与所述第三密码密钥相关联。在另外的示例中,将所述第一加密消息与所述第一密码密钥相关联包括创建所述隔离的集合中的所述第一加密消息与所述第一密码密钥之间的关系。在又一示例中,所述方法还包括:确定发生了第二事件;响应于对所述第二事件的所述确定,生成第三密码密钥;使用所述第三密码密钥来生成所述第一加密消息的第一连续加密消息;以及存储所述第一连续加密消息,其中,所述第一连续加密消息与所述第一密码密钥和所述第三密码密钥相关联。在又一示例中,所述事件是所述多个计算设备的成员资格的变化以及关于已经经过一定量的时间的确定之一。在另外的示例中,所述多个计算设备的成员资格的所述变化包括将计算设备添加到所述多个计算设备以及从所述多个计算设备中移除计算设备中的至少一者。

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

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

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