【链圈知识】多重签名技术
待337
发表于 2022-12-24 09:33:17
75
0
0
在区块链领域,我们知道当我们转移数字钱包里的资产的时候,需要用我们资产的私钥进行签名和认证才能转出或交易。其他任何人或机构都不能染指,可这种“绝对安全”其实也存在着一个重大的安全隐患。
有一种技术可以避免此种情况下客户资产的损失。这就是多重签名技术。
多重签名技术
多重签名技术(multisig),顾名思义,就是多个用户对同一个信息进行签名和认证的技术。在数字签名应用中,有时需要多个用户对同一个文件进行签名和认证。比如,一个公司发布的声明中涉及财务部、开发部、销售部、售后服务部等部门,需要的到这些部门签名认可,那么,就需要这些部门对这个声明文件进行签名。能够实现多个用户对同一文件进行签名的数字签名方案称作多重数字签名方案。放在区块链领域,可以简单理解为一个数字资产的多个签名,签名标定的是数字资产所属及权限。多重签名最多支持三方共同管理一个地址的资产也可以用于第三方交易担保。这种解决方案还能加强区块链技术的网络安全和线上治理,也使得许多新的商业模式得以实现。例如,多重签名技术广泛应用在区块链维护中,比如大型交易所经常被黑客攻击,黑客即便成功窃取到密钥,也只是其中一把密钥而已,必须再获取其他多把密钥才能获益。根据签名过程的不同,多重签名方案可以分为两类:有序多重数字签名方案和广播多重数字签名方案。每种方案都有三个过程:系统初始化、产生签名和验证签名。每种方案都包含三个对象:消息发送者、消息签名者和签名验证者。广播多重数字签名方案中还包含签名收集者。
技术概述
“用N把钥匙生成一个多重签名的地址,需要其中M把钥匙才能花费这个地址上的比特币,N>=M,这就是M/N的多重签名”。多重签名地址是由超过一个私钥创建出来的。一个多重签名地址会设置一个M/N的签名,N是签名人的总数量,而M是指执行任何交易所需要的(子集)的数量。可以简单的理解为,一个账户多个人拥有签名权和支付权。如果一个地址只能由一个私钥签名和支付,表现形式就是1/1;而多重签名的表现形式是M/N,也就是说一共N个私钥可以给一个账户签名,而当M个地址签名时,就可以支付一笔交易。所以,M一定是小于等于N的。大多数多重签名地址使用2/3签名策略,即用三个私钥去创建地址,而其中任何两个私钥可以用来签署(授权)一个交易。如果使用2/2签名策略的话,则创建任何交易时都必须有两个私钥的参与,这表明没有可以犯错的空间,而且可能会因为其中一个私钥的丢失而永远失去资产的控制权。使用多重签名地址的好处包括消除了单点故障的可能性,因此减少了损失的风险,也潜在地提高了自我管理的水平。多重签名计划可以用于提供一个“备份”的私钥,这样可以将它们分别存放,安全性更高了。不过,多重签名地址需要涉及到多方的协调,因此会有额外的管理事项,也可能会减慢交易的速度。
应用
目前多重签名技术应用较为广泛,在区块链方面主要有电子商务方面、财产分割和资金监管等方面的智能合约应用,以及加密货币方面的应用。电子商务较常见的是2/3的多重签名方式。例如一笔交易,由买家,卖家,平台各持有一份私钥对应该笔交易的地址,这个地址先有买家转入这笔交易所需的比特币数额,后续的交易确认,退款等流程就需要三方中2方才能转出这些比特币。无纠纷时,买家卖家双方确认即可。产生纠纷时由平台做出2/3的仲裁。财产分割比如合作团队管理一笔共有资金。可以使用1/N的模式,即这个账户谁都可以支配。好处是清晰忠实地记录了每个用户(对应私钥)的支出明细,方便清算。资金监管比如数字钱包,交易所,类似电子商务的2/3模式。比如家庭子女教育基金管理,使用2/2模式,不仅限制夫妻两方,也给黑客攻击增加了难度。
多重签名中的概念
数字签名数字签名涉及到公钥、私钥和钱包等工具,它有两个作用:一是证明消息确实是由信息发送方签名并发出来的,二是确定消息的完整性。数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。公钥和私钥用户注册的时候会得到一个账户,包括一对公钥和私钥。公钥是公开的,私钥是只有自己知道的。通过公钥加密的信息只有对应的私钥可以解密,通过私钥加密的信息只有对应的公钥可以解密。他人通过使用我们的公钥加密向我们传递信息,我们可以用私钥解密。私钥是我们自己用来签名确认的,私钥加密的信息上传到网络,他人可以通过公钥解密确认我们的身份。签名的生成签名的生成是具有特殊性的,取决于传递的信息,因此每次签名的字符串都是不一样的。1、将消息进行哈希计算,得到相应的哈希值,也成摘要;2、将得到的哈希值用发送者的私钥进行加密 ,生成签名;3、将签名和消息一起发送,就像写信一样,信纸上是传递的信息,签名要写在信封上一起发送。签名的验证1、接收者提取信息中的签名;2、用发送者的公钥可以解密,得到信息的哈希值;3、用自己的私钥解密原文信息,在进行哈希计算,得到另一个哈希值;4、对比两个哈希值,如果一致则验证成功。信息传递为了保护信息的安全和身份确认,网络中信息发送和接收过程中同时平行进行双重处理:1、发送方将需要传递的信息通过接收方的公钥加密,接受方用自己的私钥解密;2、发送方将信息摘要用自己的私钥加密,接收方用接收方的公钥解密。这两个信息(原文密文和签名)一起发送。发送:首先A需要对“hello kitty”进行双重处理,首先将“hello kitty”用B的公钥加密,得到原密文,然后对“hello kitty”极性哈希计算得到相应的哈希值,再用A自己的私钥对该哈希值加密,得到A的数字签名,最后将签名后得到的原文密文和A的签名一起发送给B。接收:B接收到A打包发送的信息后,通过A的公钥解开A的签名,可以得到“hello kitty”的哈希值,再通过B自己的私钥解开原文密文,在进行哈希计算,得到摘要,将两个摘要进行对比就可以判断A的身份和信息是否准确,如果一致,则接受完成。数字签名的作用确认身份,通过公钥解密,数字签名可以指定接收者确认发送者的身份;信息完整、不被篡改,通过对信息进行不对称加密,加大了网络中恶意篡改的难度,通过私钥解密,可以判断信息是否受损;不可抵赖,由于接收方手中有发送方的签名为证,证明信息源,所以不容抵赖。
成为第一个吐槽的人