基於屬性的加密技術

2021-10-13 05:42:32 字數 3936 閱讀 3744

1.背景

區塊鏈典型的乙個應用場景是資源共享,而在實際應用中,很多參與者的資料很涉及機密,資料所有者並不樂意把自己的資料公開出來。資料明文在鏈上存證後,雖然共享給其他人,但是資料被所有的人都能檢視,不存在一點私密性。如果資料所有者將資料使用自己的秘鑰加密後在鏈上存證後,能實現資料的隱私保護,但是不能安全的共享給他人。

比如在金融領域,資料上鏈可以提高資料本身的安全性,也有利於監管機構從區塊鏈中調取資料進行監管,但是為什麼金融領域的區塊鏈應用遲遲推進不下去呢?乙個亟待解決的重要問題是,金融公司本身不願意將資料存在鏈上。因為這些資料都是相當敏感且重要的,一旦資料外洩,會帶來不小的損失。

在abe中,屬性也有著相似的作用。舉個例子,jackyli是a大學資訊保安學院的教授,那麼「a大學」,「資訊保安學院」以及「教授」就是abe中刻畫jackyli這個人的多個屬性,這些屬性可以構成乙個屬性集合,我們可以把它記為集合c_jacky_li。

一種簡單的理解是策略實際即是由屬性及它們間關係所組成的乙個邏輯表示式。例如下式policy:

參與x課題or(資訊保安學院anda大學and教授)

這是一條簡單的策略,其表達的含義是唯有x課題組的成員或是a大學資訊保安學院的教授才能滿足其要求。

使用c_jacky_li與policy1進行說明。c_jacky_li集合中沒有「參與x課題」這一屬性,故其無法滿足策略的前半部分;而策略的後半部分,要求「資訊保安學院」、「a大學」、「教授」這三個屬性同時出現,而c_jacky_li同時包含了這三個屬性,所以屬性集合匹配策略後半部分,由於策略前後兩部分是or的關係,故屬性集合c_jacky_li能夠滿足策略policy1,我們稱之為屬性集合與策略匹配成功。

倘若此時另乙個使用者johnson,他的屬性集合是c_johnson=,顯然c_johnson無法滿足policy1,此時屬性集合與策略匹配失敗。

一種基於屬性加密技術(attribute-based encryption,abe),通過合理的配置共享策略,即可解決上述私密資料共享問題。根據嵌入的物件不同,abe可劃分為kp-abe、cp-abe。

以cp-abe為例,舉乙個簡單的例子說明abe相較傳統公鑰加密演算法的優勢。

乙個資料擁有者需要將乙份明文檔案,加密傳送給n個不同的使用者,倘若使用傳統公鑰加密演算法,資料擁有者需要首先儲存這n個使用者的公鑰(不考慮公鑰證書的情況下),利用這n個不同公鑰,使用該份明文檔案,加密n次,形成n份不同的密文,分別傳送給這個n個使用者。pk:public key,公鑰;ct:cipher text,密文。

若使用abe來完成這項任務則會輕鬆很多。此時,資料擁有者只需要制定一條僅有這n個使用者才能滿足的訪問策略,接著輸入公共引數pp、該條策略以及明文檔案至abe加密演算法,進行加密一次,形成唯一乙份密文。得到密文後,資料擁有者將該份密文分別傳送給這n個不同使用者。

從加密計算開銷與儲存開銷的角度來看,abe在該場景下(資料加密共享場景)相較於傳統公鑰加密演算法,有著肉眼可見的效能優勢。

cp-abe(基於密文策略的屬性加密,ciphertext-policy abe,cp-abe)是將策略嵌入到密文中,屬性嵌入到使用者金鑰中。密文對應於乙個訪問結構而金鑰對應於乙個屬性集合,解密當且僅當屬性集合中的屬性能夠滿足此訪問結構。

cp-abe基於屬性的加密運用密碼機制保護資料,由資料擁有者規定訪問密文的策略,將屬性集合與訪問資源相關聯,資料使用者可以根據自己的授權屬性的訪問密文資訊,該技術適合隱私資料共享等訪問類應用。

cp-abe由於策略嵌入密文中,這就意味著資料擁有者可以通過設定策略去決定擁有哪些屬性的人能夠訪問這份密文,也就相當於對這份資料做了乙個粒度可以細化到屬性級別的加密訪問控制,cp-abe的應用場景一般是公有雲上的資料加密儲存與細粒度共享。

cp-abe主要由7個步驟組成,前兩步均在證書頒發中心(ca)執行,並儲存pk\mk\uk:

初始化setup:初始化演算法為隨機化演算法,初始化僅生成系統公鑰pk、系統主秘鑰msk。

撤銷機構初始化:輸入引數為pk,生成乙個素數域p,為每個屬性att計算list=1。演算法輸出初始化的p,map及map,list並不是我們常見的list,而是乙個大數,且為素數,用來記錄是否被撤銷。

秘鑰生成keygen:可信授權中心根據pk、mk和資料請求者提交的屬性集合s,為資料請求者生成與屬性集合關聯的使用者秘鑰uk。在素數域中為使用者申請乙個素數prime,從p中刪除這個prime,保證不同使用者獲取的prime不一樣,然後素數存入對映表map中。

加密encrypt:加密演算法(隨機化演算法)輸入引數為pk、待加密訊息m、訪問策略關聯的訪問控制結構,輸出基於屬性加密的密文。

解密decrypt:解密為確定化演算法,由資料請求者執行。解密分為兩個步驟,第一步:訪問策略樹的葉子節點,令i=att(x),x表示密文策略訪問樹的葉子節點,(函式att(x)返回節點x所對應的屬性),如果i∈s,演算法獲取該屬性對應的撤銷列表list並取模list%prime。若值不為0,表明該使用者未被撤銷,若為0,表示已被撤銷,解密結束;第二步:當第一步驗證通過後,演算法輸入uk、密文m,如果屬性集合滿足訪問策略,演算法可成功解密密文m。

使用者屬性撤銷:演算法輸入引數為屬性att,屬性對應的撤銷列表list、使用者user及使用者對應的素數prime。當使用者user被撤銷屬性att時,do分別從對映表map<user,prime>和map<att,list>取出使用者對應的素數prime及屬性對應的撤銷列表list,並計算list』=list×prime。屬性att對應的撤銷列表更新為list』。

使用者屬性恢復:演算法輸入引數為屬性att,屬性對應的撤銷列表list、使用者user及使用者對應的素數prime。使用者被撤銷可能是暫時的,當使用者user重新擁有屬性att時,do分別從對映表map<user,prime>和map<att,list>取出使用者對應的素數prime及屬性對應的撤銷列表list,並計算list』=list÷prime。屬性att對應的撤銷列表更新為list』。

使用者擁有的基本資訊(最小資料集合):gid(ca提供或業務方提供,但要保證全域性唯一性)、cp-abe使用者屬性(業務方提供)、唯一素數(ca使用者註冊單元提供)、私鑰(ca使用者私鑰生成單元產生)。

使用者提交資訊(gid、cp-abe使用者屬性、唯一素數)到ca,申請註冊和生成使用者私鑰,使用者私鑰存在ca中,ca提供介面查詢使用者和使用者私鑰獲取。

在實際工程應用中,撤銷方案盡量選擇複雜度低、計算開銷小、實現簡單的方案。因此,本設計中採用的策略撤銷方案:通過固定長度的撤銷列表記錄撤銷使用者,撤銷過程不必更新系統及相關使用者的秘鑰,可大大降低撤銷所引起的計算開銷。

使用者屬性撤銷:演算法輸入引數為屬性att,屬性對應的撤銷列表list、使用者user及使用者對應的素數prime。當使用者user被撤銷屬性att時,do分別從對映表map<user,prime>和map<att,list>取出使用者對應的素數prime及屬性對應的撤銷列表list,並計算list』=list×prime。屬性att對應的撤銷列表更新為list』。

使用者屬性恢復:演算法輸入引數為屬性att,屬性對應的撤銷列表list、使用者user及使用者對應的素數prime。使用者被撤銷可能是暫時的,當使用者user重新擁有屬性att時,do分別從對映表map<user,prime>和map<att,list>取出使用者對應的素數prime及屬性對應的撤銷列表list,並計算list』=list÷prime。屬性att對應的撤銷列表更新為list』。

已有大量學者對其研究證明是安全的,此處安全分析略。

實現了加密資料的細粒度訪問控制,即資料擁有者可以指定誰可以訪問加密的資料,資料擁有者對資料具有完全的控制權。例如,金融公司自身可以控制誰能對資料進行訪問,只需要把資料訪問的許可權交給監管機構和與之有資料合作的夥伴即可。

cp-abe不需要像其它加密方式那樣,如非對稱加密,每次加密都必須知道接收者的身份資訊且傳送給多個使用者時必須加密多次,cp-abe只需要設定訪問策略僅執行一次加密,當使用者擁有的屬性符合加密者所描述的策略時,資料使用者就可以解密。

可解決對稱加密金鑰傳輸帶來的金鑰洩露的問題,保護了資料擁有者資訊,也保護了資料使用者資訊。

區塊鏈技術與開放銀行的構建

可參考以下兩個開源專案實現,但是不包括訪問策略更改,這一點需要自己實現。

資料加密技術

1.1.在傳統上,我們有幾種方法來加密資料流 1.2.幸運的是,在所有的加密演算法中最簡單的一種就是 置換表 演算法 1.3.對這種 置換表 方式的乙個改進就是使用2個或者更多的 置換表 1.4.與使用 置換表 相類似,變換資料位置 也在計算機加密中使用 1.5.但是,還有一種更好的加密演算法,只有...

檔案加密技術

檔案加密技術 給檔案加密的技術很多,其中又分為不同等級,以適合不同場合的需要.這裡給出最簡單的檔案加密技術,即採用檔案逐字節與密碼異或方式對檔案進行加密,當解密時,只需再執行一遍加密程式即可.編乙個例項程式,能對任意乙個檔案進行加密,密碼要求使用者輸入,限8位以內 當然你可以再更改 程式要有很好的容...

php加密技術

1.效果展示 php中常用的加密函式 1.md5加密 string md5 string str bool raw output false 1 md5 預設情況下以 32 字元十六進製制數字形式返回雜湊值,它接受兩個引數,第乙個為要加密的字串,第二個為raw output的布林值,預設為false...