一念Jeff LiWriting · zhipeng.li中文

Bitcoin in Three Minutes: A Flawless Security Design Comes Down to Earth

三分钟搞懂比特币——安全的完美设计跌落尘世

Bitcoin's ledger is like a property register shared across the entire network that no one can tamper with: every coin must have a traceable origin, signatures and hashes are chained link by link, forgery and double-spending have no way in, a 51% attack never pays off however you run the numbers, and security rests on the private key alone. Yet wallets get stolen, platforms vanish with users' funds, scams keep multiplying, and social engineering goes straight for the human mind. In the end, security is a contest between people.

集各种密码学工具为一体,结合点对点(P2P)通信协议,所有参与者共同记录并认可同一本帐——这个称为“区块链”的大账本在所有节点之间共享,里面记录着每个地址从开始到当前的每一笔交易的详细信息,不能删除,无法篡改。比特币的设计堪称完美。

有经验的投资者购买房产的之前都要“查册”,就是查清所购土地或房产的权属、建成日期、楼龄、按揭、合约、交易历史等信息,明确该房产现在的状态。如果把土地或者房产比作比特币的话,“查册”所要查的登记册就是比特币的账本——区块链。只不过,现实中的“登记册”是由一个政府部门集中管理的,比特币的账本——区块链由一个P2P网络的节点共同维护,有无数个备份,但都保持一致。

凭空伪造出一枚比特币是不可能的。因为这意味着你要在这个大账本上凭空添一笔帐。而这笔账必须说清楚这枚比特币是哪儿来的,否则就是无效的交易,会被剔除,不会进入账本。

每一枚比特币都要有出处,要么是交易得来,要么是挖矿得来。如果是交易所得,那么这笔交易首先需要交易双方的认可,认可的方式是双方用自己的比特币地址对应的私钥对交易信息签名,然后公布在全P2P网络上。同时,交易发送方的地址上要有足够的比特币,这可以通过计算“账本”上该地址的所有交易记录进行验证。只要“账本”上以前的记录都是真实的,就能验证出当前这笔交易的真实性,也就不会出现凭空伪造出来的比特币。环环相扣。

挖矿得来的比特币是辛苦钱,更不容易。每隔10分钟左右,所有这10分钟期间发生的经过验证的交易记录,加上前一个数据块的哈希值等数据,打包成一个数据块,大小在几十K到一千K不等,由矿工们展开竞争,计算这个数据块的哈希值。符合要求的值计算出来以后,该块就正式成为区块链中最新的一块。符合要求的值是什么?是最先算出来的,小于协议要求的哈希值的最小值。率先计算出这个值的矿工将获得协议自动给予的一定数量的比特币,现在是25个币。协议要求的哈希值每两周调整一次,调整的原则是维持区块的生成速度为平均10分钟一块。

把同一枚比特币花两次也是不可能的。因为在一笔比特币交易正式写入账本——也就是区块链——之前,这个交易都处于未确认状态。而要正式写入账本,必须经过交易签名验证,和整个账本上从头到尾每一笔相关交易记录的计算验证。

比特币使用的密码算法主要由哈希算法和数字签名算法。哈希算法采用了比MD5强度更高的SHA256和RIPEMD160,签名算法采用了基于椭圆曲线非对称算法ECDSA。ECDSA算法可以使用的曲线有SECP256r1和SECP256k1曲线。大部分该算法的采用者都使用前一条曲线,而比特币采用的是后者。根据2013年斯诺登的爆料,前一条曲线是被NSA弱化过的(0),而比特币在设计之初就神奇地躲开了这个陷阱。

比特币的设计太完美了。正面攻击比特币的方法只有算力攻击,即用超过全网矿工的算力蛮力写账本,这就是所谓51%攻击,意思是攻击者的算力超过了全网算力的一半,可以随意生成交易信息,写入区块,并被比特币全网认可。但这样的算力攻击代价极高而收益为零。算力超过全球矿工需要的投资应在数亿美元级别,而如果动用这数亿美元投资随意生成交易和新区块,结果将是比特币的所有价值烟消云散,攻击者数亿美元的投入也全部归零。与其用这么强大的算力进行攻击而一无所获,还不如用来挖矿,每年挖出价值上亿美元的比特币。算力攻击,是一笔怎么算都不会合算的Trade-Off。

算法和协议都没有问题,比特币真正做到了安全性只依赖于私钥的保密性,这是一个密码体制安全性的标志。只要保护好私钥,你的比特币资产就是安全的,谁也偷不走。

In Bitcoin, We Trust。

但是,现实中,比特币被偷走的情况比比皆是。

最常见的方法是直接偷私钥。比特币地址由公钥两次哈希之后编码形成,使用官方比特币客户端的情况下,对应的私钥存储在钱包文件中。拥有私钥,就证明拥有对应的比特币地址上的比特币。在进行比特币交易时,只有使用私钥对交易信息进行签名才能生成合法的交易记录,进入区块链得到确认。如果存储在电脑上的钱包文件被窃取,而且没有设置口令(PIN码)保护钱包,那就意味着该地址上的比特币丢失了。

Hacking Team爆出的间谍软件的源码中可以看到用来窃取比特币钱包文件的代码片段。可以想见,这已经是类似软件的常见功能。所以,存储在联网电脑上的“热钱包”一定要设置安全的口令进行加密。如果数额较大,长期保存,还可以用离线存储、纸钱包等更安全的方式保存私钥。

有很多在线钱包的网站。在这些网站上存放比特币意味着把将私钥交给了网站。这种情况下,比特币的安全性将不再取决于私钥的保密性,而全部取决于网站所有者的人品和法律保障。存储在交易所中的比特币也属于这种情况。

还有些似乎不应归罪于比特币本身,但在比特币这种数字货币领域会更容易发生的一些骗局和风险。比如,购买所谓“云算力”,比特币高收益“理财”产品,在线钱包网站卷款关站,交易所关闭,比特币融资后跑路等,这些现实生活也有部分存在的骗局和风险,在比特币世界里更独特。案件全在网络上,执法部门追查的难度更高。

“安全”这件事的外延非常广。比特币设计上的安全性只是“安全”这件事的一小部分而已。现实世界中存在的安全性问题,比如诈骗,在网络上、在数字世界中同样存在。另外有些安全问题,只有数字世界中才会出现,或者更容易发生。只要有利益,就会有攻击。事实上,专门有一个术语,叫“社会工程学”。

社会工程学实际上就是骗术。从信息收集开始,诱导对方说出自己想知道的答案,伪装自己,面对面交锋时使用语言、表情等心理战术(语言、表情),试着影响并说服对方,必要时动用一些软硬件工具。

“安全”说到底,是人与人之间的对抗,而非工具的对抗。比特币的安全性设计再完美,像蓝天上的白云一样无瑕美丽,但在给人们使用的时候,它也只能落在现实的泥坑里,沾满灰尘泥土。

(0)

https://bitcoinmagazine.com/7781/satoshis-genius-unexpected-ways-in-which-bitcoin-dodged-some-cryptographic-bullet/

中文

http://www.8btc.com/satoshis-genius-unexpected-ways-in-which-bitcoin-dodged-some-cryptographic-bullet

Originally published on the WeChat account 网安志异, 2015-07-09 · original

Comments

    No sign-in needed; comments appear right away.