# 比特币和密码朋克的崛起

从比特币到分布式账本,虚拟币的世界正在快速进化,以至于现在很难预测到其发展的方向.

但是,我们并非毫无线索,虽然很多创新看起来都很"新",但实际上全部都是基于数十年的基础发展才"横空出世",通过追溯历史,我们可以明白最终催生出比特币的一系列事件其背后的动机,并且分享其未来的愿景.

1970年代以前,密码学基本上都是被军方或间谍秘密使用,但是,两个出版物改变了这一切:

美国政府数据加密标准和首次公开的公钥密码学:

http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf

以及 Dr Whitfield Diffie 和Dr Martin Hellman的“New Directions in Cryptography”:

https://www-ee.stanford.edu/~hellman/publications/24.pdf

到了1980年代, Dr David Chaum 发表了扩展性的话题如: 匿名电子货币 anonymous digital cash 和伪信誉系统 pseudonymous reputation systems, 在其论文中他表述为: 安全且无需身份认证, 让“老大哥”(英国小说<1984>中的独裁者)滚蛋的交易系统 :

http://www.chaum.com/publications/Security_Wthout_Identification.html

在接下来的几年,这些观点结合成为运动.

在1992年后期, Eric Hughes, Timothy C May, 和 John Gilmore 发起了一个小规模的团体, 每个月在 Gilmore 的公司 Cygnus Solutions 所在地 San Francisco 湾区聚会, 他们幽默的将 "cipher" 和 "cyberpunk" 结合成 "cypherpunks" 即密码朋克这一称谓.

密码朋克的邮件列表在同一时间形成,几个月后, Eric Hughes发表了 一个密码朋克的宣言,他写道:

"隐私对于一个电子时代的开放社会是必须的,隐私不是秘密,隐私是指一些不想被全世界知道的东西,但是秘密是指不想让任何人都知道的事情,隐私是指选择性的向全世界展示自己的能力"

- https://www.activism.net/cypherpunk/manifesto.html

你可能心理想,这些确实都是很好的,但是老子又不是密码朋克,我并没有做错啥,我没有什么需要隐瞒的, 正如 Bruce Schneier 指出的: "没有什么需要隐瞒的"这句话代表了误会隐私是隐瞒错误的这个错误的假定.

比如,你的房子很有可能装了窗帘,虽然会时常打开,但是有些情况下你还是需要拉上窗帘,拉上窗帘不代表你在从事非法或不道德的活动,只是因为你不想因为将自己暴露给外面的世界而受到任何困扰.

如果你读到这些,你已经从密码朋克的努力中获取了直接的好处.

这里是一些知名的密码朋克和他们的成就:

Jacob Appelbaum: Tor 的开发者

Julian Assange: WikiLeaks创始人

Dr Adam Back: Hashcash发明者, Blockstream联合创始人

Bram Cohen: BitTorrent创造者

Hal Finney: PGP 2.0主要作者, Reusable Proof of Work创造者

Tim Hudson: SSLeay联合作者, OpenSSL先驱

Paul Kocher: SSL 3.0联合作者

Moxie Marlinspike: Open Whisper Systems创始人 (Signal开发者)

Steven Schear: “warrant canary”概念创造者

Bruce Schneier: 知名安全专家

Zooko Wilcox-O’Hearn: DigiCash 开发者, Zcash创始人

Philip Zimmermann: PGP 1.0创造者

# 1990年代

这个年代见证了加密战争的开始, 当时,美国政府试图扼杀强大的商用加密算法的传播.

因为密码学的市场当时几乎是被军方垄断, 加密科技被作为XIII类目编入美国军需品列表,被严格的监管防止“输出”。

这也限制了“可供输出”的SSL key最长40字节,用个人电脑几天就能被破解。

公民自由主义者和隐私倡导者发起的合法挑战,加密软件在美国外部的广为流传和 Matt Blaze 对政府设定的后门-加密芯片 进行的成功破解,这些促使了政府的让步。

1997年,Dr Adam Back 创建了 Hahscash:

http://www.hashcash.org/papers/announce.txt

其被设计成一个对抗垃圾邮件的机制,本质上是会增加发送邮件的成本(时间成本或计算成本),从而让发送垃圾邮件不划算。

他预想Hashcash 跟 Chaum 的digicash 相比可以让人们更加容易的使用,因为其不需要创建一个帐号,Hashcash甚至有针对 double spending 双花的保护功能。

1998年,Wei Dai 发表了 b-money 的提议:

http://www.weidai.com/bmoney.txt

这是一个可以在匿名用户之间实施契约性协议的实用方法,他描述了两个现在听起来很熟悉的很有趣的概念:

首先是这个协议允许每个参与者都各自维护一个自己的数据库,数据库保存每个用户有多少钱,然后是前面这个系统的变种:这个记录着谁有多少钱的数据库只被一部分参与者保存,系统设计通过让他们有失去财产的风险来激励参与者成为诚实的人。

比特币采用了前者概念,也有不少其他虚拟币采用了后者概念的变种:也就是我们熟知的 proof of stake 权益证明。

# 2000年代

很显然,密码朋克已经在各自的基础上工作了数十年,进行实验并且在1990年代就打下了我们如今所需要的基础框架,但是转折点是在创造了密码朋克货币的2000年。

2004年,Hal Finney在Hashcash的基础上创造了 RPOW - reusable proof of work 可重用的工作量证明:

https://cryptome.org/rpow.htm

RPOWs是独特的密码学代币,只能用一次,非常接近比特币中的utxo-unspent transaction outputs未花费输出。但是,针对double spending双花问题的验证和保护仍需要在一个中央服务器上处理。

2005年,Nick Szabo 发表了 bit gold 比特金的提议:

http://unenumerated.blogspot.com/2005/12/bit-gold.html

这是一个基于 Finney的 RPOW 提议创建的可回收的数字产品,但是 Szabo并没有提出限制比特金供应量的机制,而是预想每个单位的比特金的价值都是不同的,其价值是基于创建他们的计算量。

终于,在2008年,代号Satoshi Nakamoto(中本聪),一个至今仍无法确认是个人还是一群人或是外星人的假名字,发表了 比特币白皮书:

http://bitcoin.org/bitcoin.pdf

他引用了 hashcash 和 b-money(还引用了后面zcash创始人zooko),实际上,Satoshi 给 Wei Dai 直接发送过邮件:

https://www.gwern.net/docs/bitcoin/2008-nakamoto#section

邮件中提到了他是从 Dr Back 那里得知了 b-money。

Satoshi 在比特币白皮书中专门就隐私写了一个段落:

“传统的银行模型通过限制参与方和受信第三方对信息的访问权限来实现了一定程度的隐私,而需要公开所有交易的必需性就否定了该方法,但是通过在其他的地方打破信息流的方式仍然可以维护隐私:通过保持公钥匿名性。公众可以看到某人正在给他人转账某个金额,但是这里并没有将这些交易跟任何人链接起来的信息。这跟股票交易所公布的信息量是类似的,股票交易所只是将个人交易的时间和规模,“磁带”,公布出去,但是不会公布这些交易者是谁”

Satoshi Nakamoto 通过比特币这个可供人们使用、扩展和分叉的系统触发了雪崩式的进展。

比特币使得如WikiLeaks这样的企业在传统金融系统切断联系的情况下,能够通过比特币捐款的方式继续运营,通过这些,比特币加强了整个密码朋克运动。

# 隐私的挣扎

但是,随着比特币生态过去几年的发展,隐私的考虑貌似被推到了次要位置。

很多早期的比特币用户以为这个系统保证完全的匿名性,但是我们已经知道事情不是这样,很多执法机构都揭示了他们可以在调查中去除匿名找到真实用户:

https://www.wired.com/2015/01/prosecutors-trace-13-4-million-bitcoins-silk-road-ulbrichts-laptop/

Open Bitcoin Privacy Project 已经挑选了一些疏忽来教育用户关于隐私和推荐比特币服务的最佳实践,这个组织针对比特币钱包的隐私攻击开发了threat model:

https://github.com/OpenBitcoinPrivacyProject

他们的模型将攻击者分为几类:

区块链观察者 - 通过观察数值流的模式将不同的交易关联到同一个身份

网络观察者 - 通过观察点对点网络的活动将不同的交易和地址关联起来

物理敌手 - 试图找到钱包设备上的数据来篡改它或者进行分析

交易参与者 - 创建交易来辅助他们追踪和移除区块链上面活动的匿名性

钱包提供者 - 可能要求用户提供个人身份信息,然后观察他们的交易

Blockstream的 Jonas Nick 也做了很多关于比特币用户隐私方面考虑的研究。他有在一个很精彩的演讲中揭示了一些隐私漏洞,有一些对于轻量级SPV比特币客户端来说是毁灭性的:

https://www.bilibili.com/video/BV1pz4y167Uf/

比特币的一个很重要的隐私问题是来自区块链观察者,因为每个网络上的交易都是永久公开的,任何人现在和未来都可能是潜在的敌手。

