区块链本身解决的就是陌生人之间大规模协作问题,即陌生人在不需要彼此信任的情况下就可以相互协作。那么如何保证陌生人之间的信任来实现彼此的共识机制呢?中心化的系统利用的是可信的第三方背书,比如银行,银行在老百姓看来是可靠的值得信任的机构,老百姓可以信赖银行,由银行解决现实中的纠纷问题。但是,去中心化的区块链是如何保证信任的呢?
实际上,区块链是利用现代密码学的基础原理来确保其安全机制的。密码学和安全领域所涉及的知识体系十分繁杂,我这里只介绍与区块链相关的密码学基础知识,包括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(Secure Hash Algorithm)并非一个算法,而是一组hash算法。最初是SHA-1系列,现在主流应用的是SHA-224、SHA-256、SHA-384、SHA-512算法(通称SHA-2),最近也提出了SHA-3相关算法,如以太坊所使用的KECCAK-256就是属于这种算法。
MD5是一个非常经典的Hash算法,不过可惜的是它和SHA-1算法都已经被破解,被业内认为其安全性不足以应用于商业场景,一般推荐至少是SHA2-256或者更安全的算法。
哈希算法在区块链中得到广泛使用,例如区块中,后一个区块均会包含前一个区块的哈希值,并且以后一个区块的内容+前一个区块的哈希值共同计算后一个区块的哈希值,保证了链的连续性和不可篡改性。
二、加解密算法
加解密算法是密码学的核心技术,从设计理念上可以分为两大基础类型:对称加密算法与非对称加密算法。根据加解密过程中所使用的密钥是否相同来加以区分,两种模式适用于不同的需求,恰好形成互补关系,有时也可以组合使用,形成混合加密机制。
对称加密算法(symmetric cryptography,又称公共密钥加密,common-key cryptography),加解密的密钥都是相同的,其优势是计算效率高,加密强度高;其缺点是需要提前共享密钥,容易泄露丢失密钥。常见的算法有DES、3DES、AES等。
非对称加密算法(asymmetric cryptography,又称公钥加密,public-key cryptography),与加解密的密钥是不同的,其优势是无需提前共享密钥;其缺点在于计算效率低,只能加密篇幅较短的内容。常见的算法有RSA、SM2、ElGamal和椭圆曲线系列算法等。对称加密算法,适用于大量数据的加解密过程;不能用于签名场景:并且往往需要提前分发好密钥。非对称加密算法一般适用于签名场景或密钥协商,但是不适于大量数据的加解密。
三、信息摘要和数字签名
顾名思义,信息摘要是对信息内容进行Hash运算,获取唯一的摘要值来替代原始完整的信息内容。信息摘要是Hash算法最重要的一个用途。利用Hash函数的抗碰撞性特点,信息摘要可以解决内容未被篡改过的问题。
数字签名与在纸质合同上签名确认合同内容和证明身份类似,数字签名基于非对称加密,既可以用于证明某数字内容的完整性,同时又可以确认来源(或不可抵赖)。
我们对数字签名有两个特性要求,使其与我们对手写签名的预期一致。第一,只有你自己可以制作本人的签名,但是任何看到它的人都可以验证其有效性;第二,我们希望签名只与某一特定文件有关,而不支持其他文件。这些都可以通过我们上面的非对称加密算法来实现数字签名。
在实践中,我们一般都是对信息的哈希值进行签名,而不是对信息本身进行签名,这是由非对称加密算法的效率所决定的。相对应于区块链中,则是对哈希指针进行签名,如果用这种方式,前面的是整个结构,而非仅仅哈希指针本身。
四、零知识证明(Zero Knowledge proof)
零知识证明是指证明者在不向验证者提供任何额外信息的前提下,使验证者相信某个论断是正确的。
零知识证明一般满足三个条件:
1、完整性(Complteness):真实的证明可以让验证者成功验证;
2、可靠性(Soundness):虚假的证明无法让验证者通过验证;
3、零知识(Zero-Knowledge):如果得到证明,无法从证明过程中获知证明信息之外的任何信息。
五、量子密码学(Quantum cryptography)
随着量子计算和量子通信的研究受到越来越多的关注,未来量子密码学将对密码学信息安全产生巨大冲击。
量子计算的核心原理就是利用量子比特可以同时处于多个相干叠加态,理论上可以通过少量量子比特来表达大量信息,同时进行处理,大大提高计算速度。
这样的话,目前的大量加密算法,从理论上来说都是不可靠的,是可被破解的,那么使得加密算法不得不升级换代,否则就会被量子计算所攻破。
众所周知,量子计算现在还仅停留在理论阶段,距离大规模商用还有较远的距离。不过新一代的加密算法,都要考虑到这种情况存在的可能性。
以太坊:在区块链时代保护用户隐私的坚实壁垒!
随着区块链技术的发展与应用,人们对于区块链时代的隐私保护问题越来越关注。以太坊作为目前最先进的智能合约平台,其保护用户隐私的能力绝对不容小觑。
首先,以太坊采用了公钥密码学来保护用户的隐私。每个以太坊用户都有自己的公钥和私钥,在交易时,用户可以用私钥对交易信息进行签名,再用公钥进行验证。这种机制保证了交易的可靠性和安全性,并且防止了其他用户对于用户交易信息的窥探和篡改。
其次,以太坊平台还采用了Zero-Knowledge证明协议。这种协议使得用户可以在不泄露自己隐私的情况下进行交易和验证,保护了用户的隐私和个人信息。Zero-Knowledge证明协议的运用使得交易信息对于平台以外的人群是不可见的,从而极大地提升了以太坊平台的隐私保护能力。
最后,以太坊通过建立智能合约来保障用户隐私。智能合约是一种难以修改、自动执行的合约,可以完全避免交易双方之外的人干扰交易。以太坊平台上的智能合约不仅保证了交易信息的可靠性和安全性,同时也使得用户的信息得到了完美的保障。
总之,以太坊平台为了保护用户的隐私,融入了多种安全保障技术,包括公钥密码学、Zero-Knowledge证明协议、以及智能合约等,建立了完备的安全运营体系,是当前最具有隐私保护能力的智能合约平台之一。未来,随着以太坊技术的不断发展,它的隐私保护能力也将得到进一步完善,让用户在安全、可靠地使用平台的同时享受到高质量、完美的私密体验。
以太坊如何进行隐私保护?
作为目前全球最受欢迎的智能合约平台,以太坊在区块链领域中已占据了重要的地位。但是,长期以来,以太坊一直面临隐私保护的问题,因为其区块链技术使得交易记录对所有人都是公开的。此外,因为在以太坊上执行的智能合约程序也需要公开访问,因此很难保护用户的个人信息。那么,以太坊如何进行隐私保护呢?
一种解决方法是使用zk-SNARKs协议。该协议可用于构建保密交易,其流程大致如下:
首先,使用zk-SNARKs通信协议加密将交易信息隐藏起来,然后该加密信息被发送到区块链上。到了区块链上之后,矿工会进行验证处理,以确保交易信息的正确性。在有效性验证通过之后,交易信息将被添加到区块链中。由于加密之后的交易信息对于除验证矿工和交易双方之外的其他人都是不可见的,因此可以有效地保护交易的隐私。
除此之外,Siphon协议也是保护以太坊隐私的一种方案。Siphon基于“状态通道”技术,可以通过在智能合约执行期间在两方之间建立通道,来实现快速并且私密地执行交易。这种方式也可以帮助交易双方隐藏交易的内容,从而提高交易的隐私性。
此外,以太坊的开发者正在积极研究其他方案来加强隐私保护。例如,Mimblewimble协议可用于创建保密的区块链,从而实现安全的交易,同时保护用户的隐私。
总之,以太坊作为一种基于区块链的智能合约平台,确实存在隐私保护的挑战。但是,经过不断的技术发展和研究,已经有了一些行之有效的方案来解决这些问题。在未来,以太坊的开发者还将继续接受挑战并探索更多的隐私保护方案,以满足用户的需求。