请选择 进入手机版 | 继续访问电脑版

王东临:数据的加密和去重是区块链存储的两大关键技术 | 巴比特加速器技术公开课

所在版块: 七嘴八舌 2018-12-07 00:04 [复制链接] 查看: 8|回复: 0
[color=rgba(0, 0, 0, 0.882353)]
巴比特加速器推出的全球线上区块链技术深度对话栏目Geekhub Global Online,定期邀请世界各地的资深技术大咖连线对话。同时Geekhub技术社区成员也可以参与直播互动。
11月28日-30日每天14:00,Geekhub 技术社区将举行【Geekhub Global Online】技术公开课第三期的活动,主题为“分布式存储,数字基石”。
11月30日14时,YottaChain创始人王东临带来了题为“区块链存储的价值信仰”的线上分享。
YottaChain是由国际顶级科学家带领的专业团队打造的,通过连接分散的存储资源,构成一个具有自修复能力的规模浩瀚的全球共享的统一存储池,确保每个人的数据主权,在存储效率、数据可靠性、数据安全性和存储成本等方面都做到极致。
[color=rgba(0, 0, 0, 0.560784)]

以下为文字实录,由巴比特加速器整理发布:
大家好,我是王东临,YottaChain创始人,同时,我也是研究密码学和存储的科学家,具有20年+的密码学应用经验和将近10年的分布式存储经验。
我认为,区块链包含了高科技信仰和商业信仰,给社会提供了创新的产品和服务,让人类更美好,引领社会的发展,同时形成了一个商业闭环,人人都收益。有人会问,这样的项目有吗?当年也有人说互联网是泡沐,是自娱自乐,对社会没有价值。
但是,今天我们看到了,互联网是能够创造价值的。我相信互联网是可以创造价值的,为什么呢?我有我的依据。因为至少在区块链存储(即去中心化存储+区块链激励),它是能够体现出价值的。

存储是区块链最佳落地应用场景
存储是区块链最先最早最好的落地的应用场景。有以下几点原因:
1.存储本身就是有去中心的要求
有的项目加区块链是生搬硬套,其实加上区块链和不加区块链没有本质区别,而存储不一样,因为存储的中心化已经到了极致了。前几个月腾讯云因为硬件故障加运维人员操作不当把用户的数据丢了,再也找不到了;
微软在德克萨斯的数据中心被天打雷劈,制冷设备被雷电劈坏了,导致服务器过热,停止服务了20多小时,这对美国的很多服务造成了很严重的影响。这些例子都说明单一数据中心的可靠性已经到了极致。要防止每一个这样的小概率事件,进一步提高可靠性,这就需要去中心化,靠地理位置的分散来实现故障域的进一步隔离,从而提高可靠性。
去中心化是能够极大提高容灾能力,以及抗DDoS。现在DDoS攻击的难度越来越低,市面上购买几十G流量很便宜,很多网站都经不起这么大流量攻击。但是去中心化存储,区块链的存储,他是天然的抗DDoS,全世界几百万个节点,其中几十个,几百个甚至几千个节点被攻击了都没有问题。同样,区块链存储还拥有容灾方面这个奢侈特性。
2.存储有一个数据去重的特性
可以将存储空间放大很多倍,用户越多数据越多,则放大倍数越大。
3.区块链的激励可以激励矿工加入
可以激励用户使用,无需巨额投资即可迅速在全世界招募众多矿工节点加入区块链存储系统并吸引大量用户使用,很快形成规模,从而构建一个规模越来越大用户越来越多、可靠性越大越高成本越来越低的存储系统。
例如,一个拥有100GB存储空间的人,如果用来存自己的数据只能存100GB,但如果将该存储资源贡献用于挖矿,再利用挖到的数字货币购买存储空间,将可以储存200GB的数据,并且富余很多数字货币。这种方法可以储存更多的数据且让人获得很多额外的数字货币,可以有效地激励存储资源的拥有者加入系统挖矿。
4.存储是数字形式存在的实体经济
既是物理的,又是数字的,所以存储可以无需任何中介直接tokenize,是区块链直接连接物理世界的很好的应用场景。其它很多领域都存在一个严重的问题,链上数据固然无法篡改,但谁能确保上链的数据是真实可靠的呢?区块链存储就可以完美解决这个问题。
5.区块链存储至少两个方面的优势
相较于中心化存储,区块链存储在持久化存储和网络加速这两个市场上都有压倒性的优势,这两个市场的规模达数百亿美元,足够大。
6.区块链存储或能超越AWS这样的中心化存储的规模
就像滴滴自己可以没有一辆车,但很快成为中国最大出租车公司一样,这种去中心化的轻资产的模式很容易扩大规模。区块链存储也是类似的性质,完全可能在将来超越AWS这样的中心化存储的规模。
决定产业格局的加密去重技术
在IPFS/FileCoin或迅雷玩客云这样的区块链存储系统中,主要面向的是网络加速市场,规模不到100亿美元,而实际上持久化存储的市场规模更大。
很多人都以为矿工的存储成本不可能低于AWS/Google/阿里云这样的超级大玩家,所以认为区块链存储的成本要高于中心化存储,这个观点是错误的。实际上,区块链存储的成本是完全可以更低的,原因是:
1.数据去重技术使得存储相同数据占据的硬盘空间减少5-10倍,存储成本大大降低;
2.每个存储节点可以只有很少的存储设备,不需要专门的制冷系统(占数据中心耗电的三分之一甚至一半),靠自然通风即可散热,这样整个系统的CapEx和OpEx都大幅下降;
3.家用存储矿机无需额外花费带宽费用,无需支付租房成本;
4.家用电费也比工业用电更便宜;
5.对设计得比较好的区块链存储系统来说,绝大多数存储节点无需专业运维工程师驻场,每个节点都自动化运行而且一旦有意外故障失效会有其它节点自动顶上,节省了昂贵的运维费用;
6.有大量存储节点都是利用闲置硬盘空间,属于沉没成本,边际成本接近零。
当然,区块链存储系统设计得不够好的话,不见得能具有刚才说的那些优点。例如IPFS,到现在为止的版本,其数据可靠性还远远不如中心化存储。IPFS是为CDN用途设计的,CDN的特点是不在乎丢数据,只要热点数据被缓冲了就好,CDN没了数据就回源,根本无所谓。但是这样的系统如果用于持久化存储,就是灾难。
下面介绍区块链存储的两大关键技术:数据加密和数据去重

数据加密

对于大公司(例如AWS、Google、Dropbox)提供的中心化存储来说,数据加密是一个亮点,但不是必须的。因为用户可以信赖大公司的品牌、内控体系,指望大公司不会作恶即使事实上这一点并不是那么可信。对于去中心化存储来说,数据加密就成为存储个人和企业数据的必备要求。
因为去中心化存储的节点本身不可被信任的,根本不知道是什么烂人存了你的数据。一不小心就成了陈冠希了。
此外,源代码是开放的,而且每个存储节点都可以自由访问。所以个人和企业数据都必须做数据加密,而且是“零知识”的数据加密,即除了数据所有者或其授权者外,其他任何人(包括存储节点的拥有者、系统的设计者和开发者)对该数据都一无所知,即使作恶也无法窥视数据。
经常会看到一个说法,说中心化的服务(例如百度)经常会侵犯用户的数据隐私,所以要去中心化,就可以解决这个问题了。这个说法是非常错误的。实际上,去中心化之后这个问题更严重了。中心化存储时有一个人可以偷你的数据,去中心化之后就变成人人都可以偷你的数据了。
所以,零知识数据加密对区块链存储是至关重要的,甚至可以说是决定性的

数据去重

如果多个人拥有相同的数据,不重复存储而是合并共用同一份空间,称为“去重”(即去掉重复数据),也称为重删(即重复数据删除)。
注意数据去重和冗余存储是不同层面的概念。即使是去重后只存一份数据,这份数据也必须用冗余编码分成很多碎片,分别保存在多个不同节点上,就算其中有部分节点数据丢失也不影响数据的完整性。这么多个节点上存储的碎片合起来称为一份数据。
这两个概念之所以有时候会产生误导或混淆,是因为有一种最简单的冗余算法是多副本存储,例如IPFS。这种情况下,多个用户拥有的相同数据会通过去重而只保存一份,但这一份是有多个副本。
数据重复率与用户数和数据量呈正相关:若用户数越多,数据量越大,则重复率越高。数据重复率越高,去重之后的平均存储成本就越低。如果平均数据重复率是10倍,则1GB空间平均可以存储10GB的数据,平均存储成本降低10倍。
前面介绍的区块链存储的强大激励模型也是建立在数据去重的基础之上的。通过全球数据统一去重,将数据去重率提高到极致,相当于一块硬盘变成10块盘,2块用来存数据,8块用来赚钱。
数据加密和数据去重都对区块链存储起到决定性的作用。但现在有一个核心关键问题,即加密去重不可兼得的问题
在行业中存在一个“公知常识”:数据加密后不能去重。即零知识数据加密与数据去重二者不可兼得,最多只能选一个。一个表面的原因是数据加密后就变成乱码,无法识别数据重复。这其实并非问题的关键,完全可以保存数据明文的hash值,通过比较hash值来识别重复数据。
这个解决方案仍然存在很多坑,例如假冒Hash值进行攻击,但这些坑还都有办法解决的。加密后去重的核心问题在于数据的授权。即A存储的数据,当B也要存储相同的数据时,如何将A的数据授权给B使用而且还不影响A的数据安全性。
既然是零知识加密,怎么可能让B能够使用A的数据呢?所以大家都认为是无解的,零知识数据加密与跨用户数据去重二者只能选一个。
在这种情况下,IPFS选择了数据去重,牺牲了数据安全性,这就是IPFS设计用于存储网页等公开数据的真正原因。有一些区块链存储项目选择了数据加密,牺牲了数据去重,虽然保证了数据安全性,但存储成本大幅度上升,而且牺牲了一种极其有效的激励模型。

