位置:编程技术网 > 物联网 > 正文 >

区块链密码 —— 通付盾数据安全存储、加密分享和公平交易实践(3)

2021年02月23日 16:12来源:未知手机版

发誓的近义词,重生北冥,杜若溪曝新剧剧本

问题1:如何证明数据是我的?

问题2:如何保障数据没有中心化泄露风险?

问题3:如何保障数据不被中间人劫持或窃听(数据只正确传输给了我希望发送的人,并且加密数据只可以由对方解密)?

问题4:如何保障我传输的数据不被对方随意复制使用?

问题5:对于数据交换和数据交易而言,如何保障我分享了数据(或付了钱)就一定能获得我想要的数据(或钱)?

问题6:对于数据交换和数据交易而言,如何保障我分享(销售)的数据不会被对方二次分享(销售)?

区块链密码解决方案

步骤1:数据确权

Alice作为数据持有方创建DID,并将数据的信息写入DID文档,然后将DID上链,实现数据的确权。

步骤2:数据检索

Bob作为用户创建DID,然后查看区块链中的数据信息,初步确定Alice的数据是自己需要的类型,并从区块链上获得Alice的DID以及公钥。

步骤3:建立安全连接

Bob向Alice发送数据 试吃 请求,并建立安全连接。

步骤4:数据 试吃 与数据传输

Alice向Bob加密发送 试吃 数据。Bob通过 试吃 数据从数据格式和质量等方面进一步确定数据是自己需要的。

步骤5:公平交易

Bob向Alice发送交易请求,Alice生成安全参数并发送给Bob,Bob验证通过后发布智能合约,智能合约验证参数后执行交易。

步骤6:数据使用

Bob得到数据m后,使用数据m,并在区块链中保存对数据m的评价。

技术拆解

数据确权

(1) Alice生成DID_Alice,其DID文档中包含DID_Alice的公钥PK_Alice。

(2) Alice生成公共参数G,G是椭圆曲线循环群生成元。

(3) Alice对于数据m,计算其属性,包括:

数据m的哈希值Hash(m),用于数据m的完整性验证。

数据m的Pedersen Commitment M=m*G,用于验证Bob接收到的数据m的真实性。

Alice对数据Hash(m)的签名sig=Sign(SK_Alice,Hash(m)),用于证明Alice对数据m的所有权。

数据m的特征提取值feature=FeatureExtraction(m)及其Hash值Hash(feature),保证区块链中保存的数据m的唯一性。

数据m的特征描述信息msg=Describe(m),用于用户初步了解数据的信息,初步确定数据m是否是自己需要的。

(4) Alice更新DID_Alice,将公共参数G以及m的属性写入其DID文档中。

(5) Alice将DID_Alice上传到区块链中。

数据检索

(1) Bob生成DID_Bob,其DID文档中包含DID_Bob的公钥PK_Bob。

(2) Bob将DID_Bob上传到区块链中。

(3) Bob通过DID_Bob浏览区块链上所有的DID文档中的数据描述信息msg。

(4) Bob根据msg初步确定数据m是自己需要的。

建立安全连接

Bob生成随机数nonce作为Alice与Bob之间的会话密钥。

Bob从blockchain中查找didAlice并获得其DID文档,其中包含其公钥PKA。

Bob使用didAlice的公钥pkA加密didBob和nonce,得到密文cipher.。

Bob使用didBob的私钥skBob对Hash(didBob,nonce)进行签名,得到签名sig。

Bob前Alice发送cipher和sig,作为连接请求的参数。

Alice解密cipher得到didBob和nonce。

Alice根据didBob在区块链上查询其DID文档获得其公钥pkB。

Alice用pkB以及didBob和nonce验证签名sig的有效性。若有效,则可以进行安全连接;若无效,则放弃连接或者重新发起连接。

数据 试吃 与 传输

(1) Alice用会话密钥nonce加密 试吃 数据m_try,得到E(m_try)。

(2) Alice向Bob发送E(m_try)以及Hash(m_try)。

本文地址:http://www.reviewcode.cn/wulianwang/192946.html 转载请注明出处!

今日热点资讯