本發(fā)明涉及區(qū)塊鏈上的隱私保護及加密狀態(tài)下的檢索。
背景技術(shù):
目前大多數(shù)區(qū)塊鏈用零知識證明或同態(tài)加密效率不高,需要一種高效的在加密情況下的檢索方式。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是設(shè)計一種方案能夠使區(qū)塊鏈上的數(shù)據(jù)在加密的情況下可以被迅速的檢索。
本方案使只有知道檢索碼的用戶才能檢索相關(guān)數(shù)據(jù),并且可以分級管理。
本發(fā)明所采用的技術(shù)方案是:區(qū)塊鏈加密檢索方案,其特征在于,用戶甲需要在區(qū)塊鏈上存數(shù)據(jù),包括檢索的關(guān)鍵字和內(nèi)容,用戶設(shè)置一個檢索碼c_i,用于用戶甲自己查看,或授權(quán)給乙用戶查看,步驟如下;
步驟S1,將需要檢索的關(guān)鍵字和檢索碼c_i串聯(lián),并做哈希運算,算出哈希值hash_c_i,把與關(guān)鍵字對應(yīng)的內(nèi)容value用對稱密鑰加密,計算內(nèi)容的哈希值Hash(內(nèi)容),用甲公鑰加密對稱密鑰,用乙公鑰加密對稱密鑰;
步驟S2,將步驟S1獲得的所有數(shù)據(jù)進行哈希運算,得出交易哈希值Hash_c_i,一同寫入?yún)^(qū)塊鏈;
步驟S3,區(qū)塊鏈上的數(shù)據(jù)下載解析分離出key_c_i和value_c_i后存入數(shù)據(jù)庫;
步驟S4,甲或乙知道檢索碼c_i,需要檢索某關(guān)鍵字,計算出關(guān)鍵字加檢索碼c_i的哈希值key_c_i;
步驟S5,在數(shù)據(jù)庫中用key_c_i檢索出value_c_i,將兩者串聯(lián)哈希后,得出交易哈希值hash_c_i,可在區(qū)塊鏈上找到對應(yīng)的Tx_c_i,找到key_c_i和value_c_i,可驗證數(shù)據(jù)是否在區(qū)塊鏈上;
步驟S6,甲或乙用自己的私鑰可以解開各自公鑰加密的對稱密鑰,用對稱密鑰解密加密的內(nèi)容,內(nèi)容進行哈希后和區(qū)塊鏈上的Hash(內(nèi)容)對比是否一致;
步驟S7,若想告訴其他用戶,可以告訴交易哈希值hash_c_i、內(nèi)容、Hash(內(nèi)容),其他用戶可以在區(qū)塊鏈上直接校驗內(nèi)容是否是甲保存到區(qū)塊鏈上的。
根據(jù)權(quán)利要求1所述區(qū)塊鏈加密檢索方案,其特征在于,用戶可以分小組,管理一小組用戶的小組長可以知道其下管理的所有用戶的檢索碼,小組長可以檢索到全小組的所有數(shù)據(jù),多個小組還可以組成大組,每個大組長可以知道其下所有小組用戶的檢索碼。
根據(jù)權(quán)利要求1、2所述區(qū)塊鏈加密檢索方案,其特征在于,用戶的檢索碼用小組長的公鑰加密,用大組長的公鑰加密,存于value中,key用小組長的檢索碼與用戶的特征值如證件號串聯(lián)哈希后獲得的hash值表示,這里大組長因為知道小組長的檢索碼,所以也能算出key,獲得value里的數(shù)據(jù)。
根據(jù)權(quán)利要求1所述區(qū)塊鏈加密檢索方案,其特征在于,用戶的檢索碼可以由小組長的檢索碼加用戶特征值串聯(lián)哈希運算后得出的哈希值hash_id來代替,用戶的特征值id可以是用戶自己知道并不會忘記的一些信息,小組長告知用戶檢索碼hash_id,用戶可以用檢索碼hash_id查詢自己的數(shù)據(jù)。
附圖說明
圖1是 區(qū)塊鏈上加密檢索方案原理的說明圖;
圖2是 區(qū)塊鏈航空意外險的加密檢索方案的說明圖;
具體實施方式
實施例1,參照說明書附圖1,本例說明區(qū)塊鏈上加密檢索方案的實現(xiàn)原理;
用戶甲需要在區(qū)塊鏈上存數(shù)據(jù),包括檢索的關(guān)鍵字和內(nèi)容,用戶設(shè)置一個檢索碼c_i,用于用戶甲自己查看,或授權(quán)給乙用戶查看,步驟如下;
步驟S1,將需要檢索的關(guān)鍵字和檢索碼c_i串聯(lián),并做哈希運算,算出哈希值hash_c_i,把與關(guān)鍵字對應(yīng)的內(nèi)容value用對稱密鑰加密,計算內(nèi)容的哈希值Hash(內(nèi)容),用甲公鑰加密對稱密鑰,用乙公鑰加密對稱密鑰;
步驟S2,將步驟S1獲得的所有數(shù)據(jù)進行哈希運算,得出交易哈希值Hash_c_i,一同寫入?yún)^(qū)塊鏈;
步驟S3,區(qū)塊鏈上的數(shù)據(jù)下載解析分離出key_c_i和value_c_i后存入數(shù)據(jù)庫;
步驟S4,甲或乙知道檢索碼c_i,需要檢索某關(guān)鍵字,計算出關(guān)鍵字加檢索碼c_i的哈希值key_c_i;
步驟S5,在數(shù)據(jù)庫中用key_c_i檢索出value_c_i,將兩者串聯(lián)哈希后,得出交易哈希值hash_c_i,可在區(qū)塊鏈上找到對應(yīng)的Tx_c_i,找到key_c_i和value_c_i,可驗證數(shù)據(jù)是否在區(qū)塊鏈上;
步驟S6,甲或乙用自己的私鑰可以解開各自公鑰加密的對稱密鑰,用對稱密鑰解密加密的內(nèi)容,內(nèi)容進行哈希后和區(qū)塊鏈上的Hash(內(nèi)容)對比是否一致;
步驟S7,若想告訴其他用戶,可以告訴交易哈希值hash_c_i、內(nèi)容、Hash(內(nèi)容),其他用戶可以在區(qū)塊鏈上直接校驗內(nèi)容是否是甲保存到區(qū)塊鏈上的。
實施例2,參照說明書附圖2,本例說明保險保單在區(qū)塊鏈上的加密檢索方案;
監(jiān)管部門、承保公司、代理公司、乘客是分級權(quán)限管理,監(jiān)管部分可以看所有的數(shù)據(jù),承保公司可以看自己下屬的代理公司及乘客的信息,代理公司可以查詢下屬乘客的信息,乘客只能看自己的信息,代理公司的客服若不知道乘客的信息也不能查詢乘客的信息;
根據(jù)信息查詢要求進行加密,承保企業(yè)或代理公司將信息加密后,在經(jīng)私鑰簽名后上傳,在區(qū)塊鏈和數(shù)據(jù)庫中建立加密索引。
監(jiān)管方,10家承保公司擁有不對稱公私鑰,用于加密的檢索碼,私鑰和檢索碼各自保密保管。
每家承保公司的代理公司都有公私鑰及檢索碼,檢索碼的哈希值用作加密對比檢索。
每個代理公司將自己的檢索碼和用戶的特征值ID號串聯(lián)哈希后,生成用戶的檢索碼,監(jiān)管部門、承保公司、代理公司都可以獲取下屬相應(yīng)乘客的檢索碼,可以檢索到加密的用戶信息,乘客可以向代理公司索要自己的檢索碼,用自己的檢索碼查詢相應(yīng)的信息,并可校驗真實性。
以下是信息錄入和查詢的方案;
1、錄入航班號,可由監(jiān)管部分審批后提交,value里可保存參加承保的公司
Key_ab1234 = Hash(航班號ab1234)
Value 用監(jiān)管公鑰或承保公司加密對稱密鑰,密鑰加密承保及代理公司名稱及檢索碼的hash值。如果每日檢索碼都一致,下面第3項可以不需要。
2、錄入每天的航班號
Key_ab1234_20161212 = Hash(ab1234航班號+日期20161212)
Value 用監(jiān)管或承保公鑰加密對稱密鑰,密鑰加密承保及代理的幾家公司名稱及檢索碼的hash值,若需要可每天用不同的檢索碼,保密性更好,也可以設(shè)置一段時間內(nèi)有效。
3、每日各航班的購買保險的乘客及保單號,承保公司、代理公司和監(jiān)管可查
Key_ab1234_20161212_za = Hash(ab1234航班號+日期20161212+眾安保險代理檢索碼的hash+第幾個乘客)
Value 姓名+身份證+保單號 對稱密鑰加密后保存,用眾安和監(jiān)管的公鑰加密密鑰,一同保存。
4、用乘客作為索引記錄保單號,承保公司、代理公司和監(jiān)管可查。
Key_Name_ID_za = Hash(姓名+身份證+年(2016或加12月)+ 保險代理公司的檢索碼),這個Key可重復(fù),但保單號不能重復(fù)。
Value 保單號 購買時間,對稱密鑰加密后保存,用承保公司和代理公司和監(jiān)管的公鑰加密密鑰,一同保存。
這里可以查詢某乘客在莫保險代理下的2016年某月的所有保單,key可以相同,但是保單號一定不同。
5、 由代理公司幫乘客查詢,代理公司用自己的檢索碼加上乘客的信息,如乘客姓名、證件名稱、證件號碼串聯(lián)后進行哈希運算得出哈希值作為乘客的檢索碼。
Hash(乘客檢索碼+2016年+當(dāng)年第幾個保單),由代理公司提供,承保公司上傳,給乘客設(shè)的檢索碼,用于校驗數(shù)據(jù)是否在區(qū)塊鏈上,僅相關(guān)的代理公司、承保公司、監(jiān)管、乘客本人知道。算出Hash作為查詢的Key。Value 為用戶的保單信息內(nèi)容。
這里乘客可以用乘客檢索碼獲取2016年的第幾個保單或全部保單。
6、 Hash(代理公司檢索碼+20161220+當(dāng)日第幾個保單),由代理公司或上級承保公司上傳,監(jiān)管知道代理公司的檢索碼。算出Hash作為查詢的Key。Value 為用戶的保單號,可加密,密鑰加密,并用代理、承保、監(jiān)管的公鑰加密。如果代理公司是多家保險公司的代理,檢索碼必須是不同的。
7、承保公司查詢下屬的代理的檢索碼
Key =Hash(承保公司檢索碼+序號), Value 承?;虮O(jiān)管公鑰加密密鑰,對稱密鑰加密(代理公司名稱 代理公司檢索碼)
8、Hash(保單號)作為key,不能重復(fù)
Value為保單內(nèi)容,對稱密鑰加密后保存,用代理公司、承保公司和監(jiān)管的公鑰加密密鑰,一同保存。
本發(fā)明的目的是設(shè)計一種方案能夠使區(qū)塊鏈上的數(shù)據(jù)在加密的情況下可以被迅速的檢索。
本方案使只有知道檢索碼的用戶才能檢索相關(guān)數(shù)據(jù),并且可以分級管理。