掌桥专利:专业的专利平台
掌桥专利
首页

包括公钥组合验证的计算机实现的系统和方法

文献发布时间:2023-06-19 11:24:21


包括公钥组合验证的计算机实现的系统和方法

技术领域

本公开总体涉及资源控制和/或访问的转移,更具体地涉及在区块链上使用加密多重签名法来转移该控制和/或访问。本公开特别适合于但不限于比特币区块链或比特币协议的任何变体。

背景技术

在本文中,“区块链”一词涵盖所有形式的基于计算机的电子分布式分类账。这些分类账包括基于共识的区块链和交易链技术、许可和非许可的分类账、共享分类账,及其变型。虽然已提出并开发了其他区块链实施方案,但是区块链技术最广为人知的应用是比特币分类账。虽然为了方便和说明的目的在本文中可能会提及比特币,但是应当注意,本公开不限于与落入本公开范围内的比特币区块链以及替代的区块链实现方式和协议一起使用。“用户”一词在本文中可指人员或基于处理器的资源。

区块链是一种点对点的电子分类账,其实现为基于计算机的去中心化的分布式系统,所述系统由区块组成,而区块又由交易组成。每个交易都是一种数据结构,所述数据结构对所述区块链系统参与者之间的数字资产或资源(例如,加密货币或标记项目)控制权的转移进行编码,并且包括至少一个输入和至少一个输出。每个区块都包含前一个区块的哈希值,因此区块被链接在一起,以创建自所述区块链创建以来写入其中的所有交易的永久性的不可更改的记录。交易包括嵌入到其输入和输出中的小程序,称为脚本,这些脚本指定如何以及由谁访问所述交易的输出。在比特币平台上,这些脚本是使用基于堆栈的脚本语言编写的。

为了将交易写入所述区块链,必须对其进行“验证”。网络节点(矿工)进行工作以确保每个交易均有效,而无效交易则被网络拒绝。安装在所述节点上的软件客户端通过执行其锁定和解锁脚本对未花费的交易支出(UTXO)执行此验证工作。如果所述锁定和解锁脚本的执行评估为TRUE,则所述交易有效,将所述交易写入所述区块链。因此,为了将交易写入所述区块链,所述交易必须:i)由接收所述交易的第一个节点进行验证-如果所述交易通过验证,则此节点将其中继到网络中的其他节点;且ii)添加到由矿工建造的新区块中;且iii)已开采,即添加到过往交易的公共分类账中。

虽然区块链技术最广为人知的是用于加密货币实现,但数字企业家已经开始探索如何利用比特币所基于的加密安全系统和可以存储在区块链上的数据来实现新系统。如果区块链可以用于不限于加密货币领域的自动任务和过程,则会非常有利。这种解决方案将能够利用区块链的优势(例如,永久的、防篡改的事件记录、分布式处理等),同时其应用将更加广泛。

与区块链相关的另一关注领域是通过区块链使用“代币”(或“彩色币”)来表示和转移现实世界的实体。潜在的敏感或保密项目可以由不可辨别意义或价值的代币表示。因此,代币充当允许从区块链引用现实世界项目的标识符。

区块链交易可利用内置的多重签名协议来限制交易,使得N个总签名中的M个需呈现为赎回脚本的输入,以赎回交易。例如,可使用五个多重签名法中的三个锁定交易,使得仅可通过使用三个私钥来解锁交易,该三个私钥对应于该五个多重签名中的任意三个。

对于M/N(M of N)法,参照比特币区块链协议变体中使用的命令,操作码OP_MULTISIG采用N个公钥和M个签名作为输入。在此示例中,N个公钥储存于自身赎回脚本中。操作码从第一个签名开始,搜索N个公钥测试,以查看签名是否由该公钥所创建。其丢弃与签名不匹配的每一密钥。为此,签名的顺序必须与提供公钥的顺序相匹配。多重签名赎回脚本的一个示例如下:

解锁时,需要呈现以下输入:

根据上文可以看出,赎回脚本的大小与所需签名的数量M和参与者数量N呈线性变化关系。因此,随着M和N增加,赎回交易中赎回交易所需的签名数量增加,公钥的数量也在增加。因此,传播后续赎回交易所需的网络速度以及存储后续赎回交易所需的空间都会增加。进一步地,合并赎回交易的解锁脚本与赎回脚本时需要的操作数量在N和M中呈线性增长。

因此,需要提供一种用于减少与区块链交易(例如利用多重签名协议的区块链交易且尤其需要存储大量公钥的区块链交易)的传输、处理和存储相关的操作与存储要求的解决方案。

发明内容

现在已设计出这种改进的解决方案。因此,根据本公开,提供了所附权利要求书限定的方法。

根据本公开,提供了一种计算机实现的方法。其可描述为一种安全方法。

该方法包括以下步骤:提供包含公钥组合验证函数的区块链交易,所述区块链交易配置成可赎回,以通过向所述区块链交易提供输入来允许访问资源或转移对资源的控制权,所述输入包括:多个公钥;至少一个梯度值,其与所述多个公钥中的相应两个相关;和,群公钥,其源自所述多个公钥和的组合所述至少一个梯度值,其中所述区块链交易配置成将所述公钥验证函数应用于所述输入,以在所述交易成功赎回后验证所述群公钥源自所述多个公钥的组合。

该方法提供了一种以安全、可靠且可公开验证的方式来转移控制权或访问由多个私钥表示和/或控制的资源的方法。

该方法还包括以下步骤:从已知值中派生出派生公钥;和,将所述派生公钥设置为次级公钥的序列,其中所述次级公钥序列为所述多个公钥的子集。

这使得用户能够将该方法中的已知要求转换成该方法拟使用的公钥,从而提供改进该方法的多功能性的优势。提供的进一步优势在于,可提前计算该序列的系数,从而提高该方法可执行的速度。

该方法可包括以下步骤:在将所述派生公钥设置为次级公钥的序列之前将限制函数应用于所述已知值,从而限制所述子集的大小(size)。

这提供了进一步提高该方法的效率的优势。

该方法可包括以下步骤:至少部分地基于所述多个公钥中的另一个公钥和所述派生公钥来计算所述多个公钥中的一个公钥。

这一点的优势在于,鉴于所述多个公钥中的一个或多个可源自一个储存的公钥,因此移除储存给定多个公钥的要求。

区块链交易可进一步包括:群签名,其对应所述群公钥;默克尔根;和默克尔路径验证函数,其中通过向所述区块链交易提供下述内容而将所述区块链交易配置成可赎回:默克尔路径,其与所述多个公钥相关;和群私钥,其对应于所述群签名。

此方法需要较少的处理步骤来实现给定的安全级别,从而提供在保证安全的同时提高该方法的效率的优势。

本公开还提供了一种系统,包括处理器;存储器,包括可执行指令,其中,所述处理器执行所述可执行指令时,使得所述系统执行本文所述的计算机实现的方法的任何实施例。

本公开还提供了一种非暂时性计算机可读存储介质,其上存储有可执行指令,计算机系统的处理器执行所述可执行指令时,使得所述计算机系统至少执行本文所述的计算机实现的方法的实施例。

附图说明

本公开的这些方面和其他方面将从本文所述的实施例中变得显而易见,并参考本文所述的实施例进行阐述。现将仅通过举例的方式并参考附图对本公开的实施例进行说明,其中:

图1是示出用于未压缩公钥的数据编码的表格;

图2是示出执行本公开实施例的堆栈演变表格;

图3是示出执行本公开实施例的堆栈演变表格;

图4是示出用于不同多重签名法的M、N和脚本大小之间的关系表格;

图5示意性地示出了体现本公开的两个交易;

图6是示出体现本公开的一系列步骤的流程图;

图7是示出可实现各种实施例的计算环境的示意图。

具体实施方式

本发明公开了验证比特币脚本内两个椭圆曲线点相加的方法。给定两点P

这些方法可针对多个参与者用于签名法,诸如多重签名法。方法中可使用椭圆曲线数字签名算法(ECDSA)协议。

素数阶p的椭圆曲线由以下方程式定义:

y

根据曲线的群结构,可将曲线P

点P

x

y

其中,当P

而当P

在其他的当中,比特币协议使用secp256k1约定,其中椭圆曲线参数由a=0和b=7给定。

在区块链交易的脚本中应用扩展的欧几里得算法并不实用,因为其需要计算模乘逆元,且因此无法执行脚本中上述方程式所定义的椭圆曲线点相加。

在下文中公开的方法用于验证两点P

为实现此验证,需要解P

下文详述的新公钥验证函数

函数的执行包括以下步骤:

1.通过检查下述内容验证λ的值:

a)当P

λ(x

b)当P

2.通过检查P

x

y

