链资讯 链资讯
Ctrl+D收藏链资讯
首页 > Coinw > 正文

WEB:创宇区块链:传统安全与IPFS间的安全性研究-ODAILY_NAME

作者:

时间:

前言

通信技术让世界具备了更多的连接,我们每个人都在这样的连接中被影响和受益着。同时这种连接也产生了更多对于监视需求的便利。许多人的隐私或自由可能会在不经意间受到影响,而这也催生了对于隐私保护的需求。通常,由于中心化服务器的存在,我们很难实现完整的隐私保护,而分布式的存储等技术,则让其成为了可能。

无数的开发者加入了Web3的开发实现中,陆续构建一个又一个伟大的Dapp,他们在普通用户与区块链底层技术中扮演着重要的中间人角色。与此同时,对于普通人接触的最多的web-ui与IPFS,它们之间的安全也值得被探索。

知道创宇区块链安全实验室将对此进行详细解读。

Web-interface与IPFS

1.Web-interface是什么

在Web3.0中,分布式的公链技术设施提供了各种接口供给使用者调用,但这些接口无法直接被普通用户直接去使用。对用户来说,Web-interface是用户和运行在Web服务器上的软件之间的桥梁。用户使用浏览器连接Web-interfacce后进行展示与交互,同时通过钱包进行身份识别。对底层区块链基础设施来说,Web-interface是公链/智能合约的一层封装,将其包装成为友好的页面可直接可用的功能展示给用户。其结构功能类似如下的图片:

2.IPFS是什么

星际文件系统是分布式存储和共享文件的网络传输协议,它将现有的成功系统分布式哈希表、版本控制系统Git、BitTorrent、自认证文件系统与区块链相结合。正是这些系统的综合优势,给IPFS带来了以下显著特性:

1.永久的、去中心化保存和共享文件

2.点对点超媒体:P2P保存各种各样类型的数据

3.版本化:可追溯文件修改历史

Web3通信协议WalletConnect已支持OKX Web3钱包:8月14日消息,WalletConnect 已支持 OKX Web3 钱包,支持用户通过 WalletConnect 连接 OKX Web3 钱包。Wallet Connect 是去中心化的 Web3 通信协议,旨在连接移动加密钱包与 DApps,为用户提供更安全、更便捷的加密交互等体验。[2023/8/14 21:22:17]

4.内容可寻址:通过文件内容生成独立哈希值来标识文件,而不是通过文件保存位置来标识

当用户将文件添加到IPFS时,该文件会被拆分为更小的块,经过加密哈希处理并赋予内容标识符CID作为唯一指纹;当其他节点查找该文件时,节点会询问对等节点谁存储了该文件CID引用的内容,当查看、下载这份文件时,他们将缓存一份副本——同时成为该内容的另一个提供者,直到他们的缓存被清除。

IPFS使用实例

网站https://ipfs.io提供一个带UI界面的客户端,安装运行后会启动IPFS的服务,显示当前的节点ID、网关和API地址:

我们导入想上传的文件,上传文件成功后会生成该文件的CID信息,通过QmHash我们也能查找到指定的文件:

由于IPFS是分布式存储和共享文件的网络传输协议,因此上传成功的文件被拷贝到其他节点上后,即使我们本地节点主动删除,依然可以在IPFS网络查询到该文件:

IPFS中的传统安全问题

长江商学院推出Global Unicorn Programs将为入选者提供Web3.0、区块链等技术支持:金色财经报道,长江商学院正在推出的全球独角兽项目(Global Unicorn Programs)在与阿联酋世界政府峰会、迪拜行政委员会、新加坡黄埔集团(Whampoa Group)、首尔市政府和 Maekyung Media Group 的合作下,将先后在迪拜(2 月 15 日)、新加坡(5 月 16-19 日)与韩国首尔(9 月 12-15 日)落地。

据悉,Global Unicorn Programs 是一个高管教育项目,专注于欧亚大陆创造独角兽和具有社会责任与全球视野的企业家生态系统。该项目将为入选者提供 Web3.0、区块链、智能制造和人工智能等技术支持。[2023/1/16 11:14:27]

根据使用实例,我们知道IPFS允许上传任意类型的文件,由于允许Web访问下载文件的特性,导致攻击者可以像传统安全一样使用HTML或SVG文件实现钓鱼:

以https://IPFS.io网关为例,上传一个Metamask钓鱼网站,由于存储在受信域名里,受害者访问该文件很可能攻击成功:

但由于IPFS只能通过CID查询文件,使得钓鱼攻击的利用面很窄,没办法定向的实施攻击。既然CID是发起定向攻击的关键,那我们回头研究下CID。

