區(qū)塊鏈密碼—— 通付盾數(shù)據(jù)安全存儲(chǔ)、加密分享和公平交易實(shí)踐

現(xiàn)代密碼學(xué)技術(shù)發(fā)展已近百年,先進(jìn)、安全、可控的密碼技術(shù)是網(wǎng)絡(luò)安全的基礎(chǔ),在中國大力發(fā)展數(shù)字經(jīng)濟(jì)的今天,更是被賦予重要的歷史使命。區(qū)塊鏈技術(shù)雖然近年來才興起,但其作為“信任機(jī)器”,與密碼一樣是數(shù)字化時(shí)代的信息安全基礎(chǔ)設(shè)施,區(qū)塊鏈與密碼技術(shù)的有機(jī)結(jié)合將大大降低建立信任的成本,大大提高信息安全防護(hù)能力。

通付盾長期致力于區(qū)塊鏈與密碼技術(shù)的研究和開發(fā)工作,近年來更是積極的將區(qū)塊鏈密碼技術(shù)應(yīng)用于實(shí)際,研發(fā)的區(qū)塊鏈密碼可用于數(shù)據(jù)安全存儲(chǔ)、數(shù)據(jù)加密分享和數(shù)據(jù)公平交易等場(chǎng)景,保護(hù)數(shù)據(jù)安全。

一、數(shù)據(jù)安全存儲(chǔ)

問題描述

云端數(shù)據(jù)存儲(chǔ)是一種網(wǎng)上在線存儲(chǔ)模式,即把數(shù)據(jù)存放在通常由第三方托管的多臺(tái)虛擬服務(wù)器,而非專屬的服務(wù)器上。需要對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)托管的人,通過向托管公司提供的數(shù)據(jù)中心購買或租賃存儲(chǔ)空間來滿足數(shù)據(jù)存儲(chǔ)的需求。

然而,現(xiàn)有云存儲(chǔ)技術(shù)在使用過程中會(huì)存在一定的隱患,例如,用戶通過平臺(tái)上傳至云端存儲(chǔ)的文件中不乏用戶的機(jī)密文件或用戶私隱,這些數(shù)據(jù)的存儲(chǔ)多為明文存儲(chǔ)或簡(jiǎn)單加密存儲(chǔ),即使是加密存儲(chǔ),其安全性也僅依賴于云平臺(tái)本身,一旦平臺(tái)數(shù)據(jù)被入侵、篡改,將嚴(yán)重泄露用戶的隱私;另外,云平臺(tái)上的數(shù)據(jù)無法真正的證明該數(shù)據(jù)的所有權(quán)是用戶還有平臺(tái),即平臺(tái)本身對(duì)用戶的數(shù)據(jù)存在任意篡改的風(fēng)險(xiǎn),使得用戶的隱私數(shù)據(jù),例如身份信息、證件照、照片、身份證件、通訊記錄等儲(chǔ)存內(nèi)容的安全性受到極大威脅。

區(qū)塊鏈密碼解決方案

步驟1:DID生成

若用戶沒有DID,則需要為用戶生成DID以及DID文檔并保存到區(qū)塊鏈中。

步驟2:密鑰生成

若用戶沒有用于數(shù)據(jù)加密的公私鑰對(duì),則需要生成公私鑰對(duì),將公鑰保存到DID文檔中,將私鑰加密保存到本地。

步驟3:私鑰備份與恢復(fù)

利用密鑰共享技術(shù),將私鑰分成N片備份到區(qū)塊鏈節(jié)點(diǎn)中,恢復(fù)時(shí)只需要其中的M片即可。

步驟4:數(shù)據(jù)加密上傳

生成對(duì)稱密鑰,使用對(duì)稱密鑰對(duì)數(shù)據(jù)進(jìn)行加密,得到數(shù)據(jù)密文,使用公鑰對(duì)對(duì)稱密鑰進(jìn)行加密,得到密鑰密文,將數(shù)據(jù)密文以及密鑰密文上傳到云服務(wù)器。

步驟5:數(shù)據(jù)下載解密

從云服務(wù)器中下載選擇的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)密文以及密鑰密文,使用私鑰解密密鑰密文得到對(duì)稱密鑰,使用對(duì)稱密鑰解密數(shù)據(jù)密文得到選擇的數(shù)據(jù)。

技術(shù)拆解

DID生成

(1) 生成區(qū)塊鏈賬戶地址。

(2) 根據(jù)賬戶地址生成DID以及DID文檔。

(3) 將DID和DID文檔保存在區(qū)塊鏈中。

密鑰生成