因此,一个古老的最佳实践建议是永远不要重用比特币地址。

Satoshi甚至在比特币白皮书中写道:

“作为额外的防火墙,每个交易中都应该使用新的密钥对来避免被联系到同一个拥有者身上。有多个输入的交易中链接是无法避免的,这会必然的揭示出他们的输入来自同一个拥有者。风险是如果某个key的拥有者被揭露出来,链接会导致其他属于同一个拥有者的交易被暴露”

# 近期密码朋克创新

为了提升比特币用户的隐私性,众多的系统和最佳实践被开发出来,Dr Pieter Wuille 提出了 BIP32 - 多层确定性钱包即HD钱包,从而让比特币钱包更容易管理地址。

虽然隐私并不是 Wuille 的首要动机,HD钱包可以更容易的避免地址重用,因为这个技术可以轻松的为进来或出去的交易生成新地址。 椭圆曲线默克尔树 Elliptic Curve Diffie-Hellman-Merkle (ECDHM) 地址是提升隐私性的比特币地址模式。ECDHM地址可以公开的分享以及被发送者和接收者用来秘密的推导生成传统的比特币地址,这样区块链观察者就无法预测了。结果是 ECDHM 地址可以被“重用”并且不会像传统的比特币地址重用那样丢失隐私性。

一些 ECDHM 地址模式的例子包括 Peter Todd的Stealth地址:

https://github.com/genjix/bips/blob/master/bip-stealth.mediawiki

Justus Ranvier 的BIP47重用支付代码,

以及 Justin Newton 的 BIP75 out of band 地址交互等等。

比特币混合技术是一种更加劳动密集型的方法,用户可以此增加隐私,跟其他参与者混合比特币的概念类似于Dr Chaum发明的“mix networks”的概念

很多不同种类的混合算法被开发出来:

CoinJoin:

https://bitcointalk.org/index.php?topic=279249.0

- 这是 Blockstream的联合创始人 Gregory Maxwell 原创提议的混合算法,CoinJoin 本质上是让用户创建一个有很多来自多个人的输入的交易,然后将币发送给很多输出,有些输出就是payback返回给这些人,以此来混合输入输出,让你很难判断哪个输入对应哪个输出。

JoinMarket:

https://github.com/JoinMarket-Org/joinmarket/wiki

- 由开发者 Chris Belcher 创建,JoinMarket让比特币持有者可以允许自己的比特币通过CoinJoin跟其他人混合起来,从而赚取费用。它是使用一种智能合约,让你的私钥不会离开你的电脑(不会传输到网络),从而降低丢失私钥的风险。简单讲,JoinMarket允许你通过很低的费用就能以去中心化的方式提升了比特币的隐私。

CoinShuffle:

http://crypsys.mmci.uni-saarland.de/projects/CoinShuffle/coinshuffle.pdf

- 由德国一群Saarland大学的研究人员开发的一个去中心化的混合协议。CoinShuffle在CoinJoin的基础上做了改进,它不需要一个受信的第三方来装配混合的交易,所以也不需要额外的混合费用。

CoinSwap:

https://bitcointalk.org/index.php?topic=321228

- Maxwell开发的概念,CoinSwap 跟 CoinJoin 有着实质的不同,它是使用一系列4个Multisig 多签交易(两个托管支付,两个托管释放)来在两个交易对手之间进行无信任的互换,比 CoinJoin 效率更低,但是有提升更多隐私的潜力,甚至可以帮助不同区块链之间的币互换。

虽然混合等同于“隐藏众多东西”,实际“众多东西”多数时候并非很多,混合应该被视为提供一种混淆而非完全的匿名,因为它只是让普通的观察者很难追踪资金流,但是更多富有经验的观察者仍然可以从混合交易中去除混淆。

Kristov Atlas,Open Bitcoin Privacy Project的创始人发布了他在2014年发现的CoinJoin客户端错误的实现引起的漏洞:

https://www.coindesk.com/blockchains-sharedcoin-users-can-identified-says-security-expert

Altas注意到即使是用相当基本的分析工具,他仍然可以将69%的输入和53%的单独的CoinJoin交易的输出进行分组。

市面上甚至有很多其他的虚拟币在开发的时候已经充分考虑了隐私。

一个例子就是Dash,由 Evan Duffield 和 Daniel Diaz设计完成,它有一个特性叫做 “Darksend” - 是 CoinJoin 的升级版,两个重大的改进就是使用的金额额度和混合的频率。

Dash的混合使用了常用的 0.1,1,10和100 面值的DASH,从而让输入输出分组更加困难,在每个混合session,用户提交相同面值的输入和输出。

为了最大化混合带来的隐私以及让 timing attack更困难,Darksend 自动根据设置的时间间隔运行。

另外一个基于隐私的虚拟币甚至不是基于比特币开发的,Nicolas van Saberhagen在2014年发布了CryptoNote白皮书:

https://cryptonote.org/inside/

,这个概念已经在多个虚拟币项目中实现了,例如 Monero,主要的创新就是 密码学环形签名 cryptographic ring signatures 和独立的一次性key。

常规的数字签名,比如比特币中使用的,涉及的是单独的密钥对-一个公钥和一个私钥,这允许public address公开地址的拥有者可以使用私钥对一个交易进行签名来证明其是该地址拥有者。

环形签名 Ring Signatures:

https://link.springer.com/chapter/10.1007%2F3-540-45682-1_32

由 Dr Adi Shamir 和其他人在2001年提出,建立的基础是基于由 Dr Chaum 和 Eugene van Heyst 在1991年提出的 群组签名模式 group signature schema,环形签名需要一组拥有各自私钥和公钥的个人。

由环形签名证明的“声明”是:某个message的签名者是这个组的成员之一,跟普通的数字签名模式的主要区别是签名者只需要自己的私钥,但是验证者不能识别具体的签名者身份。

所以,当你遇到一个带有Alice、Bob和Carol 三个人公钥的环形签名,你只能确认他们中的某个人是签名者,但是你无法得知到底是谁给这个交易签了名,即谁是这笔交易的拥有者,它还提供了另一层的混淆就是当这些交易流过这个系统后,让区块链观察者更难以追踪这些支付的所有者。

确实非常有意思,环形签名是在揭发者的特定语境中开发的,因为可以匿名泄漏机密但是同时可以证明该机密的来源是值得信赖的(来自于某个已知团体的个人)

CryptoNote 也是被设计成可以缓解重复使用key和输入到输出追踪的风险,每个支付的地址都是一次性的key,从发送者和接收者的数据中推导出来。只要是你在输入中使用了环形签名,会对于“哪个输出被用掉”上增加更多的不确定性。

如果区块链观察者尝试对使用过的地址画一张图,通过区块链上的交易信息将他们连起来,这将是一个树状结构,因为没有哪个地址会被用两次,随着往图中添加更多的交易,可能性会指数级增加,因为每个环形签名都会造成数据在不同地址之间流动的模棱两可。

所以,你不能确定哪个地址是往哪个地址发送数据(资金)的。

决定于签名的环的大小,一个交易的模棱两可性可以从1/2变化到1/1000,每个交易都增加了熵值并且给区块链观察者带来额外的困难。

# 即将发生的密码朋克创新

虽然对于虚拟货币用户还存在很多隐私考量,随着密码朋克的持续努力,未来是光明的!

下一次在隐私领域的飞跃涉及到 1985年首次提出的零知识证明 zero-knowledge proofs , 目的是拓宽密码学协议的潜在应用:

https://people.csail.mit.edu/silvio/Selected%20Scientific%20Papers/Proof%20Systems/The_Knowledge_Complexity_Of_Interactive_Proof_Systems.pdf

2013年 Dr.Back首次提出 bitcoins with homomorphic value” 比特币同态价值:

https://bitcointalk.org/index.php?topic=305791.0

Maxwell一直在机密交易上推进,也是使用零知识范围证明来创建比特币交易,这种交易中数据(资金)除了交易的参与方之外对所有人都是不可见的。

这本身就是巨大的提升,但当你结合起来机密交易和CoinJoin,你可以建立起混合服务来服务于任何交易的输入输出的链接。

当 Maxwell 在 San Francisco的比特币开发者会议上展示 Sidechain 侧链元素的时候,我想起他曾说过:

“IETF的老人们一个最大的遗憾就是互联网没有建立在默认以加密方式传输数据的基础上”

Maxwell对比特币的隐私有着同样明确的感受,并且希望我们从一开始就有机密交易,我们已经看到 Blockstream 在 Liquid侧链中实现了机密交易,从而可以给交易所之间的转账打上面具:

https://www.coindesk.com/blockstream-commercial-sidechain-bitcoin-exchanges/

我们最近也看到 Maxwell 首次在比特币网络上成功开展了 ZKCP - zero-knowledge contingent payment 零知识代表支付:

https://bitcoincore.org/en/2016/02/26/zero-knowledge-contingent-payments-announcement/

,ZKCP 是一种转账协议,允许买家使用比特币以trustless非信任的方式从卖家购买信息。购买的信息只会在支付完成的时候才会转过去,并且完全可以保证支付完成后信息到达,买卖双方不需要信任对方或者依赖于任何第三方仲裁。

很多年前我写了关于 Zerocoin 的文章,并且注意到了为了让系统可用它所需要克服的技术挑战,从那时起,研究人员已经让证明更加高效而且已经用初代系统参数解决了信任问题,我们现在已经到达了风口浪尖,我们开始看到Zerocoin的愿景已经被 在 Wilcox-O‘Hearn 的领导下发布的 Zcash 所实现了!

https://z.cash/

Zcash 提供了完全的保密支付同时使用公链维护着一个去中心化的网络,Zcash 交易自动隐藏发送者,接收者以及区块链上交易的数额,只有拿着正确的 view key 的人才能查看交易的内容,由于 Zcash 交易的内容是被加密的和私有的,系统采用了最新型的密码学方法来验证支付。

Zcash使用了零知识证明构建,称之为 zk-SNARK,由其团队中资深的密码学家开发完成。

代替了公开的展示支付授权和交易数额,其交易元数据是加密的,zk-SNARKs用来证明这个交易的有效性,Zcash 基本上是第一个真正的实现了傻瓜式匿名的数字支付系统!

# 让朋克变成密码朋克

自密码朋克担负起责任和任务以来的几十年中,计算机技术已经发展到可以使个人和群体以完全匿名的方式相互交流和互动的地步。

两个人可以在完全不知道对方真实姓名或者合法身份的情况下交换信息,开展业务和谈判电子合同,自然的政府会考虑到国家安全,用以犯罪行为以及担心社会解体等担忧,希望拖慢或叫停这种技术的扩散。

引用自奥巴马:If govt. can’t crack encryption, then people are walking around "with a Swiss bank account in their pocket."

密码朋克深知如果我们想有任何隐私的话我们必须保护我们的隐私,人们数百年来通过耳语、黑暗环境、信件、关闭的大门、秘密握手和快递等方式保护隐私。

在20世纪之前,科技水平不足以产生强大的隐私保护能力,但同时科技水平也不足以支撑大规模的监视。

我们现在生活的世界中随处都是监视镜头,但是隐私却不是如此,即使当前隐私提升的技术存在了,我们现在已经进入到一个阶段可以称之为 加密战争2.0。

尽管密码朋克在第一次加密战争中取得了胜利,但我们不能容忍丢掉自己的桂冠。Zooko过去曾经历过密码朋克项目的失败,他警告说失败仍然可能:

Dear fellow Bitcoiners: no, we cannot just rest assured that Bitcoin's unique value prop outweighs all other considerations.

密码朋克相信隐私是人类权利的基础,包括来自政府的隐私,他们明白,由于任何原因(包括“受信任的权威”访问)都会削弱每个使用该系统的人的安全。

密码朋克书写代码,他们明白总得有人写出保护隐私的软件,因此他们担负起重任,他们发布代码让密码朋克同道们可以 学习它、攻击它从而改进它。

他们的代码是完全免费使用的,密码朋克不在乎你是否认可他们的软件,他们知道软件无法被摧毁而且广泛分布的系统也无法被关闭。

原文链接:

Bitcoin and the Rise of the Cypherpunks

https://blog.lopp.net/bitcoin-and-the-rise-of-the-cypherpunks/

# 比特币私钥管理

苦口婆心教你安全须知

https://blog.keys.casa/the-dos-and-donts-of-bitcoin-key-management/

泄漏的私钥:

https://allprivatekeys.com/

# 免费获取BTC

首先大家要搞清楚,比特币的最小单位是Satoshi, 而且其代码中使用的单位也是它,

1 btc = 100,000,000 satoshi

所以获取btc实际是在stack satoshi

三种渠道:

  1. 通过参加一些山寨币的airdrop空投,将其转成BTC,积少成多,如果某个山寨币爆发就恭喜你了,很多现在的主流币一开始都是在社区中赠送的,建议多关注一些你感兴趣的社区,即使得不到币,也能获取知识和技能

  2. 直接通过faucet免费获取,但是基本上很慢,只能获取少量的,不足以提现,除非你有耐心

    比如这个bonusbitcoin (opens new window)

  3. 推荐coinhako,目前有赠送活动 (opens new window)

# 实时数据

减半直播:

https://www.bitcoinhalving.com/

趣味走势图:

https://bitcoinal.com/

bitcoiner聚会:

https://www.recklessvr.com/