互联网大数据时代,人们每天都会接触数据,购物看评分,炒股看报表……但是,在这个“到处是陷阱”的年代,数据真的可信吗?它们没有被篡改过吗?
前段时间,日本第三大钢铁巨头——神户钢铁被曝出篡改铝制品性能数据;A股上市公司财务报表造假事件近年来也频频被曝光……
人们常说,真实而未篡改的数据是诚信的基础,通常,大多数人会依赖于政府机关的立法和舆论曝光,通过提高对造假的惩罚来杜绝恶意篡改,但好的法律需要好的“警察”,如果不能及时发现篡改行为,就不能完全避免风险和损失。如果有一种技术手段,既能提高数据篡改的难度和代价,又能让其他人快速而廉价的检验是否发生了篡改行为,造假盛行这一状况就会有很大的改观。
2017年,比特币的疯狂上涨引发关注,除了传说中的耗时耗电,比特币究竟为人类做了哪些贡献呢?很重要的一点就是比特币构建了一个高度可信的账本,完全杜绝了账本的篡改行为。
这是因为比特币采用了区块链技术作为底层支撑,使得区块链在没有行政监管的条件下,还能保证货币交易数据写入账本之后不会被篡改。对此,区块链领域的业内人士将其称之为“不变性”。
那么,这种不变性究竟该如何理解?它又是怎样实现的?它和普通民众究竟有什么关系?本文尝试对这些问题进行解答。
什么是区块链的不变性?
通常,不变性的具体含义是指某一事物不会随着时间而改变。
以比特币为例,交易数据是在不停扩展的,因此在区块链的范畴内,不变性是指一旦交易被写入到账本以后,任何人都无法改变它。通过区块链,数据的提供者可以证明其提供的数据没有被更改过,而数据的接收者可以明确其接收的数据没有被篡改。
值得注意的是,这种不变性是面向所有人的,区块链维护的账本和银行的账目并不一样。对于银行账目,作为一个普通用户,你只能读取你本人的账本,却无法对历史数据进行更改,但是,其他一些更高权限的人,比如银行内部的系统管理员就具备完全的修改数据能力。而区块链技术则保证了任何人,包括系统管理员,都无法对历史记录进行修改。
不过,区块链技术的不变性并非绝对的。
举一个简单的例子,你写了一条信息准备发送,在发送之前,你可以随意修改它,这是没有人知道的。如果你已经发送给一位朋友,这条信息对你来说就有一定的不变性,你想改变它,你可以请你的这位朋友删除原来的短信,然后你重新发送,这样其他人就不会知道你修改了这条短信。那么,如果你群发给了很多人呢?对你来说这种不变性就很强了,因为你要说服每一位短信接收人去删除原始短信,理论上,这是可以实现的,但是现实很残酷,群发的数量越大,数据改变的难度就越大。
区块链也基于同样的原理。对于数据篡改者来说,篡改数据并不难,困难的地方在于怎么不让别人发现这种篡改,只要能让别人快速的验证数据被篡改过了,那就说明这次篡改行为是失败的。这就变相地提高了修改某一事物的难度。
综合起来,区块链的不变性包含了两个方面的内涵:一是给攻击者制造难关,二是方便用户对篡改的检测,但是,具体过程是怎么实现的呢?
区块链的不变性怎样实现?
在金融领域,账本记录了资产和现金等资源的交易情况,是十分重要的财务记录。我们每个人在银行都有相应的流水记录,而每一条记录之间的顺序通常是按时间进行排序和编号的。这种流水式的账本对于有权限的人来说,篡改起来是非常容易的,比如,他们把几条记录里的内容稍做修改,不仔细查看内容很难看出来。
下图就展示了一个例子:有人把第4页的一行内容进行了修改,你可能很难看出前后的区别,因为账本的变化不够显著(参见下图)。很显然,这种普通的账本篡改起来非常简单,而检查是否篡改却十分困难。
根据这一原理,用户的任何篡改都能反映到页码的变化上。为了更便于检测,我们希望即便只是对内容进行了极小修改,页码都能面目全非。这样做的一个好处是篡改者很难掌握页码的变化。那么,如果有一种账本,他把每一页的内容和页码进行关联,不管对第4页的内容进行了何种修改,页码都会发生突变,比如篡改后第4页的页码变成了40,这样的话,篡改行为就能很快被检测出来。这就是区块链防篡改的第一个主要原理:将页面内容和顺序编号进行关联。
但这样也给真实的记账过程带来一个问题——由于页码的不可控制,记账时很难生成连续的页码,那么,账本的顺序该怎样维护呢?区块链中,在新加入一页账本的时候,就把上一页账本的页码写到当前页的开头,这样就能对所有账本页进行排序了,典型的一个区块链就可以表示成下图的形状:
一个有效账本的第一个规则是:必须保证前后两页的页码一致性。一旦出现页面链接不上,说明账目有假。
有了这样一个账本之后,怎么样才能得到一个有效的篡改账本呢?
比如,修改第200页上的某一笔交易,很显然,第200页的页码也发生了变化,那么,为了保持整个区块链的一致性,你必须修改第201页头部记录的页码,由于第201页也变了,那么必须修改第202页头部的页码。也就是说,必须把第200页之后的所有账本都修改了。乍听上去,篡改数据只是增加了一些繁琐度,因此我们需要第二条规则。
一个有效账本的第二条有效性规则是:每一个页码都必须小于一个固定数值。符合第二条规则是极为困难的,这是由于区块链从内容到页码的映射过程有很强的不可预测性,篡改者只有不停地进行随机测试,这个计算量非常大,如果运气不好,上亿次的尝试才能改好一页。
如果一个攻击者的运气极佳,能生成一个有效的篡改账本,但区块链还为他准备了第二条预防方法:在许多台机器上备份统一的账本。对比不同机器上的账本也不用那么复杂,只要对比一下最新页的页码就可以了,如果发现你和其他多数人不一样,就知道你进行了篡改,也就是说,你花费了很大的力气伪造了一本账,别人只要花不到一秒钟,就能知道你做假了。
唯一的一种实现篡改的可能性是:你掌握很大的计算资源,并串通大量攻击者同时改写了网络上的大部分账本,但这种可能性微不足道,技术本身足以保证区块链账本数据的不变性。
不变性的应用
利用区块链的不变性,我们可以解决很多实际问题。除了保证数据不被篡改已经在金融支付行业成功应用以外,还有哪些业务场景有可能会借助区块链的不变性特点呢?
首先是在教育认证行业。学历证书、技能证书等材料直接反映了一个人的能力和教育经历,而用人单位会对招聘人员的能力具有一定程度的要求。如此,有一些求职者会伪造学历证书作为踏入职场的敲门砖,而在当前,学历证书的伪造似乎成了一门产业,伪造的纸质证书足以以假乱真。那么,可否考虑用区块链技术来防止证书被伪造或篡改呢?
近年来,麻省理工学院使用比特币区块链进行了认证测试,并开发了相应的证书系统用于学术、专业和劳动认证。2015年10月,该系统为参加30周年庆的校友颁发了证书。
此外,墨尔本大学也宣布发起区块链认证和审核计划,允许通过一种隐私、安全且持久的方式验证学生的证书。
由于区块链证书的不可伪造性,一方面,可以更有效率的让用人单位进行学历审查,也能为优秀的人才创造一个公平的竞争环境。
其次是在医疗行业。近年来,医疗纠纷频频发生,其中有不少是由于病历或处方等报告上出现的错误信息和疏漏导致的。那么,如何防范此类事件的发生呢?将病人的所有医疗记录用区块链进行存储和保护不失为一种有效途径。
目前,基于区块链的医疗应用已逐步成形,阿联酋最大的电信公司之一Du已经与大型私人医疗服务提供商NMC Healthcare建立合作关系,开始使用区块链技术来存储电子健康记录。如此,可以确保数据完整性和零错误,同时加强医疗服务提供者和患者之间的信任。
另一个重要的问题是假药的生产。根据世界卫生组织的统计,假药占据医药市场的10%,发展中国家的数据则接近30%,这对患者的健康和安全造成了威胁。目前,包括因特尔、IBM等一些研究机构共同发起了反药品伪造项目,在这个项目里,每一个厂家生产的药品都会附带相应的生产时间记录,甚至包括药物的整个供应流程和主要成分,并在区块链上保存起来,这样就可以随时检测药品的生产时间和地点,从而有效对抗市面上的假药,对保护患者生命健康具有十分重要的意义。
最后,需要指出的是,在区块链不断火爆的今天,多数人只把它当做又一场全民概念在炒作。然而,当今天的我们需要随时给自己的手机充电时,却忘记了1831年10月28日夜晚被嘲笑的法拉第——电磁学之父;当今天的我们习惯了淘宝购物时,却忘记了十多年前“网购等于欺诈”的各种言论,更忘记了互联网发起之初受到的质疑。
电和互联网在产生之时,人们常说“虚幻”二字,我们有燃油和报纸就够了。现在的你或许嘲笑当时之人多么的愚昧可悲,殊不知自己也是时代的替代品。区块链诞生至今,“缥缈虚幻”的评价从未间断,比特币更是非议重重,但是不管遭受了多少黑客的攻击,它构建的诚信大厦却从未被破坏过。或许,未来的一天,“上链”也会像“上网”一样随处可见,那时的你,会怎么看待今日的你呢?