呈现具有使用数据的可验证凭证的制作方法

文档序号:31849969发布日期:2022-10-19 00:49阅读:52来源:国知局
呈现具有使用数据的可验证凭证的制作方法
呈现具有使用数据的可验证凭证


背景技术:

1.数字身份是一种跨不同数字上下文跟踪实体的机制。在确定身份之后,可以对具有该身份的实体采取适当的动作。例如,可以向实体提供授权、权限、定制和访问。因此,数字身份是一种用于通过适当包含授权和权限来确保信息被限制在适当的信任边界内的重要机制。数字身份也是一种用于确保在访问用户的数据和定制时获得积极且一致的用户体验的重要机制。
2.目前使用的大多数证明身份的文件或记录是由中央组织发行的,中央组织是诸如政府、公司、学校、雇主或其他服务中心或监管组织。这些组织通常在集中的身份管理系统中维护每个成员的身份。集中式身份管理系统是用于组织管理已发行身份、身份验证、授权、角色和权限的集中式信息系统。集中式身份管理系统被认为是安全的,因为它们通常使用专业维护的硬件和软件。通常,身份发行组织会设置在组织中注册人员的条款和要求。当一方需要验证另一方的身份时,验证方往往需要通过集中式身份管理系统来获取验证和/或认证对方身份的信息。
3.去中心化标识符(did)是一种较新类型的标识符。去中心化标识符独立于任何集中式注册表、身份提供者或证书颁发机构。分布式账本技术(例如区块链)为使用完全去中心化的标识符提供了机会。分布式账本技术使用分布式账本以可验证的方式记录两方或多方之间的事务。一旦事务被记录,在不更改账本所有后续部分的情况下,无法追溯地更改账本部分中的数据。这提供了一个相当安全的平台,其中很难或不可能篡改分布式账本中记录的数据。由于did通常不受集中管理系统控制,而是由did的所有者拥有,因此did有时被称为无权限身份。
4.本文要求保护的主题不限于解决任何缺点或仅在诸如上述环境中操作的实施例。相反,提供该背景技术仅是为了说明一个示例性技术领域,本文描述的一些实施例可以在该领域中被实践。


技术实现要素:

