2024-09-17 16:18:35
区块链专家徐明星认为“去中心化”、“可扩展性”和“安全性”三者此消彼长一直是掣肘区块链大规模应用落地的难题。“去中心化”、“可扩展性”和“安全性”形成了一个“不可能三角”,追求“安全”与“去中心化”就无法兼顾“可扩展性”,追求“安全”与“可扩展性”就无法兼顾“去中心化”,追求“可扩展性”与“去中心化”就无法兼顾“安全”。从可扩展性来看,目前主流区块链平台吞吐量依然很低。从安全性来看,恶意节点会破坏区块链系统的安全稳定性,而且区块链基于公钥密码的体质可能会受到量子计算攻击。
徐明星就可扩展性和安全性提出了自己的解决方案,从链到“网”的思路,以DAG的方式,通过变革数据组织方式,以并发计算的方式极大提升区块链的处理速度。同时,分片技术可以将不同节点分配到不同的碎片中,每个节点只需对自己分片内的交易进行验证,不需要验证分片外的交易,从而减少了节点的重复计算
区块链使用安全如何来保证呢区块链本身解决的就是陌生人之间大规模协作问题,即陌生人在不需要彼此信任的情况下就可以相互协作。那么如何保证陌生人之间的信任来实现彼此的共识机制呢?中心化的系统利用的是可信的第三方背书,比如银行,银行在老百姓看来是可靠的值得信任的机构,老百姓可以信赖银行,由银行解决现实中的纠纷问题。但是,去中心化的区块链是如何保证信任的呢?
实际上,区块链是利用现代密码学的基础原理来确保其安全机制的。密码学和安全领域所涉及的知识体系十分繁杂,我这里只介绍与区块链相关的密码学基础知识,包括Hash算法、加密算法、信息摘要和数字签名、零知识证明、量子密码学等。您可以通过这节课来了解运用密码学技术下的区块链如何保证其机密性、完整性、认证性和不可抵赖性。
基础课程第七课区块链安全基础知识
一、哈希算法(Hash算法)
哈希函数(Hash),又称为散列函数。哈希函数:Hash(原始信息)=摘要信息,哈希函数能将任意长度的二进制明文串映射为较短的(一般是固定长度的)二进制串(Hash值)。
一个好的哈希算法具备以下4个特点:
1、一一对应:同样的明文输入和哈希算法,总能得到相同的摘要信息输出。
2、输入敏感:明文输入哪怕发生任何最微小的变化,新产生的摘要信息都会发生较大变化,与原来的输出差异巨大。
3、易于验证:明文输入和哈希算法都是公开的,任何人都可以自行计算,输出的哈希值是否正确。
4、不可逆:如果只有输出的哈希值,由哈希算法是绝对无法反推出明文的。
5、冲突避免:很难找到两段内容不同的明文,而它们的Hash值一致(发生碰撞)。
举例说明:
Hash(张三借给李四10万,借期6个月)=123456789012
账本上记录了123456789012这样一条记录。
可以看出哈希函数有4个作用:
简化信息
很好理解,哈希后的信息变短了。
标识信息
可以使用123456789012来标识原始信息,摘要信息也称为原始信息的id。
隐匿信息
账本是123456789012这样一条记录,原始信息被隐匿。
验证信息
假如李四在还款时欺骗说,张三只借给李四5万,双方可以用哈希取值后与之前记录的哈希值123456789012来验证原始信息
Hash(张三借给李四5万,借期6个月)=987654321098
987654321098与123456789012完全不同,则证明李四说谎了,则成功的保证了信息的不可篡改性。
常见的Hash算法包括MD4、MD5、SHA系列算法,现在主流领域使用的基本都是SHA系列算法。SHA(SecureHashAlgorithm)并非一个算法,而是一组hash算法。最初是SHA-1系列,现在主流应用的是SHA-224、SHA-256、SHA-384、SHA-512算法(通称SHA-2),最近也提出了SHA-3相关算法,如以太坊所使用的KECCAK-256就是属于这种算法。
MD5是一个非常经典的Hash算法,不过可惜的是它和SHA-1算法都已经被破解,被业内认为其安全性不足以应用于商业场景,一般推荐至少是SHA2-256或者更安全的算法。
哈希算法在区块链中得到广泛使用,例如区块中,后一个区块均会包含前一个区块的哈希值,并且以后一个区块的内容+前一个区块的哈希值共同计算后一个区块的哈希值,保证了链的连续性和不可篡改性。
二、加解密算法
加解密算法是密码学的核心技术,从设计理念上可以分为两大基础类型:对称加密算法与非对称加密算法。根据加解密过程中所使用的密钥是否相同来加以区分,两种模式适用于不同的需求,恰好形成互补关系,有时也可以组合使用,形成混合加密机制。
对称加密算法(symmetriccryptography,又称公共密钥加密,common-keycryptography),加解密的密钥都是相同的,其优势是计算效率高,加密强度高;其缺点是需要提前共享密钥,容易泄露丢失密钥。常见的算法有DES、3DES、AES等。
非对称加密算法(asymmetriccryptography,又称公钥加密,public-keycryptography),与加解密的密钥是不同的,其优势是无需提前共享密钥;其缺点在于计算效率低,只能加密篇幅较短的内容。常见的算法有RSA、SM2、ElGamal和椭圆曲线系列算法等。对称加密算法,适用于大量数据的加解密过程;不能用于签名场景:并且往往需要提前分发好密钥。非对称加密算法一般适用于签名场景或密钥协商,但是不适于大量数据的加解密。
三、信息摘要和数字签名
顾名思义,信息摘要是对信息内容进行Hash运算,获取唯一的摘要值来替代原始完整的信息内容。信息摘要是Hash算法最重要的一个用途。利用Hash函数的抗碰撞性特点,信息摘要可以解决内容未被篡改过的问题。
数字签名与在纸质合同上签名确认合同内容和证明身份类似,数字签名基于非对称加密,既可以用于证明某数字内容的完整性,同时又可以确认来源(或不可抵赖)。
我们对数字签名有两个特性要求,使其与我们对手写签名的预期一致。第一,只有你自己可以制作本人的签名,但是任何看到它的人都可以验证其有效性;第二,我们希望签名只与某一特定文件有关,而不支持其他文件。这些都可以通过我们上面的非对称加密算法来实现数字签名。
在实践中,我们一般都是对信息的哈希值进行签名,而不是对信息本身进行签名,这是由非对称加密算法的效率所决定的。相对应于区块链中,则是对哈希指针进行签名,如果用这种方式,前面的是整个结构,而非仅仅哈希指针本身。
四、零知识证明(ZeroKnowledgeproof)
零知识证明是指证明者在不向验证者提供任何额外信息的前提下,使验证者相信某个论断是正确的。
零知识证明一般满足三个条件:
1、完整性(Complteness):真实的证明可以让验证者成功验证;
2、可靠性(Soundness):虚假的证明无法让验证者通过验证;
3、零知识(Zero-Knowledge):如果得到证明,无法从证明过程中获知证明信息之外的任何信息。
五、量子密码学(Quantumcryptography)
随着量子计算和量子通信的研究受到越来越多的关注,未来量子密码学将对密码学信息安全产生巨大冲击。
量子计算的核心原理就是利用量子比特可以同时处于多个相干叠加态,理论上可以通过少量量子比特来表达大量信息,同时进行处理,大大提高计算速度。
这样的话,目前的大量加密算法,从理论上来说都是不可靠的,是可被破解的,那么使得加密算法不得不升级换代,否则就会被量子计算所攻破。
众所周知,量子计算现在还仅停留在理论阶段,距离大规模商用还有较远的距离。不过新一代的加密算法,都要考虑到这种情况存在的可能性。
区块链它是如何安全的?区块链中的安全性来自一些属性。
1.挖掘块需要使用资源。
2.每个块包含之前块的哈希值。
想象一下,如果攻击者想要通过改变5个街区之前的交易来改变链条。如果他们篡改了块,则块的哈希值会发生变化。然后攻击者必须将指针从下一个块更改为更改的块,然后更改下一个块的哈希值...这将一直持续到链的末尾。这意味着块体在链条的后面越远,其变化的阻力就越大。
实际上,攻击者必须模拟整个网络的哈希能力,直到链的前端。然而,当攻击者试图攻击时,链继续向前移动。如果攻击者的哈希值低于链的其余部分(当攻击者拥有51%的哈希值时,他们可以使用有效事务列表重写网络历史记录。这是因为他们可以比网络的其他部分更快地重新计算任何块排序的哈希值,因此它们最终可以保证更长的链。51%攻击的主要危险是双重花费的可能性。这简单的意思是攻击者可以购买一件物品并表明他们已经在区块链上用任意数量的确认付款。一旦他们收到了该物品,他们就可以对区块链进行重新排序,使其不包括发送交易,从而获得退款。
即使攻击者拥有50%的哈希值,攻击者也只能造成这么大的伤害。他们不能做诸如将钱从受害者的账户转移到他们的账户或打印更多硬币之类的事情。这是因为所有交易都由帐??户所有者签署,因此即使他们控制整个网络,也无法伪造帐户签名。
10000年的工作量如今只要200秒,区块链技术的一生之敌出现了
谷歌已经宣布开发出了世界上最强大的量子计算机,这意味着以往10000年才能完成的计算工作,量子计算机只需要200秒就可以完成。不仅如此,量子计算还将对区块链的安全性造成冲击,传统的区块加密技术会在未来会被量子计算降维打击。
量子计算是基于量子理论发展出的计算机技术,量子计算机遵循物理定律,它在同一时间可以采取多种状态并使用所有可能的计算排列方式执行任务,因此在处理数据的能力上得到了巨大提高。
传统的计算机理论依据现有的二进制计算方式,虽然现在测量每个晶体管选择0或者1的时间已经能够缩减到十亿分之一秒,不过这些器件转换状态的速度是有限的。随着我们向更小、更快的集成电路发展,人类已经接触到了这些材料的物理极限,想要从这个方面继续提高计算机的性能并非不可能,只不过这样做的成本和收益是不划算的。
量子计算尝试从另一个角度来解决这个问题,在量子计算机中,元素粒子的电荷正负可以表示成0或1,这些粒子被称为量子比特,它们的性质和行为构成了量子计算的基础。
量子计算运用了量子物理的两个最重要的原理,分别是量子叠加原理和量子纠缠原理。叠加原理将量子想象成磁场中的某个粒子,该粒子的自旋状态既可以和自旋上升态的场相同,也可以和自旋下降态的场相反。根据量子定律,当这些粒子进入叠加态后,它可以在取0或1的基础上完成叠加,这将使得它代表的数值发生变化。概括地讲,叠加原理让粒子分为两部分,一部分取0,一部分取1,比如一部分0和5个1的叠加,就会产生5。纠缠原理指在某一点上相互作用的粒子可以成对纠缠在一起,当我们得知其中一个粒子的自旋状态后,就可以从相反方向推断出它同对的另一个粒子。而且,不管相关粒子之间的距离有多大,它们都可以瞬间相互作用。纠缠原理就是指同对出现的粒子会产生相互作用,这样的作用和粒子之间的距离无关。
量子叠加和量子纠缠让量子计算拥有了强大的计算能力,普通计算机的两个存储单位只能存储四个二进制数字(00、01、10和11)中的任意一个,而量子计算机在拥有两个存储单位时,可以同时存储这四个数值。如果增加更多的量子单位,计算机的容量将会以指数方式扩展。
区块链技术的加密手段依赖于密码对,即私钥和公钥。公钥可以从私钥的对应项计算得来,但是不能反过来推知私钥。量子计算机能够通过跨越量级来实现这一点,也就是由公钥破解私钥,最终攻破整个加密体系。
不过,现有的量子计算机还不能完全达到这样的水平,谷歌的量子计算机目前具有53个量子比特,而想要对区块链技术产生影响,至少需要1500个量子比特才能完成。但是至少从理论上讲,量子计算是能够威胁到区块链技术的。
不过,想要扩展量子计算机也并非易事。虽然Shor算法可以通过公钥破解私钥,但是预计在近十年这种情况是不会发生的,因为目前的技术想要从现有的量子计算机基础上扩展30倍是非常困难的,不过科学的进步将使这一天加速到来。
虽然量子计算将重挫传统的区块链加密技术,但是它同样带来了新的密码系统,也就是量子密码学。量子密码学利用了物理学知识,保证在不知道信息的发送接收双方的情况下,信息不会泄露。量子密码不同于传统的密码系统,它更依赖物理学,而不是数学,这是它安全性更高的根本原因。
从本质上将,量子密码学的基础是利用单个粒子及其内在的量子特性发展一个牢不可破的密码系统,在不受干扰的情况下,任何形式的量子态都不能被测量。量子密码将采用光子传输密钥,一旦密钥被发送,就可以使用普通密钥的方法进行编码和解码。每个光子的自旋类型都代表二进制中的1或者0,一串光子将构成一个1和0组成的长字符串,这些字符串将传递信息。根据物理理论,正确构建出量子密码后,任何人都无法侵入系统。
在常规的加密技术中,破解私钥需要找到一个数的因子,而这个数将由两个巨大的质数的乘积构成,如果通过算法想要计算出这个结果,你需要从宇宙诞生的那一天开始算起。但是,这种常规加密技术存在弱点,一些弱键将会产生漏洞,并且摩尔定律不断提高计算机的处理能力,这些加密方法的破解虽然是困难的,但是并非不可能的。
量子密码就避免了这些问题,密钥被加密成一串光子,根据海森堡不确定性原理,在不改变光子的情况下,任何人都无法观测到这些光子存储的信息。在这种情况下,入侵者拥有的技术并不重要,因为物理学定律是难以打破的。
虽然量子计算拥有了无与伦比的速度,也可以击破传统的加密技术,但是它自身也非常脆弱。在量子计算的过程中,即便是最轻微的电磁波干扰,也会导致量子计算崩溃,所以量子计算机对环境的要求非常苛刻,在运行过程中需要与外界干扰完全隔离。并且,如果计算的过程中出现一个错误,会导致整个计算的有效性崩溃,也就是说量子计算的纠错会导致整个计算体系失效。
量子计算对区块链技术的降维打击是必然出现的,不过这也正符合科技进步的道理。所以,无论是区块链加密技术,还是量子计算技术,都值得人们好好研究。
区块链科普指南:什么是51%攻击?在加密世界中,当一个人或一群人控制了50%+1的网络单元时,就会发生51%的攻击。没有人说50%+1单位,所以简称为51%攻击。
当一个团队设法控制链接到一个特定区块链的网络的大部分,它被认为对它有绝对的权力控制整个区块链,这意味着交易的完整性和安全性不能再得到保证。
区块链如何抵御51%的攻击?
加密货币有不同的方式可以保护自己免受51%的攻击。毫无疑问,最为人所知的是,全球拥有庞大的矿商网络,其中包括数万甚至数十万人,这使得控制这一网络极为昂贵。
在这种情况下,区块链通常是自动保护的,因为接管加密货币所需的资源要重要得多,而且一旦网络得到控制,攻击不一定涵盖费用。
不需要太多的细节,我们只想说,可以添加额外的安全机制,目的是使这种攻击不可能发生。这可以通过使用一个具有多个控件的系统来实现,这有时会将这种攻击的需求从计算能力的51%提高到75%、90%,有时甚至是99%。
在其他情况下,一些区块链已经选择授权交易验证的有信誉的集中参与者,以避免这种攻击。然而,一些纯粹主义者不喜欢这个想法,因为它违背了区块链的宗旨,即分散交易。
我们真的应该担心51%的攻击吗?
比特币自诞生以来从未遭受过51%的攻击,也不太可能遭受这样的攻击。这个网络如此庞大,以至于做这件事的成本会高得惊人。
此外,当一个区块链正在经历一个51%的攻击变得清晰时,几乎可以肯定的是,所有令牌持有者将决定立即出售他们的资产,这将导致资产的价值损失。所以,从数学上来说,一群人试图控制一种加密货币是没有多大意义的。
为了了解实施51%攻击所需的资源,有一个不错的小网站叫做Crypto51,它可以让你找出实施这种攻击所需的散列速率和每小时的美元成本。
对51%攻击的结论
我们希望您现在有一个更好的理解的概念,51%的攻击和他们如何工作。正如你所看到的,他们需要巨大的资源,可能仍然不值得麻烦。
51%的攻击,理论上,是工作证明(PoW)系统的一个主要问题。然而,在实践中,一旦一个区块链已经足够发达,风险接近于零。
对于新的或小盘数字货币,再一次,没有真正的利益为黑客进行这样的攻击,因为加密货币的价格可以下降到0非常快,防止该组收获经济利益。
区块链如何保证使用安全?区块链项目(尤其是公有链)的一个特点是开源。通过开放源代码,来提高项目的可信性,也使更多的人可以参与进来。但源代码的开放也使得攻击者对于区块链系统的攻击变得更加容易。近两年就发生多起黑客攻击事件,近日就有匿名币Verge(XVG)再次遭到攻击,攻击者锁定了XVG代码中的某个漏洞,该漏洞允许恶意矿工在区块上添加虚假的时间戳,随后快速挖出新块,短短的几个小时内谋取了近价值175万美元的数字货币。虽然随后攻击就被成功制止,然而没人能够保证未来攻击者是否会再次出击。
当然,区块链开发者们也可以采取一些措施
一是使用专业的代码审计服务,
二是了解安全编码规范,防患于未然。
密码算法的安全性
随着量子计算机的发展将会给现在使用的密码体系带来重大的安全威胁。区块链主要依赖椭圆曲线公钥加密算法生成数字签名来安全地交易,目前最常用的ECDSA、RSA、DSA等在理论上都不能承受量子攻击,将会存在较大的风险,越来越多的研究人员开始关注能够抵抗量子攻击的密码算法。
当然,除了改变算法,还有一个方法可以提升一定的安全性:
参考比特币对于公钥地址的处理方式,降低公钥泄露所带来的潜在的风险。作为用户,尤其是比特币用户,每次交易后的余额都采用新的地址进行存储,确保有比特币资金存储的地址的公钥不外泄。
共识机制的安全性
当前的共识机制有工作量证明(ProofofWork,PoW)、权益证明(ProofofStake,PoS)、授权权益证明(DelegatedProofofStake,DPoS)、实用拜占庭容错(PracticalByzantineFaultTolerance,PBFT)等。
PoW面临51%攻击问题。由于PoW依赖于算力,当攻击者具备算力优势时,找到新的区块的概率将会大于其他节点,这时其具备了撤销已经发生的交易的能力。需要说明的是,即便在这种情况下,攻击者也只能修改自己的交易而不能修改其他用户的交易(攻击者没有其他用户的私钥)。
在PoS中,攻击者在持有超过51%的Token量时才能够攻击成功,这相对于PoW中的51%算力来说,更加困难。
在PBFT中,恶意节点小于总节点的1/3时系统是安全的。总的来说,任何共识机制都有其成立的条件,作为攻击者,还需要考虑的是,一旦攻击成功,将会造成该系统的价值归零,这时攻击者除了破坏之外,并没有得到其他有价值的回报。
对于区块链项目的设计者而言,应该了解清楚各个共识机制的优劣,从而选择出合适的共识机制或者根据场景需要,设计新的共识机制。
智能合约的安全性
智能合约具备运行成本低、人为干预风险小等优势,但如果智能合约的设计存在问题,将有可能带来较大的损失。2016年6月,以太坊最大众筹项目TheDAO被攻击,黑客获得超过350万个以太币,后来导致以太坊分叉为ETH和ETC。
对此提出的措施有两个方面:
一是对智能合约进行安全审计,
二是遵循智能合约安全开发原则。
智能合约的安全开发原则有:对可能的错误有所准备,确保代码能够正确的处理出现的bug和漏洞;谨慎发布智能合约,做好功能测试与安全测试,充分考虑边界;保持智能合约的简洁;关注区块链威胁情报,并及时检查更新;清楚区块链的特性,如谨慎调用外部合约等。
数字钱包的安全性
数字钱包主要存在三方面的安全隐患:第一,设计缺陷。2014年底,某签报因一个严重的随机数问题(R值重复)造成用户丢失数百枚数字资产。第二,数字钱包中包含恶意代码。第三,电脑、手机丢失或损坏导致的丢失资产。
应对措施主要有四个方面:
一是确保私钥的随机性;
二是在软件安装前进行散列值校验,确保数字钱包软件没有被篡改过;
三是使用冷钱包;
四是对私钥进行备份。