首页 资讯 正文

密码技术编织区块链技术

区块说 2019年12月07日 07:09
密码学一种协议,用来防止第三方查看私有数据。 密码学是区块链的底层技术,结合了数学、计算机科学、物理、工程学等学科。


数字经济时代,隐私保护问题日益突出。基于区块链的加密算法技术,用户可以对相应数据进行授权,从而确保用户对自己个人数据享有绝对的“自主权”。传统的区块链在技术层面只是用到了最为简单的密码学工具——哈希算法和数字签名算法。

被誉为“互联网安全教母”的宋晓冬认为,区块链本身并不能提供真正的隐私保护。V神曾提出通过环签名及零知识证明来提高以太坊的隐私保护功能。算力智库认为,区块链叠加零知识证明、同态加密等加密算法后才能实现隐私保护。

区块链发明者站在了计算机科学、密码学、博弈论这三个“巨人”的肩膀上,如果区块链用到的密码学技术不安全,那么所有这些区块链都会崩塌,不再有价值。

密码学主要有两个功能,一是防止数据被不该知道的人知道,二是让别人可以验证数据是真实的。 密码学对区块链的作用在于,它为区块链数据不可伪造、不可篡改、可公开验证和隐私保护提供了基础保障。这是区块链的信任之源,价值之泉。密码学是区块链的底层技术,没有密码学就没有区块链,没有密码学支撑的区块链不可能安全。

密码技术编织区块链技术。区块链是一串使用密码学方法相关联产生的数据块,每一个区块中包含上一个区块的hash值,用于验证其信息的有效性(防伪)和生成下一个区块。

其特点是:加解密使用相同的密匙;高效,使用于大量数据的加密场景;算法公开,安全性取决于密匙大小,但密匙越大效率越低,需要权衡在安全和效率中做权衡。

区块链中的密码技术有哪些?

布隆过滤器
布隆过滤器是一种基于 Hash 的高效查找结构,能够快速判断某个元素是否在一个集合内。假如给定一个内容和存储数组,通过构造Hash函数,使Hash值总量不超过数组的大小,就可以实现快速的基于内容的查找。如 “算法改变人生” 的 Hash 值如果是 “1000”,则存放到数组的第 1000 个单元上去。如果需要快速查找任意内容,如 “算法改变人生” 字符串是否在存储系统中,只需要计算 Hash 值,并用 Hash 值查看系统中对应元素即可。
布隆过滤器采用了多个 Hash 函数来提高空间利用率。对同一个给定输入来说,多个 Hash 函数计算出多个地址,分别在对应的这些地址上标记为 1。进行查找时,进行同样的计算过程,并查看对应元素,如果都为 1,则说明较大概率是存在该输入。布隆过滤器相对单个 Hash 算法查找,大大提高了空间利用率,可以使用较少的空间来表示较大集合的存在关系。 上面讲的Hash查找和布隆过滤器,基本思想都是基于内容的编址。

同态加密
这是一种可以对密文直接进行处理,跟对明文进行处理后再对处理结果加密,得到的结果相同。同态加密可以保证实现处理者无法访问到数据自身的信息。什么是同态呢?它来自代数领域,包括四种类型:加法同态、乘法同态、减法同态和除法同态。同时满足加法同态和乘法同态,则意味着是代数同态,即全同态。同时满足四种同态性,则被称为算数同态。在计算机中如果实现了全同态意味着对于所有处理都可以实现同态性。只能实现部分特定操作的同态性,被称为特定同态。

区块链中的应用:使用同态加密技术,运行在区块链上的智能合约可以处理密文,而无法获知真实数据,极大的提高了隐私安全性。虽然同态加密的优势很明显,并且已经实现,但是存在的问题就是需要较高的计算时间或存储成本,相比传统加密算法的性能和强度还有差距。

数字签名
数字签名可以证实某数字内容的完整性和确认其来源,也就是不可抵赖性。理论上所有的非对称加密算法都可以用来实现数字签名,常用算法包括 DSA(Digital Signature Algorithm,基于 ElGamal 算法)和 ECSDA(Elliptic Curve Digital Signature Algorithm,基于椭圆曲线算法)等。针对一些特定的安全需求,产生了一些特殊数字签名技术:
1、盲签名:签名者需要在无法看到原始内容的前提下对信息进行签名。实现对所签名内容的保护,防止签名者看到原始内容;同时实现防止追踪,签名者无法将签名内容和签名结果进行对应。
2、多重签名:当x 个签名者中,收集到至少 y 个(x >= y >= 1)的签名,即认为合法。x 是提供的公钥个数,y 是需要匹配公钥的最少的签名个数。它可以有效地被应用在多人投票共同决策的场景中。比特币交易中就支持多重签名,可以实现多个人共同管理某个账户的比特币交易。
3、群签名:群组内某一个成员可以代表群组进行匿名签名。签名可以验证来自于该群组,却无法准确追踪到签名的是哪个成员。同样存在一些问题,就是群签名需要存在一个群管理员来添加新的群成员,因此存在群管理员可能追踪到签名成员身份的风险。
4、环签名:签名者首先选定一个包括签名者自身的临时签名者集合。用自己的私钥和签名集合中其他人的公钥就可以独立的产生签名,而无需他人的帮助。签名者集合中的其他成员可能并不知道自己被包含在最终的签名中。环签名的主要用途在保护匿名性,属于一种简化的群签名。

数字证书
数字证书分为两类:加密数字证书和签名验证数字证书,前者用于保护用于加密用途的公钥,后者保护用于签名用途的公钥。两种类型的公钥也可以同时放在同一证书中。同时证书需要由证书认证机构CA来进行签发和背书。权威的商业证书认证机构包括 DigiCert、GlobalSign等。用户也可以自行搭建CA 系统,在私有网络中进行使用。一个数字证书内容可能包括证书域(证书的版本、序列号、签名算法类型、签发者信息、有效期、被签发主体、签发的公开密钥)、CA 对证书的签名算法和签名值等。证书的颁发者还需要对证书内容利用自己的私钥进行签名,以防止他人篡改证书内容。

总体而言,目前区块链技术在系统安全何应用安全等方面都存在着很多亟待解决的问题。这些问题也是区块链技术应用于更多核心领域时需要重视且解决的关键问题,值得进一步探索与深入研究。区块链的发展引起了产业界与学术界的广泛关注,其不断得到研究与应用。