区块链存储开放平台
我研究密码学和存储多年,其中比较重要的发明就是解决了加密去重的问题。我用研究加密去重问题不能解决的证明过程的时候,发现证明是不够严谨的,被我找出了漏洞,就从这个漏洞中找到了解决问题的方法。
据此,我提供了一种特殊的机制,除了用户权限表外,还要维护一个全局的元数据表,记录明文Hash和密文Hash的对应关系,在写入数据时要先查询是否存在相同Hash的数据,如果没有该项再存。具体流程如下
1.Hash(Data) →Hdata 计算明文Hash 2.If CheckDup(Hdata) = TRUE goto 11 如果已经存在相同的数据,转到第11步 3.RandomSym()→Stk 随机生成对称密钥作为文件的存储密钥 4.Enc(Stk, Data)→EncData 用存储密钥加密文件 5.Hash(EncData) →Henc 计算密文Hash 6.GenKey(Data) →Sdata 从数据明文生成对称密钥,可以用数据明文加盐之后计算Hash值的方式生成。之所以要加盐是因为明文Hash是一个公开的值,不加盐的话不拥有数据明文的人也能获得该密钥。为了保证一致性,盐值可以是一个固定的算法生成,例如先做第一次Hash作为盐值,然后加盐后再计算第二次Hash作为对称密钥,两次Hash可以采用不同的算法。 7.Enc(Hdata, Stk) →EncStk’ 以数据明文生成的对称密钥来加密存储密钥。这是非常“诡异”的一步,以明文作为密钥,密钥作为明文来加密,大多数人看这个算法的时候都以为写反了,实际上就是专门这么设计的,而且这一步是TruPrivacy的核心步骤。 8.PutStatic(EncData) 将加密数据存入到持久化静态存储 9.PutMeta(Hdata, Henv,EncStk) 将密文Hash和明文加密的存储密钥记录在全局元数据表中,记录在明文Hash项下 10.Goto 14 11.GetMeta(Hdata) →Henv,EncStk’ 从全局元数据表中取出密文Hash和明文加密后的存储密钥 12.GenKey(Data) →Sdata 以同样算法从数据明文生成对称密钥 13.Dec(Sdata, EncStk’) →Stk 用该对称密钥解密出存储密钥 14.Enc(Spub, Stk) →EncStk 以用户的加密公钥加密存储密钥 15.PutPri(Hdata, EncStk) 将加密公钥加密后的存储密钥存入到用户权限列表, 记录在明文Hash项下。
在Get数据的时候,从全局元数据表中根据明文Hash取出对应的密文Hash,通过密文Hash中从持久化静态存储中取出密文,从权限列表中取出加密后的存储密钥,以用户的加密私钥对加密后的存储密钥进行解密获得存储密钥,用存储密钥对加密数据进行解密,获得数据明文。
1.GetMeta(Hdata)→Henc 从全局元数据表中通过明文Hash获取到密文Hash 2. GetPri(Hdata)→EncStk 从权限列表中通过明文Hash获取到加密公钥加密的存储密钥 3. GetStatic(Henc)→EncData 用密文Hash从持久化静态存储中取出密文 4.Dec(Sprv, EncStk)→Stk 以用户的加密私玥对用户加密公钥加密后的存储密钥进行解密获得存储密钥 5.Dec(Stk, EncData)→Data 解密获得文件数据
今天的技术公开课到此结束,谢谢大家。
本期回顾:
[color=rgba(0, 0, 0, 0.560784)]Lambda联合创始人高海强:去中心化存储中,数据完整性证明是关键
[color=rgba(0, 0, 0, 0.560784)]Genaro Network创始人吴为龙:分布式存储结合公链激励的工程实践

[color=rgba(0, 0, 0, 0.560784)]发文时比特币价格: ¥26442.97


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

SAFE官方公众号
SAFE官方QQ群
SAFE官方QQ2群
SAFE官方QQ3群

安网—全球领先安全隐私的数字货币支付和应用平台

GMT+8, 2018-12-11 20:08 , Processed in 0.059586 second(s), 32 queries .

Powered by Discuz! X3.4

© 2017-2018 安网3(SAFE)中文社区

快速回复 返回列表