区块链展现了以密码技术为核心构建信息系统安全的新潮流
区块链技术的诞生可以追溯到20世纪80年代开始萌芽的美国“密码朋克(cypherpunk)”运动。彼时,密码技术从70年代转入民用领域刚过了10年左右,一批对“神秘”的密码技术充满好奇的技术极客正在涌现,而“赛博空间”的思潮正如火如荼。密码朋克的信念就是用密码技术来实现个人在赛博空间的彻底隐私和信息自由,反对美国政府对密码技术的操控和限制,以及对于个人隐私的监控。用技术而非空谈来实现理想,成为密码朋克的文化,“密码朋克编写代码”是其标志性的口号。
1992年,由Eric Hughes等人组织成立了一个小的讨论群体,“密码朋克”名称被提出。同年“密码朋克”加密邮件列表被创建,宣告了密码朋克正式登上历史舞台,并发展成为讨论数学、密码学、计算机科学、政治和哲学、个人观点、攻击技术等话题的活跃邮件列表组织,据说超过千人。许多著名技术专家、学者也参与其中,包括密码学家、电子支付技术的先驱者、国际密码研究协会(IACR)发起人David Chaum,维基解密创始人Julian Assange,智能合约提出者、计算机学家Nick Szabo,Intel公司资深科学家Timothy C. May,PGP联合发明人Jon Callas,点对点数据共享协议BitTorrent发明者Bram Cohen,密码学家、经典著作《应用密码学》作者Bruce Schneier,密码专家、侧信道攻击的提出者Paul Kocher……
电子支付的匿名性和安全性作为重要方向自然也是密码朋克的技术主题之一。1983年,时任加州大学圣芭芭拉分校计算机系学者David Chaum在Crypto学术会议上发表论文《用于不可追踪支付的盲签名》,开创性地提出了用基于“盲签名协议”的公钥密码方案达到电子支付的强隐私性——银行也无法追踪电子支付踪迹,开启了隐私支付技术的先河,这和现在信用卡支付系统完全由发卡行掌握用户所有支付记录形成鲜明对比。
1985年,David Chaum发表在“Communications of the ACM”期刊上的论文《无需身份证明的安全》,提出了可以保护个人和组织隐私和安全的大规模自动化交易系统的设想,更是被后来的密码朋克组织奉为技术源泉。在此启发下,密码朋克们前赴后继,进行了各类“电子货币”的技术实践,包括David Chaum自己的Ecash。Ecash虽然解决了支付隐私问题,提出了“离线支付”、可拆分电子现金等很有创意的技术,但其无法解除对中心化系统的依赖——需要一个中心系统来检查电子现金是否被重复使用过(被称为“双重支付”),存在单点故障。这种将可信建立在中心化系统的实现与密码朋克自己掌控隐私与安全的理念有所相悖。华裔计算机极客Wei Dai在1998年提出的b-money构想以及计算机学家Nick Szabo提出的Bitgold方案,基于“点对点网络”,并通过可信时间戳来维护交易的顺序,解决“双重支付”问题,从而试图不依赖于中心服务器。这些方案十分具有启发性,但仅仅停留在理论设想上,其中还有若干核心的安全细节无法得到解决。
2008年,中本聪在“密码朋克”邮件列表组中发表了《比特币:一种点对点的电子现金系统》,作为比特币方案的底层技术,“区块链”概念被正式提出。暂且不讨论比特币本身是否真正具有实际应用价值,单从技术角度来看,区块链对信息安全领域是十分具有启发性的。首先,方案提出了完全由分布在各地的大量客户端之间点对点交互自然形成“系统”,在该方案中,传统的安全核心——中心服务器——并不存在,其次,任意的一个客户端以匿名方式参与,可自由加入“系统”,也可随时离线,此外,在这样的分布式匿名“系统”中还需对任何客户端发起的价值转移请求达成稳定一致的共识。与经典的以服务器为中心的信息系统架构相比,比特币方案的构想无疑将安全问题推向了极致:失去了中心化服务器这一可信的安全“锚点”,在完全开放互联的“点对点”网络中交互,通信的参与方之间保持匿名,在缺乏信任锚定的前提下承载高价值的应用场景。传统信息系统的防御手段——“保边、护线、强内”在此完全失效。
正是在这种特殊的安全构想前提下,比特币的区块链方案首次展示了以密码技术为核心来构建开放式、分布式信息系统安全的可能。方案采用两类密码原语,椭圆曲线公钥密码算法和哈希算法,在此基础上构建基于工作量证明(PoW)的共识协议、基于数字签名的交易、基于Merkle Tree的交易存储区块以及区块间的哈希链等核心机制,再加入经济激励机制,通过打造全局可信、难以篡改的分布式共享交易账本,一一解决了安全与信任的种种难题。尽管远非完美,但比特币从2009年上线至今,在完全开放和匿名的分布式网络环境中,其安全性依赖密码技术支撑了十年的考验压力。
事实证明,区块链技术是具有较大的潜在应用价值的,既然比特币方案能够通过密码技术以非中心化的方式解决开放环境下陌生人之间直接点对点进行价值转移与信任合作问题,那么经过提炼和演变,比特币背后的区块链技术也可用来构建适用于真实世界的信任机制。在此背景下,Linux基金会于2015年发起了超级账本(HyperLedger)的开源项目,面向企业级应用需求,探索区块链技术在企业间构建信任合作应用的可能,吸引了IBM、Intel等众多企业巨头的参与,从此掀起了在商业领域实践区块链技术的研究热潮。由此形成了直接面向于C端的公有链和面向于B端的联盟链/私有链的两大技术阵营。
当代前沿技术的发展越来越依赖于基础学科及其应用价值的挖掘。正如量子物理学之于量子计算机技术发展、数学之于深度学习技术发展,密码技术对于区块链这类新型信息技术的发展具有决定性作用。
区块链技术发展将与密码技术的应用发展形成长期良性的互动
尽管区块链概念被提出已近10年,但目前仍处于技术应用的较早期阶段。区块链技术的发展将与密码技术的应用形成长期良性的互动,在相互促进中共同发展。从目前发展现状来看,区块链的技术瓶颈主要存在于性能、安全与隐私保护、跨链互通等几大方面,这些问题尤其在以直接面向大规模C端应用为目标的公有链领域更为突出。
公有链从目标上来看过于理想化,然而这些看似不切实际的目标却不断激励着技术极客和学术界投入巨大的研究热情。为了解决比特币PoW共识机制导致的大量能源消耗问题,目前基于权益证明(PoS)的共识机制正形成研究热潮,比如以太坊项目制定了一个共识机制的升级计划,将逐步从PoW过渡到被称为Casper协议的PoS共识机制,爱丁堡大学的Aggelos Kiayias等发表的名为Ouroboros的PoS共识机制的相关论文在2017年被顶级密码学术会议Crypto收录,而图灵奖获得者Silvio Micali针对共识算法的分叉等问题在2017年提出了名为Algorand的PoS共识算法,以极大的概率确保共识算法收敛一致,避免分叉的产生;在隐私保护领域,由于区块链的分布式账本验证过程既需要记账节点能够验证交易的正确性,又需达到隐私性,因此技术极客们和学术界前赴后继,提出了几代解决方案,从最早先比较偏向“工程化思想”的“混币”技术,发展到利用密码学的环签名技术大大提升匿名效果,直到高级密码学方案零知识证明zk-SNARK协议被采用以达到彻底的隐私保护;为了解决区块链性能瓶颈问题,基于“可撤销的哈希锁定合约”技术的链下协议“闪电网络”方案被提出,基于有向无环图(DAG)技术的新型区块链账本方案则提供高并发交易的可能性。
由此可见,以密码技术为核心发展起来的区块链技术在成长的道路上将不断地为密码应用提供广阔的实践空间,大大推动密码技术应用的研究,而密码技术研究的成果又不断反哺区块链的发展,为其攻克一个又一个技术难关。尤其是公有链在挑战更高目标过程中带来的密码技术方案的新思想、新技术又为服务于实际需求的联盟链/私有链带来有价值的技术启发,推动区块链在实际商业领域的应用加速。
区块链是在互联网技术发展到一定阶段提出的融合创新技术,而且提出之初就是以密码技术为核心进行构建的,这和早期的互联网设计原则形成了天壤之别。基于密码技术与区块链技术的这种良性互动将不断形成化学反应,持续推动技术向成熟发展,从而为大规模的商业应用打下基础。
密码技术在区块链领域发展过程中还将伴随着长期的挑战
尽管密码技术和区块链领域的互动已经取得了一系列令人瞩目的技术突破,但是和任何一个新兴技术领域类似,其发展过程中还存在着很多困难与挑战。
首先,和传统的中心化系统相比,区块链由于需要在众多节点间通过共识机制达成一致,因此其性能目前还比较低下。Visa的交易性能峰值在50000TPS左右,淘宝2017年双11承载的交易峰值更是达到了325000TPS。然而,基于PoW共识的比特币仅为7TPS,被称为区块链2.0的以太坊也仅在数十TPS量级,虽然采用混合共识、PoS共识的一些公有链项目在性能上相比PoW共识的项目有了明显的提升,但一般也在数百上千TPS。面向企业级应用的联盟链,基于PBFT共识机制,可达到数千TPS,但联盟链是以选取较少的共识节点为代价,共识一般仅需要在几个到几十个节点间达成,当节点数增多,共识性能将大幅下降,因此可扩展性是其主要的限制。由于性能的瓶颈导致区块链当前的应用场景比较适合于高价值、低频的交易领域,还无法很好地支撑小额支付等场景。目前来看,区块链的性能主要受到共识算法的影响,对于某些宣称能达到很高性能的区块链项目,基本都是需要牺牲一头去换取另一头,结合分片、分层等手段,但需要与特定实际场景相结合。
其次,区块链核心技术的突破还需要依赖密码技术底层算法、协议的突破。相比于其他信息技术领域,在区块链领域,一些高级的密码方案已经得到了实践。比如为了实现完善的隐私保护,从Zcoin/Zcash项目到以太坊项目升级路线中,零知识证明均受到了很大的关注。但是,零知识证明协议无论理论还是实践层面都较为复杂,如Zcash基于的zk-SNARK协议虽然在隐私性上达到了前所未有的保护程度,但是根据性能测试,在一个4核服务器上,生成一次隐私转账要占用3.2GB内存和1分钟左右的运行时间,这限制了其技术应用。再如,有一些项目在研究基于全同态加密解决区块链隐私与安全问题,但从目前全同态加密的学术进展来看,还远未到达能够落地实践的阶段。此外,为了抵御未来量子计算机发展对现有密码体制尤其是公钥密码体制带来的颠覆性冲击,密码学术界已经发展出了几类抗量子密码算法,在区块链发展的过程中,需要及时关注并融入这些新的密码算法,以打造牢固的安全根基。可以说,区块链核心技术的攻关将长期伴随着密码技术底层学术的突破,而这些密码底层算法、基本协议的研究已经属于密码原语(或接近原语)层面上的研究,突破起来将十分艰难,但每一次大的进展将有可能助推区块链技术上一个台阶。
再次,相比一般的工程技术,密码技术是一个高度专业的领域,具有密码学应用专业水准的工程师较为匮乏,再加上区块链专业人才的缺失,两者结合更是对行业人员的巨大挑战。密码技术是区块链的基础核心,区块链技术多年以来一直集中在密码极客圈子中发展,形成了一个小众的生态。近几年来,现实应用对区块链技术越来越重视,密码学术界、世界科技巨头均纷纷投入研究,不过区块链要发展成为全球有影响力的技术产业,需要大量的高素质工程师,不仅能够和密码学术成果对接,而且还需要具备高水平的密码工程能力。而密码技术在区块链的工程化实现中还存在密钥误用、代码漏洞等诸多不易察觉的安全隐患。这将是密码技术在区块链领域发展过程中需要长期面对的。
综上所述,密码技术在区块链领域面临的挑战将长期存在,既有体系架构性能和安全权衡的挑战,也有密码底层技术突破的挑战,以及密码工程实践技术方面的挑战。
密码技术是否能构成区块链安全的全部
区块链脱胎于密码朋克理想主义的技术实践。密码朋克认为,只有自己掌控的设备端才是可信的,“代码即法律”,无人能够僭越。在这种思维的引导下,基于密码学原理构建的方案才被认为是真正牢不可破的,换而言之,安全必须完全构建在密码技术上才值得信赖。这种乌托邦式的理想,在密码朋克圈内是容易被理解的,然而,是否完全适用于真实世界?
答案是否定的。以政府、权威机构来构建信任体系是现代社会治理的核心需求,而密码朋克的“理想”对于社会大众而言过于超前,任何技术都有其现实局限性,放任其在现实世界任意蔓延,不仅无法达成技术理想,反而会引发新的潜在危机。
首先,密码技术对于普通大众而言太过艰深晦涩,大众很难具备密码极客的专业素质,要让大众完全通过技术手段对自己的信息安全负责有点不切实际。比如,各类典型的公有链在个人端的核心安全完全依赖于数字签名技术的私钥,一旦私钥保护不善,没有任何途径可以追回个人损失。这就要求大众掌握专业的密码安全意识和繁琐的私钥备份、保护机制,对于大众的个人要求过高,限制了客户体验。而在现实世界中,以权威机构为信任主体,个人端一旦发生问题,还可以通过身份核验的方式请求系统实施救济措施,甚至进行法律追溯。
其次,在完全去中心化的公有链项目中,当社区对技术路线产生分歧,往往就会面临分裂,从而导致区块链硬分叉。2016年,黑客通过以太坊the DAO众筹项目的智能合约漏洞,盗取了大量以太坊用户的虚拟代币,社区对是否应该通过强制修改以太坊代码找回损失产生分歧,以至于后来分裂成ETC和ETH两个以太坊项目。2017年底,在过度炒作下,比特币频繁被分叉,甚至有人将分叉作为虚拟币的“印钞”手段(IFO),乱象重生。试想,万一核心的密码机制突然面临严峻的安全问题,要协调所有用户一起升级可能并不容易,对于以密码技术为唯一屏障的某些公有链项目而言可能是毁灭性的,现实世界的经济秩序如果基于这样的基础来构建,恐怕将陷入严重的安全危机。
此外,完全去中心化的公有链项目通过原理和代码公开来获取信任,认为每个用户通过对“白皮书”的理解、对代码的审核即能够进行判断,从而就应该产生信任。这种构想在现实中被证明太过理想化。密码方案的安全性分析,即使对于密码学资深学者来说,也是十分专业的领域,普通大众更是很难具备专业能力。于是乎,各类别有用心的炒家利用信息不对称、大众的盲从心态进行虚假的技术概念包装,以专业门槛抬高认知门槛,以技术之名行金融诈骗之实,给社会经济秩序带来极大的混乱。
因此,将密码技术、代码凌驾于社会信用体系与治理体系之上,拒绝监管的同时也将会失去权威信用体系的背书和责任兜底。这也就决定了区块链技术应用落地还有很长的一段路要走;在充分肯定区块链技术发展前景的可行性的同时,我们也不能过于乐观和盲从!