用于控制对资源的访问的令牌的存储、生成和验证的改进系统和方法与流程

文档序号:23396163发布日期:2020-12-22 14:04阅读:100来源:国知局
用于控制对资源的访问的令牌的存储、生成和验证的改进系统和方法与流程
本发明大体上涉及用于数字资源的转移和访问控制的安全且有效的方案,并且更具体地涉及用作访问密钥的电子/数字令牌的转移、存储、通信、生成和验证。本发明特别适合于但不限于与诸如比特币区块链等区块链一起使用。
背景技术
:在本文档中,我们使用术语“区块链”用来包括所有形式的电子的、基于计算机的、分布式的账本(ledger)。这些包括基于共识的区块链和交易链技术、公共和私人账本、被许可的和未被许可的账本、共享账本及其变型。尽管已经提出并开发了其他区块链实现,但是区块链技术最广为人知的应用是比特币帐本。尽管为了方便和说明的目的在本文中可能提及比特币,但是应当注意,本发明不限于与比特币区块链一起使用,并且替代的区块链实现和协议落入本发明的范围内。术语“用户”在本文中可以人或基于处理器的资源。术语“比特币”在本文中被用于包括源自或基于比特币协议/平台的区块链实现的所有版本和变型。区块链是一种点对点的电子帐本,其被实现为基于计算机的去中心化的、分布式系统,该系统由区块组成,该区块又由交易组成。每个交易是一个数据结构,该数据结构对区块链系统中的参与者之间的数字资产的控制权的转移进行编码,并包括至少一个输入和至少一个输出。每个区块都包含前一个区块的哈希值,以使得区块被链接在一起来创建自区块链开始以来就已经被写入到该区块链的所有交易的永久、不可更改的记录。交易包含嵌入到交易的输入和输出中的被称为脚本的小程序,这些小程序指定如何以及由谁可以访问交易的输出。在比特币平台上,这些脚本是使用基于堆栈的脚本语言编写的。为了将交易写入区块链,必须对其进行“验证”。网络节点(矿工)执行工作以确保每笔交易均有效,而无效交易则被网络拒绝。安装在节点上的软件客户端通过执行其锁定和解锁脚本来对未花费的交易(utxo)执行此验证工作。如果锁定和解锁脚本的执行评估为真(true),则该交易有效,并将该交易写入区块链。因此,为了将交易写入区块链,必须:i)由接收交易的第一个节点验证该交易–如果交易被验证,则该节点将其中继到网络中的其他节点;ii)将该交易添加到矿工建造的新区块中;iii)该交易被挖掘,即被添加到过去交易的公共账本中。尽管区块链技术因使用加密货币实现方式而被广泛了解,但数字企业家已经开始探索使用比特币所基于的加密安全系统以及可以存储在区块链上的数据这两者以实现新系统。如果区块链可以用于不限于加密货币领域的自动化任务和过程,那将是非常有利的。这样的方案将能够利用区块链的好处(例如,事件的永久性、防篡改记录、分布式处理等),同时在其应用中具有更多用途。当前研究的一个领域是使用令牌来表示和转移资源或其控制,或者允许经由区块链访问这些资源。与令牌相关联的资源可以是电子资源或物理资源、虚拟世界资源或现实世界资源。潜在的敏感或秘密资源可以由没有明确含义或值的令牌表示。因此,令牌用作标识符,其允许从区块链引用真实世界的资源。技术实现要素:期望提供一种在最小化计算资源的使用的同时通信、存储、生成和/或从一个用户向另一个用户转移令牌的安全且有效的方法。现在已经设计出这种改进的方案。因此,根据本发明,提供了如所附权利要求书所限定的方法。根据本发明,可以提供一种计算机实现的访问或控制方法,包括以下步骤:(i)向区块链提交寻址到派生公钥的访问区块链交易,该派生公钥至少部分地从秘密值和公钥派生得到;(ii)至少部分地基于秘密值和公钥来生成验证公钥;(iii)将派生公钥与验证公钥进行比较;以及(iv)基于步骤(iv)的比较:(a)将该派生公钥和/或该验证公钥分配或指定为另外的公钥,以验证另外的派生公钥;以及(b)准许对与秘密值和/或派生公钥中的至少一个关联的资源的访问。步骤(i)和(ii)可以由第一方执行。步骤(iii)和(iv)可以由第二方执行。术语“用户”在本文中可以与“当事方(party)”互换使用。术语“当事方”和“用户”旨在包括人类用户、计算资源、客户端、服务器和/或网络节点。该方法可以包括将秘密值从第一用户发送到第二用户的步骤。该方法可以包括生成秘密值的步骤。该秘密值可以是令牌。这可以由第一用户执行。步骤(iii)的比较可以包括至少一种测试或标准的应用。测试或标准可以包括关于派生公钥是否与验证公钥匹配或相同的评估。该测试或标准可以包括基于阈值的评估。这样的方法通过提供每个数据项的来源检查来提高安全性和可靠性,通过减少验证目的所需的存储空间量和存储器量来提高效率,并通过减少通信的数据量来提高安全性并降低发生错误的可能性。该方法还可以包括使用另外的秘密值和另外的公钥重复步骤(ii)至(iv)。这将事件记录在区块链上,从而具有使记录公开且不可变的优点。因此,区块链可以用作用于将公钥从一个用户分享、传输或转移到另一用户的通信工具或机制。第二用户可以从区块链查看公钥。这避免了第一用户与第二用户之间的公钥的直接通信或最小化该直接通信,该直接通信可能引起经由未授权方的拦截。本发明提供了其中用户可能彼此不认识或具有可信赖的关系的方案。这为数据项的转移提供了改进的安全性和改进的通信方案。此外,区块链的公开和不变性可用于验证已发生的事件和第一用户已使用的公钥。秘密值可以是数据项的第一单向函数链的数据项,该方法还可以包括以下步骤:(v)提供第一单向函数链的验证数据项;(vi)将第一单向函数应用于数据项;(vii)将步骤(vi)的输出与验证数据项进行比较;以及(viii)还基于步骤(vii)的结果执行步骤(iv)。将单向函数(例如,加密哈希函数)应用于数据项会产生另一数据项。单向函数向另一数据项的后续应用会产生又一数据项。以这种方式,可以生成数据项链,其中,该数据项链的成员经由单向函数的应用而确定性地彼此链接。这样的链称为数据项的单向函数链。验证数据项是作为单向函数链的成员并且用于验证目的的数据项,下面将详细描述。这提供了在用户之间转移访问与相应的至少一个数据项相关联的至少一个资源的能力的安全且有记录的方法。该方法还可以包括以下步骤:(ix)提供数据项的第二单向函数链的验证数据项;(x)在提供第一链的至少一个验证项和第二链的验证数据项时,向区块链提交可解锁的交换区块链交易,其中,这种解锁使第二链的至少一个数据项与资源相关联。这提供了在用户之间转移访问与相应的至少一个数据项相关联的至少一个资源的能力的安全且有记录的方法。该方法还可以包括以下步骤:解锁交换区块链交易并使用第二链的数据项和第二链的验证数据项重复步骤(ii)至(iv)。这提供了使新用户能够安全地访问至少一个资源的优点。该方法还可以包括以下步骤:向区块链提交返回区块链交易,该返回区块链交易被布置为在经过锁定时间后返回对交换区块链交易的输入的控制。这防止了不诚实的用户无限期地锁定交换区块链交易的输入,从而提供了增加该方法的多功能性的优点。该方法还可以包括以下步骤:存储单向函数链的初始数据项,单向函数链的至少一个数据项是可从该初始数据项计算的。这提供了进一步降低存储需求并相应地提高该方法的效率的优点。步骤(viii)还可以包括删除验证数据项。这提供了进一步降低存储需求并相应地提高该方法的效率的优点。访问区块链交易可以包括标识资源的信息。例如,区块链交易可以包括url或其哈希值,其指向包含关于资源的信息的链下数据储存库。该url可以存储在交易的元数据中。这提供了可以安全地传达关于资源的信息的优点。本发明还提供一种系统,包括:处理器;以及包括可执行指令的存储器,该可执行指令由于被处理器执行而使系统执行本文所述的计算机实现的方法的任何实施例。本发明还提供一种非暂时性计算机可读存储介质,其上存储有可执行指令,该可执行指令由于被计算机系统的处理器执行而使计算机系统至少执行本文所述的计算机实现的方法的实施例。附图说明本发明的这些和其他方面将从本文描述的实施例变得显而易见并参考这些实施例而阐明。现在将仅通过示例的方式并参考附图来描述本发明的实施例,附图中:图1是示出用于生成和激活令牌的步骤的流程图;图2是示出用于交换令牌的控制的步骤的流程图;以及图3是示出用于使用公钥来激活令牌的步骤的流程图。具体实施方式本发明使得能够使用诸如哈希链之类的密码安全的单向函数链来有效地创建和存储令牌。该方法具有性能、存储、可扩展性和可靠性方面的优点。令牌可以安全地出售给其他用户。令牌可以被可证实地链接到公钥,从而提供了一种激活和验证令牌的通用方法,该方法是私密且安全的。令牌是一种数据结构或数据项,其可确保一个或多个不同方之间通过网络的可信任的通信。例如,令牌可以用于表示资源的控制从一方到另一方的转移,和/或用于访问诸如商品或服务之类的受控资源。例如,通过激活令牌,可以准许客户对以下的访问:诸如计算或电子资源、旅馆房间、租车或收费公路等的资源;诸如处方药、消费品或供应链中的物品等的商品;以及诸如网站或计算机应用上的会话等的服务。令牌本身可以用作解锁这些资源的密钥,或者其可以指向包含有关资源的进一步信息(例如,分布式哈希表(dht))的外部状态。令牌通常被表示为256位数字,并且一旦被激活就可具有时间限制(例如,如果令牌表示准许的对安全数据储存库达24小时的访问权限),并且可具有有限的使用次数(例如,一旦激活了令牌并经过了24小时,将撤消对安全数据储存库的访问权限,直到新的不同令牌发出并被激活为止)。我们将想要激活令牌的一方称为“客户端”,将想要验证令牌已被激活的一方称为“服务器”。角色功能爱丽丝客户端激活令牌鲍勃服务器验证令牌已被激活客户端通过将令牌提供给服务器来激活令牌。这可以通过在区块链上公开地揭示令牌来执行。这通过完成将令牌的值记录在服务器可以验证的交易数据或元数据中的交易来实现。注意,该交易的输出不需要被花费。所需的令牌数量可以与需要利用它们的事件数量成线性比例,例如,如果用户需要多次访问安全数据储存库,则可以生成相同数量的令牌。创建多个令牌以供将来使用的已知方法是分别生成每个令牌,例如随机生成每个令牌。然后,所有令牌被客户端和服务器这两者存储在数据库中。然而,在本发明中,客户端和服务器中的每一个一次仅需要存储一个令牌。这是通过实施以下规则来实现的:每个令牌通过经由诸如哈希函数之类的加密安全的单向函数的连续应用而与该令牌之前的令牌相关。例如,令牌ti根据规则与令牌ti-1相关:ti=h(ti-1)(1)其中,h是哈希函数,例如sha-256。为了激活令牌ti-1,将包含ti-1的交易提交给区块链,其中,ti-1是在其之前的令牌ti的哈希问题的解,从而公开地揭示ti-1可证实地链接链中的每个令牌。本发明的优点包括:·客户端和服务器在任何给定时间仅需存储一个令牌,这节省了内存。如果一个令牌是256位数字,并且爱丽丝想要使用n个令牌,则与将每个令牌单独地存储在数据库中相比,使用此方法节省(n-1)*256位的空间。·客户端和服务器之间仅需要传输少量数据,这提高了性能、安全性和可靠性。·由于令牌是经过计算而不是存储的,因此可以防止令牌由于被破坏或数据损坏而意外丢失。·由于每个令牌通过哈希问题的解可证实地链接到先前的令牌,因此可检查的记录对于令牌是可用的。参考图1,现在将描述用于客户端爱丽丝激活服务器鲍勃可以验证的令牌的序列的方法(100)。令牌是由爱丽丝使用哈希链生成的。执行以下步骤:1.爱丽丝和鲍勃同意需要激活令牌以访问的n个资源(105)。2.爱丽丝生成256位数字t0(110)。这可以通过对一些输入数据进行哈希来实现,或者数字t0也可以是随机数。值t0将是她使用的最后的令牌。她对该数字进行了n次哈希以计算tn=hn(t0)其中,tn是验证数据项而不是令牌。她将tn发送给鲍勃(115)。爱丽丝存储t0,并且没有存储其他值。她将使用该值来使用规则(1)计算n个令牌tn-1,...,t1,t0。这创建了满足以下各项的令牌的访问链或哈希链:tn-1=h(tn-2)tn-2=h(tn-3)t1=h(t0).还要注意,tn=h(tn-1)。她使用的第一令牌将是tn-1,而她使用的最后的令牌将是t0。验证数据项tn仅用于验证目的,本身不是令牌。3.鲍勃存储tn(120),并且没有存储其他值。请注意,鲍勃无法计算t0,t1,...,tn-1。4.爱丽丝计算她的第一令牌的值tn-1=hn-1(t0)(125)并通过创建包含该令牌的交易来激活它(130)。令牌可以存储在例如交易元数据中或在锁定或解锁脚本中。令牌甚至可以存储在接收者地址本身的公钥中;下面结合本发明的另一实施例讨论其细节。爱丽丝将交易提交给区块链,该区块链揭示令牌(135)。5.现在,鲍勃可以查看和读取揭示的令牌,并通过检查tn=h(tn-1)来验证爱丽丝已激活了正确的令牌(140)。如果在区块链上揭示的令牌的哈希值与鲍勃已存储的验证项不同(145),则鲍勃拒绝对资源的访问(150)。否则,鲍勃允许访问(155),存储tn-1并删除tn。tn-1成为序列中的下一个验证数据项。6.爱丽丝通过重复步骤4但利用tn-2来激活另一个令牌。鲍勃通过重复步骤5但检查tn-1=h(tn-2)来验证此令牌。迭代地重复该过程(160),直到已经激活并验证了所有n个令牌(165)。参考图2描述用于转移访问资源的能力的方法(200)。假设爱丽丝已经激活了她的令牌中的m个令牌tn-1,...,tn-m,而查理(charlie)想要获得对其余n-m个令牌tn-m-1,...,t0的控制,以满足一个或多个条件。他可以安全地执行此操作(无需信任爱丽丝),如下。爱丽丝和查理同意将爱丽丝剩余的令牌转移给查理(205)。爱丽丝将她的下一个未花费的令牌的哈希发送给查理h(tm-n-1)。查理创建新的令牌s0。然后,他使用以下规则生成一系列n-m个令牌sm-n-1,...,s0(210)sm-n-1=h(sm-n-2)sm-n-2=h(sm-n-3)s1=h(s0).他还计算sm-n=h(sm-n-1),这是验证数据项,用于验证目的。查理将sm-n发送给爱丽丝(215)。查理向区块链提交满足一个或多个条件的交易(220),其中,该交易的解锁脚本具有以下形式:lockingscript=checksigh(pa)andsolveh(tn-m-1)andsolveh(sn-m),其中,pa是爱丽丝的公钥。该地址可以是由爱丽丝控制的支付给公钥哈希(p2pkh)或支付给脚本哈希(p2sh)地址。爱丽丝现在通知服务器鲍勃,她已经将令牌转移给了查理。她通过将她的下一个令牌tm-n-1和验证数据项sm-n通知给鲍勃来做到这一点(225)。鲍勃可以确保只有爱丽丝可以这样做,因为只有爱丽丝知道鲍勃可以验证的tm-n-1的值是哈希到当前验证项的令牌tm-n=h(tm-n-1)的令牌(235)。如果爱丽丝不诚实并且没有向服务器鲍勃提供此信息,则无论如何,一旦她花费了来自查理的交易,则该信息将公开地暴露在区块链上(230),因为交易解锁脚本具有以下形式unlockingscript=[sm-n][tn-m-1][sigpa][pa]如果哈希值与当前验证项相同(240),则鲍勃将令牌的控制转移给查理(245),并将替换tn-m-1替换为sn-m作为下一个验证数据项(250)。否则,鲍勃不将令牌的控制转移给查理(260)。鲍勃现在可以通过检查sm-n=h(sm-n-1)来验证charlie的第一令牌sm-n-1(255)。因此,查理可以向鲍勃证明他已经从爱丽丝接收到了令牌。也可以包括从查理到爱丽丝的交易的时间锁退还,从而查理提交的交易的输入不能被爱丽丝无限期地锁定。上述访问链中的令牌可以可证实地链接到公钥/私钥。请注意,这种将公钥/私钥与令牌链接的方法不需要令牌通过如上所述的单向函数或哈希链来链接,并且如果每个令牌都是在不与先前令牌关联的情况下单独创建的,则该方法有效。但是,使用令牌访问链的优势会转化为链接的密钥。然后,链接的密钥形成访问链,形成可检查的公钥/私钥的序列,这些公钥/私钥通过访问链的单向函数可证实地彼此链接。针对此的一个应用是爱丽丝通过对这些公钥地址进行交易来激活她的令牌。鲍勃可以通过观察公钥地址本身来验证令牌已被激活。与令牌方案有关的自定义交易相反,这有助于使交易的规模尽可能小,并提高了隐私性,因为仅需要标准交易。它也是对于在任何区块链协议或平台上有效的任何公钥/私钥系统的通用方法。参考图3,现在将描述用于客户端爱丽丝激活服务器鲍勃可以验证的令牌的序列的方法(300)。令p0表示爱丽丝的公钥,s0表示她的私钥。在椭圆曲线数字签名算法(ecdsa)系统中,公钥/私钥对通过下式相关:p0=s0·g,其中,g是椭圆曲线的生成点。但是,任何等效的公钥/私钥系统都可以用于执行该方法的步骤。在同意令牌的数量(305),从初始值t0生成令牌(310),并将链的验证数据项tn发送给鲍勃(315)之后,爱丽丝与鲍勃共享她的公钥p0(320)。鲍勃将其存储为验证数据项(325)。在生成了第一令牌tn-1(330)之后,爱丽丝使用它来创建派生的公钥p1=(s0+tn-1)·g=p0+tn-1·g(335)由于只有爱丽丝知道tn-1,所以只有她才能创建该公钥。公钥p1可以可证实地与爱丽丝的访问链中的第一令牌链接。爱丽丝可以使用该公钥作为她可以向其发送交易以激活她的第一令牌的地址。爱丽丝生成寻址到该公钥的区块链交易(340),并将其提交给区块链(345),从而公开地揭示公钥。然后,爱丽丝将tn-1发送给鲍勃(350)。然后,鲍勃可以通过检查爱丽丝已对p1=p0+tn-1·g进行交易来验证令牌tn-1已被激活(355)。如果提交的交易揭示的公钥与鲍勃使用公钥p0和令牌tn-1计算出的公钥相同(360),则鲍伯允许爱丽丝访问资源(370)。否则,鲍勃拒绝访问(365)。该过程可以迭代地重复(375):如果尚未激活最终令牌,则鲍勃将揭示的公钥存储为下一个验证数据项(380),该过程继续;否则,过程结束(385)。该方法创建n个公钥,每个公钥可证实地唯一地链接到访问链中的令牌,如下:p1=p0+tn-1·gp2=p1+tn-2·gpn=pn-1+t0·g.此过程依赖于令牌采用与私钥在同一组中的值,在比特币scep256k1协议的情况下,其为其中,n是椭圆曲线生成器g的阶数。该数字略小于2256。如果令牌不在该组中,则可以使令牌经过哈希函数(例如,sha-256),然后相对于n取模。如果在经过此过程后任何令牌为0,则爱丽丝必须重新开始并选择不同的种子令牌t0。应当注意,上述实施例说明而不是限制本发明,并且本领域技术人员将能够设计许多替代实施例而不脱离由所附权利要求限定的本发明的范围。在权利要求中,括号中的任何附图标记都不应解释为对权利要求的限制。单词“包括”和“包含”等不排除任何权利要求或整个说明书中列出的元素或步骤之外的元素或步骤的存在。在本说明书中,“包括(comprise)”是指“包括(include)或由……组成(consistof)”,“包括(comprising)”是指“包括(including)或由……组成(consistingof)”。元素的单数指代并不排除此类元素的复数指代,反之亦然。本发明可以通过包括几个不同元件的硬件以及通过适当编程的计算机来实现。在列举几个部件的装置权利要求中,这些部件中的几个可以由一个且相同的硬件来实施。在互不相同的从属权利要求中记载某些手段的事实并不表示不能有利地使用这些手段的组合。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1