Bitcoin

多重签名,多重安全

本文给大家展示如何采用比特币的多重签名机制,重新定义一种新的比特币存放方式,从而达到一个更高的安全级别。

多重签名是什么?

比特币相当于互联网上的钞票,你只需要有一个比特币地址的私钥就可以轻松的使用上面的币,无需银行的参与,这种方便是无敌的,但是同时也带来了安全上的担忧。坏人只要进行单点攻击拿到你那个私钥就可以偷走你的币。

好,这个问题是由比特币的基本特点决定的,一个地址对应一个私钥,动用资金也只需要这一个私钥进行签名就可以了。但是在2012年,比特币核心团队对比特币进行了一点小小的扩展(想要刨根的同学可以学习一下P2SH,不过避开这个讨厌的术语,同样不影响下文的理解哦),这样,人们在生成比特币地址的时候,可以指定私钥的数目,来生成“多重签名地址“。

一个多重签名地址就是一个有多个私钥的地址。最基本的形式就是“n选m”,意思是这个地址一共有 n 个私钥,而要从这个地址中转账,需要最少用 m 个私钥来进行签名。一个多重签名交易,就是一个从多重签名地址中发起的交易。标准地址一般第一位是”1”,而多重签名地址是以“3”打头。

多重签名的最重要的应用场合就是增加窃取比特币的难度。如果是一个“2选2”的地址,那我可以把这两个私钥分别存在两台不同的机器上,这样小偷就必须同时攻下这两台机器才能偷到币。

理论上,生成”n选m“中的 n 和 m 是可以随意指定的,可以有”3选1“,”5选5“,也可以是“11选9“等等,但是最为有用的一种应该是”3选2“了。

如果我们生成一个“3选2”的地址,就可以另外起到备份的效果了。具体是这样,如果你不小心弄丢了一个私钥,没关系,还有另外两个呢,一样不妨碍你使用这个地址里的币。你可能会说,这没什么,如果我把普通的一对一的比特币私钥做一下备份,不也能达到效果吗?确实是这样,但是”3选2“的这种备份机制,带来的会是更加灵活的比特币使用方式。

多重签名下的安全架构

一般我们用“一对一”的比特币标准地址的时候,通常我们有两种方式来存放我们的币,一种是采用客户端钱包,一种是采用一种 web 服务,第一种情况,本质上就是私钥在我们自己的计算机上,第二种私钥在 web 服务的那个公司的服务器上,坏人只要攻克一台机器就得手了。

有了“3选2”的多重签名地址,人们就可以试着来搭建这样的一个网站,来进行比特币安全服务了。我可以把一个私钥交给这个网站,一个放到我自己的计算机上,一个打印到纸上放到我的保险柜里。这样做好处多多:

想象一下在任何情况下都需要银行所持有的钥匙和你个人的钥匙这两把钥匙才能打开的银行保险箱。多重签名运用了这一方法的精髓,而且它不需要不同的钥匙在同一个地方。

目前有没有提供这种安全服务的网站呢?有的,例如 https://www.bitgo.com/

结束语

好,关于多重签名来提高比特币的安全使用我们就聊这么多,但是其实多重签名还有其他的一些应用场合,其中一种重要的就是用于交易仲裁,防止交易欺诈,从事这一类业务的公司有 https://www.bitrated.com/ 。这个以后有机会再给大家介绍。