(1) 根據(jù)公鑰加密算法,生成公私鑰對(duì),用于對(duì)對(duì)稱密鑰進(jìn)行加解密。

(2) 將公鑰保存到DID文檔中,可以通過DID訪問其公鑰。

(3) 將私鑰通過口令加密保存到本地。

密鑰備份與恢復(fù)

區(qū)塊鏈密碼—— 通付盾數(shù)據(jù)安全存儲(chǔ)、加密分享和公平交易實(shí)踐

(1) 密鑰備份

A. 根據(jù)密鑰分享技術(shù),將私鑰分成N個(gè)密鑰片。

B. 將N個(gè)密鑰片分別備份到區(qū)塊鏈節(jié)點(diǎn)中。

(2) 密鑰恢復(fù)

A. 從N個(gè)備份密鑰片的區(qū)塊鏈節(jié)點(diǎn)中選擇其中的M個(gè)節(jié)點(diǎn)。

B. 從這M個(gè)節(jié)點(diǎn)中獲取密鑰片。

C. 根據(jù)密鑰分享技術(shù),利用這M個(gè)密鑰片恢復(fù)出私鑰。

D. 利用口令對(duì)私鑰進(jìn)行加密然后將密文保存到本地。

數(shù)據(jù)加密

(1) 生成安全的隨機(jī)數(shù)作為數(shù)據(jù)加密的對(duì)稱密鑰。

(2) 根據(jù)對(duì)稱加密,使用對(duì)稱密鑰對(duì)數(shù)據(jù)進(jìn)行加密,得到數(shù)據(jù)密文。

(3) 根據(jù)公鑰加密,根據(jù)口令讀取本地私鑰,使用私鑰對(duì)對(duì)稱密鑰進(jìn)行加密,得到密鑰密文。

(4) 將數(shù)據(jù)密文以及密鑰密文上傳到云服務(wù)器進(jìn)行保存。

數(shù)據(jù)解密

(1) 從云服務(wù)器中下載選擇的數(shù)據(jù)密文以及密鑰密文。

(2) 根據(jù)口令讀取本地私鑰,根據(jù)公鑰加密算法,使用私鑰解密密鑰密文,得到對(duì)稱密鑰。

(3) 根據(jù)對(duì)稱加密算法,使用對(duì)稱加密解密數(shù)據(jù)密文,得到數(shù)據(jù)。

二、數(shù)據(jù)加密分享

問題描述

目前,數(shù)據(jù)的分享通常只是信道加密,發(fā)送方和接收方多是以明文的形式通過服務(wù)器實(shí)現(xiàn)端到端的分享。在分享過程中,數(shù)據(jù)在服務(wù)器端通常是可見的,因此存在嚴(yán)重的數(shù)據(jù)泄露的風(fēng)險(xiǎn)。同時(shí),數(shù)據(jù)的分享記錄由第三方服務(wù)器保存,甚至不保存分享記錄,使得分享記錄的可信性完全依賴于第三方服務(wù)器或者無從追溯。當(dāng)數(shù)據(jù)的分享記錄存儲(chǔ)在第三方服務(wù)器上時(shí),如果第三方服務(wù)器受到攻擊、被篡改或偽造,服務(wù)器的不可信直接導(dǎo)致存儲(chǔ)的分享記錄變得不可信。數(shù)據(jù)分享缺少時(shí)間的限制條件等。

區(qū)塊鏈密碼解決方案

步驟1:數(shù)據(jù)授權(quán)

Alice生成對(duì)Bob的重加密密鑰并保存到區(qū)塊連接點(diǎn),生成授權(quán)記錄并上鏈,將云服務(wù)器中的待分享數(shù)據(jù)的鏈接地址發(fā)送給Bob。

步驟2:數(shù)據(jù)訪問

Bob根據(jù)Alice分享的數(shù)據(jù)鏈接地址向云服務(wù)器請(qǐng)求數(shù)據(jù),云服務(wù)接收到請(qǐng)求后驗(yàn)證授權(quán)身份后根據(jù)重加密密鑰對(duì)密鑰密文進(jìn)行重加密,得到密鑰重加密密文,將數(shù)據(jù)密文以及密鑰重加密密文返回給Bob。

步驟3:數(shù)據(jù)下載解密

Bob將數(shù)據(jù)密文以及密鑰重加密密文下載完成后,根據(jù)私鑰解密密鑰重加密密文得到對(duì)稱密鑰,根據(jù)對(duì)稱密鑰解密數(shù)據(jù)密文得到對(duì)稱密鑰。

技術(shù)拆解

發(fā)送方數(shù)據(jù)訪問授權(quán)

區(qū)塊鏈密碼—— 通付盾數(shù)據(jù)安全存儲(chǔ)、加密分享和公平交易實(shí)踐

Alice根據(jù)自己和Bob的DID從區(qū)塊鏈中讀取DID文檔中的公鑰(Alice的公鑰pkA和Bob的公鑰pkB)。

Alice根據(jù)口令讀取本地私鑰skA,然后調(diào)用代理重加密中重加密密鑰生成算法,根據(jù)Alice的私鑰skA,Alice的公鑰pkA以及Bob的公鑰pkB生成N個(gè)重加密密鑰片nrkfrags。

Alice將N個(gè)重加密密鑰片nrkfrags保存到N個(gè)區(qū)塊鏈節(jié)點(diǎn)中,每一個(gè)節(jié)點(diǎn)只保存一個(gè)重加密密鑰片rkfrag。

Alice生成數(shù)據(jù)對(duì)Bob的授權(quán)記錄record,包括Alice的DID,數(shù)據(jù)Hash值,授權(quán)時(shí)間,授權(quán)截止時(shí)間,Bob的DID,Alice的簽名等,最后保存到區(qū)塊鏈中。

(5) Alice將云服務(wù)器中分享的數(shù)據(jù)鏈接地址url發(fā)送給Bob。

接收方請(qǐng)求訪問數(shù)據(jù)

區(qū)塊鏈密碼—— 通付盾數(shù)據(jù)安全存儲(chǔ)、加密分享和公平交易實(shí)踐

Bob根據(jù)Alice分享的數(shù)據(jù)鏈接地址url,向云服務(wù)端請(qǐng)求分享的數(shù)據(jù)。

云服務(wù)器讀取區(qū)塊鏈中的Alice的授權(quán)記錄record,并驗(yàn)證Bob的身份以及授權(quán)時(shí)間等信息。

驗(yàn)證通過后,云服務(wù)器從保存了重加密密鑰片的區(qū)塊鏈節(jié)點(diǎn)中去讀M個(gè)重加密密鑰片mrkfrags。

云服務(wù)端根據(jù)選擇的M個(gè)重加密密鑰片mrkfrags調(diào)用代理重加密中的重加密算法,對(duì)分享的數(shù)據(jù)對(duì)應(yīng)的密鑰密文keyCipher進(jìn)行重加密,得到密鑰重加密密文keyReencryptCipher。

云服務(wù)器將分享的數(shù)據(jù)密文dataCipher以及密鑰重加密密文keyReencryptCipher返回給Bob。

  接收數(shù)據(jù)并解密

(1) Bob得到云服務(wù)器返回的數(shù)據(jù)密文以及密鑰重加密密文后,根據(jù)口令讀取本地私鑰。

(2) Bob根據(jù)公鑰加密算法,使用私鑰解密密鑰重加密密文,得到對(duì)稱密鑰。

(3) Bob根據(jù)對(duì)稱加密算法,使用對(duì)稱密鑰解密數(shù)據(jù)。

三、數(shù)據(jù)公平交易

問題描述

問題1:如何證明數(shù)據(jù)是我的?

問題2:如何保障數(shù)據(jù)沒有中心化泄露風(fēng)險(xiǎn)?

問題3:如何保障數(shù)據(jù)不被中間人劫持或竊聽(數(shù)據(jù)只正確傳輸給了我希望發(fā)送的人,并且加密數(shù)據(jù)只可以由對(duì)方解密)?

問題4:如何保障我傳輸?shù)臄?shù)據(jù)不被對(duì)方隨意復(fù)制使用?

問題5:對(duì)于數(shù)據(jù)交換和數(shù)據(jù)交易而言,如何保障我分享了數(shù)據(jù)(或付了錢)就一定能獲得我想要的數(shù)據(jù)(或錢)?

問題6:對(duì)于數(shù)據(jù)交換和數(shù)據(jù)交易而言,如何保障我分享(銷售)的數(shù)據(jù)不會(huì)被對(duì)方二次分享(銷售)?

  區(qū)塊鏈密碼解決方案

步驟1:數(shù)據(jù)確權(quán)

Alice作為數(shù)據(jù)持有方創(chuàng)建DID,并將數(shù)據(jù)的信息寫入DID文檔,然后將DID上鏈,實(shí)現(xiàn)數(shù)據(jù)的確權(quán)。

步驟2:數(shù)據(jù)檢索

Bob作為用戶創(chuàng)建DID,然后查看區(qū)塊鏈中的數(shù)據(jù)信息,初步確定Alice的數(shù)據(jù)是自己需要的類型,并從區(qū)塊鏈上獲得Alice的DID以及公鑰。

步驟3:建立安全連接

Bob向Alice發(fā)送數(shù)據(jù)“試吃”請(qǐng)求,并建立安全連接。

步驟4:數(shù)據(jù)“試吃”與數(shù)據(jù)傳輸

Alice向Bob加密發(fā)送“試吃”數(shù)據(jù)。Bob通過“試吃”數(shù)據(jù)從數(shù)據(jù)格式和質(zhì)量等方面進(jìn)一步確定數(shù)據(jù)是自己需要的。

步驟5:公平交易

Bob向Alice發(fā)送交易請(qǐng)求,Alice生成安全參數(shù)并發(fā)送給Bob,Bob驗(yàn)證通過后發(fā)布智能合約,智能合約驗(yàn)證參數(shù)后執(zhí)行交易。

步驟6:數(shù)據(jù)使用

Bob得到數(shù)據(jù)m后,使用數(shù)據(jù)m,并在區(qū)塊鏈中保存對(duì)數(shù)據(jù)m的評(píng)價(jià)。

技術(shù)拆解

數(shù)據(jù)確權(quán)

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

(2) Alice生成公共參數(shù)G,G是橢圓曲線循環(huán)群生成元。

(3) Alice對(duì)于數(shù)據(jù)m,計(jì)算其屬性,包括:

數(shù)據(jù)m的哈希值Hash(m),用于數(shù)據(jù)m的完整性驗(yàn)證。

數(shù)據(jù)m的Pedersen Commitment M=m*G,用于驗(yàn)證Bob接收到的數(shù)據(jù)m的真實(shí)性。

Alice對(duì)數(shù)據(jù)Hash(m)的簽名sig=Sign(SK_Alice,Hash(m)),用于證明Alice對(duì)數(shù)據(jù)m的所有權(quán)。

數(shù)據(jù)m的特征提取值feature=FeatureExtraction(m)及其Hash值Hash(feature),保證區(qū)塊鏈中保存的數(shù)據(jù)m的唯一性。

數(shù)據(jù)m的特征描述信息msg=Describe(m),用于用戶初步了解數(shù)據(jù)的信息,初步確定數(shù)據(jù)m是否是自己需要的。

(4) Alice更新DID_Alice,將公共參數(shù)G以及m的屬性寫入其DID文檔中。

(5) Alice將DID_Alice上傳到區(qū)塊鏈中。

數(shù)據(jù)檢索

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

(2) Bob將DID_Bob上傳到區(qū)塊鏈中。

(3) Bob通過DID_Bob瀏覽區(qū)塊鏈上所有的DID文檔中的數(shù)據(jù)描述信息msg。

(4) Bob根據(jù)msg初步確定數(shù)據(jù)m是自己需要的。

建立安全連接

區(qū)塊鏈密碼—— 通付盾數(shù)據(jù)安全存儲(chǔ)、加密分享和公平交易實(shí)踐

Bob生成隨機(jī)數(shù)nonce作為Alice與Bob之間的會(huì)話密鑰。

Bob從blockchain中查找didAlice并獲得其DID文檔,其中包含其公鑰PKA。

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

Bob使用didBob的私鑰skBob對(duì)Hash(didBob,nonce)進(jìn)行簽名,得到簽名sig。

Bob前Alice發(fā)送cipher和sig,作為連接請(qǐng)求的參數(shù)。

Alice解密cipher得到didBob和nonce。

Alice根據(jù)didBob在區(qū)塊鏈上查詢其DID文檔獲得其公鑰pkB。

Alice用pkB以及didBob和nonce驗(yàn)證簽名sig的有效性。若有效,則可以進(jìn)行安全連接;若無效,則放棄連接或者重新發(fā)起連接。

  數(shù)據(jù)“試吃”與傳輸

(1) Alice用會(huì)話密鑰nonce加密“試吃”數(shù)據(jù)m_try,得到E(m_try)。

(2) Alice向Bob發(fā)送E(m_try)以及Hash(m_try)。

(3) Bob解密E(m_try)得到m_try,并驗(yàn)證Hash(m_try),證明數(shù)據(jù)完整性。

(4) Bob試用m_try,進(jìn)一步確定數(shù)據(jù)m是自己需要的。

公平交易

區(qū)塊鏈密碼—— 通付盾數(shù)據(jù)安全存儲(chǔ)、加密分享和公平交易實(shí)踐

Bob向Alice發(fā)送交易請(qǐng)求,建立安全連接。

Alice生成隨機(jī)數(shù)k和r作為對(duì)稱密鑰. 其中k用于加密m, r用于加密k。

Alice計(jì)算k, r和m的承諾K=k\*G, R=r\*G, M=m*G,并保存到區(qū)塊鏈。

Alice計(jì)算m和r的密文E(m)=m+k, z=E(k)=k+r。

Alice根據(jù)didBob從區(qū)塊鏈上獲得didBob的公鑰pkB,然后加密z得到密文E(z)。

Alice將K,R,E(m),E(z)發(fā)送給Bob。

Bob用私鑰skB解密E(z),得到z=k+r。

Bob根據(jù)didAlice從區(qū)塊鏈中獲得didAlice的公共參數(shù)G以及數(shù)據(jù)m的承諾M。

(9) Bob驗(yàn)證E(m)\*G=M+K, z\*G=K+R.驗(yàn)證通過后向Alice發(fā)送成功的消息。E(m)\*G=M+K驗(yàn)證數(shù)據(jù)m與承諾M對(duì)應(yīng)數(shù)據(jù)是否一致以及k是否為密文E(m)的密鑰; z\*G=K+R驗(yàn)證密鑰k與承諾K對(duì)應(yīng)的密鑰是否一致以及r是否為密文z的密鑰。

(10) Bob發(fā)布智能合約以及參數(shù)R。

(11) Alice收到Bob發(fā)送的驗(yàn)證成功的消息后將r發(fā)布到區(qū)塊鏈中。

(12) 智能合約驗(yàn)證R=r\*G,驗(yàn)證成功后執(zhí)行交易,將r發(fā)送給Bob,Token發(fā)送給Alice。

(13) Bob收到r后,計(jì)算k=z-r, m=E(m)-k。

數(shù)據(jù)使用

(1) Bob使用交易的數(shù)據(jù)m。

(2) Bob反饋對(duì)數(shù)據(jù)m的評(píng)價(jià)并將其保存在區(qū)塊鏈中。

目前,區(qū)塊鏈密碼技術(shù)已成功應(yīng)用于通付盾DApp的多個(gè)實(shí)際場(chǎng)景中并長期穩(wěn)定運(yùn)行。通付盾DApp為用戶提供安全、隱私、去中心化聯(lián)結(jié)工具。

#加密云盤 #加密分享

在通付盾DApp的“加密云盤”和“加密分享”功能中,利用區(qū)塊鏈密碼,DApp實(shí)現(xiàn)了:數(shù)據(jù)云端加密存儲(chǔ),密鑰只由用戶自己保管,只有自己可以授權(quán)解密,保障用戶的數(shù)據(jù)主權(quán);實(shí)現(xiàn)數(shù)據(jù)點(diǎn)對(duì)點(diǎn)加密分享,數(shù)據(jù)分享通道安全且秘密。

#密信消息

在通付盾DApp的“密信”功能中,區(qū)塊鏈密碼適配了語音電話、視頻電話、文字、表情、聲音消息、圖片消息、文件消息等各種數(shù)據(jù)類型,保障“密信”消息的安全性和秘密性。

#數(shù)字身份

通付盾DApp中的“數(shù)字身份”是區(qū)塊鏈數(shù)字身份,在區(qū)塊鏈密碼的去中心化環(huán)境下,用戶的公私鑰體系取代傳統(tǒng)互聯(lián)網(wǎng)的賬戶體系。用戶具有完全的自主性,私鑰本地生成,從中導(dǎo)出公鑰再變換出地址,非常隱秘,自己給自己開賬戶,不需要中介。公私鑰成為了用戶可以自證的身份。

數(shù)字化技術(shù)正帶領(lǐng)我們來到了一個(gè)更廣闊的數(shù)字經(jīng)濟(jì)時(shí)代,數(shù)字空間的安全是構(gòu)建有序、穩(wěn)定數(shù)字經(jīng)濟(jì)環(huán)境的重要基礎(chǔ),而安全最重要的核心是信任與隱私,信任成本的降低和數(shù)據(jù)隱私的安全將是加速社會(huì)進(jìn)步的重大推動(dòng)力,這就需要密碼技術(shù)和區(qū)塊鏈技術(shù)的發(fā)展與結(jié)合。

成立至今,通付盾人始終秉承“誠信、質(zhì)量、效率、價(jià)值”的企業(yè)文化,凝心聚力、務(wù)實(shí)篤行,堅(jiān)持服務(wù)好用戶,保障數(shù)字空間安全。2021年通付盾人將以此為新起點(diǎn),繼續(xù)為客戶提供更優(yōu)質(zhì)的產(chǎn)品及更高效的服務(wù),承擔(dān)起更多的社會(huì)責(zé)任,為我國數(shù)字經(jīng)濟(jì)建設(shè)貢獻(xiàn)自己的力量,讓數(shù)字生活更安全更美好!

(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )