IPFS红岸智能周雪松Filecoin未来分布式存储的演讲
一、研究背景
1.1 从HTTP到HTTPS的变迁来看:
从HTTP逐渐过渡到HTTPS的过程可以看出,网络中的明文传输始终具有不安全感,据我所知,从2015年开始,大部分互联网巨头公司都强制要求各产品线切换使用HTTPS(加密超文本传输协议),通过SSL/TLS完成双向加密,加固万维网上的安全通信,尤其是在交易支付场景下。
1.2 从IPFS网络的局限性来看:
IPFS有潜力成为区块链领域很棒的超级内容分发网络,本身IPFS也自带一些加密特性,但如果我们能通过一些有效的技术使得我们项目和业务在入网前(上传到IPFS网络前)前就加固一层安全属性,将大大提高IPFS网络的可用性和可信任性,让更多企业和用户愿意投入使用这项技术。
1.3 从行业内安全性角度来看:
行业安全性问题应当是每个,都该重视的方面(我们不能只顾着开发区块链业务,而忽视用户、投资者的安全隐患),随着区块链市场的不断扩大,整个生态的区块链项目也日益增多,同时,由于各个公司水平参差不齐,项目方做事的态度褒贬不一,不靠谱的区块链项目和合约漏洞数量也在与日俱增,类似美图这样的大公司之前也因为安全问题吃过大亏。
二、IPFS网络的Encryption层设计
2.1 具有PKI 特性
玩密码学的童鞋应该都不会陌生这个,PKI技术:Public Key Infrastructure ,也叫公钥基础设施,PKI是一种遵循标准的利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范。
HTTP协议中PKI的使用:可参考HTTPS协议详解(三):PKI 体系
IPFS协议中PKI的使用:Node ID生成,IPNS挂载,私有集群网络搭建
2.1.1 PKI特性:Node ID生成
Eg:
difficulty=<integerparameter>n=Node{}do{n.PubKey,n.PrivKey=PKI.genKeyPair()n.NodeId=hash(n.PubKey)p=count_preceding_zero_bits(hash(n.NodeId))}while(p<difficulty)
这是IPFS白皮书中在初始化生成NodeID(n)时,所执行的一段伪代码:
我们可以看到,在创建过程中将通过PKI.genKeyPair()(默认用的RSA非对称加密算法)生成一套公钥(n.PubKey)和私钥(n.PrivKey),NodeId将通过hash(n.PubKey)公钥进行签名。
这样做的好处是当Node 节点在第一次连接对等Peer方时,可以通过互相交换公钥,来验证hash(other.PublicKey) = other.NodeId是否成立 ,如果成立,则确定可信身份,保持通信,否则连接终止,防范网络中的一些嗅探***。(这和我们在做后端微服务之前的接口通信时,常设置变量参数参与的对称加密签名来防止网络***一样)
在本地,我们可以通过ipfs id随时来查看我们的公钥(PublicKey)和其对应的NodeID: