

布隆过滤器、同态加密、PKI体系……一文告诉你密码学在区块链中能做什么 | Odaily星球日...
source link: https://www.odaily.com/post/5141777
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

布隆过滤器、同态加密、PKI体系……一文告诉你密码学在区块链中能做什么
区块链大本营2019-10-19
理解为什么区块链可以防止消息被篡改、怎么进行数字身份认证

作者 | 孙启超 ; 整理 | Carol
来源 | CSDN博客 ; 出品 | 区块链大本营(blockchain_camp)
密码学是区块链技术的核心。所有交易信息都被编码进区块当中,而这些区块连接在一起则形成区块链结构。
随着计算机时代的到来,密码学跃升到了一个新的高度。那么,密码学在区块链当中又能做些什么、发挥什么作用呢?今天我们就来聊一聊这个话题。
本篇会讲述密码学在区块链中的具体的使用,从而理解为什么区块链可以防止消息被篡改、怎么进行数字身份认证。比特币中是如何通过多重签名实现多个人共同管理某个账户的比特币交易。
布隆过滤器
布隆过滤器是一种基于 Hash 的高效查找结构,能够快速判断某个元素是否在一个集合内。
首先回顾一下基于Hash的快速查找,由于Hash算法具有一一对应的特点,即一个内容对应一个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,基于椭圆曲线算法)等。针对一些特定的安全需求,产生了一些特殊数字签名技术:
盲签名:签名者需要在无法看到原始内容的前提下对信息进行签名。实现对所签名内容的保护,防止签名者看到原始内容;同时实现防止追踪,签名者无法将签名内容和签名结果进行对应。
多重签名:当 x 个签名者中,收集到至少 y 个(x >= y >= 1)的签名,即认为合法。x 是提供的公钥个数,y 是需要匹配公钥的最少的签名个数。它可以有效地被应用在多人投票共同决策的场景中。比特币交易中就支持多重签名,可以实现多个人共同管理某个账户的比特币交易。
群签名:群组内某一个成员可以代表群组进行匿名签名。签名可以验证来自于该群组,却无法准确追踪到签名的是哪个成员。同样存在一些问题,就是群签名需要存在一个群管理员来添加新的群成员,因此存在群管理员可能追踪到签名成员身份的风险。
环签名:签名者首先选定一个包括签名者自身的临时签名者集合。用自己的私钥和签名集合中其他人的公钥就可以独立的产生签名,而无需他人的帮助。签名者集合中的其他成员可能并不知道自己被包含在最终的签名中。环签名的主要用途在保护匿名性,属于一种简化的群签名。
数字证书分为两类:
加密数字证书:用于保护用于加密用途的公钥。
签名验证数字证书:保护用于签名用途的公钥。
两种类型的公钥也可以同时放在同一证书中。同时证书需要由证书认证机构CA来进行签发和背书。权威的商业证书认证机构包括 DigiCert、GlobalSign等。用户也可以自行搭建CA 系统,在私有网络中进行使用。
一个数字证书内容可能包括证书域(证书的版本、序列号、签名算法类型、签发者信息、有效期、被签发主体、签发的公开密钥)、CA 对证书的签名算法和签名值等。证书的颁发者还需要对证书内容利用自己的私钥进行签名,以防止他人篡改证书内容。
PKI体系
PKI的全称是Public Key Infrastructure公钥基础设施,是建立在公私钥基础上实现安全可靠传递消息和身份确认的一个通用框架。包含3个核心组件:
CA:全称Certification Authority,负责证书的颁发和吊销,接收来自 RA 的请求。
RA:全称Registration Authority,对用户身份进行验证,校验数据合法性,负责登记,审核过了就发给 CA;
证书数据库:存放证书,多采用 X.500 系列标准格式。可以配合LDAP 目录服务管理用户信息。
CA 是最核心的组件,负责完成对证书信息的维护。通常的操作流程为:
用户通过 RA 登记申请证书,提供身份和认证信息等 → CA 审核后完成证书的制造,颁发给用户 → 用户如果需要撤销证书则需要再次向 CA 发出申请。
回顾下本文,我们主要讲解了密码学中的一些核心问题和经典算法。相信读者已经对现代密码学的发展状况和关键技术有了初步了解。
掌握这些知识,对于理解区块链系统如何实现隐私保护和安全防护很有帮助。现代密码学安全技术在设计上基于专业的现代数学知识,如果想深入学习其原理,则需要更深入的学习现代的数学科学,尤其是数论、抽象代数。
区块链和密码学是相互促进发展的一个过程,区块链中大量使用了密码学的知识;同样的,为了满足区块链的不同场景,也反向促进了密码学的进一步发展。
原创文章,作者:区块链大本营。转载/内容合作/寻求报道请联系 [email protected] ;违规转载法律必究。
Recommend
-
76
作者:Soroush Khanlou, 原文链接 ,原文日期:2018-09-19 译者: WAMaker ;校对:
-
57
为什么引入 我们的业务中经常会遇到穿库的问题,通常可以通过缓存解决。 如果数据维度比较多,结果数据集合比较大时,缓存的效果就不明显了。 因此为了解决穿库的问题,我们引入Bloom Filter。 我们先看看一般业务缓...
-
56
-
59
为了解决布隆过滤器不能删除元素的问题,布谷鸟过滤器横空出世。论文《Cuckoo Filter:Better Than Bloom》作者将布谷鸟过滤器和布隆过滤器进行了深入的对比。相比布谷鸟过滤器而言布隆过滤器有以下不足:查询性能弱、空间利用效率低、不支持反向操
-
60
布隆过滤器是什么? 布隆过滤器可以理解为一个不怎么精确的 set 结构,当你使用它的 contains 方法判断某个对象是否存在时,它可能会...
-
47
公众号后台回复“ 学习 ”,获取作者独家秘制精品资料 推荐一个专栏: 《从 零 开始带你成为 JVM 实战 高手》...
-
52
作者:朱江,腾讯工程师。 | 导语 布隆过滤器是一种很实用的数据结构,能快速判断某个数据是否...
-
24
在程序的世界中,布隆过滤器是程序员的一把利器,利用它可以快速地解决项目中一些比较棘手的问题。如网页 URL 去重、垃圾邮件识别、大集合中重复元素的判断和缓存穿透等问题。 布隆过滤器(Bloom Filter)是 1970 年由布隆提出...
-
38
布隆过滤器你值得拥有的开发利器创建了一个 “重学TypeScript” 的微信群,想加群的小伙伴,加我微信 “semlinker”,备注 “1” 。阿里、京...
-
20
点击 蓝字 关注我们 只有获得了对加密数据直接执行复杂计算的能力,公共及私营部...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK