精华内容
下载资源
问答
  • 基于双线性对及3个困难性问题(IFP、DLP、CDHP)提出了新的多重数字签名方案。新方案将广播多重数字签名中签名快速的优点应用到按序多重数字签名,改变签名的一般机制,使签名者同时进行签名;然后,由可信任第三方...
  • 基于离散对数问题,提出了一种新的多重代理多重签名方案,该方案指定了签名验证人,在门方案的基础上又完善了签名过程,最终签名由其中一位代理人...进一步防止了伪造攻击,是一种相对安全的多种代理多重数字签名方案。
  • 现有的有序多重数字签名方案都使用了Hash函数和消息冗余函数,这必将承受由Hash函数和消息冗余函数带来的安全威胁。首先指出了施方案(文献[1])中存在的安全性问题,随后利用椭圆曲线密码算法设计了一个新的有序...
  • 多重数字签名算法

    千次阅读 2018-11-21 17:39:01
    什么是数字签名数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。 这里的数字签名,不是简单的把纸质的签名改为电子签名,我们需要知道的是,数字签名包含两点:一是保证信息传输的完整...

    什么是数字签名?

    数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。

    这里的数字签名,不是简单的把纸质的签名改为电子签名,我们需要知道的是,数字签名包含两点:一是保证信息传输的完整性,防止其在途中被篡改;二是保证发送者的身份认证,防止其抵赖。在学习数字签名之前,我们先介绍几个概念:

    Hash(哈希)函数

    Hash函数,音译为哈希函数,又叫散列函数或杂凑函数。它可以将任意长度的消息M映射为固定长度的摘要H(M),也叫散列值,哈希值或杂凑值。哈希函数有三大特点:

    1. M1不等于M2,则H(M1)不等于H(M2);

    2.单向性,即已知H和H(M),反推出M在计算上是不可行的;

    3.无碰撞性,即对于M1和H(M1),找到M2使H(M2)=H(M1)在计算上不可行(弱碰撞性);任意两个M1,M2(不相等),使得H(M1)=H(M2)在计算上不可行(强碰撞性)。

    所谓计算上不可行,是由计算复杂度理论来说的,即对于该运算不存在一个多项式时间算法,计算不可行是哈希函数的安全性基础。

    公钥(私钥)

    公钥与私钥是通过某种密码学算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分,通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。

    数字签名算法

    接下来,我们再来看数字签名的过程:由发送者把要签名的信息作哈希运算,得到一段别人无法伪造的并且长度固定的数据摘要。发送者用自己的私钥把数据摘要加密成数字签名,并将其与信息一起发送给接收者。接收者收到信息和数字签名后,对信息作Hash运算得到报文的数据摘要,用公钥把数字签名解密为数据摘要。比较这两份数据摘要,如果相同则签名有效,否则签名无效,这样就可以确定信息的真实来源。

    多重数字签名算法

    多重签名技术(multisig)就是多个用户同时对一个数字资产进行签名。可以简单的理解为,一个账户多个人拥有签名权和支付权。

    如果一个地址只能由一个私钥签名和支付,表现形式就是1/1;而多重签名的表现形式是m/n,也就是说一共n个私钥可以给一个账户签名,而当m个地址签名时,就可以支付一笔交易。所以,m一定是小于等于n的。

    多重签名技术的原理并不是很复杂,但它增加了第三方的介入保障,可以实现现实场景中需要第三方介入的很多的应用场景。

    近日,密码学顶级网站eprint上发表了两篇最新的多重签名算法文章,首先是1月15日由比特币核心开发者Gregory Maxwell等人首次提交的基于Schnorr的多重签名算法(MuSig)在比特币网络中的应用,随后,该算法在5月10号被Manu Drijvers等人指出了存在安全性漏洞并提出了DG-CoSi多重签名算法,5月20日,Gregory Maxwell等人重新提交了修正过的论文。我们可以看到,多重签名方案的研究之火热。

    现在的比特币区块链中,一个区块中包含几千个交易,比如2000个,则这个区块包含了2000条被不同人签名的2000条消息,所有这些信息都需要存储在一个区块中。Schnorr的多重签名算法支持“本地多签名”,它可以将多个签名合并为一个单一的签名,同时使各自输入的密钥总和有效,即多重签名和签名汇聚。也就是说,一个区块现在包含2000个交易,但只需要一个签名,且我们只需要对这个签名进行验证。

    上面提到,Maxwell等人提出了第一个运用于比特币的可以在普通公钥模型中证实安全的多重签名方案,且允许密钥聚合,该方案被称作MuSig签名算法。它有两个优势:(i)它简单而有效,与标准Schnorr签名具有相同的密钥和签名大小;(ii)它允许密钥聚合,这意味着联合签名可以完全验证为一个标准的Schnorr签名,与单个“汇聚”公钥有关,可以从签名者的个人公钥中计算出来。

    接着是由Manu Drijvers等人提出的基于Okamoto(多)签名方案的双发生器变体DG-CoSi签名方案,并在随机预言模型中的离散对数假设下可证明安全性。文中指出,与CoSi相比,DG-CoSi中的第二台发生器几乎没有影响可扩展性,允许8192个签名者在1.5秒内协作签名一条消息(Cosi签名方案允许8000个签名者在2秒内协作签名一条消息),使其成为大规模部署的高度实用且可证明安全性的多重签名替代方案。

    除此之外,早在2016年,斯坦福的Dan Boneh教授就介绍了比特币的BLS短签名算法。Boneh提到,相比于Schnorr多重签名算法,BLS只需要一个元素,而Schnorr需要两个元素,因此它更短,这将节约很大的空间,同时LBS也有汇聚的特征。

    使用多重签名可以节约大约80%的空间,从而提高区块链的容量。

     

    展开全文
  • 分析了地理路由协议GPSR的特性,并针对GPSR协议在遇到空洞时,贪婪算法失效而出现的消耗过多能量的情况,提出了一种简易的能量改进策略,以减少由于GPSR协议中周围模式引起的过多的跳跃。基于这种策略,提出了一种...
  • 多重签名——典型的数字签名技术

    万次阅读 2019-05-14 10:34:25
    n个持有人中,收集到至少m个签名,即认为合法,这种签名被称为多重签名。其中,n是提供的公钥个数, m是需要匹配公钥的最少签名个数。

     

    n个持有人中,收集到至少m个签名,即认为合法,这种签名被称为多重签名。其中,n是提供的公钥个数, m是需要匹配公钥的最少签名个数。

    展开全文
  • 多重签名

    2019-09-11 20:59:02
    在数字签名应用中,有时需要多个用户对同一个文件进行签名和认证。比如,一个公司发布的声明中涉及财务部、开发部、销售部、...能够实现多个用户对同一文件进行签名的数字签名方案称作多重数字签名方案。 多重签名...

    多重签名1
      在数字签名应用中,有时需要多个用户对同一个文件进行签名和认证。比如,一个公司发布的声明中涉及财务部、开发部、销售部、售后服务部等部门,需要的到这些部门签名认可,那么,就需要这些部门对这个声明文件进行签名。能够实现多个用户对同一文件进行签名的数字签名方案称作多重数字签名方案。
      多重签名就是多个用户对同一个消息进行数字签名。
      多重签名,可以简单的理解为一个数字资产的多个签名。签名标定的是数字资产所属和权限,多重签名预示着数字资产可由多人支配和管理。在加密货币领域,如果要动用一个加密货币地址的资金,通常需要该地址的所有人使用他的私钥(由用户专属保护)进行签名。那么,多重签名,就是动用这笔资金需要多个私钥签名,通常这笔资金或数字资产会保存在一个多重签名的地址或帐号里(就比特币而言,多重签名地址通常以3开头)。
    多重签名2
      Alice和Bob怎么对同一个数字文件签名呢?不用单向散列函数,有两种选择:
      第一种选择是Alice和Bob分别对文件的副本签名,结果签名的消息是原文的两倍;
      第二种就是Alice首先签名,然后Bob对Alice的签名再进行签名。这是可行的,但是在不验证Bob签名的情况下就验证Alice的签名是不可能的。
      采用单向散列函数,很容易实现多重签名:
      (1)Alice对文件的散列签名。
      (2)Bob对文件的散列签名。
      (3)Bob将他的签名交给Alice。
      (4)Alice把文件、她的签名和Bob的签名发给Carol。
      (5)Carol验证Alice和Bob的签名。
      Alice和Bob能同时或顺序地完成第(1)步和第(2)步;在第(5)步中Carol可以只验证其中一人的签名而不用验证另一人的签名。

      关于 MultiSig(多重签名),从原理角度上讲,多重签名本身并不复杂,简单来说,一句话就够了:“用 m 把钥匙生成一个多重签名的地址,需要其中的 n 把钥匙才能花费这个地址上的比特币,m >= n,这就是 n/m 的多重签名”
      在实际的操作过程中,一个多重签名地址可以关联n个私钥,在需要转账等操作时,只要其中的m个私钥签名就可以把资金转移了,其中m要小于等于n,也就是说m/n小于1,可以是2/3, 3/5等等,是要在建立这个多重签名地址的时候确定好的。
    相关图片

      多重签名给了加密货币腾飞的翅膀,让它单一单项支付的能力更具吸引力,让加密货币技术应用到各行各业成为可能。这里简单的罗列几个应用场景,供探索和思考:

    • 电子商务。比较常见的是2/3的模式。上面电子商务网站的例子,就是最典型的场景之一,目前已经有成功的案例了。延伸一下,这类应用本质就是中介,所以还可用在各类中介机构性质的服务上。
    • 财产分割。比如夫妻双方共有财产,可以使用1/2的模式,一个账户谁都可以使用,跟各自拥有帐号一样,好处是系统忠实记录了每个人的花销,闹掰的时候很容易清算。扩展到公司合伙经营,可以使用1/n模式,n个人合伙人,都可以直接支配共有资金,具体清算时,一目了然。
    • 资金监管。其实,这是多重签名的最直接作用,一笔钱需要多个人签名才能使用,任何一个人都无法直接动用资金,这在生活中太常见了,只要灵活设置多重签名的比重模式,就能解决生活中很多问题。比如,接着上面夫妻的例子,夫妻要储备一笔资金,供孩子上大学使用,在这之前谁都不能动,那么把模式改为2/2,不仅限制了夫妻双方,也给黑客攻击增加了难度。

      多重签名的设计,让各种业务去中心化充满无限可能。

    http://www.frankyang.cn/2017/09/30/multisignature/

    转载于:https://my.oschina.net/yangjiannr/blog/1546347

    展开全文
  • 多重群签名是既具有群签名的性质,又具有多重数字签名性质的特殊的群签名。在基于中国剩余定理的群签名的基础上进行改进,引入椭圆曲线的Schnorr型广播多重数字签名,将动态群签名方案与多重数字签名理论巧妙地结合...
  • 在Harn广播多重数字签名方案的基础上提出了一种广播多重(t,n)门限数字签名方案,该方案系统初始化简单、安全性较好、通信成本低,对于广播多重(t,n)门限签名消息在网络上的传输和处理具有实用价值。
  • 随着区块链相关技术的创新和突破,很多有形或无形资产都将实现去中心化,数字资产将...而多重签名是对数字签名的扩展使用,给数字资产转移提供了安全保障和技术手段。本期内容从基本概念入手,详细了解数字签名...

    随着区块链相关技术的创新和突破,很多有形或无形资产都将实现去中心化,数字资产将无处不在。要保护数字出版物版权,实现去中心化,解决业界多年来版权保护不力的难题。无论数字资产,还是数字出版版权,都是有明确所有权的,当前实现数字资产所属的技术手段就是本期《区块链100讲》要介绍的数字签名。而多重签名是对数字签名的扩展使用,给数字资产转移提供了安全保障和技术手段。本期内容从基本概念入手,详细了解数字签名和多重签名的作用和代码实现。

    1

    数字签名

    什么是数字签名?

    很多人的第一反应是用笔签名。生活中我们经常需要用笔签名:借条要签名,合同要签名,去银行办理业务也要签名。签下名字,就表示对这件事负责。人的笔迹是很个性的,几乎不可能复制,即便是专业模仿也可以通过技术鉴别出来,因此签名就具有唯一性的特点,并被法律认可。数字签名的原理跟用笔签名类似,用于确认身份。

    数字签名有两个作用:

    • 一是能确定消息确实是由发送方签名并发出来的;

    • 二是数字签名能确定消息的完整性。

    然而,在没有笔迹验证的情况下,数字签名如何保持唯一性和可验证性呢?

    **签名的验证。**如果,你拿着一张支票去银行兑换,银行职员会对支票上的签名和印章仔细比对,确保印章大小、样式,以及付款人签名等,与银行留存的信息一致,才会给你兑付,这就是签名验证。

    简单地讲,就是加密技术代替人的笔迹,数字签名涉及一个哈希函数、发送者的公钥、发送者的私钥。

    其操作方法是:

    在区块链系统中发送一条广播时,发送方用一个哈希函数从广播文本中生成摘要,然后用自己的私钥对摘要进行加密,加密后的摘要将作为广播的数字签名和广播一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的原始广播中计算出报文摘要,接着再用发送方的公钥来对广播附加的数字签名进行解密。如果这两个摘要相同,那么接收方就能确认该数字签名是发送方的。

    比特币客户端签名功能

    数字资产需要签名。类比人类签名,比特币也有签名功能。如果了解比特币钱包(客户端软件),就会发现它提供了一个签名消息的功能,可以用来对其他用户通过比特币网络之外的信息进行签名和验证。我个人使用的是 比特币官方网站 提供的比太钱包,如图:

    **这个功能干什么用的呢?**有好多小伙伴不清楚,这里举个简单的例子解释一下,具体使用的时候绝不限于这些应用。

    Alice开了一个网店,但没有直接接入比特币网络,不能自动确认和验证支付者。客户Imfly购买了她的产品,并用比特币支付了全部货款。因为比特币地址和交易都是公开匿名的,为了防止冒充冒领,Alice需要确认Imfly提供的那个付款地址确实是imfly本人的,否则不能发货。这时候,就需要Imfly先把支付货款的比特币地址和相关交易签名信息(如图),然后通过QQ或邮件传给Alice,Alice使用客户端验证信息签名,才能确认交易确实是Imfly的。

    想象一下,如果没有签名功能会怎么样呢?因为比特币仅是一个匿名、安全的支付手段,但却无法确认支付方或收款方是谁,信息的不确定性,将使得比特币网络之外的交易无法达成。在中心化的世界里,这个问题是通过运营平台这个第三方达成的,比如支付宝等,双方的全部信息,平台都掌握,任何一方出现欺诈,都需要通过向平台投诉来解决。用户需要对第三方平台绝对信任,并通过牺牲个人信息安全获得交易的基本保障。

    电子签名

    通过上述分析,可以理解的是,签名的作用是确定资产所属,其特征是简单、安全、可验证。把这个概念抽象出来,应用到计算机系统里,为了确定数字资产所属,也需要进行签名,这就是大家经常看到的“电子签名”的概念。在网络世界里,签名可以对任何需要确认的数字资产进行处理,比如比特币地址、电子书版权等,并以此来宣告重要资产的所属,这让无需监管的去中心化交易成为可能。

    具体开发设计中,就是用加密技术代替人的笔迹,不然任何签名方法都会被模仿,而且模仿的成本极低,相反,验证的成本却很高。这也是当前数字出版行业版权保护不力的原因之一,各大平台仅仅通过用户权限来限制用户使用数字出版物,并没有对出版物本身采取数字签名等加密措施,一旦被盗版,验证和取证工作耗费很多人力物力。下面那某个项目为例:

    支付密码

    签名方法在modules/signatures.js文件里,类图如下:

    我们还是从Api开始,代码如下:

    // modules/signatures.js文件
    
    router.map(shared, {
    
    "get /fee": "getFee",
    
    "put /": "addSignature"
    
    });
    
    library.network.app.use('/api/signatures', router);
    复制代码

    通过上面的代码,可以了解签名提供了两个简单的公共接口:

    get /api/signatures/fee -> shared.getFee
    
    put /api/signatures/ -> shared.addSignature //签名操作
    复制代码

    显然,最核心的方法也就是shared.addSignature,代码:

    shared.addSignature = function (req, cb) {
    
    ...
    
    library.scheme.validate(body, {
    
    properties: {
    
    ...
    
    },
    
    required: ["secret", "secondSecret"] },
    
    function (err) {
    
    ...
    
    library.balancesSequence.add(function (cb) {
    
    if (body.multisigAccountPublicKey && body.multisigAccountPublicKey != keypair.publicKey.toString('hex')) { modules.accounts.getAccount({publicKey: body.multisigAccountPublicKey}, function (err, account) {
    
    ...
    
    try {
    
    var transaction = library.logic.transaction.create({
    
    type: TransactionTypes.SIGNATURE,
    
    sender: account,
    
    keypair: keypair,
    
    requester: keypair,
    
    secondKeypair: secondKeypair,
    
    });
    
    } catch (e) {
    
    return cb(e.toString());
    
    }
    
    ... }
    复制代码

    毫无疑问,支付密码也是一个简单的交易(交易类型TransactionTypes.SIGNATURE)。基于此,我们不难想象,添加类似比特币的签名功能也是件非常简单的事情。

    再简单一点:

    发送方把hello kitty的信息进行双重处理。首先是通过接收方公钥来进行加密。

    为什么要接收方的公钥来加密? 因为只有接收方的私钥可以解开接受方公钥加过的密,所以只有接受方可以解密。

    然后hello kitty还要通过哈希值得到摘要,接要再经过发送方私匙进行签名,签名后得出的原文密文和发送方签名一起发给接受方。

    接收方用自己的私匙解开密文,得到hello kitty.

    然后通过哈希得到摘要。

    另外则是通过发送方的公钥解开发送方签名,得到摘要,并且通过解密原文密文的摘要和解密发送方签名的摘要进行对比,最后的摘要一致,则认为摘要是对的。

    通过这样的方式,接受方完成了对发送方签名过的hello kitty信息的认证。

    这里要记一个口诀,公钥加密,私钥解密,私钥签名,公钥解密。

    再短一点,则是公钥加,私钥解,私钥签,公钥解。

    有个问题,为什么用接收方的公钥加密hello kitty?因为通过这种方式,只有接受方的私钥才能解开。

    为什么要用发送方的私钥签名,不用其它人的私钥签名?因为这种方式,才能让接收方确认这条信息是发送方发出来的。只有发送方的公钥才能解开发送方的签名。

    2

    多重签名

    什么是多重签名

    比特币的匿名性,使交易处于不可信之中,最终导致用户不敢交易。有了签名功能,就有了确认双方信息的有效手段。那么,什么是多重签名呢?

    多重签名,可以简单地理解为一个数字资产的多个签名。多重签名预示着数字资产可由多人支配和管理。多重签名,就表示动用这笔资金需要多个私钥签名,通常这笔资金或数字资产会保存在一个多重签名的地址或账号里。类似于生活中有一份文件需要多个部门签署才能生效一样。

    **多重签名是数字签名的升级,它让区块链相关技术应用到各行各业成为可能。**在实际的操作过程中,一个多重签名地址可以关联n个私钥,在需要转账等操作时,只要其中的m个私钥签名就可以把资金转移了,其中m要小于等于n,也就是说m/n小于1,可以是2/3, 3/5等等,是要在建立这个多重签名地址的时候确定好的。

    例如,电子商务、财产分割、资金监管等。例如,一对夫妻要储备一笔资金,供孩子上大学使用,在这之前谁都不能动,那么把签名模式改为2/2,不仅限制了夫妻双方,也给黑客攻击增加了难度。多重签名的设计,让各种业务去中心化充满无限可能。

    工作原理

    数字资产在某种情况下,需要多人支配。换句话说,在某些特定条件下,数字资产如果无法确认归属某个特定的人,那么最好让相关人共同签署它的所有权。

    仍然举上面的例子,在Alice发货之后,Imfly收到货之前,这笔钱应该由第三方信用比较高的中介暂时保存,这个阶段,这笔钱要么是Alice的,要么是Imfly的,最终的归属要看Imfly是否收到货。所以,这个第三方,无论如何都是应该有的,不然Imfly就要承担大部分风险(因为比特币的单向不可逆,Imfly发送之后就没有办法收回了)

    这样一来,这笔钱的所属关系,在交易过程中涉及到Alice、Imfly和平台第三方(虽然不属于它,但它有权裁定资金去向),那么就应该由他们三方签名,因此网上购物就是典型的多重签名的例子。其多重签名模型就是2/3,也就是说只要他们中的两个签名,资金就可以被转移。

    具体到这个例子,Imfly把钱打给一个关联三方私钥的多重签名地址,如果整个交易过程顺利,只要Alice和Imfly两个签名,这笔钱就会顺利到达Alice手里。如果不顺利,他们任何一人提出仲裁,平台第三方调查之后,通过签名就能把这笔钱转给Alice或退回Imfly。这非常类似淘宝和京东的模式,但是比他们更加便捷和安全,至少不用担心第三方倒闭、挪用资金或携款跑路。

    应用场景

    很显然,多重签名给了加密货币腾飞的翅膀,让它单一单项支付的能力更具吸引力,让加密货币技术应用到各行各业成为可能。这里简单的罗列几个应用场景,供探索和思考:

    **电子商务。**比较常见的是2/3的模式。上面电子商务网站的例子,就是最典型的场景之一,目前已经有成功的案例了。延伸一下,这类应用本质就是中介,所以还可用在各类中介机构性质的服务上。

    财产分割。比如夫妻双方共有财产,可以使用1/2的模式,一个账户谁都可以使用,跟各自拥有帐号一样,好处是系统忠实记录了每个人的花销,闹掰的时候很容易清算。扩展到公司合伙经营,可以使用1/n模式,n个人合伙人,都可以直接支配共有资金,具体清算时,一目了然。

    资金监管。其实,这是多重签名的最直接作用,一笔钱需要多个人签名才能使用,任何一个人都无法直接动用资金,这在生活中太常见了,只要灵活设置多重签名的比重模式,就能解决生活中很多问题。比如,接着上面夫妻的例子,夫妻要储备一笔资金,供孩子上大学使用,在这之前谁都不能动,那么把模式改为2/2,不仅限制了夫妻双方,也给黑客攻击增加了难度.

    多重签名的设计,让各种业务去中心化充满无限可能。

    多重签名

    多重签名方法在modules/multisignatures.js文件里,类图如下:

    实现Api的代码如下:

    router.map(shared, {
    
    "get /pending": "pending",
    
    // Get pending
    
    transactions "post /sign": "sign",
    
    // Sign transaction
    
    "put /": "addMultisignature",
    
    // Add multisignature
    
    "get /accounts": "getAccounts" });
    
    library.network.app.use('/api/multisignatures', router);
    复制代码

    解析一下,最后产生的Api如下:

    get /api/multisignatures/pending -> shared.pending // 查询等待中的交易

    post /api/multisignatures/sign -> shared.sign // 签名交易

    put /api/multisignatures/ -> shared.addMultisignature // 创建多重签名帐号

    get /api/multisignatures/accounts -> shared.getAccounts // 获得关联的帐号(对应者用户私钥)

    提供的功能很显然,包括:待交易查询、关联帐号列表查询,用户签名交易,创建多重签名帐号等4个核心功能。我们先从创建多重签名帐号开始,这个Api使用的是http的put方法,对应的自然是更新操作,不查看代码也可以猜想到,该功能应该是在已有帐号基础上的操作,从客户端钱包设置菜单里,可以看到如图操作:

    看看shared.addMultisignature的源代码如下:

    // modules/multisignatures.js文件
    
    shared.addMultisignature = function (req, cb) {
    
    var body = req.body;
    
    library.scheme.validate(body, {
    
    ... required: ['min', 'lifetime', 'keysgroup', 'secret'] },
    
    function (err) {
    
    ...
    
    library.balancesSequence.add(function (cb) {
    
    modules.accounts.getAccount({publicKey: keypair.publicKey.toString('hex')}, function (err, account) {
    
    ...
    
    try {
    
    var transaction = library.logic.transaction.create({
    
    type: TransactionTypes.MULTI,
    
    sender: account,
    
    keypair: keypair,
    
    secondKeypair: secondKeypair,
    
    min: body.min,
    
    keysgroup: body.keysgroup,
    
    lifetime: body.lifetime
    
    });
    
    } catch (e) {
    
    return cb(e.toString());
    
    }
    
    ... };
    复制代码

    创建一个多重签名,必须'min', 'lifetime', 'keysgroup', 'secret'这四参数(其实,一个默认参数就是当前帐号),min代表上面讲到的m值,即需要确认的人数;lifetime代表生命周期;keysgroup包含多重签名关联的全部帐号,它是数组类型,包含的元素个数就是n,secret是用户密码,与用户私钥对应。

    经过一系列的验证之后,作为一个交易(交易类型TransactionTypes.MULTI)保存到数据库(区块链)里。创建成功的帐号,可以显示多重帐号菜单,对交易进行操作。接下来,自然应该能够查看全部关联的帐号(请看shared.getAccounts方法),查看待确认的交易(请看shared.pending方法),这两个方法仅仅是简单的查询,没什么难度,这里不再浪费篇幅。

    如果用户同意交易,就可以对待确认的交易进行签名(shared.sign方法),这个方法的源码如下:

    shared.sign = function (req, cb) {
    
    var body = req.body;
    
    library.scheme.validate(body, {
    
    ...
    
    required: ['transactionId', 'secret'] },
    
    function (err) {
    
    ...
    
    function done(cb) {
    
    library.balancesSequence.add(function (cb) {
    
    var transaction = modules.transactions.getUnconfirmedTransaction(body.transactionId);
    
    if (!transaction) {
    
    return cb("Transaction not found"); }
    
    transaction.signatures = transaction.signatures || [];
    
    transaction.signatures.push(sign);
    
    library.bus.message('signature', {
    
    signature: sign,
    
    transaction: transaction.id
    
    }, true);
    
    cb();
    
    }, function (err) {
    
    if (err) {
    
    return cb(err.toString());
    
    }
    
    cb(null, {transactionId: transaction.id});
    
    });
    
    }
    
    ... };
    复制代码

    这个方法,相比单独的签名方法,不同的是单独的签名方法相当于一个新建交易,而这里的多重签名的用户签名,显然仅仅是对未确认交易进行签名确认(640行维护了一个签名数组,push方法把用户签名写入数组)。

    延伸阅读:区块链100讲:梅克尔树保障区块链数据不可篡改,想换根就要砍树!

    区块链100讲:公开密钥算法不能不知道的4个概念

    区块链100讲:据说,80%的人都搞不懂哈希算法

    区块链100讲:以太坊(Ethereum ETH)挖矿教程

    区块链100讲:区块链的灵魂——共识算法

    内容来源:图书--机械工业出版社华章分社《链接未来:迎接区块链与数字资产的新时代》;公众号--区块链研究实验室、链社区

    作者:许子敬、链三丰、社长等

    整理:Cynthia

    活动推荐

    扫描下图中二维码或点击“阅读原文”即可报名参加

    展开全文
  • 什么是多重签名?多重签名的概念

    万次阅读 2019-05-14 10:15:41
    多重签名,就是多个用户对同一个消息进行数字签名,可以简单地理解为一个数字资产的多个签名。 签名标定的是数字资产所属及权限,多重签名表示该数字资产可由多人支配与管理。在加密货币领域,如果要动用一个加密...
  • 针对XML格式的电文公文多重数字签名的特点,提出了一种安全的多重数字签名算法。该算法在多重签名的产生阶段加入新的计算公式来生成多个签名,签名收集者使用算法就可以确定哪一个签名者的签名被窜改。通过与Lu等人...
  • 针对多移动代理技术中主从代理协作这一新型概念,提出了一种基于ElGamal密码体制的多重数字签名方案。并通过具体的商务案例分析其安全性和有效性,得出若干重要结论。
  • 对罗等人提出的前向安全的ElGamal型多重数字签名方案进行了安全性分析,指出该方案不具有前向安全性。当某个签名人的签名密钥泄露后,该方案存在伪造攻击。最后,改进了这个方案,并分析了新方案的安全性。新方案能够...
  • 当我们需要提取数字资产时由私钥签名,在区块链上表明对该地址内资产的所有权。 由于整个生成关系是不可逆的,只能按照层级生成,无法反向推导,这就成就了区块链数字资产存管的特性:掌握助记词和私钥的人能真正能...
  • 区块链爱好者(QQ:53016353) 背景:最近币价上涨,整个圈子也出现了久违的活跃氛围。...本文将介绍比特币多重签名技术的原理及使用方式,希望读者能将多重签名用于实际生活之中。 比特币多重签名
  • 在研究代理多重签名和椭圆曲线数字签名的基础上,提出了一种基于椭圆曲线的多重代理多重签名方案。一组原签名人可以共同授权给一组代理签名人,授权代理签名组的所有成员一起可以代替原签名组成员行使签名权利。其...
  • 数字签名复制工具是一款功能强大、便捷实用的数字签名克隆工具,此款软件能够将一个有数字签名的文件中的数字签名克隆到另一个没有数字签名的文字上。软件方便简单,可复制多重签名,快来下载体验吧。 功能介绍 ...
  • GMQ Wallet提供多重签名技术保障,全方位保证数字货币资产安全 钱包本质上是一个工具,目前绝大多数的钱包都是在网络中建立了属于用户的单独区块空间,它是去中心化的。一般意义上的银 银行卡是由中心化的银行发放...
  • 在研究有代理的多重签名和椭圆曲线数字签名的基础上,提出了一种基于椭圆曲线的有代理的多重签名方案。其安全性基于求椭圆曲线离散对数的困难,比起已有的方案更加安全、高效,并给出了两种基于椭圆曲线的有代理的...
  • 对于账本而言,其私密性极其重要,因此发掘一些技术来保障其安全性变成很多人的研究方向,签名技术便是其中之一,而不同的签名方式带来的安全性也不同,如多重签名、群签名等等。1. 环签名签名,按字面意思就是...

空空如也

空空如也

1 2 3 4 5
收藏数 85
精华内容 34
关键字:

多重数字签名