5.提供本发明内容以便以简化形式介绍概念的选集,这些概念将在下面的具体实施方式中进一步描述。本发明内容并非旨在标识所要求保护的主题的关键特征或基本特征,也不旨在用作确定所要求保护的主题的范围的帮助。
6.现有的计算技术提供了一种被称为“可验证凭证”的数据结构。在这些技术中,声明发行者对主题提出一个或多个声明,并生成可验证凭证。可验证凭证包括那些(多个)声明以及证明指令(例如元数据),以证明(多个)声明未被篡改并且确实由声明发行者发行。然后,声明发行者将可验证凭证提供给声明持有者,以提供给任何依赖这些声明真实性的依赖方。
7.例如,声明发行者可能是与负责签发驾驶执照的政府机构相关联的计算系统。政府机构可以生成可验证凭证,其中包含关于公民的声明,例如出生日期、居住地址、体重、眼睛颜色、头发颜色、驾驶授权、驾驶授权限制等。政府机构向公民发行可验证凭证。如果用户
被执法部门阻止,公民可以出示可验证凭证,从而与执法部门相关的计算系统可以使用证明指令来验证声明是由政府机构发行的,并且自发行以来确实没有被篡改。在另一个示例中,提供接种的组织可以向孩子的父母发出声明,声称孩子已经接受了某些接种。然后,家长可以将这些接种声明提交给孩子将就读的学校。
8.然而,发明人已经认识到可验证凭证的便携性对于改进可验证凭证的实用性很重要。例如,这种便携性包括高效地向多个持有者发行可验证凭证的能力,以及任何给定持有者在不同位置使用可验证凭证的能力,甚至在使用受持有者控制的多个设备呈现可验证凭证的情况下。以这种方式跟踪可验证凭证的使用可能会变得非常困难。然而,目前没有跟踪可验证凭证被如何使用的机制,更不用说在使用多个设备来呈现可验证凭证时可验证凭证被如何使用。
9.本文公开的实施例涉及可验证凭证的呈现,该可验证凭证在表示可验证凭证以及可验证凭证的使用数据的数据结构内被表示。可验证凭证的使用被监测,使得随着可验证凭证的使用的改变或进展,所存储的使用数据也改变。该数据结构不仅可以用于使可验证凭证的可视化表示被显示给用户,而且用户可以选择性地使该使用数据中的至少一些使用数据也被呈现给用户。因此,用户可以轻松地跟踪他们的可验证凭证是如何被使用的,而不管可验证凭证在哪里被呈现或从哪个设备被呈现。
10.在一些实施例中,使用数据包括可验证凭证被暴露于依赖方计算系统的频率、可验证凭证最近一次被暴露于的依赖方计算系统的身份和/或可验证凭证最近一次被暴露的时间。因此,用户可以获得可验证凭证随时间使用的全面视图。
11.在一些实施例中,可验证声明中的至少一个可验证声明或一些可验证声明可以具有去中心化标识符所引用的主题。因此,本文描述的原理可以用于跟踪具有关于去中心化身份的声明的可验证凭证的使用。
12.在一些实施例中,可验证凭证的可视化表示包括可验证凭证内的可验证声明中的一个、一些或可能所有可验证声明中的每一个的属性名称和值的人类可读的可视化表示。备选地或附加地,可视化表示可以包括可验证凭证内的可验证声明中的一个、一些或所有可验证声明中的每一个的属性名称和值的机器可读表示,例如条形码或qr码。备选地或附加地,证明指令也可以以人类可读或机器可读的形式呈现在可视化表示中。因此,即使没有与声明持有者的计算系统或设备的电子连接,人类或者甚至机器也可以轻松阅读和解释所声明的内容,并且机器可以附加地解释如何证明声明已由声明发行者做出、并且自声明发行者做出声明的时间起未曾被篡改。
13.附加特征和优点将在下文的描述中阐述,并且部分地从描述中将是显而易见的,或者可以通过本文教导的实践来学习。本发明的特征和优点可以通过所附权利要求中特别指出的工具和组合来实现和获得。本发明的特征将通过以下描述和所附权利要求变得更加明显,或者可以通过实践如下文所述的本发明而获知。
附图说明
14.为了描述能够获得上述和其他优点和特征的方式,将通过参考附图中示出的具体实施例来对上文简要描述的主题进行更具体的描述。应理解这些附图仅描绘了典型的实施例并且因此不应被认为是对范围的限制,将通过使用附图以附加的特征和细节来描述和解
释实施例,其中:
15.图1示出了包括多个可验证声明的可验证凭证、以及用于证明声明是由发行者提出的证明指令;
16.图2示出了创建和使用可验证凭证(例如图1的可验证凭证)的环境;
17.图3示出了便携式身份证数据结构,其包括根据本文所述原理的可验证凭证和使用数据;
18.图4a至图4f示出了一系列用户界面,其中发行者创建便携式身份证模板,该便携式身份证模板将用于为各种持有者创建便携式身份证;
19.图5a至图5f示出了一系列用户界面,其中持有者获得从图4a至图4f的便携式身份证模板生成的便携式身份证;
20.图6a至图6c示出了一系列用户界面,其中持有者将便携式身份证呈现给依赖方;
21.图7a至图7c示出了允许用户管理便携式身份证的附加用户界面;
22.图8示出了根据本文描述的原理的用于呈现可验证凭证的方法的流程图;
23.图9示出了根据本文描述的原理的用于使用便携式身份证数据结构的方法的流程图;
24.图10示出了用于创建去中性化标识(did)的示例环境;
25.图11示出了各种did管理操作和服务的示例环境;以及
26.图12示出了可以在其中采用本文描述的原理的示例计算系统。
具体实施方式
27.本文描述的原理涉及使用包括可验证凭证以及该可验证凭证的使用数据的数据结构。可验证凭证本身在本领域中是已知的。可验证凭证的一种常规实现在名为“可验证凭证数据模型1.0”的文档中描述为2019年11月19日的w3c建议。
28.为了向读者介绍可验证凭证的概念,将首先参照图1描述示例可验证凭证100。此外,随后将参照图2描述在其中创建和使用可验证凭证的环境200。然后,超出可验证凭证本身的概念并延伸到本文的实施例中,将参照图3描述包括可验证凭证的便携式身份证。随后,将参照图4至图7c描述便携式身份证的使用示例。此后,将参照图8至图12描述本文实施例的原理。
29.如本文中所使用的,“发行者(issuer)”是做出关于主题的至少一个断言的实体。该断言在本文中也称为“声明(claim)”。“凭证(credential)”是一个或多个声明的集合。如本文中所使用的术语,“凭证”可以包括由多个发行者做出的声明,但该术语也适用于具有单个发行者的一组声明,如图4a至图7c的使用示例中。“可验证凭证”是一种如下的凭证,在该凭证中使用加密机制(诸如数字签名)来检测凭证自其发布之日起是否已经被篡改,并且可以用于验证凭证发行者的身份。可验证凭证内的声明不必与同一主题有关,任何声明的主题不必与可验证凭证的持有者相同。
30.图1示出了包括多个可验证声明110的可验证凭证100。尽管省略号115表示可验证凭证100可以包括任意数目(一个或多个)的可验证声明,可验证声明110被示出为包括四个可验证声明111至114。可验证凭证110还包括证明指令120,证明指令120用于验证可验证凭证100自可验证凭证100由可验证凭证100的发行者创建以来未被篡改,并且用于验证可验
证声明110的发行者的身份。证明指令的示例是发行者的数字签名。
31.图2示出了在其中创建和使用可验证凭证(诸如图1的可验证凭证100)的环境200。环境200包括在发行者的信任范围内操作的发行者计算系统210。发行者的示例包括公司、组织、协会、政府、机构、个人或任何其他可以做出其他人可以依赖的断言的实体。发行者执行断言声明的角色,使发行者计算系统210为这些声明创建可验证凭证(诸如图1的可验证凭证100),并使发行者计算系统210将可验证凭证传输到持有者计算系统220,如箭头201所示。发行者计算系统210在本文中也可以简称为“发行者210”。如箭头211所示,发行者210还将验证标识符和使用模式传输到注册表计算系统240。
32.如箭头201还所示的,持有者计算系统220获取所传输的可验证凭证。持有者计算系统220代表持有者操作,该持有者使用持有者计算系统220来拥有和潜在地存储可验证凭证。如箭头202所示,持有者还使持有者计算系统将可验证凭证呈现给验证者计算系统230。持有者计算系统220在本文中也可以简称为“持有者220”。如箭头212所示,持有者220还将标识符和使用模式传输到注册表计算系统240。
33.持有者220呈现可验证凭证本身,或者以另一种数据结构的形式呈现来自可验证凭证的数据,其在本文中也可以被称为“可验证呈现”。可验证呈现表达来自一个或多个可验证凭证的数据,并且以数据的作者身份可验证的方式被打包。如果直接呈现可验证凭证,则它们成为可验证呈现。从可验证凭证派生的如下数据格式也包含在可验证呈现的定义内,该数据格式是可加密验证的,但是其本身不包含可验证凭证。
34.如箭头202还所示的,验证者计算系统230获取所传输的可验证凭证(可选地在可验证呈现内)。验证者计算系统230代表验证者操作,该验证者是依赖于可验证凭证中做出的一个或多个声明的依赖方。验证者计算系统230评估可验证凭证是否是发行者210的未篡改(且未过期)声明。这包括遵循存在于可验证凭证(例如,可验证凭证100)内的任何证明指令(例如,证明指令120))。验证者计算系统230然后可以基于该验证采取动作,诸如将在可验证凭证中做出的(多个)声明视为有效并且由发行者210发行。验证者计算系统230在下文中有时也称为“验证者230”。作为验证的一部分,验证者230将验证标识符和模式发送到注册表计算系统240,如箭头213所示。
35.注册表计算系统240调解标识符、密钥、可验证凭证模式、撤销注册表、发行者公钥等的创建和验证。示例可验证数据注册表包括可信数据库、去中心化数据库和分布式账本。发行者计算系统210、持有者计算系统220、验证者计算系统230和注册表计算系统240中的每一个系统如下面针对图12的计算系统1200所描述地被构造。
36.因此,图1和图2描述了与可验证凭证的创建和使用相关的可验证凭证和数据流。然而,发明人已经认识到可验证凭证的便携性对于改善可验证凭证的实用性很重要。例如,这种便携性包括高效地向多个持有者发行可验证凭证的能力,以及任何给定持有者在不同位置使用可验证凭证的能力,甚至在使用受持有者(例如持有者220)控制的多个设备呈现可验证凭证的情况下。以这种方式跟踪可验证凭证的使用可能会变得非常困难。然而,目前没有跟踪可验证凭证被如何使用的机制,更不用说在使用多个设备来呈现可验证凭证时可验证凭证被如何使用。
37.图3示出了数据结构300,其表示如何在声明持有者的计算系统的存储和/或存储器中表示便携式身份证的一个示例。便携式身份证数据结构300包括可验证凭证310以及该
可验证凭证的使用数据320。可验证凭证310包括一个或多个声明311以及证明指令312,证明指令312用于验证声明的完整性,并且验证声明是由声明内标识的发行者做出的。因此,在一个示例中,可验证凭证310是图1的可验证凭证100。
38.在便携式身份证数据结构300用于访问可验证凭证310的意义上,可验证凭证310被包括在便携式身份证数据结构300中。在一个示例中,可验证凭证310被明确地包括在便携式身份证内。备选地,可验证凭证310在便携式身份证数据结构300中被引用。作为示例,便携式身份证数据结构300包括指向可验证凭证(或其标识符)的指针。
39.使用数据320同样如此。也就是说,在一个示例中,在便携式身份证数据结构300用于访问使用数据320的意义上,使用数据320被包括在便携式身份证数据结构300中。在一个示例中,使用数据320被明确地包括在便携式身份证数据结构300内。备选地,使用数据320在便携式身份证数据结构300中被引用。作为示例,便携式身份证数据结构300包括指向使用数据320(或其标识符)的指针。
40.使用数据320包括关于可验证凭证正在被如何使用的任何历史信息。作为示例,使用数据包括可验证凭证被暴露于依赖方计算系统的频率、可验证凭证最近一次被暴露于的依赖方计算系统的身份、可验证凭证最近一次被暴露的时间、用于呈现可验证凭证的设备,等等。
41.可验证凭证310被存储在持有者计算系统上,诸如图2的持有者220。备选地,可验证凭证310以能够由多个不同持有者计算系统访问的方式被存储,多个不同持有者计算系统中的每个都在同一持有者的控制之下。作为示例,可验证凭证310可以被存储在集中位置,或去中心化分布式账本中,诸如去中心化标识符(did)文档中。如下面关于图10所述,可以通过使用去中心化标识符(did)来访问did文档的内容。因此,在该实施例中,持有者计算系统通过使用持有者的did从任何受持有者控制的持有者计算系统访问可验证凭证310。
42.便携式身份证数据结构300被存储在持有者计算系统上,例如图2的持有者220。备选地,便携式身份证数据结构300以能够由多个不同持有者计算系统访问的方式被存储,多个不同持有者计算系统中的每个都在同一持有者的控制之下。作为示例,便携式身份证数据结构300可以被存储在集中位置或去中心化分布式账本中,例如去中心化标识符(did)文档中。因此,在该实施例中,持有者计算系统通过使用持有者的did从任何受持有者控制的持有者计算系统访问便携式身份证数据结构300。
43.因此,便携式身份证数据结构300连同相关联的可验证凭证310和该可验证凭证的使用数据320在持有者的不同计算系统或设备上可用。因此,持有者可以从各种不同的设备呈现便携式身份证,并且还可以跟踪可验证凭证的使用,尽管可验证凭证是从受持有者控制的各种系统或设备呈现的。持有者还可以呈现来自任何给定信任范围之外(例如,公司网络之外)的可验证凭证,因为持有者设备中的任何设备都可以安全地访问便携式身份证。
44.现在将参考图4a至图7c的用户界面来描述便携式身份证的示例使用场景。在该特定使用场景中,发行者是一个虚构的棒球联盟,称为contoso棒球联盟(或简称为“contoso”),它将向该棒球联盟中的球员发行可验证凭证。此外,持有者是contoso棒球联盟的一名球员(在示例中称为john doe)。验证者是为contoso棒球联盟的球员提供利益的各种合作伙伴(称为合作伙伴a、合作伙伴b等)。
45.在图4a至图4f中,发行者创建便携式身份证模板,该便携式身份证模板用于为向
发行者认证并请求其相应便携式身份证的每个球员创建便携式身份证。
46.在图4a中,发行者计算系统向发行者呈现允许发行者开始创建便携式身份证模板的过程的用户界面400a。初始用户界面400a显示卡正面区域401、卡背面区域402以及卡预览控件403,发行者将与该卡正面区域401交互以填写便携式身份证模板的正面,发行者将与该卡背面区域402交互以填写便携式身份证模板的背面,发行者与该卡预览控件403交互以查看截至目前的便携式身份证模板的预览。
47.卡正面区域401包括卡类型区域411,该卡类型区域411将显示便携式身份证模板的类型。卡正面区域401还包括主题名称区412,该主题名称区412将显示发行者将在便携式身份证上做出声明的主题。在该示例中,主题名称将是球员的姓名,并且将在便携式身份证模板中保持未填写。只有当球员向发行者认证并请求他们各自的便携式身份证时,主题名称才会被填写在相应的便携式身份证中。卡正面区域401还包括将显示发行者标志的发行者标志区413、以及将显示发行者身份的发行者身份区域414。卡正面区域401还包括编辑控件415,发行者将选择该编辑控件以开始填写便携式身份证模板正面的区域411、413和414。
48.卡背面区域402包括数据源区域421a,该数据源区域421a将代表数据源,数据将从该数据源中被提取用于从便携式身份证模板创建便携式身份证。发行者通过首先激活选择数据源控件421b来启动对数据源的选择。卡背面区域402还包括利益区域422a,该利益区域422a将显示持有者将拥有的任何卡利益。发行者通过首先激活添加卡利益控件422b来启动对这些利益的标识。卡背面区域402还包括发行者验证区域423a,发行者与该发行者验证区域423a交互以便通过首先激活验证您的组织控件423b来认证发行者的身份。
49.图4b示出了在发行者选择编辑控件415从而显示卡正面详情窗口430之后出现的用户界面400b。为了强调发行者正在输入来自卡正面的信息,卡正面区域401被突出显示。在该卡正面详情窗口430中,发行者在模式输入字段431中输入便携式身份证的模式(或类型)(在这种情况下为经验证的球员),在发行者名称字段432中输入发行者的名称,在图标字段433中输入标识针对发行者的标志文件的文件名称,在卡类别字段434中输入卡类别,在卡实例字段435中输入卡实例。发行者通过选择保存控件436来保存该信息并关闭卡正面详情窗口430。备选地,发行者通过选择取消控件437来丢弃所输入的信息并关闭卡正面详情窗口430。
50.图4c示出了当发行者选择图4b的保存控件436并随后激活选择数据源控件421b时出现的用户界面400c。对保存控件436的选择使卡正面区域401现在被填写有卡类型“经验证的球员”、发行者标志(这里是虚构棒球联盟contoso的标志)和发行者名称“contoso”。在该阶段,主题名称保持未填写,因为该便携式身份证模板将用于为多个主题(本示例中的棒球运动员)创建多个便携式身份证。对选择数据源控件421b的选择打开卡背面数据窗口440。为了强调发行者现在正致力于标志要用于填写便携式身份证的数据源,数据源区域421a被突出显示。
51.在卡背面数据窗口440中,发行者已经在下拉字段441中输入了数据源的类型(这里为jwt或json web token),在被接受的发行者值字段442中输入了被接受的发行者值,并且在源jwks uri字段443中输入了源json web token统一资源标识符。被接受的发行者值是发行者接受作为用于做出声明的准确数据的源。以后,当球员请求便携式身份证时,数据源将用于填写发行者在卡内容字段444中标识的声明。因此,球员的可验证凭证将包括在卡
内容字段444中标识的那些声明。
52.在该示例中,发行者在字段444a中指定凭证将包括来自出生日期字段的类型为player_bday的声明(从各种声明类型的下拉菜单中选择的球员出生日期),其数据类型为所选数据的日期。此外,发行者在字段444b中指定凭证将包括来自名字字段的类型为player_first的声明(从下拉菜单中选择的球员名字),其数据类型为最大长度为60的字符串。发行者在字段444c中指定凭证将包括来自姓氏字段的类型为player_last(来自下拉菜单的球员姓氏)的声明,其类型也是最大长度为60的字符串。如果凭证将包括其他声明,用户可以选择添加字段控件445。因此,字段444表示在从便携式身份证模板创建每个相应便携式身份证时实际生成声明时将提取哪些数据以及数据将采用什么形式。
53.在已经选择了卡背面区域402的利益区域422a中的添加卡利益控件422b时,图4d的用户界面400d被示出。这使得来自卡背面数据窗口440的信息被保存为数据源和声明,其将用于从便携式身份证模板生成后续的便携式身份证。数据源输入的完成现在由数据源区域421a中的复选标记表示,并且现在其他突出显示从数据源区域421a中被移除。
54.对添加卡利益控件422b的选择还使利益区域422a被突出显示,并且卡背面利益窗口450出现。在此,发行者在字段451中标识人类可读的利益描述,并且还在合作伙伴应用字段452中标识合作伙伴应用(用于相应持有者可以使用便携式身份证的合作伙伴或服务)。然后,发行者可以选择保存控件453以将这些利益保存到便携式身份证模板,或者选择取消控件454以取消这些利益的输入而不将它们保存到便携式身份证模板。假设在我们的示例中,发行者已经使用保存控件453保存了利益。
55.在图4e的用户界面400e中,发行者现在已经在卡背面区域402的发行者验证区域423a中选择了验证您的组织控件423b。这使得发行者验证区域423a被突出显示,并使得卡背面发行者验证窗口460出现。利益区域422a中的利益信息输入的完成也由包含复选标记的利益区域422a表示。然后,发行者输入来自下拉字段461中的被称为ion的去中心化身份(did)类型,在密钥库下拉字段462中输入密钥库身份(此处为“密钥库a”),在网络域字段463中输入针对发行者的网络域,以及在撤销下拉字段464中输入用于撤销可验证凭证的撤销方法。然后,发行者选择保存控件465来保存这些发行者验证详情,或者选择取消控件466来取消这些利益的输入而不将其保存到便携式身份证。
56.假设在我们的示例中,发行者已经使用保存控件465保存了验证详情。图4f示出了结果界面400f,该结果界面400f现在显示所有详情窗口都被关闭,并且显示发行者验证字段带有复选标记。发行者计算系统通过创建便携式身份证模板数据结构来响应,该数据结构现在可用于在个人持有者(例如,球员)向发行方认证后为他们创建便携式身份证。
57.现在将参考图5a至图5f的用户界面来描述示例持有者用户体验。图5a示出了用户界面500a,其中持有者(在这种情况下是contoso棒球联盟球员)登录到由发行者(在这种情况下是contoso棒球联盟)提供的球员控制面板中。
58.图5b示出了在认证完成后向球员显示的界面500b。在此,显示有关球员的基本信息(姓名、球员id、球队、状态、位置),以及允许球员下载另外的认证器的qr码。在这个虚构的示例中,登录发行者门户的contoso棒球联盟球员的姓名是“john doe”。
59.在图5c的用户界面500c中,给予球员(john doe)扫描qr码的选项,以便添加或共享(即,呈现)凭证。回想一下,在图4a至图4f中创建了便携式身份证模板,该便携式身份证
模板正好用于为john doe等contoso棒球球员创建便携式身份证。因此,当球员扫描图5c的qr码时,便携式身份证模板被用于使用john doe的信息创建便携式身份证数据结构。这包括创建具有关于john doe的指定声明的可验证凭证。此外,如图5d的用户界面500d所示,向john doe呈现了现在填写有john doe的姓名的便携式身份证正面的可视化。
60.假设john doe在图5d的用户界面500d中选择了“添加卡”控件。然后,经验证球员便携式身份证被添加到john doe的可用便携式身份证中。此外,球员john doe现在可以与便携式身份证进行交互,如图5e的用户界面500e中所示。作为示例,用户选择控件501来查看卡的详情,如图5f的用户界面500f中所示。球员可以看到他们的姓名、棒球运动员id、他们的状态、球员可以向其出示该球员的便携式身份证的合作伙伴、以及发行者标识。球员现在可以向任何被标识的合作伙伴出示便携式身份证。
61.在图6a至图6c的示例中,球员将便携式身份证呈现给验证者(或依赖方),该验证者是便携式身份证中列举的合作伙伴之一。当john doe从图5e的用户界面500e中显示的他的便携式身份证中选择合作伙伴a时,图6a的用户界面600a被呈现给john doe。球员john doe扫描qr码,产生图6b的用户界面600b。john doe然后可以使qr码被呈现给合作伙伴a的计算系统。然后john doe呈现用户界面600c或图6c,其中用户选择“允许”控件来呈现与合作伙伴a的便携式身份证相关联的可验证凭证(或相关联的可验证呈现)。当可验证凭证被呈现给合作伙伴a时,合作伙伴a的计算系统遵循证明指令(其可能包括联系发行者计算系统或注册表计算系统)来验证可验证凭证。
62.对于许多不同的发行者,这个过程可能会针对john doe重复多次。例如,合作伙伴a可能是依赖方,但合作伙伴a本身也可能是发行者。因此,除了向合作伙伴a呈现可验证声明外,合作伙伴a还可以向john doe提供另一便携式身份证。
63.图7a示出了用户界面700a,该用户界面700a向john doe展示了现有两张便携式身份证的堆叠——由contoso棒球联盟提供的经验证球员便携式身份证、以及由合作伙伴a提供的数据管理器便携式身份证。假设用户与球员便携式身份证交互,以查看与该便携式身份证的可验证凭证相关联的事务历史记录。然后,向john doe显示图7b的用户界面700b,其显示该卡与合作伙伴a的数据管理器应用的若干事务。图7c示出了用户界面700c,其允许john doe查看哪些合作伙伴已经被授权访问经验证球员便携式身份证,并有可能撤销访问权限。
64.图8示出了根据本文描述的原理的用于呈现可验证凭证的方法800的流程图。方法800包括将可验证凭证表示在数据结构内(动作801)。作为示例,在图3中,可验证凭证310在便携式身份证数据结构300内被表示。因此,可验证凭证310是动作801的可验证凭证的示例,并且便携式身份证数据结构300是动作801的数据结构的示例。回想一下,可验证凭证310包括多个可验证声明。作为示例,如果可验证凭证310如针对图1的可验证凭证100所描述地被构造,则可验证凭证310包括多个可验证声明。
65.方法800还包括监测可验证凭证的使用(动作802)。这样的监测可以包括可验证凭证于何时何地被呈现、可验证凭证被呈现给哪些依赖方、可验证凭证最近一次被呈现给依赖方的时间,等等。在图7b的示例中,用户界面700b向用户显示事务日期、唯一地标识便携式身份证的便携式身份证标识符、便携式身份证的发行者、向其呈现便携式身份证作为相应事务的一部分的第三方应用程序、以及与发行者的相应验证的结果是什么(例如,有效或
无响应)。
66.方法800还包括同样利用数据结构存储使用数据(动作803)。作为示例,参考图3,使用数据320也存储在便携式身份证数据结构300内。在图8中,箭头811和812表示随着监测的继续(动作802),使用数据被更新(动作803),使得使用数据是新的。即,随着可验证凭证的使用的改变或进展,所存储的使用数据也改变。因此,虚线框810内的动作802和803表示连续的过程。
67.图9示出了根据本文描述的原理的用于使用便携式身份证数据结构的方法900的流程图。在一个示例中,方法800和方法900各自由持有者计算系统(诸如图2的持有者计算系统220)执行。例如,如果持有者计算系统220如下文针对图12的计算系统1200所述地被构造,方法800和方法900可以由计算系统1200响应于至少一个硬件处理单元1102执行计算机可执行指令来执行,这些指令被构造为当由至少一个硬件处理单元1202执行时,使计算系统1200执行方法800或方法900。
68.该方法90包括使(动作901)可验证凭证的可视化表示被显示给用户。可视化表示代表可验证凭证的可验证声明的至少一个子集中的每个可验证声明的属性名称和值。作为示例,在图5f中,用户界面500f示出了表示相应可验证凭证的声明(以人类可读的形式)的多个属性-值对。在图5f中,可验证声明包括:针对一个声明的属性姓名和值“john doe”,针对第二个声明的属性棒球运动员id和值123456,针对第三个声明的属性状态和值活跃,等等。因此,持有者可以看到每个可验证凭证包含的声明。
69.然而,可视化表示还可以包括声明的属性-值对的机器可读表示和/或用于可验证凭证的证明指令。这种机器可读表示的示例包括条形码或qr码。这样的机器可读表示还可以表示可验证凭证的证明指令。因此,通过扫描条形码或qr码,可验证凭证由验证者计算系统自动验证。
70.方法900还包括至少选择性地使至少一些使用数据被呈现给用户(动作902)。因此,用户可以可视化地看到可验证凭证已经如何被使用。例如,用户可以查看凭证于何时何地被使用、哪个依赖方依赖于凭证、什么设备被用来呈现可验证凭证,等等。
71.因此,本文描述的原理提供了包括可验证凭证和使用数据的便携式身份证数据结构。如前所述,本文描述的原理可以在去中心化环境中执行。作为示例,持有者计算系统可以是数字钱包,例如下文关于图11描述的did管理模块1120。备选地或附加地,声明的主题和发行者标识符可以是去中心化标识符(did)。备选地或附加地,便携式身份证数据结构(或其部分)可以存储在did文档中。这将特别有用,因为持有者可以从与持有者的did关联的任何设备访问便携式身份证。因此,首先将参照图10和图11描述去中心化标识符。
72.如图10所示,did所有者1001可以拥有或控制代表did所有者1001的数字身份的did 1005。did 1005是跨不同数字上下文与did所有者1001相关(即,标识did所有者1001)的数字身份。did所有者1001可以使用创建和注册服务来注册did,这将在下面更详细地解释。
73.did所有者1001可以是能够从数字身份中受益的任何实体。例如,did所有者1001可以是人或人的组织。这种组织可以包括公司、部门、政府、机构或任何其他组织或组织组。每个单独的人都可以具有一个did,而每个人所属的(多个)组织也可以有did。
74.备选地,did所有者1001可以是机器、系统或设备、或者(多个)机器、(多个)设备
和/或(多个)系统的集合。在其他实施例中,did所有者1001可以是机器、系统或设备的子部分。例如,设备可以是印刷电路板,其中该印刷电路板的子部分是电路板的各个部件。在这样的实施例中,机器或设备可以具有did并且每个子部分也可以具有did。did所有者也可以是软件部件,例如上面关于图12描述的可执行部件1206。复杂可执行部件1206的示例可以是人工智能。因此,人工智能也可以拥有did。
75.因此,did所有者1001可以是能够创建did 1005或至少具有为其创建和/或与其相关联的did 1005的任何实体、人类或非人类。尽管did所有者1001被示出为具有单个did 1005,但这并不一定是这种情况,因为在情况允许时可以存在与did所有者1001相关联的任意数目的did。
76.如所提到的,did所有者1001可以创建和注册did 1005。did 1005可以是可以与did所有者1001相关联的任何标识符。优选地,该标识符对于该did所有者1001是唯一的,至少在预期使用did的范围内。作为示例,标识符可以是本地唯一标识符,并且可能更理想地是用于预期在全球运行的身份系统的全球唯一标识符。在一些实施例中,did 1005可以是将did所有者1001与参与与did所有者1001的可信任交互的机制相关联的统一资源标识符(uri)(例如统一资源定位符(url))或其他指针。
77.did 1005是“去中心化的”,因为它不需要集中的第三方管理系统来生成、管理或使用。因此,did 1005仍然在did所有者1001的控制之下。这不同于将信任基于集中式机构并且仍然处于公司目录服务、证书颁发机构、域名注册机构或其他集中式机构(在本文统称为“集中式机构”)的控制之下的常规的集中式id。因此,did 1005可以是在did所有者1001的控制下并且独立于任何集中式机关的任何标识符。
78.在一些实施例中,did 1005的结构可以像用户名或一些其他人类可理解的术语一样简单。然而,在其他实施例中,为了提高安全性,did 1005可以优选地是数字和字母的随机字符串。在一个实施例中,did 1005可以是128个数字和字母的字符串。因此,本文公开的实施例不依赖于did 1005的任何特定实现。在一个非常简单的示例中,did 1005在图中被示出为“123abc”。
79.还如图10所示,did所有者1001控制与did 1005相关联的私钥1006和公钥1007对。因为did 1005独立于任何集中式机构,所以私钥1006应当始终完全由did所有者1001控制。也就是说,私钥和公钥应该以去中心化的方式被生成,以确保它们仍然在did所有者1001的控制之下。
80.如将在下文更详细描述的,私钥1006和公钥1007对可以在由did所有者1001控制的设备上生成。私钥1006和公钥1007对不应该在由任何集中式机构控制的服务器上生成,因为这可能导致私钥1006和公钥1007对不能始终完全在did所有者1001的控制之下。尽管图10和该说明书已经描述了私钥和公钥对,但还应注意,其他类型的合理密码信息和/或机制也可以根据情况而被使用。
81.图10还示出了与did 1005相关联的did文档1010。如将在下文更详细解释的,did文档1010可以在创建did 1005时被生成。在其最简单的形式中,did文档1010描述了如何使用did1005。因此,did文档1010包括对did 1005的引用,该did 1005是由did文档1010描述的did。在一些实施例中,did文档1010可以根据由分布式账本1020(例如区块链)指定的方法来实现,分布式账本1020将用于存储did 1005的表示,如将在下文更详细解释的。因此,
did文档1010可以根据具体的分布式账本具有不同的方法。
82.did文档1010还包括由did所有者1001创建的公钥1007或一些其他等效密码信息。公钥1007可以被如下的第三方实体使用,该第三方实体被did所有者1001给予许可以访问did所有者1001所拥有的信息和数据。公钥1007还可以用于验证did所有者1001实际上拥有或控制did 1005。
83.did文档1010还可以包括认证信息1011。认证信息1011指定did所有者1001能够通过其证明did所有者1001拥有did1005的一种或多种机制。换句话说,认证信息的机制1011示出了did 1005(以及因此它的did所有者1001)与did文档1010之间的绑定的证明。在一个实施例中,认证信息1011指定公钥1007用于签名操作以证明did 1005的所有权。备选地或附加地,认证信息1011指定公钥1007用于生物特征操作以证明did 1005的所有权。因此,认证信息1011包括任何数目的机制,通过这些机制did所有者1001能够证明did所有者1001拥有did 1005。
84.did文档1010还可以包括授权信息1012。授权信息1012允许did所有者1001授权第三方实体修改did文档1010或文档的某些部分的权利,而不赋予第三方证明did 1005的所有权的权利。在一个示例中,授权信息1012允许第三方使用任何指定的更新机制来更新did文档1010中的一个或多个字段的任何指定集合。备选地,授权信息允许第三方限制did所有者1001在指定时间段内对did 1005的使用。当did所有者1001是未成年孩子并且第三方是孩子的父母或监护人时,这可以是有用的。授权信息1012可以允许父母或监护人限制did所有者1001的使用,直到孩子不再是未成年人为止。
85.授权信息1012还指定第三方将需要遵循以证明他们被授权修改did文档1010的一个或多个机制。在一些实施例中,这些机制可以类似于之前关于认证信息1011讨论的那些机制。
86.did文档1010还包括一个或多个服务端点1013。服务端点包括如下的网络地址,服务在该网络地址处代表did所有者1001操作。特定服务的示例包括发现服务、社交网络、诸如身份服务器或身份枢纽(hub)的文件存储服务、以及可验证声明存储库服务。因此,服务端点1013用作代表did所有者1001操作的服务的指针。did所有者1001或第三方实体可以使用这些指针来访问代表did所有者1001操作的服务。服务端点1013的具体示例将在下文中更详细地解释。
87.did文档1010还包括标识信息1014。标识信息1014包括个人可标识信息,诸如did所有者1001的姓名、地址、职业、家庭成员、年龄、爱好、兴趣等。因此,did文档1010中列出的标识信息1014代表did所有者1001针对不同目的的不同角色。
88.角色可以是伪匿名的。作为示例,在将did所有者1001标识为在博客上发表文章的作者时,他或她可以在did文档中包括笔名。角色可以是完全匿名的。例如,did所有者1001可能只想在did文档中披露他或她的职位或其他背景数据(例如,学校教师、fbi特工、21岁以上的成年人等),而不披露他或她的姓名。作为又一示例,角色可以特定于did所有者1001作为个体的人。作为示例,did所有者1001可以包括将他或她标识为特定慈善组织的志愿者、特定公司的雇员、特定奖项的获奖者等的信息。
89.did文档1010还包括证书信息1015,证书信息1015在本文中也可以称为证明。证书信息1015可以是与did所有者1001的背景相关联的任何信息。例如,证书信息1015可以是
(但不限于)资格、成就、政府id、诸如护照或驾驶执照的政府权利、支付提供商或银行账户、大学学位或其他教育史、就业状态和历史、或有关did所有者1001的背景的任何其他信息。
90.did文档1010还包括各种其他信息1016。在一些实施例中,其他信息1016可以包括指定did文档1010何时被创建和/或它最后被修改时间的元数据。在其他实施例中,其他信息1016可以包括did文档1010的完整性的密码证明。在更进一步的实施例中,其他信息1016可以包括由实现did文档的特定方法指定的或者由did文档所需的附加信息。did所有者1001。
91.图10还示出了分布式账本1020。分布式账本1020可以是包括相互通信的各种计算系统的任何去中心化分布式网络。在一个示例中,分布式账本1020包括第一分布式计算系统1030、第二分布式计算系统1040、第三分布式计算系统1050、以及由省略号1060表示的任意数目的附加分布式计算系统。分布式账本1020根据用于分布式账本的任何已知标准或方法操作。对应于分布式账本1020的常规分布式账本的示例包括但不限于比特币[btc]、以太坊和莱特币。
[0092]
在did 1005的上下文中,分布式账本或区块链1020用于存储指向did文档1010的did 1005的表示。在一些实施例中,did文档1010可以被存储在实际分布式账本上。备选地,在其他实施例中,did文档1010可以被存储在与分布式账本1020相关联的数据存储(未示出)中。
[0093]
did 1005的表示被存储在分布式账本1020的每个分布式计算系统上。例如,在图10中,这被示出为did散列1031、did散列1041和did散列1051,它们在理想情况下是相同did的相同散列副本。did散列1031、did散列1041和did散列1051指向did文档1010的位置。分布式账本或区块链1020还可以存储如由附图标记1032、1033、1034、1042、1043、1044、1052、1053和1054所示的其他did的许多其他表示。
[0094]
在一个实施例中,当did所有者1001创建did 1005和相关联的did文档1010时,did散列1031、did散列1041和did散列1051被写入分布式账本1020。分布式账本1020因而记录了did1005现在存在。由于分布式账本1020是去中心化的,因此did1005不受did所有者1001之外的任何实体的控制。除了指向did文档1010的指针之外,did散列1031、did散列1041和did散列1051各自还可以包括说明did 1005何时被创建的记录或时间戳。以后,当对did文档1010进行修改时,每个修改(可能连同修改的时间戳)也被记录在did散列1031、did散列1041和did散列1051中。did散列1031、did散列1041和did散列1051还可以包括公钥1007的副本,以便did 1005以加密方式绑定到did文档1010。
[0095]
已经参考图10描述了did以及它们一般如何操作,现在将参考图11解释did环境的特定实施例。现在将解释图11示出了可以用于执行各种did管理操作和服务的示例环境1100。应当理解,图11的环境可以根据需要参考图10中的元素以便于解释。
[0096]
如图11所示,环境1100包括did所有者1001拥有的或以其他方式受did所有者1001控制的各种设备和计算系统。这些可以包括用户设备1101。用户设备1101可以是,但不限于,移动设备(诸如智能电话)、计算设备(诸如膝上型计算机)或任何设备(诸如汽车或具有计算能力的电器)。设备1101包括在该设备上运行的网络浏览器1102和运行该设备的操作系统1103。更广泛地说,虚线1104表示所有这些设备可以由did所有者1001拥有或以其他方式受did所有者1001控制。
[0097]
环境1100还包括did管理模块1120。在操作中,如相应箭头1101a、1102a和1103a所表示的,did管理模块1120驻留在用户设备1101、网络浏览器1102和操作系统1103中的一个或多个上并由其执行。因此,为了便于解释,did管理模块1120被示出为分离的。did管理模块1120也可以被描述为“钱包”,因为它可以持有由特定did做出的或关于特定did的各种声明。在一个示例中,did管理模块1120如上文针对可执行部件1206所述地被构造。
[0098]
如图11所示,did管理模块1120包括did创建模块1130。did所有者1001可以使用did创建模块1130来创建did 1005或任何数目的附加did,例如did 1131。在一个实施例中,did创建模块可以包括或以其他方式访问用户界面(ui)元素1135,用户界面(ui)元素1135可以指导did所有者1001创建did 1005。did创建模块1130具有一个或多个驱动,这些驱动被配置为与特定的分布式账本(例如分布式账本1020)一起工作,以便did 1005符合该分布式账本的底层方法。
[0099]
现在将描述具体实施例。例如,ui 1135可以提示用户输入用户名或一些其他人类可识别的名称。该名称可以用作待生成的did 1005的显示名称。如前所述,did 1005可以是一长串随机数字和字母,并且因此具有用于显示名称的人类可识别名称可以是有利的。did创建模块1130然后可以生成did 1005。在具有ui 1135的实施例中,did 1005可以被示出在身份列表中并且可以与人类可识别的名称相关联。
[0100]
did创建模块1130还可以包括密钥生成模块1150。密钥生成模块可以生成先前描述的私钥1006和公钥1007对。did创建模块1130然后可以使用did 1005以及私钥和公钥对来生成did文档1010。
[0101]
在操作中,did创建模块1130访问被配置为将记录与did1005相关的事务的特定分布式账本的注册器1110。did创建模块1130使用注册器1110来以前述方式将did散列1031、did散列1041和did散列1051记录在分布式账本中,并以前述方式存储did文档1010。该过程可以在散列生成中使用公钥1007。
[0102]
在一些实施例中,did管理模块1120可以包括所有权模块1140。所有权模块1140可以提供确保did所有者1001单独控制did 1005的机制。通过这种方式,did管理模块1120的提供者能够确保提供者不控制did 1005,而只是提供管理服务。
[0103]
密钥生成模块1150生成私钥1006和公钥1007对,并且然后公钥1007被记录在did文档1010中。因此,公钥1007可以由与did所有者1001相关联的所有设备以及期望向did所有者1001提供服务的所有第三方使用。因此,当did所有者1001期望将新设备与did 1005相关联时,did所有者1001可以在新设备上执行did创建模块1130。did创建模块1130然后可以使用注册器1110来更新did文档1010以反映新设备现在与did 1005相关联,该更新将反映在分布式账本1020上的事务中。
[0104]
然而,在一些实施例中,did所有者1001拥有的每个设备1101拥有一个公钥可以是有利的,因为这可以允许did所有者1001用特定于设备的公钥签名而不必访问通用公钥。换言之,由于did所有者1001将在不同时间使用不同的设备(例如,在一个实例中使用移动电话,然后在另一个实例中使用膝上型计算机),因此具有与每个设备相关联的密钥以提供使用密钥签名的效率是有利的。因此,在这样的实施例中,当附加设备执行did创建模块1130时,密钥生成模块1150生成附加公钥1008和1009。这些附加公钥可以与私钥1006相关联,或者在某些实例中可以与新的私钥配对。
[0105]
在附加公钥1008和1009与不同设备相关联的那些实施例中,附加公钥1008和1009在did文档1010中被记录为与那些设备相关联,如图11所示。除了图11中所示的信息(信息1008、1009和1165)之外,did文档1010还可以包括之前关于图10描述的信息(信息1005、1007和1011至1016)。如果did文档1010在特定于设备的公钥被生成之前存在,则did文档1010将由创建模块1130经由注册器1110更新,并且这将反映在分布式账本1020上的更新事务中。
[0106]
在一些实施例中,did所有者1001可能期望对设备与公钥的关联或设备与did 1005的关联保密。因此,did创建模块1130可以使这样的数据秘密地显示在did文件1010中。
[0107]
如截至目前所描述的,did 1005已经与受did所有者1001控制的所有设备相关联,即使这些设备具有它们自己的公钥。然而,在一些实施例中,受did所有者1001控制的设备中的每个设备或一些子集可以各自具有它们自己的did。因此,在一些实施例中,did创建模块1130可以为每个设备生成附加did,例如did 1131。然后,did创建模块1130将为每个设备生成私钥和公钥对以及did文档,并以前述方式将它们记录在分布式账本1020上。这样的实施例对于可以改变所有权的设备可以是有利的,因为可以通过在did文档中授予新的所有者授权权利并从旧的所有者撤销这样的权利来将特定于设备的did与设备的新所有者相关联。
[0108]
如上所述,为了确保私钥1006完全在did所有者1001的控制之下,私钥1006在执行did管理模块1120的did所有者1001拥有或控制的用户设备1101、浏览器1102或操作系统1103上被创建。以这种方式,第三方(并且最重要的是,did管理模块1120的提供者)获得对私钥1006的控制的可能性很小。
[0109]
然而,存储私钥1006的设备有可能被did所有者1001遗失,这可能导致did所有者1001失去对did 1005的访问。因此,在一些实施例中,ui 1135包括选项以允许did所有者1001将私钥1006导出到受did所有者1001控制的设备外安全数据库1105。作为示例,数据库1105可以是下面关于图12描述的身份枢纽1210之一。存储模块1180被配置为将数据以设备外的方式存储在数据库1105或身份枢纽1210中(诸如私钥1006或者由did所有者1001做出的或关于did所有者1001的证明)。在一些实施例中,私钥1006被存储为由did所有者1001扫描的qr码。
[0110]
在其他实施例中,did管理模块1120可以包括可用于恢复遗失的私钥1006的恢复模块1160。在操作中,恢复模块1160允许did所有者1001在did 1005被创建时选择一个或多个恢复机制1165,恢复机制1165以后可以用于恢复遗失的私钥。在具有ui1135的那些实施例中,ui 1135可以允许did所有者1001提供将由一个或多个恢复机制1165在恢复期间使用的信息。然后,可以在与did 1005相关联的任何设备上运行恢复模块1160。
[0111]
did管理模块1120还可以包括撤销模块1170,该撤销模块1170用于从did 1005撤销或切断设备。在操作中,撤销模块使用ui元素1135,该ui元素1135允许did所有者1001指示期望将设备从与did 1005的关联中移除。在一个实施例中,撤销模块1170访问did文档1010并促使从did文档1010中删除对设备的所有引用。备选地,可以删除针对设备的公钥,并且然后这种变化会反映在did文档1010中,然后可以反映为分布式账本1020上的更新事务。
[0112]
因为本文描述的原理是在计算系统的上下文中执行的,所以将参考图12来描述计
算系统的一些介绍性讨论。然后,本说明书将参考其余附图返回到去中心化标识符(did)平台的原理。
[0113]
计算系统现在越来越多地采用多种形式。例如,计算系统可以是手持设备、电器、膝上型计算机、台式计算机、大型机、分布式计算系统、数据中心、或者甚至是传统上不被视为计算系统的设备,诸如可穿戴设备(例如,眼镜)。在本说明书和权利要求书中,术语“计算系统”被广义地定义为包括:包括物理且有形的至少一个处理器的任何设备或系统(或其组合)、以及能够在其上具有可以由处理器执行的计算机可执行指令的物理且有形的存储器。存储器可以采用任何形式并且可以取决于计算系统的性质和形式。计算系统可以分布在网络环境中并且可以包括多个组成计算系统。
[0114]
如图12所示,在其最基本的配置中,计算系统1200包括至少一个硬件处理单元1202和存储器1204。处理单元1202包括通用处理器。尽管不是必需的,但处理单元1202还可以包括现场可编程门阵列(fpga)、专用集成电路(asic)或任何其他专用电路。在一个实施例中,存储器1204包括物理系统存储器。该物理系统存储器可以是易失性的、非易失性的或两者的某种组合。在第二实施例中,存储器是非易失性大容量存储器,例如物理存储介质。如果计算系统是分布式的,则处理、存储器和/或存储能力也可以是分布式的。
[0115]
计算系统1200还在其上具有通常被称为“可执行部件”的多个结构。例如,计算系统1200的存储器1204被示出为包括可执行部件1206。术语“可执行部件”是计算领域的本领域普通技术人员熟知的结构的名称,其可以是软件、硬件或其组合的结构。例如,当以软件实现时,本领域普通技术人员将理解可执行部件的结构可以包括可以在计算系统上执行的软件对象、例程、方法(等等)。这样的可执行部件存在于计算系统的堆中,存在于在计算机可读存储介质或组合中。
[0116]
本领域普通技术人员将认识到可执行部件的结构存在于计算机可读介质上,使得当由计算系统的一个或多个处理器(例如,由处理器线程)解释时,计算系统被促使执行某项功能。这种结构可以是由处理器直接计算机可读的(如果可执行部件是二进制的就是这种情况)。备选地,该结构可以被构造为可解释的和/或经编译的(无论是在单个阶段还是在多个阶段中),以便生成由处理器直接可解释的这种二进制文件。当使用术语“可执行部件”时,对可执行部件的示例结构的这种理解完全在计算领域的普通技术人员的理解范围内。
[0117]
术语“可执行部件”也被普通技术人员很好地理解为包括排他地或几乎排他地在硬件中实现的结构,例如硬编码或硬接线的逻辑门,例如现场可编程门阵列(fpga)、专用集成电路(asic)或任何其他专用电路内的结构。因此,无论是以软件、硬件还是其组合实现,术语“可执行部件”是计算领域的普通技术人员很好理解的结构的术语。在本说明书中,还可以使用术语“部件”、“代理”、“管理器”、“服务”、“引擎”、“模块”、“虚拟机”等。如在本说明书和案例中使用的,这些术语(无论是否带有修改条款)也旨在与术语“可执行部件”同义,并且因此也具有计算领域的普通技术人员所熟知的结构。
[0118]
在下面的描述中,参考由一个或多个计算系统执行的动作来描述实施例。如果这些动作以软件实现,则(执行动作的相关计算系统的)一个或多个处理器响应于已经执行构成可执行部件的计算机可执行指令来指导计算系统的操作。例如,这样的计算机可执行指令可以体现在形成计算机程序产品的一个或多个计算机可读介质上。这种操作的示例涉及数据的操作。如果这些动作排他地或几乎排他地在硬件中(例如在fpga或asic内)实现,则
计算机可执行指令可以是硬编码或硬连线的逻辑门。计算机可执行指令(和经处理的数据)可以被存储在计算系统1200的存储器1204中。计算系统1200还可以包含通信信道1208,通信信道1208允许计算系统1200通过例如网络1210与其他计算系统通信。
[0119]
尽管并非所有计算系统都需要用户界面,但在一些实施例中,计算系统1200包括用于与用户交互的用户界面系统1212。用户界面系统1212可以包括输出机制1212a以及输入机制1212b。本文所述的原理不限于精确的输出机制1212a或输入机制1212b,因为其将取决于设备的性质。然而,输出机制1212a可以包括例如扬声器、显示器、触觉输出、虚拟现实或增强现实、全息图等。输入机制1212b的示例可以包括例如麦克风、触摸屏、虚拟现实或增强现实、全息图、摄像头、键盘、鼠标或其他指针输入、任何类型的传感器等等。
[0120]
本文描述的实施例可以包括或利用包括计算机硬件的专用或通用计算系统,例如一个或多个处理器和系统存储器,如下面更详细讨论的。本文描述的实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理计算机可读介质和其他计算机可读介质。这样的计算机可读介质可以是通用或专用计算系统可以访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。承载计算机可执行指令的计算机可读介质是传输介质。因此,作为示例而非限制,本发明的实施例可以包括至少两种截然不同的计算机可读介质:存储介质和传输介质。
[0121]
计算机可读存储介质包括ram、rom、eeprom、cd-rom或其他光盘存储、磁盘存储或其他磁存储设备、或任何其他物理且有形的存储介质,该存储介质可以用于以计算机可执行指令或数据结构的形式存储所需程序代码装置并且可以由通用或专用计算系统访问。
[0122]“网络”被定义为能够在计算系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一通信连接(硬连线、无线或硬连线或无线的组合)传输或提供到计算系统时,计算系统适当地将连接视为传输介质。传输介质可以包括网络和/或数据链路,其可以用于以计算机可执行指令或数据结构的形式承载所需程序代码装置并且可以由通用或专用计算系统访问。上述的组合也应包括在计算机可读介质的范围内。
[0123]
此外,在到达各种计算系统部件时,计算机可执行指令或数据结构形式的程序代码装置可以从传输介质自动传输到存储介质(反之亦然)。例如,通过网络或数据链路接收的计算机可执行指令或数据结构可以缓存在网络接口模块(例如,“nic”)内的ram中,并且然后最终传输到计算系统ram和/或计算系统处的较不易失性的存储介质。因此,应当理解,存储介质可以包括在也(或甚至主要)利用传输介质的计算系统部件中。
[0124]
计算机可执行指令包括例如指令和数据,当这些指令或数据在处理器处被执行时,使通用计算系统、专用计算系统或专用处理设备执行特定功能或功能组。备选地或附加地,计算机可执行指令可以配置计算系统以执行特定功能或功能组。计算机可执行指令可以是例如二进制文件或甚至在由处理器直接执行之前经过一些翻译(例如编译)的指令,例如诸如汇编语言之类的中间格式指令,甚至源代码。
[0125]
尽管已经以特定于结构特征和/或方法行为的语言描述了主题,但是应当理解,在所附权利要求中定义的主题不一定限于上述描述的特征或行为。相反,所描述的特征和动作被公开为实施权利要求的示例形式。
[0126]
本领域技术人员将理解,本发明可以在具有多种类型的计算系统配置的网络计算
环境中实施,计算系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持设备、多处理器系统、基于微处理器的或可编程的消费电子产品、网络pc、小型计算机、大型计算机、移动电话、pda、寻呼机、路由器、交换机、数据中心、可穿戴设备(例如眼镜)等。本发明还可以在分布式系统环境中实践,其中本地和远程计算系统通过网络链接(通过硬连线数据链路、无线数据链路或通过硬连线和无线数据链路的组合),二者都执行任务。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备中。
[0127]
本领域技术人员还将理解,本发明可以在云计算环境中实践。云计算环境可以是分布式的,但这不是必需的。当分布式时,云计算环境可以在组织内国际地分布和/或具有跨多个组织拥有的部件。在本说明书和所附权利要求中,“云计算”被定义为用于实现对可配置计算资源(例如,网络、服务器、存储、应用和服务)的共享池的按需网络访问的模型。“云计算”的定义不限于适当部署时可以从此类模型中获得的其他众多优点中的任何一个。
[0128]
对于本文所公开的过程和方法,在过程和方法中执行的操作可以以不同的顺序实施。此外,所概述的操作仅作为示例提供,一些操作可以是可选的,可以组合成更少的步骤和操作,补充进一步的操作,或者扩展成附加的操作,而不偏离所公开的实施例的本质。
[0129]
本发明可以在不背离其精神或特征的情况下以其他具体形式体现。所描述的实施例在所有方面都被认为仅是说明性的而非限制性的。因此,本发明的范围由所附权利要求而不是由以上描述来指示。在权利要求的等同物的含义和范围内的所有变化都应包含在权利要求的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1