IPLD是构建IPFS的数据层,它定义了默克尔链接、默克尔有向无环图(Merkle-DAG)和默克尔路径三种数据类型,通过IPLD发送到IPFS的数据保存在链上,使用者会收到一个CID来访问该数据。

Aave首席执行官:Twitter不会很快完全转向Web3:11月8日消息,Aave联合创始人兼首席执行官Stani Kulechov表示,我们不会很快看到Twitter完全基于Web3。他认为,Web3社交媒体将不再是Web2的更新版本,而更像是一个可互操作的新平台网络。

Kulechov将“社交资本”定义为“关注者”和“个人资料”,并补充说在当前的Web2范式下,用户每次使用新服务创建账户时都必须放弃自己的社交资本。Kulechov表示,“举个例子,我在Twitter上有一个粉丝,我可以分享自己的想法并建立联系——这就是我在那里创造的社交资本。但我不能把我的关注者或个人资料转到另一个对我来说体验更好、更好地反映我的价值观或更适合我的应用程序中。”(Decrypt)[2022/11/9 12:34:37]

CID是一个由Version、Codec和Multihash三部分组成的字符串,目前分成V0和V1两个版本。V0版采用Base58编码生成CID,V1版包含表明内容的编号种类Codec、哈希算法MhType和哈希长度MhLength共同构成:

`CID::=<multibasetype><cid-version><multicodec><multihash>`

我们以go-cid生成一组CID测试:

packagemain

import(

"fmt"

mc"github.com/multiformats/go-multicodec"

mh"github.com/multiformats/go-multihash"

cid"github.com/ipfs/go-cid"

)

const(

File="./go.sum"

Web3身份验证公司Dynamic完成a16z领投的750万美元种子轮融资:6月29日消息,Web3身份验证初创公司Dynamic完成750万美元种子轮融资,a16z领投,Castle Island Ventures、Solana Ventures、Circle Ventures、Breyer Capital、Hypersphere、Chapter One等参投。新融资将用于扩充团队以及启动其平台。

据介绍,Dynamic于去年12月成立,并于今年4月完成种子轮融资,目前的员工人数为8人。Dynamic致力于为不同类型的公司提供身份验证服务,其客户包括Llama、Popartcats、Handstamp和Lunchclub。此外,Dynamic平台封闭测试版已开放,预计将于今年晚些时候全面推出。(The Block)[2022/6/29 1:37:46]

)

funcmain(){

pref:=cid.Prefix{

Version:0,

Codec:mc.Raw,

MhType:mh.Base58,

MhLength:-1,

}

c,err:=pref.Sum(byte("CIDTest"))

iferr!=nil{...}

fmt.Println("CID:",c)

}

可以看到在生成CID的过程中,无法实现结果的预测和更换,我们再往上分析上传文件的部分。将文件上传到IPFS,通过块的方式保存到本地blockstore的过程位于/go-ipfs-master/core/commands/add.go:

typeAddEventstruct{

Namestring

Hashstring`json:",omitempty"`

Energy Web推出新区块链身份注册和可再生信用跟踪项目:Energy Web将为德国能源市场建立一个原型区块链身份登记册,并在美国试点可再生能源信用追踪。该项目与德国联邦能源署DENA和其他行业参与者合作,旨在设计和构建一个全国分布式能源资源的数字注册系统。其目的在于使恒温器、太阳能光伏系统、电池和电动汽车充电站等能源资产能够通过去中心化的身份分类账进行自动登记,从而能够将其用于电网服务,如虚拟发电厂和频率调节。(Renewable Energy World)[2020/11/10 12:13:06]

Bytesint64`json:",omitempty"`

Sizestring`json:",omitempty"`

}

const(

quietOptionName="quiet"

quieterOptionName="quieter"

silentOptionName="silent"

progressOptionName="progress"

trickleOptionName="trickle"

wrapOptionName="wrap-with-directory"

onlyHashOptionName="only-hash"

chunkerOptionName="chunker"

pinOptionName="pin"

rawLeavesOptionName="raw-leaves"

noCopyOptionName="nocopy"

fstoreCacheOptionName="fscache"

cidVersionOptionName="cid-version"

hashOptionName="hash"

inlineOptionName="inline"

inlineLimitOptionName="inline-limit"

)

把上传文件信息保存到AddEvent对象中,再通过/go-ipfs-master/core/coreunix/add.go里的addALLAndPin和fileAdder.AddFile方法遍历文件路径,读取文件内容,将数据送入块中:

func(adder*Adder)AddAllAndPin(ctxcontext.Context,filefiles.Node)(ipld.Node,error){

ctx,span:=tracing.Span(ctx,"CoreUnix.Adder","AddAllAndPin")

deferspan.End()

ifadder.Pin{//knownsec如果被锁定

adder.unlocker=adder.gcLocker.PinLock(ctx)

}

deferfunc(){

ifadder.unlocker!=nil{

adder.unlocker.Unlock(ctx)

}

}()

iferr:=adder.addFileNode(ctx,"",file,true);err!=nil{

returnnil,err

}

mr,err:=adder.mfsRoot()

iferr!=nil{

returnnil,err

}

varrootmfs.FSNode

rootdir:=mr.GetDirectory()//knownsec获取路径

root=rootdir

err=root.Flush()

iferr!=nil{

returnnil,err

}

_,dir:=file.(files.Directory)

varnamestring

if!dir{

children,err:=rootdir.ListNames(adder.ctx)//knownsec展示当前路径文件名

iferr!=nil{

returnnil,err

}

iflen(children)==0{

returnnil,fmt.Errorf("expectedatleastonechilddir,gotnone")

}

name=children

root,err=rootdir.Child(name)

iferr!=nil{

returnnil,err

}

}

err=mr.Close()

iferr!=nil{

returnnil,err

}

nd,err:=root.GetNode()

iferr!=nil{

returnnil,err

}

err=adder.outputDirs(name,root)

iferr!=nil{

returnnil,err

}

ifasyncDagService,ok:=adder.dagService.(syncer);ok{

err=asyncDagService.Sync()

iferr!=nil{

returnnil,err

}

}

if!adder.Pin{

returnnd,nil

}

returnnd,adder.PinRoot(ctx,nd)

}

最后再利用addFile函数完成文件的上传:

func(adder*Adder)addFile(pathstring,filefiles.File)error{

varreaderio.Reader=file

ifadder.Progress{

rdr:=&progressReader{file:reader,path:path,out:adder.Out}//knonwsec按字节读取文件

iffi,ok:=file.(files.FileInfo);ok{

reader=&progressReader2{rdr,fi}

}else{

reader=rdr

}

}

dagnode,err:=adder.add(reader)//knownsec添加上传文件

iferr!=nil{

returnerr

}

returnadder.addNode(dagnode,path)

}

分析代码发现,IPFS在打包文件上传返回CID的整个过程,都没实现劫持的可能,而成功上传的文件无法实现修改其内容,同样无法实现篡改:

后记

Web3建立在区块链技术之上,无需中央机构即可维护。其允许用户在互联网上保护他们的数据,并允许网络平台的去中心化。而IPFS技术对他来说就如同一台电脑的硬盘,web-ui就如同主机的显示器一样不可或缺,其间亦存在着复杂而多样的安全风险可能给予不法分子可乘之机,理解其风险并避免发生问题是每一位Web3从业人员的责任与义务。

标签:WEBNILNAMEWEB3CWEB币UnilayerXEra Name ServiceWeb3Gold

Coinw热门资讯
TRO:波场TRON账户总数突破1.01亿-ODAILY_defi币圈

TRONSCAN最新数据显示,6月25日至今,波场TRON账户新增超100万,总数达到101,356,831,正式突破1.01亿.

USD:JustLend上USDD市场的存款挖矿奖励现已正式升级为USDD-ODAILY_SDD

据官方消息,JustLend上USDD市场的存款挖矿奖励现已正式升级为USDD。 波场TRON账户总数突破1.6亿:据官方消息,2023年5月16日,TRONSCAN数据显示,波场TRON账户总.

WEB3.0:Web3是游戏的未来?手游大厂Com2uS是这样说的-ODAILY_web3.0币怎么提现到账号

注:本文摘自手游大厂Com2uS的总裁KyuLee在2022年韩国区块链周上的演讲。大家有玩过Com2uS的游戏吗?Com2uS从1998年创立之初就开始制作手机游戏,是首批手机游戏公司之一,现.

RED:去中心化托管未来的发展-ODAILY_qredo币最新消息

收购Xena团队和技术将如何为Qredo带来世界一流的交易工具由于Qredo开创了没有交易对手风险的托管方式,另一个加密平台正在开创没有交易对手风险的交易.

NFT:NFT如何成为加密艺术专家,数据哪里可以查?-ODAILY_DILI Token

目前NFT市场遍地开花,截止到今天,以太坊链上NFT销售总额突破240亿美元,创下历史新高,较1月份增速20%,链上交易数量突破900万笔.

NFT:为下一个全新公链做好准备,你不得不知的Aptos 公链(下)-ODAILY_MAR

攻略上集介绍了Aptos钱包以及域名服务。如果你过了本攻略的上集,请点击链接:https://www.coinlive.com/news/detail/?id=11018 NFT市场 1.Top.