CN112970227A - 包括公钥组合验证的计算机实现的系统和方法 - Google Patents
包括公钥组合验证的计算机实现的系统和方法 Download PDFInfo
- Publication number
- CN112970227A CN112970227A CN201980068650.0A CN201980068650A CN112970227A CN 112970227 A CN112970227 A CN 112970227A CN 201980068650 A CN201980068650 A CN 201980068650A CN 112970227 A CN112970227 A CN 112970227A
- Authority
- CN
- China
- Prior art keywords
- public key
- public keys
- public
- combination
- transaction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3252—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/083—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
- H04L9/0833—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3255—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using group based signatures, e.g. ring or threshold signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种计算机实现的方法。所述方法包括提供包含公钥组合验证函数的区块链交易。所述区块链交易配置成可赎回,以通过向所述区块链交易提供输入来允许访问资源或转移对资源的控制权,所述输入包括:多个公钥;梯度值(λ),其与所述多个公钥中的两个相关;和,群公钥,其源自所述公钥的组合和所述梯度值(λ)。所述区块链交易配置成将所述公钥验证函数应用于所述输入,以在所述交易成功赎回后验证所述群公钥源自所述多个公钥的组合。
Description
技术领域
本公开总体涉及资源控制和/或访问的转移,更具体地涉及在区块链上使用加密多重签名法来转移该控制和/或访问。本公开特别适合于但不限于比特币区块链或比特币协议的任何变体。
背景技术
在本文中,“区块链”一词涵盖所有形式的基于计算机的电子分布式分类账。这些分类账包括基于共识的区块链和交易链技术、许可和非许可的分类账、共享分类账,及其变型。虽然已提出并开发了其他区块链实施方案,但是区块链技术最广为人知的应用是比特币分类账。虽然为了方便和说明的目的在本文中可能会提及比特币,但是应当注意,本公开不限于与落入本公开范围内的比特币区块链以及替代的区块链实现方式和协议一起使用。“用户”一词在本文中可指人员或基于处理器的资源。
区块链是一种点对点的电子分类账,其实现为基于计算机的去中心化的分布式系统,所述系统由区块组成,而区块又由交易组成。每个交易都是一种数据结构,所述数据结构对所述区块链系统参与者之间的数字资产或资源(例如,加密货币或标记项目)控制权的转移进行编码,并且包括至少一个输入和至少一个输出。每个区块都包含前一个区块的哈希值,因此区块被链接在一起,以创建自所述区块链创建以来写入其中的所有交易的永久性的不可更改的记录。交易包括嵌入到其输入和输出中的小程序,称为脚本,这些脚本指定如何以及由谁访问所述交易的输出。在比特币平台上,这些脚本是使用基于堆栈的脚本语言编写的。
为了将交易写入所述区块链,必须对其进行“验证”。网络节点(矿工)进行工作以确保每个交易均有效,而无效交易则被网络拒绝。安装在所述节点上的软件客户端通过执行其锁定和解锁脚本对未花费的交易支出(UTXO)执行此验证工作。如果所述锁定和解锁脚本的执行评估为TRUE,则所述交易有效,将所述交易写入所述区块链。因此,为了将交易写入所述区块链,所述交易必须:i)由接收所述交易的第一个节点进行验证-如果所述交易通过验证,则此节点将其中继到网络中的其他节点;且ii)添加到由矿工建造的新区块中;且iii)已开采,即添加到过往交易的公共分类账中。
虽然区块链技术最广为人知的是用于加密货币实现,但数字企业家已经开始探索如何利用比特币所基于的加密安全系统和可以存储在区块链上的数据来实现新系统。如果区块链可以用于不限于加密货币领域的自动任务和过程,则会非常有利。这种解决方案将能够利用区块链的优势(例如,永久的、防篡改的事件记录、分布式处理等),同时其应用将更加广泛。
与区块链相关的另一关注领域是通过区块链使用“代币”(或“彩色币”)来表示和转移现实世界的实体。潜在的敏感或保密项目可以由不可辨别意义或价值的代币表示。因此,代币充当允许从区块链引用现实世界项目的标识符。
区块链交易可利用内置的多重签名协议来限制交易,使得N个总签名中的M个需呈现为赎回脚本的输入,以赎回交易。例如,可使用五个多重签名法中的三个锁定交易,使得仅可通过使用三个私钥来解锁交易,该三个私钥对应于该五个多重签名中的任意三个。
对于M/N(M of N)法,参照比特币区块链协议变体中使用的命令,操作码OP_MULTISIG采用N个公钥和M个签名作为输入。在此示例中,N个公钥储存于自身赎回脚本中。操作码从第一个签名开始,搜索N个公钥测试,以查看签名是否由该公钥所创建。其丢弃与签名不匹配的每一密钥。为此,签名的顺序必须与提供公钥的顺序相匹配。多重签名赎回脚本的一个示例如下:
Redeem script |
<PubKey 1><PubKey 2>…<PubKey N>OP_CHECKMULTISIG |
解锁时,需要呈现以下输入:
Input |
<sig 1><Sig 2>…<Sig M> |
根据上文可以看出,赎回脚本的大小与所需签名的数量M和参与者数量N呈线性变化关系。因此,随着M和N增加,赎回交易中赎回交易所需的签名数量增加,公钥的数量也在增加。因此,传播后续赎回交易所需的网络速度以及存储后续赎回交易所需的空间都会增加。进一步地,合并赎回交易的解锁脚本与赎回脚本时需要的操作数量在N和M中呈线性增长。
因此,需要提供一种用于减少与区块链交易(例如利用多重签名协议的区块链交易且尤其需要存储大量公钥的区块链交易)的传输、处理和存储相关的操作与存储要求的解决方案。
发明内容
现在已设计出这种改进的解决方案。因此,根据本公开,提供了所附权利要求书限定的方法。
根据本公开,提供了一种计算机实现的方法。其可描述为一种安全方法。
该方法包括以下步骤:提供包含公钥组合验证函数的区块链交易,所述区块链交易配置成可赎回,以通过向所述区块链交易提供输入来允许访问资源或转移对资源的控制权,所述输入包括:多个公钥;至少一个梯度值,其与所述多个公钥中的相应两个相关;和,群公钥,其源自所述多个公钥和的组合所述至少一个梯度值,其中所述区块链交易配置成将所述公钥验证函数应用于所述输入,以在所述交易成功赎回后验证所述群公钥源自所述多个公钥的组合。
该方法提供了一种以安全、可靠且可公开验证的方式来转移控制权或访问由多个私钥表示和/或控制的资源的方法。
该方法还包括以下步骤:从已知值中派生出派生公钥;和,将所述派生公钥设置为次级公钥的序列,其中所述次级公钥序列为所述多个公钥的子集。
这使得用户能够将该方法中的已知要求转换成该方法拟使用的公钥,从而提供改进该方法的多功能性的优势。提供的进一步优势在于,可提前计算该序列的系数,从而提高该方法可执行的速度。
该方法可包括以下步骤:在将所述派生公钥设置为次级公钥的序列之前将限制函数应用于所述已知值,从而限制所述子集的大小(size)。
这提供了进一步提高该方法的效率的优势。
该方法可包括以下步骤:至少部分地基于所述多个公钥中的另一个公钥和所述派生公钥来计算所述多个公钥中的一个公钥。
这一点的优势在于,鉴于所述多个公钥中的一个或多个可源自一个储存的公钥,因此移除储存给定多个公钥的要求。
区块链交易可进一步包括:群签名,其对应所述群公钥;默克尔根;和默克尔路径验证函数,其中通过向所述区块链交易提供下述内容而将所述区块链交易配置成可赎回:默克尔路径,其与所述多个公钥相关;和群私钥,其对应于所述群签名。
此方法需要较少的处理步骤来实现给定的安全级别,从而提供在保证安全的同时提高该方法的效率的优势。
本公开还提供了一种系统,包括处理器;存储器,包括可执行指令,其中,所述处理器执行所述可执行指令时,使得所述系统执行本文所述的计算机实现的方法的任何实施例。
本公开还提供了一种非暂时性计算机可读存储介质,其上存储有可执行指令,计算机系统的处理器执行所述可执行指令时,使得所述计算机系统至少执行本文所述的计算机实现的方法的实施例。
附图说明
本公开的这些方面和其他方面将从本文所述的实施例中变得显而易见,并参考本文所述的实施例进行阐述。现将仅通过举例的方式并参考附图对本公开的实施例进行说明,其中:
图1是示出用于未压缩公钥的数据编码的表格;
图2是示出执行本公开实施例的堆栈演变表格;
图3是示出执行本公开实施例的堆栈演变表格;
图4是示出用于不同多重签名法的M、N和脚本大小之间的关系表格;
图5示意性地示出了体现本公开的两个交易;
图6是示出体现本公开的一系列步骤的流程图;
图7是示出可实现各种实施例的计算环境的示意图。
具体实施方式
本发明公开了验证比特币脚本内两个椭圆曲线点相加的方法。给定两点P1,P2和一候选解P3,该公开方法在脚本中验证P3=P1+P2。本发明公开了另一种方法,其将前一种方法扩展至一系列点相加。
这些方法可针对多个参与者用于签名法,诸如多重签名法。方法中可使用椭圆曲线数字签名算法(ECDSA)协议。
素数阶p的椭圆曲线由以下方程式定义:
y2=x3+ax+b。
根据曲线的群结构,可将曲线P1=(x1,y1)和P2=(x2,y2)上的两点相加,以得到第三点P3=(x3,y3),即P3=P1+P2。
点P3定义为椭圆曲线上的点,该点穿过连接P1和P2且随后围绕x轴反射的线。用于点相加的公式为:
x3=λ2-x1-x2 mod p
y3=λ(x1-x3)-y1 mod p,
其中,当P1≠P2时,梯度λ由下述公式给定:
而当P1=P2时,梯度λ由下述公式给定:
在其他的当中,比特币协议使用secp256k1约定,其中椭圆曲线参数由a=0和b=7给定。
在区块链交易的脚本中应用扩展的欧几里得算法并不实用,因为其需要计算模乘逆元,且因此无法执行脚本中上述方程式所定义的椭圆曲线点相加。
在下文中公开的方法用于验证两点P1和P2相加的解。解P3=P1+P2本身的计算在脚本外进行,而答案在脚本中验证。这减少了将另外施加于区块链节点上的计算要求。
为实现此验证,需要解P3、以及P1与P2之间的线的梯度值(表示为λ)。λ的计算在脚本外进行,而λ的验证在脚本内进行。
下文详述的新公钥验证函数<Point Add P1,P2,λ,P3>配置成:当其中呈现的λ为P1与P2之间的线的梯度时,且当P3=P1+P2时,返回TRUE。这两个验证直接在脚本中实现,且一旦交易成功赎回便发布。
函数的执行包括以下步骤:
1.通过检查下述内容验证λ的值:
a)当P1≠P2时,
λ(x2-x1)mod p=y2-y1 mod p
b)当P1=P2时,
2.通过检查P3=(x3,y3)的坐标满足以下方程式来验证P3的值
x3=λ2-x1-x2 mod p且
y3=λ(x1-x3)-y1 mod p。
通过应用公钥验证函数的逐次迭代,可以验证任意数量n的公钥的总和,唯一的限制在于正使用的区块链协议的要求,诸如比特币脚本中的操作码数量(201)或字节数大小(10000)。
上述公钥验证函数用于三个公钥,以验证两个公钥合并以产生第三个公钥。这可以进行扩展,以验证三个公钥P=P1+P2+P3的相加及超出三个公钥的相加。表示为PointAddMulti的扩展函数定义如下,其中验证过程验证P1、P2和P3合并以产生P:
<Point Add Multi P1,P2,P3,λ′,λ,P>:=
<Point Add P1,P2,λ′,P′><Point Add P′,P3,λ,P>
其中P′=P1+P2,值λ′为P1与P2之间的梯度,且λ值为P′与P3之间的梯度。
一般而言,即给定合并以产生公钥P的n个公钥Pi,可将PointAddMulti定义如下:
<PointAddMulti Pi,λi,P>:=
<PointAdd P1,P2,λ1,P′1><PointAddP′1,P3,λ2,P′2>…<PointAddP′n-2,Pn,λn-1,P>
点相加函数PointAdd可采用下文公开的方法,以比特币脚本语言进行构建。
图1中示出了用于未压缩公钥的数据编码。此处,数据虚拟值取自O′Reilly Media(2017)第二版A.Antonopoulos的著名书籍《精通比特币》。
给定未压缩的公钥P,可以使用运算符OP_SPLIT在比特币脚本中直接提取x和y坐标,如下所示:
<P>OP_1OP_SPLIT OP_NIP 32OP_SPLIT=<x><y>。
使用此运算,可以从输入P3,λ,P1,P2中提取x和y坐标:
<P3><λ><P1><P2>→<x3><y3><λ><x1><y1><x2><y2>
应注意的是,可以复制且重新排列上述右侧的项,以使用基本运算产生任何所需组合。
参见图2,构造PointAdd函数的第一步是验证输入值λ。在P1≠P2的情况下,检查以下方程式是否成立:
λ(x2-x1)mod p=y2-y1 mod p。这通过将<y2><y1><λ><x2><x1>作为输入并利用以下运算对该输入进行操作来实现:
OP_SUB OP_MUL<p>OP_MOD OP_3OP_ROLL OP_3OP_SUB<p>OP_MOD OP_EQUAL
当且仅当满足方程式λ(x2-x1)mod p=y2-y1 mod p时,其将返回TRUE。图2的表格示出了执行上述运算时的堆栈演变。
针对P1=P2的情况,可以构造与上述类似的一组运算,以检查以下方程式是否成立:
参见图3,构造PointAdd函数的第二步是验证P3的输入值是P1+P2之和。为此,检查以下每个方程式是否成立:
x3=λ2-x1-x2 mod p,且
y3=λ(x1-x3)-y1 mod p,
由于λ已被验证,因此其可在以下计算中使用。为了检查以上两个方程式中的第一个是否成立,将以下内容呈现为输入:
<x3><λ><x1><x2>
且利用以下运算进行操作:
OP_3OP_ROLL OP_DUP OP_MUL OP_SWAP OP_SUB OP_SWAP<p>OP_MOD OP_EQUAL。
此处,p是椭圆曲线基域的阶数。
图3的表格示出了执行上述运算时的堆栈演变。
S可以是自原始公钥P1创建派生公钥P3的确定性密钥。
式P3=P1+S·G的点相加验证可通过验证涉及生成点G的固定倍数的点相加序列来实现。
例如,双加法可用于将点相加分解为级数
P3=P1+s0G+s12G+s24G+s38G+…+s2562256G
其中s0,...,s256∈{0,1}是如下S的二进制展开式中的系数:
S=s0+s12+s24+s38+…+s2562256。
通过使生成元G,2G,4G,...,2256G加倍而获得的点属于公知常识,可以预先计算。这意味着可能存在255个单独点相加,其需要验证以获得最终结果。
因此,可利用255+1=256点相加的最大值来验证P3=P1+S·G。
除了双加法外,可使用其他点相加法算法,诸如滑动窗口或蒙哥马利阶梯法。
为使利用计算密钥的点相加计算更易于管理,可将S限制在较小范围内。该范围可以是特定于应用程序的。
S可能需要在内的32位范围中取值,该表示43亿个值范围。然而,仅需要31个个别点相加来验证最终结果。例如,在比特币中,这可以通过以完整256位范围中的S开始,然后应用模数运算OP_MOD将该范围限制为32位来实现。随机公钥Px可用于通过Px+S·G的求和来使范围模糊。
例如,二手车拍卖的最高出价可能为16,000美元。以数字16000形式存在的t美元出价可以添加至公钥P1中,以得到附加密钥,
P=P1+t·G,
其可以通过脚本中的14点相加来进行验证。
为了解如何将其用于出价过程,假设当前某辆汽车的最高出价为9,000美元,该出价由特定UTXO追踪。此UXTO具有赎回脚本:
需要将以下内容作为输入以用于解锁:
<Sig P><P><Verification data><P<sub>1</sub>><t> |
然后,上文描述的点相加验证法还可以用于验证P=P1+t·G。请注意,这涉及14个个别点相加的验证。用于此等验证的数据在上述输入中标记为“验证数据”。
如果提供的新出价t>9000,则UTXO可以解锁。新出价者必须将其公钥P1及解P提供至和P=P1+t·G。其利用附加密钥P签署交易的事实使其始终链接至特定t美元出价。
再如,考虑搜索nonce(一个数字)的比特币矿工,当与区块链中的一区块(诸如当前区块)进行哈希运算时,该nonce产生的值低于某阈值。矿工可创建利用其公钥加上nonce的前9个数位P=P1+(nonce的前9位)·G锁定的交易。对于一个数字的前9个数位,存在十亿个组合。因此,可使用30个点相加来验证公钥P。这使密钥P与矿工的公钥和已开采区块的nonce始终相链接。
上文描述的脚本点相加验证过程可用于实现使用M/N(M-of-N)多重签名法签署交易的有效方式,从而实现一种用于使用区块链转移对资源的控制权或访问资源的更高效且安全的方法。
对于M/N法,比特币操作码OP_MULTISIG采用N个公钥和M个签名作为输入。操作码从第一个签名开始,搜索N个公钥测试,以查看签名是否由该公钥所创建。其丢弃与签名不匹配的每一密钥。为此,签名的顺序必须与提供公钥的顺序相匹配。
多重签名赎回脚本如下所示:
<PubKey 1><PubKey 2>…<PubKey N>OP_CHECKMULTISIG
需要将以下内容作为输入以用于解锁:
<sig 1><Sig 2>…<Sig M>。
根据上文可以看出,脚本大小与所需签名的数量M和参与者数量N呈线性变化关系。
参见图4至图6,创建了默克尔树,其中叶子对应于公钥的每个M/N组合,该默克尔树共含有N个选择M片叶子。接着,创建赎回脚本,其包含默克尔根,且需要对包含默克尔路径的输入的呈现解锁和签名验证方法。
下文描述用于转移资源的控制权或访问资源的两种方法。每种方法都有其自身优势和劣势。
1.个别签名法。此方法使用每一签名来分别签署交易,且具有与多重签名相同的功能性,但脚本大小较小。
2.群签名法。此方法在签名群组中为M个参与者提供单一签名。其可以是参与者的每个集合M预先同意的任何公钥,诸如源自共享密钥的密钥,或通过对群组的公钥进行求和而形成的密钥。在后一种情况下,用于验证密钥为个别成员密钥之和的附加选项使用先前所描述的验证方法。
每种方法具有不同的缩放属性,具体如图4所示的表格概括所示。
<Verify Merkle Path>=
6OP_PICK OP_SHA256(OP_SWAP OP_IF OP_SWAP OP_ENDIF OP_CAT OP_SHA256)*3<R>OP_EQUALVERIFY
其将对于下列形式的默克尔路径返回TRUE
<Leaf><Grandparent Sib><0,1><Parent Sib><0,1><Sib><0,1>
其中,当兄弟节点为左侧节点时存在0,且兄弟节点为右侧节点时存在1。
默克尔路径以及验证默克尔路径的操作以签名组N选择M的选择数量呈对数增长。
在个别签名法中,群组中的每个成员都提供交易的个人签名。该方法的功能性与标准多重签名法相同,但是减小了脚本大小,从而提高了执行脚本的效率。该脚本采用以下形式:
<Verify Merkle Path><CheckSig>*M
其需要对以下输入的呈现解锁:
<Sig P1>…<Sig PM><P1>…<PM><Merkle Path P1,...,PM>
赎回者必须提供具有其对应公钥的M个签名及P的默克尔路径作为输入。
在此方法中,P1,...,PM映射至默克尔树叶可以是,例如,使用OP_CAT的P1,...,PM级联哈希。
此方法的关键特征是每个成员签署特定的交易。它们不会相互泄露有关其私钥的任何信息,且因此不会损害其私钥的安全性。
参见图4,可见与传统的多重签名法相比,此方法具有有利的标度特性。当多重签名机制位于低M和大N(例如5-of-1000)时,这一点最为明显。
在群签名法中,签署交易的M个成员的群组仅需要一个签名。该脚本采用以下形式:
<Verify Merkle Path><CheckSig>
其需要对以下输入的呈现解锁:
<Sig P><P><Merkle Path>
此处,P是用于M个参与者的集合的群公钥。
此方法的优点在于,解锁脚本的大小极小,因为其仅需要一个签名。脚本公钥相加数与参与者的数量M成线性比例,因此在处理能力方面,此方法提供与检查个别签名更低成本的运算。
此方法要求参与者彼此共享其私钥。这意味着此方法中使用的密钥对为一次性使用密钥对,有利于提高此方法的安全性。另一个功能是,可对群私钥进行访问的参与者中的任何成员都可以签署其希望进行的任何交易。这提高了方法的通用性。在某些应用情况下,尤其需要此等功能。例如,一群董事希望激活已在区块链上记录为UTXO的既定最终条款。这可以通过使用此方法解锁特定的UTXO来进行激活。
在上述方法中,外部观察者将完全未察觉这实际上是群签名法。为公布签名和对应的公钥与一组用户相关的事实,可以对方法进行修改,以要求验证群公钥为脚本中个别参与者的公钥之和P=P1+…+PM。此调整方法可使用上文描述的密钥相加验证方法。
在此调整方法中,赎回脚本可采用以下形式:
<Verify Merkle Path><Point Add Multi P1,...,PM,P><CheckSig>
其需要对以下输入的呈现解锁:
<Sig P><P><Verification data><P><P1>…<PM><Merkle Path>
其中<Point Add Multi P1,...,PM,P>函数是前面介绍的函数,而<VerificationData>包含每一个别点相加之间的梯度。
图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所示系统的组件更多或更少的许多其他配置。
需要说明的是,上述实施例说明而不是限制本发明,本领域技术人员能够在不脱离所附权利要求定义的本公开范围的前提下设计出许多替代实施例。在权利要求书中,括号中的任何附图标记都不应解释为对权利要求的限制。词语“包括”等不排除任一项权利要求或说明书中整体列出的元件或步骤之外的元件或步骤的存在。在本说明书中,“包括”是指“包括或由......组成”。元件的单数形式并不排除此类元件的复数形式,反之亦然。本公开可以通过包括几个不同元件的硬件以及通过适当编程的计算机来实现。在列举几个装置的设备权利要求中,这些装置中的几个装置可以由同一硬件来体现。在相互不同的从属权利要求中记载某些措施这仅有的事实并不表示这些措施的组合不能被有利地使用。
Claims (7)
1.一种计算机实现的方法,包括以下步骤:
提供区块链交易,所述区块链交易包括公钥组合验证函数,所述区块链交易配置成可赎回,以通过向所述区块链交易提供输入来允许访问资源或转移对资源的控制权,所述输入包括:
多个公钥;
至少一个梯度值,其与所述多个公钥中的相应两个相关;和,
群公钥,其源自所述多个公钥的组合和所述至少一个梯度值,
其中,所述区块链交易配置成将所述公钥验证函数应用于所述输入,以在所述交易成功赎回后验证所述群公钥源自所述多个公钥的所述组合。
2.根据权利要求1所述的方法,包括以下步骤:
根据已知值派生出派生公钥;和,
将所述派生公钥设置为次级公钥的序列,
其中所述次级公钥的序列为所述多个公钥的子集。
3.根据权利要求2所述的方法,包括以下步骤:在进行所述将所述派生公钥设置为次级公钥的序列之前将限制函数应用于所述已知值,从而限制所述子集的大小。
4.根据权利要求3所述的方法,包括以下步骤:至少部分地基于所述多个公钥中的另一个公钥和所述派生公钥来计算所述多个公钥中的一个公钥。
5.根据前述任一项权利要求所述的方法,所述区块链交易进一步包括:
群签名,其对应于所述群公钥;
默克尔根;和,
默克尔路径验证函数,
其中通过向所述区块链交易提供下述内容而将所述区块链交易配置成可赎回:
默克尔路径,其与所述多个公钥相关联;和,
群私钥,其对应于所述群签名。
6.一种系统,包括:处理器;和包括可执行指令的存储器,其中,由所述处理器执行所述可执行指令时,使得所述系统执行根据前述任一项权利要求所述的计算机实现的方法。
7.一种非暂时性计算机可读存储介质,其上存储有可执行指令,由计算机系统的处理器执行所述可执行指令时,使得所述计算机系统至少执行根据权利要求1至5中任一项所述的计算机实现的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB1816936.7A GB201816936D0 (en) | 2018-10-17 | 2018-10-17 | Computer-implemented system and method |
GB1816936.7 | 2018-10-17 | ||
PCT/IB2019/058580 WO2020079534A1 (en) | 2018-10-17 | 2019-10-09 | Computer-implemented system and method including public key combination verification |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112970227A true CN112970227A (zh) | 2021-06-15 |
Family
ID=64394914
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980068650.0A Pending CN112970227A (zh) | 2018-10-17 | 2019-10-09 | 包括公钥组合验证的计算机实现的系统和方法 |
Country Status (9)
Country | Link |
---|---|
US (1) | US20210344510A1 (zh) |
EP (1) | EP3868054B1 (zh) |
JP (2) | JP7383017B2 (zh) |
KR (1) | KR20210074358A (zh) |
CN (1) | CN112970227A (zh) |
GB (1) | GB201816936D0 (zh) |
SG (1) | SG11202103165YA (zh) |
TW (1) | TWI834741B (zh) |
WO (1) | WO2020079534A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220094555A1 (en) * | 2020-09-18 | 2022-03-24 | Fujitsu Limited | Validator control for transaction between blockchains |
GB2624202A (en) * | 2022-11-10 | 2024-05-15 | Nchain Licensing Ag | Blockchain transaction |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7602655B2 (en) * | 2006-01-12 | 2009-10-13 | Mediatek Inc. | Embedded system |
JP2008203548A (ja) * | 2007-02-20 | 2008-09-04 | Oki Electric Ind Co Ltd | 二次双曲線群を使用する鍵生成方法、復号方法、署名検証方法、鍵ストリーム生成方法および装置。 |
TWI444028B (zh) * | 2011-12-23 | 2014-07-01 | Univ Nat Chiao Tung | 應用增強型窗口方法和相互交替型式於純量乘法演算法之橢圓形曲線加密方法 |
CA3013180A1 (en) * | 2016-02-23 | 2017-08-31 | nChain Holdings Limited | Blockchain-based exchange with tokenisation |
MA44883A (fr) * | 2016-05-04 | 2021-03-24 | Algorand Inc | Système réparti de propagation et de vérification de transactions |
KR102603069B1 (ko) * | 2016-11-19 | 2023-11-15 | 디피니티 스티프텅 | 시스템 아키텍쳐 및 시스템 아키텍쳐에서의 데이터 처리 방법 |
CA3051928A1 (en) * | 2016-12-27 | 2018-07-05 | Helder Silvestre Paiva FIGUEIRA | Equivocation augmentation |
GB201705621D0 (en) | 2017-04-07 | 2017-05-24 | Nchain Holdings Ltd | Computer-implemented system and method |
CN108154549A (zh) * | 2017-12-25 | 2018-06-12 | 太平洋未来有限公司 | 一种三维图像处理方法 |
-
2018
- 2018-10-17 GB GBGB1816936.7A patent/GB201816936D0/en not_active Ceased
-
2019
- 2019-10-09 CN CN201980068650.0A patent/CN112970227A/zh active Pending
- 2019-10-09 WO PCT/IB2019/058580 patent/WO2020079534A1/en unknown
- 2019-10-09 JP JP2021518541A patent/JP7383017B2/ja active Active
- 2019-10-09 EP EP19789761.4A patent/EP3868054B1/en active Active
- 2019-10-09 SG SG11202103165YA patent/SG11202103165YA/en unknown
- 2019-10-09 US US17/285,856 patent/US20210344510A1/en active Pending
- 2019-10-09 KR KR1020217014562A patent/KR20210074358A/ko unknown
- 2019-10-15 TW TW108137096A patent/TWI834741B/zh active
-
2023
- 2023-11-07 JP JP2023190064A patent/JP2023184657A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
JP7383017B2 (ja) | 2023-11-17 |
TW202036344A (zh) | 2020-10-01 |
WO2020079534A1 (en) | 2020-04-23 |
SG11202103165YA (en) | 2021-05-28 |
GB201816936D0 (en) | 2018-11-28 |
EP3868054B1 (en) | 2024-05-15 |
JP2022504224A (ja) | 2022-01-13 |
TWI834741B (zh) | 2024-03-11 |
KR20210074358A (ko) | 2021-06-21 |
EP3868054A1 (en) | 2021-08-25 |
JP2023184657A (ja) | 2023-12-28 |
US20210344510A1 (en) | 2021-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230421355A1 (en) | Systems and methods for storage, generation and verification of tokens used to control access to a resource | |
US20210192498A1 (en) | Random number generation in a blockchain | |
KR20210003234A (ko) | 분할된 블록체인 네트워크에서 블록체인의 블록을 유지하는 것 | |
JP2023036962A (ja) | ブロックチェーン上に検証鍵を記録するためのシステム | |
JP2024063167A (ja) | アンロッキングトランザクションバイトコードの制約注入 | |
CN111801910A (zh) | 基于证明验证的用于认证链外数据的系统和方法 | |
US20210344500A1 (en) | Computer-implemented system and method for transferring access to digital resource | |
JP7231630B2 (ja) | ブラインド化された帰結選択のためのブロックチェーンで実装されるセキュリティー・システムおよび方法 | |
CN111095861A (zh) | 用于保护区块链上资源的改进时间锁技术 | |
JP2023184657A (ja) | 公開鍵結合検証を含む、コンピュータにより実施されるシステム及び方法 | |
JP2022532764A (ja) | プルーフオブワークブロックチェーンネットワークにおける非並列化マイニングのためのシステムおよび方法 | |
WO2020208491A1 (en) | Computer implemented method and system for knowledge proof in blockchain transactions | |
EP3899837A1 (en) | Computer-implemented systems and methods for controlling or enforcing performance of transfers conducted over a blockchain | |
RU2755672C1 (ru) | Способ безопасного хранения и обновления данных в распределенном реестре с помощью сетей квантовых коммуникаций | |
CN113228075B (zh) | 用于控制或强制执行在区块链上进行的转移的计算机实现的系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |