本发明涉及一种用于保证数字资产的授权控制的安全、控制和验证方法。本发明特别适用于验证计算机软件的项目的所有权/授权控制。该验证过程可包括使用分布式散列表和点对点分布式分类账(区块链)。
背景技术:
:在本文中,使用术语“区块链”来包括所有形式的电子的、基于计算机的分布式分类账(distributedledger)。这些包括基于共识的区块链和交易链技术、许可的和未许可的分类账、共享分类账及其变形。尽管已经提出并开发了其他区块链实施方案,区块链技术最广为人知的应用是比特币分类账(bitcoinledger),。虽然本文中出于方便和说明的目的可能引用比特币,但应当指出的是,本发明并不限于比特币区块链的使用,其他替代性的区块链实现方案和协议也落入本发明的范围内。术语“用户”在本文中可指人或基于处理器的资源。区块链是一种点对点电子分类账,其是一种基于计算机的去中心化、分布式系统,由区块构成,而这些区块又由交易构成。每笔交易都是数据结构,对区块链系统参与者之间的数字资产的控制权的转移进行编码,并且该数据结构包括至少一个输入和至少一个输出。每个区块都包含前一个区块的散列,这些区块被链接在一起,以创建一个永久的、不可更改的记录,该记录自区块链创建以来写入了该区块链的所有交易。交易包含嵌入其输入和输出中的称为脚本的小程序,这些脚本指定了如何以及由何人才能访问交易的输出。在比特币平台上,这些脚本是使用基于堆栈的脚本语言编写的。为了将交易写入区块链,必须对其进行“验证”。网络节点(矿工)执行工作以确保每笔交易都有效,无效交易被网络拒绝。安装在节点上的软件客户端通过执行其锁定和解锁脚本,对未花费的交易(utxo)执行此验证工作。如果锁定和解锁脚本的执行评估为真(true),则交易有效,交易被写入区块链。因此,为了将交易写入区块链,必须i)由接收交易的第一节点对其进行验证——如果交易通过了验证,则该节点将其中继到网络中的其他节点;ii)添加到由矿工建造的新区块中;以及iii)挖掘,即添加到过去交易的公共分类账中。尽管区块链技术因加密货币的实施方案而广为人知,但数字企业家已经开始探索使用比特币所基于的加密安全系统和可存储在区块链上的数据来实现新的系统。如果区块链可用于不局限于加密货币领域的自动化任务和流程,那将是非常有利的。这样的解决方案将能够利用区块链的好处(例如,永久的、防篡改的事件记录、分布式处理等),同时在其应用中更通用。目前研究的一个领域是使用区块链来实现“智能合约”。这些是旨在自动执行诸如合约或协议等机器可读文档的条款的计算机程序。与用自然语言书写的传统合约不同,智能合约是一种机器可执行程序,其包括可处理输入以产生结果的规则,然后可根据这些结果来引起将要执行的动作。与区块链相关的另一个利益相关领域是通过区块链,使用“代币”(或“彩色硬币”)来代表和转移现实世界的实体。潜在的敏感或秘密的项目可由没有可辨别含义或价值的代币来表示。因此,代币充当了一个标识符,允许在区块链中引用现实世界的项目。由于区块链提供的防篡改记录,区块链非常适合于控制、事件的可见性和安全交易/交换很重要的应用。一个这样的合适的应用领域是诸如软件等数字资产的交换或转移。保护计算机软件的完整性和共享计算机软件的常规方法涉及对计算机软件的可执行文件的数字签名。例如,使用加密密钥对——例如公钥和私钥——对可执行文件或其他相关代码进行签名。公钥通常从诸如认证机构等可信的中央机构获得。计算机软件通常伴随有包含契约责任的许可证。许可证可能包含管理软件使用或再分发的条款。如果计算机软件或相关许可证被非法转移给其他用户,则可能会出现问题。计算机软件或程序通常需要安装,之后再执行其中包含的指令。安装为计算机软件或程序的执行做好准备。计算机软件或程序通常附有执行安装的安装程序。在安装执行一次之后,不需要再次执行安装,而计算机软件或程序可反复执行。验证软件的所有权、授权、和合法控制是必要的。这是为了确保例如软件不被转移至错误的所有者或违反授权。因此,希望提供一种便于或能够验证受控数字资产或诸如软件等资源的所有权和/或转移的解决方案。继而,这又将有助于确保软件和电子转移过程的完整性。对本说明书中已包含的文档、行为、材料、设备、物品等的任何讨论不应被视为承认任何或所有这些事项构成现有技术基础的一部分,或者是本发明相关领域的公知常识,由于它存在于本发明的每个权利要求的优先权日之前。在整个说明书中,单词“包括(comprise)”或其变形(comprises或comprising)将被理解为暗示包含所述元件、整体或步骤,或元件、整体或步骤的组,但不排除任何其他元件、整体或步骤,或元件、整体或步骤的组。技术实现要素:本发明提供如所附权利要求中限定的方法和相应的系统。本发明可提供计算机实现的控制和验证方法/系统。该控制和验证方法/系统可使得或帮助在基于计算机的网络上,在用户之间转移受控资产。资产可能是数字资产。在本文中,术语“用户”可以用于指基于计算机的资源。受控资产可为软件的一部分或软件的项目。本发明可提供一种验证诸如计算机软件的一部分等受控资产的计算机实现方法。该计算机实现方法可以是验证软件的所有权或授权的方法。软件可被验证以在基于计算机的资源上进行安装。该方法可包括使用分布式散列表和点对点分布式分类账(区块链)。该方法可包括:确定与第二用户(u2)相关的第二用户公钥(pu2),第二用户公钥(pu2)来自存储在点对点分布式账目上的交易记录;确定与第二用户(u2)相关的第二公钥(p2),第二公钥(p2)来自存储在分布式散列表上的条目;比较第二用户公钥(pu2)与第二公钥(p2);以及基于对第二用户公钥(pu2)与第二公钥(p2)的比较,验证计算机软件的所有权。应当指出的是,第二用户公钥(pu2)和第二公钥(p2)可分别存储在并获取于单独的技术源,即区块链和dht。因此,本发明可包括使用不同且独特的存储资源,并在存储资源之间进行相互通信和数据转移。通过从dht和区块链中搜索、处理和获取数据,本发明能够实现增强的控制、安全和验证效果,从而产生了对数字资产(例如软件)的安装、转移和授权更为安全的方法。在该方法中,比较第二用户公钥(pu2)与第二公钥(p2)可包括确定第二用户公钥(pu2)与第二公钥(p2)是否匹配。术语“匹配”可包括第二用户公钥(pu2)与第二公钥(p2)之间的对应关系、相等性或关联性。在该方法中,计算机软件可包括标头和主体。标头可包括计算机软件的主体的散列值。标头还可包括与计算机软件或许可证相关的数据的散列值(h2)。计算机软件的主体可包括计算机软件的可执行文件。在该方法中,在确定第二用户公钥(pu2)之前,该方法可包括对计算机软件的可执行文件进行加密。对计算机软件的可执行文件进行加密可包括:确定生成器值(gv);基于第二用户公钥(pu2)和生成器值(gv)来确定第二用户第二公钥(p2u2),其中第二用户第二公钥(p2u2)与第二用户第二私钥(v2u2)形成加密对;基于第一用户公钥(pu1)和生成器值(gv)来确定第一用户第二公钥(p2u1),其中第一用户第二公钥(p2u1)与第一用户第二私钥(v2u1)形成加密对;基于第二用户第二公钥(p2u2)和第一用户第二私钥(v2u1)来确定共同秘密(cs);以及使用共同秘密(cs),对计算机软件进行加密,以生成计算机软件的加密可执行文件。在该方法中,计算机软件的加密可执行文件可通过以下方式解密:基于第一用户第二公钥(p2u1)和第二用户第二私钥(v2u2),确定共同秘密(cs);以及使用共同秘密(cs)来对计算机软件的可执行文件进行解密,以生成计算机软件的解密可执行文件。该方法还可包括:将计算机软件的解密可执行文件安装在与第二用户(u2)相关的处理设备上。该方法还可包括:确定来自第二用户(u2)的激活密钥(ak);以及基于激活密钥(ak),执行计算机软件的解密可执行文件的指令。一种计算机软件程序,包括机器可读指令,以使处理设备实施上述方法。一种使用分布式散列表和点对点分布式分类账验证计算机软件的所有权的计算机系统,所述计算机软件用于安装,该系统包括与节点的点对点网络上的节点相关的处理设备,该处理设备用于:确定与第二用户(u2)相关的第二用户公钥(pu2),第二用户公钥(pu2)来自存储在点对点分布式分类账上的交易记录;确定与第二用户(u2)相关的第二公钥(p2),第二公钥(p2)来自存储在分布式散列表上的条目;比较第二用户公钥(pu2)与第二公钥(p2);以及基于对第二用户公钥(pu2)与第二公钥(p2)的比较,验证计算机软件的所有权。附图说明图1示出了散列表的示例。将参考以下内容来描述本发明的示例:图2示出了使用分布式散列表,确定用于保护计算机软件的元数据(m)的示例系统的示意图,该计算机软件用于安装;图3示出了使用分布式散列表,确定用于保护计算机软件的元数据(m)的计算机实现方法的流程图;图4示出了merkle树的示例;图5示出了引用计算机软件和与计算机软件相关的许可证的merkle树的示例;图6示出了使用分布式散列表来确定指示计算机软件的位置的标识符的计算机实现方法的流程图;图7示出了使用分布式散列表和点对点分布式分类账验证计算机软件的所有权的计算机实现方法的流程图,该计算机软件用于安装;图8示出了确定共同秘密的计算机实现方法的流程图;图9示出了对计算机软件的可执行文件进行加密的计算机实现方法的流程图;图10示出了示例处理设备的示意图。具体实施方式本发明大体涉及利用分布式散列表和诸如比特币区块链等点对点(p2p)分布式分类账验证计算机软件的方法和系统,该计算机软件用于安装。虽然下面描述的实施方式可能具体涉及在比特币区块链(本文中称为区块链)上发生的交易,但是应当理解的是,本发明可以使用其他p2p分布式分类账来实现。由于区块链具有高的标准化水平和大量相关的公共文档,因此为了简单起见,下面仅使用区块链来描述本发明的各方面。分布式散列表在典型的客户端/服务器模型中,中央服务器可掌管大部分资源。这意味着在中央服务器发生攻击或故障的情况下,存储在中央服务器上的大多数资源可能会受到损害。相反,在分布式模型中,资源在参与节点之间共享(“分布”)。以这种方式,所有参与节点的容量都得到利用,一台服务器的故障不会对大部分资源造成损害。图1示出了散列表的示例。散列表由关键字-值对组成。每个关键字-值对的关键字都通过散列函数映射到索引。索引定义了关键字-值对的存储值的位置。分布式散列表(distributedhashtable,简称“dht”)是将分布式模型应用于散列表的示例。类似于散列表,dht包括关键字-值对,并且提供了一种在仅给出关键字的情况下,定位(“查找”)关键字-值对中的值的有效方法。然而,与散列表相比,关键字-值对分布和存储在许多参与节点。以这种方式,各参与节点共同分担了存储和维护关键字-值对的责任。与散列表相同,dht中的每个关键字-值对都映射到索引。通过对关键字执行散列函数来确定每个关键字-值对的索引。例如,加密安全散列算法sha-1可用于确定索引。通过对密钥空间进行划分,为每个参与节点分配至少一个索引。对于分配给参与节点的每个索引,该参与节点存储关键字-值对中的值。优点在于可有效地检索关键字-值对中的值。为了检索与关键字相关的值,节点可执行“查找”以(通过索引)确定负责节点。然后可访问负责节点以确定该值。比特币和区块链如本领域所公知的,区块链是交易类型分类账的数据库,基于比特币协议,其存储容量分布在参与在系统中的各网络节点上。每笔比特币交易都在网络广播,交易被确认后汇总成区块。然后,通过将区块存储在多个参与节点上,将区块包括在区块链中。加密货币的p2p分布式分类账的完整副本包含用加密货币进行的每一笔交易。因此,提供了不断增长的交易数据记录列表。由于进入区块链的每一笔交易都是加密执行的,因此,区块链被加强了防范篡改和修改的能力,甚至是参与节点的操作员的篡改和修改。由于区块链的透明性,因此每笔交易的历史记录都是公开的。区块链的另一个优点是交易和交易记录是相同的。以这种方式,在实际交易中捕获与交易有关的信息。此记录是永久的、不可变的,因此不需要第三方将交易记录保存在单独的数据库中。付费脚本散列和多重签名虽然下面的实施例可特别指使用比特币协议的付费脚本散列(p2sh)方法的交易,但是应当理解,本发明也可使用比特币协议的另一种方法来实现,例如付费公钥散列(pay-to-public-key-hash)方法。区块链上的每笔交易记录均包括脚本,该脚本包括指示交易和多个公钥的信息。这些公钥可与加密货币的发送者和接收者相关。脚本可被视为记录在区块链上的记录每笔交易的指令列表,其描述了用户如何获得对交易记录中指定的加密货币的访问权。作为
背景技术:
:,在比特币协议的标准p2sh方法中,输出脚本或赎回脚本可采用以下形式:<numsigspubk1pubk2…pubk15numkeysop_checkmultisig>其中numsigs是满足赎回脚本来解锁交易所需的有效签名的数量“m”;pubk1,pubk2...pubk15是公钥,对应于解锁交易的签名(最多15个公钥),numkeys是公钥的数量“n”。在比特币协议中,可使用椭圆曲线数字签名算法(ellipticcurvedigitalsignaturealgorithm)来生成基于用户私钥的签名。然后,签名用于赎回与输出脚本或赎回脚本相关的加密货币。当用户赎回输出脚本或赎回脚本时,用户提供其签名和公钥。然后,输出脚本或赎回脚本根据公钥来验证签名。为了赎回上述赎回脚本,至少需要与公钥对应的数量“m”的签名。在一些示例中,公钥的顺序是重要的,用于签名的“n”个中的数量“m”个签名必须按顺序进行。例如,考虑“m”为2,“n”为15的情况。如果有两个签名可供使用,sig1(对应于pubk1)和sig15(对应于pubk15),则赎回脚本必须首先由sig1签名,然后由sig15签名。系统概述现在将描述确定用于保护计算机软件的元数据(m)以及验证计算机软件的所有权的方法、设备和系统,,该计算机软件用于安装。图2示出了系统1,其包括第一节点3,其通过通信网络5与第二节点7进行通信。第一节点3具有相关的第一处理设备21,第二节点5具有相关的第二处理设备27。第一和第二节点3、7的示例包括电子设备,例如计算机、平板计算机、移动通信设备、计算机服务器等。记录和存储关键字-值对的dht13也在图2中示出。dht13可与一个或多个处理设备19相关联,以接收、记录和存储关键字-值对中的值。处理设备19可由dht13的“参与节点”使用。如上所述,dht13提供了定位关键字-值对中的值的有效方法。图2还示出了p2p分布式分类账14以记录交易。p2p分布式分类账14可与一个或多个处理设备20相关联以接收和记录交易。如上所述,p2p分布式分类账14的一个示例是比特币区块链。因此,在区块链的环境中,与p2p分布式分类账14相关的处理设备20可为被称为“矿工”的处理设备。第一节点3与第一用户23相关联,第二节点7与第二用户24相关联。在一个示例中,第一节点3可代表计算机软件的供应商。在另一示例中,第一节点3可代表代理或服务提供商。在又一示例中,第一节点3可表示计算机软件的用户。第二节点7可以表示计算机系统的用户。在另一示例中,第二节点7可以表示代理,服务提供商或计算机软件的供应商。在一个示例中,第一节点3实施如图3、图6、图7、图8和图9所示的方法100、300、400、500、600、700、800。在另一示例中,第二节点7实施方法100、300、400、500、600、700、800。虽然下面的示例性实施方式可能涉及第一节点3执行这些方法或者第二节点7执行这些方法,但是应当理解的是,本发明也可以调整或修改为由其他节点执行。如图3所示的方法100保护计算机软件,该方法100包括步骤110,确定与计算机软件相关的数据(d1)。数据(d1)还可包括与计算机软件相关的许可证。方法100还包括步骤120,基于计算机软件来确定第一散列值(h1)。在一个示例中,第一散列值(h1)可与计算机软件的可执行文件有关。方法100还包括步骤130,基于数据(d1)和计算机软件来确定第二散列值(h2)。在一个示例中,第二散列值(h2)可代表计算机软件的细节和与计算机软件相关的许可证。在另一示例中,第二散列值(h2)可包括附加信息。方法100还包括步骤140,通过通信网络5,将数据(d1)、第一散列值(h1)和第二散列值(h2)发送到分布式散列表13上的条目,其中第二散列值(h2)被分配给关键字-值对中的关键字,而数据(d1)和第一散列值(h1)被分配给关键字-值对中的值。关键字-值对中的值还可包括指示计算机软件或许可证的位置的标识符。方法100还包括步骤150,确定基于第二散列值(h2)的元数据(m),以包括在点对点分布式分类账14上。在一个示例中,元数据(m)可包括在第一赎回脚本(rs1)中,以包括在点对点分布式分类账14上。如图7所示的方法600验证计算机软件的所有权,并且在上述方法之后执行。这被示出为图7中的可选步骤100。方法600包括:步骤610,确定与第二用户(u2)相关的第二用户公钥(pu2),该第二用户公钥(pu2)来自存储在点对点分布式分类账14上的交易记录的。第二用户公钥(pu2)可包括在交易记录的输出脚本中。在另一示例中,第二用户公钥(pu2)可包括在点对点分布式分类账14上的元数据(m)中,如上所述。方法600还包括:步骤620,确定与第二用户(u2)相关的第二公钥(p2),该第二公钥(p2)来自存储在分布式散列表13上的条目。第二公钥(p2)可与第二用户公钥(pu2)相同。分布式散列表13上的条目可包括关键字-值对。方法600还包括:步骤630,比较第二用户公钥(pu2)与第二公钥(p2)。方法600还包括:步骤640,基于对第二用户公钥(pu2)和第二公钥(p2)的比较,验证计算机软件的所有权。在一个示例中,验证所有权可表明第二用户公钥(pu2)与第二公钥(p2)匹配。现在将对方法100、600的详细示例进行描述。确定与计算机软件相关的数据110如上所述,方法100包括步骤110,确定与计算机软件相关的数据(d1)。确定数据(d1)的步骤110可包括从用户、节点或数据存储接收数据(d1)。确定数据(d1)的步骤110还可包括在第一节点3处生成数据(d1)。在一个示例中,第一节点3可通过用户接口15接收来自第一用户23的数据(d1)。在另一示例中,第一节点3可接收来自第二用户24的数据(d1)。在又一示例中,第一节点3可接收来自数据存储17的数据(d1)。数据(d1)与计算机软件相关联,其中数据(d1)可识别计算机软件、附加信息、计算机软件的许可证或指示计算机软件的位置。例如,数据(d1)可包括识别计算机软件的字符串或数据结构。字符串或数据结构可包括关于计算机软件的识别关键字和/或附加信息的集合。附加信息的示例可为计算机软件的版本的如数字等标识符。例如,如果计算机软件名为bobsoftware,版本是3.0,则字符串或数据结构(d1)可包括“bobsoftware/3.0”。在另一示例中,数据(d1)可包括与计算机软件相关的许可证的标识符。这可为软件许可证标识号(id)或软件许可证密钥。在另一示例中,许可证的标识符可包括许可证内容的加密散列。数据(d1)还可包括指示计算机软件的存储位置的标识符。在一个示例中,标识符可包括互联网上的对象的统一资源定位地址(url)。在另一示例中,可提供到诸如散列表或分布式散列表之类的存储库中的计算机软件的存储位置的链接。在又一个示例中,数据(d1)可包括识别计算机软件的供应商的信息。这可包括个人详细信息,如姓名、地址、联系方式或与供应商相关的公钥。基于计算机软件确定第一散列值(h1)120也如上所述,方法100还包括步骤120,确定计算机软件的第一散列值(h1)。确定第一散列值(h1)的步骤120可包括接收来自用户的第一散列值(h1)或访问来自数据存储的第一散列值(h1)。确定第一散列值(h1)的步骤120还可包括在第一节点3处计算散列值。在一个示例中,第一节点3可经由用户接口15,接收来自第一用户23的第一散列值(h1)。在另一示例中,第一节点3可接收来自第二用户24的第一散列值(h1)。在又一示例中,第一节点3可访问来自本地数据存储17或远程数据存储的第一散列值(h1)。在一个示例中,第一散列值(h1)是计算机软件的可执行文件。计算机软件的可执行文件可从诸如互联网之类的通信网络5获取。在另一示例中,可执行文件可由第一用户23或第二用户24提供。在又一示例中,可从数据存储17中获取可执行文件。在又一个示例中,可从诸如散列表或dht之类的存储库中获取可执行文件。可使用sha-256算法来确定软件的可执行文件的散列,以创建信息的256位表示。应当理解,也可使用其他散列算法,包括安全散列算法(sha-securehashalgorithm)系列中的其他算法。一些特定示例包括sha-3子集中的实例,包括sha3-224、sha3-256、sha3-384、sha3-512、shake128、shake256。其他散列算法可包括race完整性基元评估消息摘要(ripemd-raceintegrityprimitivesevaluationmessagedigest)系列中的那些。一个特定示例可包括ripemd-160。其他散列函数可包括基于zémor-tillich散列函数和基于背包的散列函数的系列。基于数据(d1)和计算机软件确定第二散列值(h2)130方法100还包括步骤130,基于数据(d1)和计算机软件来确定第二散列值(h2)。在一个示例中,可基于数据(d1)和计算机软件的可执行文件(或可执行文件的散列,即第一散列值(h1))的级联的散列,来确定第二散列值(h2)。在另一示例中,可基于数据(d1)、计算机软件的可执行文件(或可执行文件的散列)和附加信息的级联的散列,来确定第二散列值(h2)。附加信息可包括第一用户23的公钥(pu1)或第二用户24的公钥(pu2)。在另一示例中,附加信息可包括与第一用户23或第二用户24相关的实体的标识符。例如,实体可为第一用户23或第二用户24的雇主。在另一示例中,实体可为第一用户23或第二用户24的服务提供商。附加信息还可包括与第一节点3、第二节点7、第一用户23或第二用户24相关的设备的设备标识符。设备的示例是如图2所示的第一处理设备21。设备标识符可包括以下各项中的至少一个:媒体访问控制(mac)地址、主板序列号或设备标识号。设备标识符还可为mac地址、主板序列号或设备标识号中的至少两个的级联。在另一示例中,设备标识符可包括与mac地址、主板序列号或设备标识号或上述级联相关的散列值。在又一个示例中,附加信息可包括与计算机软件相关的许可证的到期日期。与计算机软件相关的许可证在另一示例中,可基于数据(d1)、计算机软件的可执行文件(或可执行文件的散列)、附加信息或与计算机软件有关的合约(例如,许可证)的级联,来确定第二散列值(h2)。许可证的表示可为指定许可证内容的文件或文档。例如,纯ascii文本、pdf文档或word文档。第二散列值(h2)可包括原始形式的许可证,或者例如,它可提供到许可证在可公开访问的诸如互联网等通信网络中的位置的链接。在另一示例中,可提供连接到诸如散列表或dht等存储库中的许可证的位置的链接。在又一个示例中,可提供连接到诸如数据存储17等基于计算机的资源中的许可证的位置的链接。在一个示例中,许可证可包括与计算机软件相关的第一散列值(h1)。与计算机软件相关的许可证可进一步包括如上所述的附加信息。在一个示例中,许可证可与第一用户23或第二用户24相关联。许可证可包括第一用户23的公钥(pu1)或第二用户24的公钥(pu2)。在另一示例中,许可证可包括与第一用户23或第二用户24相关的实体的标识符。与计算机软件相关的许可证还可包括与第一节点3、第二节点7、第一用户23或第二用户24相关的设备的设备标识符。设备的示例是如图2所示的第一处理设备21。设备标识符可包括以下各项中的至少一个:mac地址、主板序列号或设备标识号。设备标识符还可为mac地址、主板序列号或设备标识号中的至少两个的级联。在另一示例中,设备标识符可包括与mac地址、主板序列号或设备标识号或上述级联相关的散列值。第一用户23可为计算机软件的供应商,第二用户24可为计算机软件的接收者(“终端用户”)。在另一示例中,第二用户23可为计算机软件的供应商,第二用户24可为计算机软件的终端用户。在一个示例中,与计算机软件相关的许可证仅可授权一个终端用户(“单用户许可证”)。在另一示例中,与计算机软件相关的许可证可授权终端用户的一个设备(“单设备许可证”)。在另一示例中,与计算机软件相关的许可证可授权终端用户的多于一个的设备(“多设备许可证”)。在另一示例中,可能存在多于一个的终端用户(“多用户许可证”)。在另一示例中,与计算机软件相关的许可证可授权每个终端用户的一个设备。在另一示例中,与计算机软件相关的许可证可授权每个终端用户的多于一个的设备。在许可证与第一用户23或第二用户24相关联的情况下,许可证可包括与第一用户23相关的第一用户公钥(pu1)和与第二用户24相关的第二用户公钥(pu2)。默克尔(merkle)树在另一示例中,许可证可为merkle树的顶部散列值。merkle树的一个示例如图4所示。在merkle树中,每个节点处的散列值都是它们各自的“子节点”的散列。例如,散列值hash-a305是两个“子”节点309和311处的散列值的散列。可以看出,merkle树的顶部散列值hash-ab303包括merkle树中的所有散列值。也就是说,它捕获树底部的四个“叶子”的散列值,a1317、a2319、b1321和b2323。在本发明的示例中,merkle树的每个“叶子”都可代表许可证信息的一个方面。一个示例性许可证在图5中示出。在散列值hash-d409中捕获数据417(d1),在散列值hash-s411(h1)中捕获软件的可执行文件419,在散列值hash-p413中捕获用户23和/或24的公钥421,在散列值hash-e415中捕获到期日期423。可以看出,节点405和407分别捕获与用于数据(d1)417和软件419以及公钥421和有效期限423的叶子相关的散列值。应当理解,上面未另外描述的其他信息可包括散列值(h2)所基于的附加信息。将数据(d1)、第一散列值(h1)和第二散列值(h2)发送到分布式散列表140方法100还包括步骤140,通过通信网络5,将数据(d1)、第一散列值(h1)和第二散列值(h2)发送到分布式散列表13上的条目。在一个示例中,第二散列值(h2)可为关键字-值对中的关键字,而数据(d1)和第一散列值(h1)可为关键字-值对中的值。在另一示例中,如上所述的附加信息也可为关键字-值对中的值的一部分。这包括但不限于:第一用户23或第二用户24的公钥、与第一节点3、第二节点7、第一用户23或第二用户24相关的设备的设备标识符、指示计算机软件或许可证的位置的标识符、或与许可证相关的其他附加信息。如上所述,dht13由关键字-值对组成,其中每个关键字-值对都被分配给索引。在一个示例中,第二散列值(h2)可用于生成索引。可对第二散列值(h2)执行散列函数或加密散列函数。例如,可使用加密函数sha-1:索引=sha-1(h2)对于第二散列值(h2)为dht13中的关键字-值对中的关键字,并且数据(d1)和第一散列值(h1)为关键字-值对中的值的情况,关键字和值被发送到dht13中的任何参与节点。在一个示例中,诸如输入(关键字,值)(put(key,value))之类的消息可被发送到dht13的参与节点,其中关键字(key)是第二散列值(h2),值(value)是数据(d1)和第一散列值(h1)。可向所有参与节点发送消息,直到该消息由通过密钥空间划分所指示的,被分配给索引的参与节点所接收。然后,分配给消息中指示的索引的参与节点可将关键字-值对存储在dht13上,并承担维护与关键字-值对相关的条目的责任。优点在于,可从dht13中获取任何给定关键字的值。在一个示例中,第一用户23或第二用户24可能希望获取该值。经由第一节点3、第二节点7或未另外示出的另一节点,第一用户23或第二用户24可向dht13中的任何参与节点提供诸如获取(值)(get(key))之类的请求消息。然后,该请求消息可被发送到所有参与节点,直到该请求消息由通过密钥空间划分所指示的,被分配给索引的参与节点所接收。确定元数据(m)150方法100还包括步骤150,确定元数据(m),该元数据(m)包括第二散列值(h2)。确定元数据(m)的步骤150可包括接收来自用户、节点或数据存储的元数据(m)。例如,元数据(m)可被包括在p2p分布式分类账14上的交易的p2sh多重签名第一赎回脚本(rs1)中的公钥可用的15个位置中的一个或多个。p2p分布式分类账14上的交易的第一赎回脚本(rs1)可表示代币化交易(“发行代币”)的发行或创建,代币化交易代表包括在元数据(m)中的内容。在一个示例中,代币可由代理(a)发行。在比特币协议的p2sh方法中,元数据可以包括在如下所述的赎回脚本中。元数据元数据(m)可嵌入在p2sh多重签名赎回脚本(rs1)中的公钥可用的15个位置中的一个或多个。例如,赎回脚本(rs1)可采取以下形式:<numsigsmetadata1metadata2…pubk1pubk2…numkeysop_checkmultisig>其中metadata1和metadata2均包含在赎回脚本中取代公钥位置的元数据,pubk1和pubk2是公钥。元数据(m)可包括第二散列值(h2)。元数据(m)还可包括描述与计算机软件或许可证相关的条件的描述或关键字。例如,许可证的日期、与许可证相关的用户的姓名、出生日期、地址、联系方式或其他信息。在另一示例中,可包括与一定数量的加密货币相关的信息。元数据(m)可以多种方式来包括信息。在一个示例中,可包括信息的内容。在另一示例中,可包括信息的加密散列。可使用sha-256算法来确定信息的散列,以创建信息的256位表示。应当理解,也可使用其他散列算法,包括安全散列算法(sha)系列中的其他算法。一些特定示例包括sha-3子集中的实例,包括sha3-224、sha3-256、sha3-384、sha3-512、shake128、shake256。其他散列算法可包括race完整性原语评估消息摘要(ripemd)系列中的那些。一个特定示例可包括ripemd-160。其他散列函数可包括基于zémor-tillich散列函数和基于背包的散列函数的系列。在本发明的其他实施例中,包括以上各项中的一项或多项的结合可包括在元数据(m)中。由于元数据(m)可通过诸如区块链之类的p2p分布式分类账14公开,或者通过不安全的网络传输,因此出于隐私原因,可能希望隐藏元数据(m)的具体细节。因此,在本发明的实施例中使用的多重签名p2sh比特币交易具有优点,因为它能够传输和永久记录与计算机软件和许可证相关的信息。通过在交易的诸如赎回脚本的输出脚本中包含元数据,来实现此记录。第一赎回脚本如上所述,赎回脚本是比特币协议的标准p2sh方法中的输出脚本的示例,描述了用户如何获得对交易记录中指定的加密货币的访问。在本发明中,用于发行代币的第一赎回脚本(rs1)可基于元数据(m)。第一赎回脚本(rs1)还可包括与代理私钥(va)形成密码对的代理公钥(pa)。以这种方式,代理私钥(va)需要“解锁”或花费与交易相关的加密货币。在一个示例中,用于发行代币的第一赎回脚本(rs1)可包括元数据(m)。第一赎回脚本(rs1)还可包括代理公钥(pa)。在此示例中,第一赎回脚本(rs1)可为以下形式:<op_1pametadata1metadata2op_3op_checkmultisig>其中op_1表示满足第一赎回脚本(rs1)以解锁交易所需的签名数量(“numsigs”),op_3表示赎回脚本中的公钥数量(“numkeys”)。在该示例中,第一赎回脚本(rs1)可包括元数据的两个指定字段,metadata1和metadata2。metadata1和metadata2的具体示例在下面的表1中示出。表1该示例包括提供指向metadata1中的许可证的指针,在许可证的大小排除了在元数据(m)中包括这样的细节的情况下,该指针可能是有用的。此外,由于元数据(m)可被公开,或者通过不安全的网络传输,因此出于隐私原因,可能希望隐藏代币的具体细节。metadata1的前4个字节指示许可证的类型。例如,许可证类型可表示诸如bobsoftware之类的计算机软件的名称。在另一示例中,许可证类型可表示许可证的授权类型,诸如如上所述的“单用户”或“多设备”。接下来的16个字节保存实际电子许可证文件的位置的ip地址,允许ipv6地址。注意,在一些实施例中,该值可指向种子(torrent)文件的种子,使得许可证文件可分布在云上而不是集中。后面12个字节包含特定于许可证类型的数据。metadata2的前20个字节是实际许可证文件的散列,在应用于许可证文件的实际内容的sha256上使用ripemd-160。由于实际许可证文件可为可获取的,因此允许根据合约来验证交易。注意,许可证文件本身可以是完全公开的(未加密的,且人类可读的),或者可加密以保护隐私,这取决于具体实施例的要求。可根据许可证的类型,来使用metadata2的剩余12个字节的内容。从上面提供的第一赎回脚本(rs1)的示例可以看出,发行代币必须由代理(a)签署才能花费。表2中提供了发行代币的交易的示例,为简洁起见,未示出矿工的费用。表2表2的第4到8行表示交易的输入,其是将要包括在发行代币(即“代币化的”)中的第一数量的加密货币(c1)。在此示例中,第一数量的加密货币(c1)是将第一数量的加密货币转移给了代理(a)的先前交易(id-110)的结果,因此先前交易(id-110)输出脚本(赎回脚本id-110)包括代理公钥(pa)。因此,要解锁此先前输出,必须使用第一用户的私钥(va)对脚本(赎回脚本id-110)进行签名。最后,表2的第8行表明第一数量的加密货币(c1)将是该交易(id-600)的第一输出。表2的第9到13行代表交易(id-600)的第一(也是唯一的)输出,在这种情况下,它代表正在创建并转移回代理的发行代币。第10行示出了输出值,是第一数量的加密货币(c1)。第11行示出了输出脚本,其中包括如比特币协议的p2sh方法中所使用的“<赎回脚本散列>”。在该示例中,赎回脚本是如上所述的形式的第一赎回脚本(rs1)。然后,使用第一数据输出(o1),在p2p分布式分类账14上,记录表2中所示的交易(id-600)的输出。特别地,第一数据输出(o1)可包括在交易中转移的第一数量的加密货币(c1)的指示。第一数据输出(o1)还可包括第一赎回脚本(rs1)的散列。在第一加密货币数量(c1)的进一步的交易中,例如将代币转移给第一用户23或第二用户24,解锁第一数量的加密货币(c1)的脚本(例如,进一步的交易的输入脚本签名scriptsig)可采取以下形式:op_0sig-vasig-vul<op_lpapu1metadatalmetadata2op_4op_checkmultisig>其中sig-vu1表明第一用户23的签名。注意,上述脚本假定只需要来自代理(a)或第一用户23中的一个签名来解锁第一数量的加密货币(c1)。可通过第二赎回脚本(rs2)将发行代币转移给另一用户。变形第二赎回脚本与计算机软件和许可证相关的代币可从代理(a)转移给另一用户,例如第一用户23或第二户24。在一个示例中,代币的转移可表示授权用户访问计算机软件或许可证。转移可通过第二赎回脚本(rs2)来实现。在一个示例中,代理(a)希望将发行代币转移给第一用户23。第一用户23可表示例如计算机软件的供应商。在该示例中,第二赎回脚本(rs2)可基于元数据(m)、与代理(a)相关的代理公钥(pa)和与第一用户23相关的第一用户公钥(pu1)。第二赎回脚本(rs2)可以是以下形式:<op_1papu1metadata1metadata2op_4op_checkmultisig>在该示例中,第二赎回脚本(rs2)包括与第一赎回脚本(rs1)相同的两个元数据字段。第二赎回脚本(rs2)还包括与代理相关的代理公钥(pa)和与第一用户相关的第一用户公钥(pu1)。从上面提供的第二赎回脚本(rs2)的示例可以看出,被转移的代币必须由代理(a)或第一用户23签署才能花费。表3中提供了发行代币的此转移的交易的示例,其中为了简洁起见,未示出矿工的费用。表3与表2类似,表3的第4至8行表示交易(id-610)的输入。在该示例中,输入是发行代币,即表2中所示的交易(id-600)的输出。可看出,第7行中的赎回脚本对应于发行代币的赎回脚本,即第一赎回脚本(rs1)。因此,为了解锁交易(id-600)的输出,必须用代理公钥(pa)对第一赎回脚本(rs1)进行签名。表3的第9到13行表示交易(id-610)的输出,在这种情况下,它代表正被转移到代理(a)或第一用户23(u1)的发行代币。第10行示出了输出值,是第一数量的加密货币(c1)。第11行示出了输出脚本,其中包括如比特币协议的p2sh方法中所使用的“<输出脚本散列>”。在该示例中,赎回脚本是如上所述的形式的第二赎回脚本(rs2)。然后,使用第二数据输出(o2),在p2p分布式分类账14上,记录交易(id-610)的输出。第二数据输出(o2)可包括来自第一数据输出(o1)的第一数量的加密货币(c1)将在交易中被转移的指示。第二数据输出(o2)还可包括第二赎回脚本(rs2)的散列。指示计算机软件或许可证的位置的标识符如上所述,数据(d1)或许可证可包括分别指示计算机软件或许可证的位置的标识符。在一个示例中,标识符可以独立于数据(d1)或许可证而确定,并且保持与数据(d1)或许可证分开。如上面的方法100中所述,还可将标识符与数据(d1)和第一散列值(h1)一起分配给关键字-值对中的值。以这种方式,如上所述,标识符可包括在消息输入(关键字,值)(put(key,value))的值(value)字段中,并发送到dht13中的参与节点。在一个示例中,指示位置的标识符可包括互联网上的对象的url。在另一示例中,指示位置的标识符可包括诸如散列表或dht13之类的存储库的地址。在又一示例中,指示位置的标识符可包括基于计算机的存储库的地址,该存储库例如是基于计算机的资源上提供的服务器、数据库或存储设施,例如与第一节点3的第一处理设备21相关的数据存储17。图6示出了用于确定计算机软件或许可证的位置的方法500。方法500包括步骤510,确定来自第一赎回脚本(rs1)的元数据(m)。如上所述,元数据(m)可嵌入在第一赎回脚本(rs1)中的公钥可用的15个位置中的一个或多个。在比特币协议的p2sh方法中,当交易的输出在后续交易中被花费时,赎回脚本在后续交易中变得可见。如上所述并参考表2,发行代币的交易(id-600)被返还给代理(a)。以这种方式,代理(a)可花费该发行代币以暴露第一赎回脚本(rs1)。因此,基于第二散列值(h2)的元数据(m)在p2p分布式分类账14上可见。以这种方式,在步骤520中,能够从第一赎回脚本(rs1)中的元数据(m)获取第二散列值(h2)。在一个示例中,能够使用请求消息获取(关键字)(get(key)),从dht13中获取与关键字-值对中的关键字相关的值。方法500还包括步骤530,通过通信网络5,将第二散列值(h2)发送到与dht13的参与节点相关的处理器。如上所述,第二散列值(h2)可为关键字-值对中的关键字。还如上所述,可通过向dht13的任何参与节点提供包含关键字的消息来获取给定关键字的值。因此,在标识符包括在关键字-值对中的值字段中的示例中,方法500能够从参与节点的处理器处,确定指示计算机软件或许可证的位置的标识符(步骤540)。确定与第二用户(u2)相关的第二用户公钥(pu2)610如上所述,方法600包括:步骤610,确定与第二用户(u2)相关的第二用户公钥(pu2),该第二用户公钥(pu2)来自存储在p2p分布式分类账14上的交易记录。确定来自交易记录的第二用户公钥(pu2)可包括:接收来自用户、节点或数据存储的交易记录,并查询用于第二用户公钥(pu2)的交易记录。确定来自交易记录的第二用户公钥(pu2)还可包括:访问用户、节点或数据存储处的交易记录,并查询用于第二用户公钥(pu2)的交易记录。在一个示例中,与第二用户24相关的第二节点7可接收来自第一节点3或与第一节点3相关的数据存储17的交易记录。在另一示例中,第二节点7可接收来自第一用户23或第二用户24的交易记录。在又一示例中,第二节点7可访问第二节点7处或与第二节点7相关的数据存储处的交易记录。在另一示例中,使用比如www.blockchain.info等公开可用的设施,交易记录可由第二节点7访问。存储在p2p分布式分类账14上的交易记录可以包括标识交易或与交易相关的用户的信息。表4中示出了交易记录中包含的信息的示例。表4每个交易输出包括转移的一定数量的加密货币的信息和输出脚本,该输出脚本定义了花费加密货币所需满足的条件。输出脚本通常包括与加密货币的接收者相关的公钥。在一个示例中,在输出脚本中,与加密货币的接收者相关的公钥可为第二用户公钥(pu2)。由此,确定与第二用户(u2)相关的第二用户公钥(pu2),第二用户公钥(pu2)来自存储在p2p分布式分类账14上的交易记录上的输出脚本。如上所述,在比特币协议的p2sh方法中,输出脚本是赎回脚本。赎回脚本可包括与加密货币的发送者和接收者相关的若干公钥。在一个示例中,确定与第二用户(u2)相关的第二用户公钥(pu2),第二用户公钥(pu2)来自交易记录的赎回脚本。在另一示例中,第二用户公钥(pu2)可存储在赎回脚本的元数据(m)中。如上所述,在p2sh方法中,当交易的输出在后续交易中花费时,赎回脚本在p2p分布式分类账14上变得可见。由此,能够获取来自赎回脚本的元数据(m)的第二用户公钥(pu2)。确定与第二用户(u2)相关的第二公钥(p2)620方法600还包括:步骤620,确定与第二用户(u2)相关的第二公钥(p2),第二公钥(p2)来自存储在dht13上的条目。确定第二公钥(p2)可包括:检索与存储在dht13上的条目相关的关键字-值对中的值。确定第二公钥(p2)还可包括:从另一节点接收关键字-值对中的值。在一个示例中,可以通过向dht13上的参与节点发送请求消息来获取与dht13上的条目相关的关键字-值对中的值。如上所述,请求消息可包括获取(关键字)(get(key)),其中key是与dht13上的条目相关的关键字-值对中的关键字。在另一示例中,关键字-值对中的关键字是第二散列值(h2)。在另一示例中,第二节点7可接收存储在dht13上的值,该值来自第一节点3或未另外示出的另一节点。第一节点3或其他节点可向dht13上的参与节点提供请求消息get(key)。然后,第一节点3或其他节点可接收与dht13上的条目相关的关键字-值对中的值。然后,通过通信网络5,关键字-值对中的值可从第一节点3或其他节点发送至第二节点7。比较第二用户公钥(pu2)与第二公钥(p2)630该方法还包括:步骤630,进行第二用户公钥(pu2)与第二公钥(p2)。该比较可包括:确定第二用户公钥(pu2)与第二公钥(p2)是否匹配。在一个示例中,匹配可指示第二用户公钥(pu2)与第二公钥(p2)是等效的。在另一示例中,匹配可指示第二用户公钥(pu2)与第二公钥(p2)属于相同的加密货币钱包。在又一示例中,加密货币钱包可为确定性的钱包,匹配可指示第二用户公钥(pu2)与第二公钥(p2)是从共同种子导出的。共同种子可为一系列字符。基于比较来验证计算机软件的所有权640方法600还包括:步骤640,基于对第二用户公钥(pu2)与第二公钥(p2)的比较,验证计算机软件的所有权。在一个示例中,如果该比较确定第二用户公钥(pu2)与第二公钥(p2)匹配,则验证计算机软件的所有权。验证可涉及允许用户或使用户能够使用软件或与软件交互,或者,如果已经建立了匹配,则执行与软件相关的一些动作。变形计算机软件计算机软件可包括标头和主体。在一个示例中,标头可包括与计算机软件相关的信息。在另一示例中,标头可包括计算机软件的主体的散列值。在又一示例中,标头可包括如上所述的第二散列值(h2)。计算机软件的主体可包括计算机软件的可执行文件。对计算机软件的可执行文件进行加密在上述方法600中,在确定第二用户公钥(pu2)之前,方法600可包括对计算机软件的可执行文件进行加密。在一个示例中,使用与第一用户23或第二用户24相关的公钥来对计算机软件的可执行文件进行加密。在另一示例中,使用与第一节点3或第二节点7相关的公钥来对计算机软件的可执行文件进行加密。在又一示例中,使用与第三方或未另外示出的节点相关的公钥来对计算机软件的可执行文件进行加密。在另一示例中,可以使用与下面提供的共同秘密共享方法,对计算机软件的可执行文件进行加密。确定共同秘密(cs)如图8所示,通过分别执行方法300、400的步骤,在节点3、7处,由与该节点相关的用户23、24可确定用于加密的共同秘密。由此,可以独立地确定共同秘密,而无需通过通讯网络5沟通与用户23、24相关的私钥。如图8所示,由第一用户23执行的方法300包括:基于至少第一用户私钥(vu1)和生成器值(gv)来确定300第一用户第二私钥(v2u1)。第一用户私钥(vu1)与第一用户公钥(pu1)形成加密对。生成器值可基于在第一用户23与第二用户24之间共享的消息,可包括通过通信网络5共享该消息。方法300还包括:步骤370,至少基于第二用户公钥(pu2)和生成器值(gv)来确定第二用户第二公钥(p2u2)。方法300还包括:步骤380,在第一用户23处,基于第二用户第二公钥(p2u2)和第一用户第二私钥(v2u1)来确定共同秘密(cs)。重要的是,通过方法400,可以由与第二节点7相关的第二用户24来确定相同的共同秘密(cs)。方法400包括:步骤430,基于第一用户公钥(pu1)和生成器值(gv)来确定第一用户第二公钥(p2u1)。方法400还包括:步骤470,基于第二用户私钥(vu2)和生成器值(gv)来确定第二用户第二私钥(v2u2)。第二用户私钥(vu2)与第二用户公钥(pu2)形成加密对。方法400还包括步骤480,在第二用户24处,基于第一用户第二公钥(p2u1)和第二用户第二私钥(v2u2)来确定共同秘密(cs)。方法300、400可以重复进行以产生第一用户另外的公钥或第二用户另外的公钥。对计算机软件的可执行文件进行加密共同秘密(cs)可用作生成用于加密的对称密钥的基础。在一个示例中,共同秘密(cs)可以呈椭圆曲线点(xs,ys)的形式。这可转换为标准密钥格式,使用由节点3、7所达成一致的标准操作。例如,xs值可以是256位整数,可以用作用于aes256(高级加密标准)加密的密钥。xs值也可以使用ripemd160转换为160位的整数。参照图9,现将描述由第一用户23进行加密的安全通信方法700、800。在下面提供的示例性实施例中,与第一节点3相关的第一用户23执行对计算机软件的可执行文件进行加密的方法700。应当理解的是,方法700同样可以应用于第二节点7处的第二用户24。步骤710,基于在上面方法300、400中确定的共同秘密(cs),第一用户23确定对称密钥。这可包括将共同秘密(cs)转换为如上所述的标准密钥格式。类似地,步骤810,第二用户24也可基于共同秘密(cs)来确定对称密钥。步骤720,第一用户23可使用对称密钥,来对计算机软件的可执行文件进行加密,以形成计算机软件的加密可执行文件。步骤730,然后,将计算机软件的加密可执行文件包括到计算机软件的主体中。步骤740,通过通信网络5,将包括计算机软件的加密可执行文件的计算机软件发送至存储位置。在一个示例中,存储位置可为诸如散列表或dht13之类的存储库。在另一位置中,存储位置可位于因特网上。在又一示例中,存储位置可为基于计算机的存储库,例如服务器、数据库或诸如与第一节点3的第一处理设备21相关的数据存储17等基于计算机资源的存储设备。继而,第二用户24确定计算机软件的加密可执行文件。确定计算机软件的加密可执行文件可包括,从如上所述的存储位置下载计算机软件。在一个示例中,第二用户24从dht13上的条目下载计算机软件的加密可执行文件。步骤830,使用对称密钥,第二用户24可将计算机软件的加密可执行文件解密为计算机软件的可执行文件。安装计算机软件计算机软件的可执行文件可包括指令,该指令使得与第二用户24相关的第二处理设备27安装计算机软件。在一个示例中,在第二用户24解密830计算机软件的加密可执行文件之后,将计算机软件安装在第二处理设备27上。在另一示例中,在第二用户24解密830计算机软件的加密可执行文件之后,确定来自第二用户24的激活密钥(ak)。在一个示例中,与第二处理设备27相关的用户接口可向第二用户24提示输入激活密钥(ak)。第二用户24可通过与第二处理设备27相关的输入设备——比如键盘设备、触摸屏或触摸板设备、鼠标设备或麦克风设备——提供激活密钥(ak)。可以从种子激活密钥确定性地导出激活密钥(ak)。在一个示例中,第一用户23可在第一节点3处确定种子激活密钥。然后,第一用户23可基于消息来确定生成器值(gv)。然后可基于种子激活密钥和生成器值(gv)来确定激活密钥(ak)。处理设备如上所述,第一节点3和第二节点7可为电子设备,例如计算机、平板计算机、移动通信设备、计算机服务器等。电子设备可包括处理设备21、27、数据存储17和用户接口15。图10示出了处理设备21、27的示例。处理设备21、27可在第一节点3、第二节点7或未另外示出的其他节点处使用。处理设备21、27包括经由总线1530彼此通信的处理器1510、存储器1520和接口设备1540。存储器1520存储计算机软件程序,该计算机软件程序包括用于实现上述方法100、300、400、600、700和800的机器可读指令和数据,处理器1510执行来自存储器1520的指令,以实现方法100、300、400、600、700和800。接口设备1540可包括通信模块,该通信模块帮助与通信网络5进行通信、以及在一些示例中,帮助与用户接口15和诸如数据存储17的外围设备进行通信。应当指出的是,尽管处理设备1510可为独立的网络元件,但处理设备1510也可为另一网络元件的一部分。此外,由处理设备1510执行的一些功能可分布在多个网络元件之间。例如,在与第一节点3相关的安全局域网中,第一节点3可具有多个处理设备21来实施方法100、300、400、600、700和800。在本公开描述用户、雇主、雇员、发行人、商家、提供商或其他实体执行特定动作(包括签名、发行、确定、计算、发送、接收、创建等),使用这种措辞是为了表述清楚。应该理解,这些动作由这些实体使用的计算设备执行。本领域技术人员将理解,在不脱离本发明大体的范围的情况下,可对上述实施例作出多种变化和/或修改。因此,本发明的实施例在所有方面都被认为是说明性的而非限制性的。当前第1页12当前第1页12