通过应用公钥验证函数的逐次迭代,可以验证任意数量n的公钥的总和,唯一的限制在于正使用的区块链协议的要求,诸如比特币脚本中的操作码数量(201)或字节数大小(10000)。

上述公钥验证函数用于三个公钥,以验证两个公钥合并以产生第三个公钥。这可以进行扩展,以验证三个公钥P=P

其中P′=P

一般而言,即给定合并以产生公钥P的n个公钥P

点相加函数PointAdd可采用下文公开的方法,以比特币脚本语言进行构建。

图1中示出了用于未压缩公钥的数据编码。此处,数据虚拟值取自O′Reilly Media(2017)第二版A.Antonopoulos的著名书籍《精通比特币》。

给定未压缩的公钥P,可以使用运算符OP_SPLIT在比特币脚本中直接提取x和y坐标,如下所示:

OP_1OP_SPLIT OP_NIP 32OP_SPLIT=

使用此运算,可以从输入P

应注意的是,可以复制且重新排列上述右侧的项,以使用基本运算产生任何所需组合。

参见图2,构造PointAdd函数的第一步是验证输入值λ。在P

λ(x

OP_SUB OP_MUL

OP_MOD OP_3OP_ROLL OP_3OP_SUB

OP_MOD OP_EQUAL

当且仅当满足方程式λ(x

针对P

参见图3,构造PointAdd函数的第二步是验证P

x

y

由于λ已被验证,因此其可在以下计算中使用。为了检查以上两个方程式中的第一个是否成立,将以下内容呈现为输入:

且利用以下运算进行操作:

OP_3OP_ROLL OP_DUP OP_MUL OP_SWAP OP_SUB OP_SWAP

OP_MOD OP_EQUAL。

此处,p是椭圆曲线基域的阶数。

图3的表格示出了执行上述运算时的堆栈演变。

可以通过将现有公钥P

S可以是自原始公钥P

式P

例如,双加法可用于将点相加分解为级数

P

其中s

S=s

通过使生成元G,2G,4G,...,2

因此,可利用255+1=256点相加的最大值来验证P

除了双加法外,可使用其他点相加法算法,诸如滑动窗口或蒙哥马利阶梯法。

为使利用计算密钥的点相加计算更易于管理,可将S限制在较小范围内。该范围可以是特定于应用程序的。

S可能需要在

例如,二手车拍卖的最高出价可能为16,000美元。以数字16000形式存在的t美元出价可以添加至公钥P

P=P1+t·G,

其可以通过脚本中的14点相加来进行验证。

为了解如何将其用于出价过程,假设当前某辆汽车的最高出价为9,000美元,该出价由特定UTXO追踪。此UXTO具有赎回脚本:

需要将以下内容作为输入以用于解锁:

然后,上文描述的点相加验证法还可以用于验证P=P

如果提供的新出价t>9000,则UTXO可以解锁。新出价者必须将其公钥P

再如,考虑搜索nonce(一个数字)的比特币矿工,当与区块链中的一区块(诸如当前区块)进行哈希运算时,该nonce产生的值低于某阈值。矿工可创建利用其公钥加上nonce的前9个数位P=P

上文描述的脚本点相加验证过程可用于实现使用M/N(M-of-N)多重签名法签署交易的有效方式,从而实现一种用于使用区块链转移对资源的控制权或访问资源的更高效且安全的方法。

对于M/N法,比特币操作码OP_MULTISIG采用N个公钥和M个签名作为输入。操作码从第一个签名开始,搜索N个公钥测试,以查看签名是否由该公钥所创建。其丢弃与签名不匹配的每一密钥。为此,签名的顺序必须与提供公钥的顺序相匹配。

多重签名赎回脚本如下所示:

OP_CHECKMULTISIG

需要将以下内容作为输入以用于解锁:

根据上文可以看出,脚本大小与所需签名的数量M和参与者数量N呈线性变化关系。

参见图4至图6,创建了默克尔树,其中叶子对应于公钥的每个M/N组合,该默克尔树共含有N个选择M片叶子。接着,创建赎回脚本,其包含默克尔根,且需要对包含默克尔路径的输入的呈现解锁和签名验证方法。

下文描述用于转移资源的控制权或访问资源的两种方法。每种方法都有其自身优势和劣势。

1.个别签名法。此方法使用每一签名来分别签署交易,且具有与多重签名相同的功能性,但脚本大小较小。

2.群签名法。此方法在签名群组中为M个参与者提供单一签名。其可以是参与者的每个集合M预先同意的任何公钥,诸如源自共享密钥的密钥,或通过对群组的公钥进行求和而形成的密钥。在后一种情况下,用于验证密钥为个别成员密钥之和的附加选项使用先前所描述的验证方法。

每种方法具有不同的缩放属性,具体如图4所示的表格概括所示。

考虑4/5法。在这种情况下,默克尔树将有5选

6OP_PICK OP_SHA256(OP_SWAP OP_IF OP_SWAP OP_ENDIF OP_CAT OP_SHA256)*3OP_EQUALVERIFY

其将对于下列形式的默克尔路径返回TRUE

<0,1><0,1><0,1>

其中,当兄弟节点为左侧节点时存在0,且兄弟节点为右侧节点时存在1。

默克尔路径以及验证默克尔路径的操作以签名组N选择M的选择数量呈对数增长。

在个别签名法中,群组中的每个成员都提供交易的个人签名。该方法的功能性与标准多重签名法相同,但是减小了脚本大小,从而提高了执行脚本的效率。该脚本采用以下形式:

*M

其需要对以下输入的呈现解锁:

赎回者必须提供具有其对应公钥的M个签名及P的默克尔路径作为输入。

在此方法中,P

此方法的关键特征是每个成员签署特定的交易。它们不会相互泄露有关其私钥的任何信息,且因此不会损害其私钥的安全性。

参见图4,可见与传统的多重签名法相比,此方法具有有利的标度特性。当多重签名机制位于低M和大N(例如5-of-1000)时,这一点最为明显。

在群签名法中,签署交易的M个成员的群组仅需要一个签名。该脚本采用以下形式:

其需要对以下输入的呈现解锁:

此处,P是用于M个参与者的集合的群公钥。

此方法的优点在于,解锁脚本的大小极小,因为其仅需要一个签名。脚本公钥相加数与参与者的数量M成线性比例,因此在处理能力方面,此方法提供与检查个别签名更低成本的运算。

此方法要求参与者彼此共享其私钥。这意味着此方法中使用的密钥对为一次性使用密钥对,有利于提高此方法的安全性。另一个功能是,可对群私钥进行访问的参与者中的任何成员都可以签署其希望进行的任何交易。这提高了方法的通用性。在某些应用情况下,尤其需要此等功能。例如,一群董事希望激活已在区块链上记录为UTXO的既定最终条款。这可以通过使用此方法解锁特定的UTXO来进行激活。

在上述方法中,外部观察者将完全未察觉这实际上是群签名法。为公布签名和对应的公钥与一组用户相关的事实,可以对方法进行修改,以要求验证群公钥为脚本中个别参与者的公钥之和P=P

在此调整方法中,赎回脚本可采用以下形式:

其需要对以下输入的呈现解锁:

其中

图5示出了一对交易Tx1和Tx2。Tx1定义了具有赎回脚本的UTXO,该脚本包含验证默克尔路径函数、针对特定M/N要求定制的PointAddMulti函数以及CheckSig函数。Tx2定义了随后提交给区块链的交易,该交易旨在通过在输入中呈现群签名、与群签名相关的群公钥、PointAddMulti函数所需的梯度、用户群组的公钥、以及相关的默克尔路径,来赎回Tx1的UTXO。

图6示出了流程图,该流程图示出了根据上文描述的个别签名法和群签名法执行该方法采取的步骤。在图6中,Tx1和Tx2可指根据任一方法使用的一对交易。

现在转到图7,提供了可用于实施本公开的至少一个实施例的计算设备2600的说明性简化框图。在各种实施例中,所述计算设备2600可用于实现以上示出和说明的任何系统。例如,所述计算设备2600可配置为用作数据服务器、网络服务器、便携式计算设备、个人计算机或任何电子计算设备。如图7所示,计算设备2600可包括具有一级或多级高速缓存的一个或多个处理器以及存储器控制器(统称为2602),所述存储器控制器可被配置为与包括主存储器2608和永久存储器2610的存储子系统2606通信。如图所示,主存储器2608可以包括动态随机存取存储器(DRAM)2618和只读存储器(ROM)2620。存储子系统2606和高速缓存存储器2602可用于存储信息,诸如与本公开中所描述的交易和区块相关联的细节。处理器2602可用于提供本公开中描述的任何实施例的步骤或功能。

处理器2602还可以与一个或多个用户界面输入设备2612、一个或多个用户界面输出设备2614和网络接口子系统2616通信。

总线子系统2604可以提供用于使计算设备2600的各个组件和子系统能够按预期彼此通信的机制。虽然总线子系统2604示意性地示出为单个总线,但是总线子系统的替代实施例可以利用多个总线。

网络接口子系统2616可以向其他计算设备和网络提供接口。网络接口子系统2616可以作为从计算设备2600接收数据和向其他系统传输数据的接口。例如,网络接口子系统2616可以使数据技术人员能够将设备连接到网络,使得数据技术人员能够在远程位置(例如数据中心)向设备发送数据并从设备接收数据。

用户界面输入设备2612可以包括一个或多个用户输入设备,例如键盘;指点设备,如集成鼠标、轨迹球、触摸板或图形平板电脑;扫描仪;条形码扫描仪;包含在显示器中的触摸屏;音频输入设备,如语音识别系统、麦克风;以及其他类型的输入设备。一般而言,术语“输入设备”的使用旨在包括用于向计算设备2600输入信息的所有可能类型的设备和机制。

一个或多个用户界面输出设备2614可包括显示子系统、打印机、或非视觉显示器(例如音频输出设备等)。显示子系统可以是阴极射线管(CRT)、平板设备(例如液晶显示器(LCD))、发光二极管(LED)显示器或投影或其他显示设备。通常,术语“输出设备”的使用旨在包括用于从计算设备2600输出信息的所有可能类型的设备和机制。例如,可以使用一个或多个用户界面输出设备2614来呈现用户界面,以便于用户与执行所描述的过程和其中变型的应用程序进行交互(当这种交互可能合适时)。

存储子系统2606可以提供计算机可读存储介质,该计算机可读存储介质用于存储可提供本公开的至少一个实施例的功能的基本编程和数据构造。当由一个或多个处理器执行时,应用程序(程序、代码模块、指令)可以提供本公开的一个或多个实施例的功能,并且可以存储在存储子系统2606中。这些应用程序模块或指令可以由一个或多个处理器2602执行。存储子系统2606可另外提供用于存储根据本公开所使用的数据的存储库。例如,主存储器2608和高速缓存存储器2602可以为程序和数据提供易失性存储。永久存储器2610可以提供用于程序和数据的永久(非易失性)存储,且可包括闪存、一个或多个固态驱动器、一个或多个磁硬盘驱动器、一个或多个具有关联可移动介质的软盘驱动器、一个或多个具有关联可移动介质的光驱动器(例如CD-ROM或DVD或蓝光)以及其他类似的存储介质。此程序和数据可以包括用于执行如本公开中所描述的一个或多个实施例的步骤的程序,以及与如本公开中所描述的交易和区块相关联的数据。

计算设备2600可以是各种类型的,包括便携式计算机设备、平板电脑、工作站或下文描述的任何其他设备。另外,计算设备2600可包括可通过一个或多个端口(例如,USB、耳机插孔、闪电连接器等)连接至计算设备2600的另一设备。可以连接到计算设备2600的设备可以包括被配置为接受光纤连接器的多个端口。因此,该设备可以被配置为将光信号转换成电信号,所述电信号可经由将该设备连接至计算设备2600进行处理的端口传输。由于计算机和网络的不断变化的性质,图7所示的计算设备2600的描述仅用作说明设备的优选实施例的特定示例。可能存在比图7所示系统的组件更多或更少的许多其他配置。

需要说明的是,上述实施例说明而不是限制本发明,本领域技术人员能够在不脱离所附权利要求定义的本公开范围的前提下设计出许多替代实施例。在权利要求书中,括号中的任何附图标记都不应解释为对权利要求的限制。词语“包括”等不排除任一项权利要求或说明书中整体列出的元件或步骤之外的元件或步骤的存在。在本说明书中,“包括”是指“包括或由......组成”。元件的单数形式并不排除此类元件的复数形式,反之亦然。本公开可以通过包括几个不同元件的硬件以及通过适当编程的计算机来实现。在列举几个装置的设备权利要求中,这些装置中的几个装置可以由同一硬件来体现。在相互不同的从属权利要求中记载某些措施这仅有的事实并不表示这些措施的组合不能被有利地使用。

相关技术
  • 包括公钥组合验证的计算机实现的系统和方法
  • 一种多变量公钥签名/验证系统及签名/验证方法
技术分类

06120112919013