| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 区块链 -> 分层身份加密(HIBE)技术原理解析(上) -> 正文阅读 |
|
[区块链]分层身份加密(HIBE)技术原理解析(上) |
本文作者长安链核心开发工程师万明超,朱子彧。 概述 ? 身份分层加密(Hierarchical Identity-Based Encryption,HIBE)是对属性加密(Identity Based Encryption,IBE)的一种改进方案,它是一种由层级结构定义的属性加密,并且拥有层级化的解密能力管理。区块链技术由于可以在无需第三方的情况下实现所有数据的信息公开透明、不可篡改、不可伪造等特性,在诸如数字政务、数字货币、金融资产交易结算等领域具有广阔的应用场景。很多区块链应用场景中,包括我们的长安链,都会存在数据按层级划分可见性的需求,允许上层的用户/节点查看下层用户/节点的数据,但是处于下层的用户/节点无法查看上层用户/节点的数据,并且同一层级的用户/节点间的数据不可见。
谈到密码学与加密技术,必然要提及密码学的两个大体制:私钥体制与公钥体制。私钥体制运用了对称加密的思想,对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secretkey)。对称加密有很多种算法,由于它效率高,所以被广泛使用在很多加密协议的核心当中。 1976年,美国两位密码学者Diffe和Hellman在该年度的美国计算机会议上提交了一篇名为论文“密码学新方向”,提出了著名的公钥密码体制的思想。公钥密码运用了非对称加密的思想(Asymmetric Encryption),与传统的对称密码体制中通信双方拥有相同的传输密钥不同,在公钥密码体中,每个通信方均拥有一个密钥对,即公钥(public key)和私钥(private key),在加密方案中分别用于加密和解密消息,在签名方案中分别用于验证和产生签名。 公钥体制的缺陷 公钥加密也不是尽善尽美的,随着时间的推移,很多潜在的问题暴露了出来。一个最大的问题就是,在数字签名的过程中,如何抵御中间人攻击。无意间看到了解释数字签名和数字证书的blog,其中的插图可以非常形象地说明其中的过程。原文网址:http://www.youdzone.com/signature.html 道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成"数字签名",写信给苏珊,让苏珊用假的鲍勃公钥进行解密。为了确保苏珊能拿到属于Bob的公钥,这时候就需要借助公钥基础设施(例如PKI体系),也就是一个可信的第三方。在基础公钥设施中,存在一个称为证书颁发机构(CA,Certificate Authority)的可信方,负责将自己的数字签名与Bob的公钥绑定形成并颁发相应的公钥证书。公钥证书可以将用户的身份与其公钥进行绑定,只有当公钥证书上对该绑定信息的签名合法时,对应的公钥才会被认定为一个用户的合法公钥。公钥证书较好地解决了公钥的真实性和有效性问题,使得PKI能够为网络用户提供较好的安全服务。但公钥证书库的管理和维护需要巨大的计算、通信和存储代价。 身份密码加密(IBE)的思想 身份密码体制被提出的重要原因就是为了简化传统的公钥基础设施中对用户公钥证书的管理,其基本思想是将用户的身份与其公钥以最自然的方式绑定:用户的身份信息即为用户的公钥。用户的身份,就是指一串跟用户相关的有意义的数字,姓名,身份证号,电话号码等都可以当作公钥来使用。加密者在加密的过程中,不需要使用一堆无意义的数字组作为公钥了,而是使用接收者的身份进行加密。举个例子,比如我的邮箱是11****373@qq.com,有人想给我发送加密密文的话,就用11****373@qq.com作为公钥进行加密就可以了。 在基于身份的密码体制中,存在一个称为私钥的产生中心(PKG,private key generation)的可信方,负责为系统中的用户生成身份信息对应的私钥。当新用户第一次加入系统时,PKG负责核实该用户的身份信息,在确认该身份信息的确属于对应用户后,为用户生成对应的私钥,并将私钥秘密的传送给该用户。当需要使用系统中某用户的公钥时,只需知道该用户的身份信息,而无需获取和验证该用户的公钥证书。 例如,像上面所说的,我将我的电子邮件地址作为我的身份信息,当你们需要向我发送加密消息时,仅仅需要需使用11****373@qq.com作为公钥进行加密运算即可。在传统的公钥密码体制中,公钥的有效期需要在颁发公钥证书时确定。而在基于身份的密码体制中,公钥的生命周期,可以通过在身份信息后附加有效期信息进行控制。例如,你们都可以使用可以使用“11****373@qq.com||2012”作为的公钥进行加密,而我也只能使用当年的私钥进行解密。每当私钥过期后,需要重新获取一个新的私钥,从而达到定期更换密钥的效果。与传统的公钥密码体制不同的是,每次更换私钥后,无需获取和验证新的公钥证书。 (图片来源:https://doubleoctopus.com/security-wiki/encryption-and-cryptography/identity-based-encryption/) 2001年,Boneh和Franklin正式给出IBE的定义及其安全模型,并应用双线性对(Bilinear Map)构造了一个安全的IBE方案,这种构造有一种很大的优点,就是很容易扩展到分层身份加密的情形,从而可以进行加密,签名等密码方案。 (图片来源:https://en.wikipedia.org/wiki/Identity-based_encryption) Boneh在他们的论文中也给出了一个可证明安全的IBE方案,具体构造有兴趣的朋友们可以参考。 论文链接:https://crypto.stanford.edu/~dabo/papers/bfibe.pdf 由于此篇文章内容较多,我们会在在《分层身份加密(HIBE)技术原理解析(下)》篇中给大家介绍加密思想从IBE到HIBE的演进、HIBE的加密流派和安全模型等内容以及长安链中集成HIBE的算法构造、整体架构及执行流程,欢迎大家关注公众号持续获取长安链相关技术内容。 Tips 更多长安链开源项目QA,可登陆开源社区、技术文档库查看。 下载源码 https://git.chainmaker.org.cn/chainmaker/chainmaker-go 查阅文档 https://docs.chainmaker.org.cn/ 更多社区权益申请 https://wj.qq.com/s2/8620064/7abd “长安链ChainMaker”是国内首个自主可控区块链软硬件技术体系,由微芯研究院联合头部企业和高校共同研发,具有全自主、高性能、强隐私、广协作的突出特点。长安链面向大规模节点组网、高交易处理性能、强数据安全隐私等下一代区块链技术需求,融合区块链专用加速芯片硬件和可装配底层软件平台,为构建高性能、高可信、高安全的数字基础设施提供新的解决方案,为长安链生态联盟提供强有力的区块链技术支撑。取名“长安链”,喻意“长治久安、再创辉煌、链接世界”。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 19:36:01- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |