區塊鏈中的密碼學,使用ABE結合區塊鏈

ABE 密碼學,以及與區塊鏈結合的價值

背景

  • 區塊鏈技術具備篡改難度高、使用成本低、分布式的優點,本應成為各行各業的重要助力。但是由于鏈上參與方擔心自己的核心數據外泄,不愿將自己的核心數據上鏈,這個原因成為阻止區塊鏈落地的主要難題。
  • 使用 ABE密碼學,就可以使得區塊鏈中數據所有權得到有效保護,鏈上數據歸屬權為參與者本人所有,外人無法訪問。

ABE 密碼學是什么

  • ABE 是基于屬性的加密,即(Attribute-Based Encryption)。與 RSA、IBE (基于身份加密)等加密方式相比,其最大的不同點是實現了一對多的加解密。也就是說,ABE 不需要像其他加密方式那樣,每次加密都必須知道接受者的身份信息,只要用戶擁有的屬性符合加密者所描述的策略時,用戶就可以解密。

例子

  • 一個數據擁有者需要將一份明文文件,加密發送給N個不同的用戶,倘若使用傳統公鑰加密算法,數據擁有者需要首先保存這N個用戶的公鑰(不考慮公鑰證書的情況下),利用這N個不同公鑰,使用該份明文文件,加密N次,形成N份不同的密文,分別發送給這個N個用戶。

?

  • 若使用ABE來完成這項任務則會輕松很多。此時,數據擁有者只需要制定一條僅有這N個用戶才能滿足的訪問策略,接著輸入公共參數PP、該條策略以及明文文件至ABE加密算法,進行加密一次,形成唯一一份密文。得到密文后,數據擁有者將該份密文分別發送給這N個不同用戶。

?

  • 從加密計算開銷與存儲開銷的角度來看,ABE在該場景下(數據加密共享場景)相較于傳統公鑰加密算法,有著肉眼可見的性能優勢,此處便不再贅述。

屬性指的是什么

  • 屬性可以理解為一個對象具有的某些特征。舉個例子,Jacky Li 是 A 大學信息安全學院的教授,那么「A 大學」,「信息安全學院」以及「教授」就是 ABE 中刻畫 Jacky Li 這個人的多個屬性,多個不同的屬性,可以構成不同的屬性集合。在此基礎上,策略實際即是由屬性及它們間關系所組成的一個邏輯表達式
  • 倘若拋開嚴謹的定義,用一句話說明 ABE 公鑰加密算法,其實就是看屬性集合策略是否匹配密碼要求的過程。
  • 在 ABE 中,需要弱化公鑰這一概念,稱之為公共參數(public parameter)。屬性集合則被嵌入到私鑰中,如果用戶擁有的屬性可以與密碼要求的策略匹配成功,就可以成功解密。

具體的例子

  • 假設現有一條密文策略規定:參與 X 課題 or (信息安全學院 and A 大學 and 教授)
  • 這條策略表達的含義是,唯有 X 課題組的成員或 A 大學信息安全學院的教授才能滿足要求進行解密。現在有三個用戶,分別是 A 大學信息安全學院的 Alan 教授,A 大學經濟管理學院的 Black 教授,B 大學參與 X 課題的 Charles 教授。
  • 三個用戶中,Alan 的屬性集合{計算機學院,A 大學,教授}滿足要求,Charles 的屬性{參與 X 課題}也滿足要求,但是 Black 的屬性不能滿足要求。所以 Alan 和 Charles 解密成功,而 Black 解密失敗。

兩種不同的方案

  • 目前,實現 ABE 的方案主要有 CP-ABE (密文策略 ABE)和 KP-ABE (秘鑰策略 ABE)。二者最大的分別在于策略和屬性的匹配方式上。
  • CP-ABE,指的是策略嵌入在密文中,屬性集合嵌入到密鑰中,當且僅當屬性能夠滿足策略時可以解密。
  • KP-ABE 是指,策略嵌入到密鑰中,屬性集合嵌入到密文中。
  • 雖然在結構上,二者具有明顯的對偶關系,但在實際使用中,二者的應用場景卻有著明顯的不同。
  • CP-ABE 由于策略嵌入密文中,這就意味著,數據擁有者可以通過設定策略去決定擁有哪些屬性的人能夠訪問這份密文,也就相當于對這份數據做了一個加密訪問控制。CP-ABE 的應用場景一般是公有云上的數據加密存儲與共享。
  • KP-ABE 的應用場景則更加偏向于付費視頻網站、日志加密管理等等。

5 分鐘了解 ABE 密碼學,以及與區塊鏈結合的價值

CP-ABE?

簡介

  • CP-ABE(ciphertext policy attribute based encryption,密文策略屬性基加密系統):所謂密文政策加密系統是指,密文對應于一個訪問結構而密鑰對應于屬性集合,解密當且僅當屬性集合中的屬性能夠滿足此訪問結構。這種設計比較接近于現實中的應用場景,可以假象每個用戶根據自身條件或者屬性從屬性機構得到密鑰,然后加密者來制定對消息的訪問控制。

流程?

  • 設置:使用隨機算法,輸入隱藏的安全參數,輸出公開參數PK和一個主密鑰MK。
  • 加密:使用隨機算法,輸入一個消息m、一個訪問結構A、公開參數PK,輸出密文E。?
  • 密鑰生成:使用隨機算法,輸入一組屬性Y、主密鑰MK、公開參數PK,輸出一個解密密鑰D。
  • 解密算法輸入:?基于訪問結構A加密的密文E,對應屬性組Y的解密密鑰D,公開參數PK。如果Y∈A,輸出X消息m。

KP-ABE?

簡介

  • KP-ABE?(key policy attribute based encryption,密鑰策略屬性基加密系統):所謂密鑰政策加密系統是指,密鑰對應于一個訪問控制而密文對應于一個屬性集合,解密當且僅當屬性集合中的屬性能夠滿足此訪問結構。這種設計比較接近靜態場景,此時密文用與其相關的屬性加密存放在服務器上,當允許用戶得到某些消息時,就分配一個特定的訪問結構給用戶。

流程

  • 設置:使用隨機算法,輸入隱藏的安全參數,輸出公開參數PK和一個主密鑰MK。
  • 加密:使用隨機算法,輸入一個消息m、一組屬性Y、公開參數PK,輸出密文E。?
  • 密鑰生成:使用隨機算法,輸入訪問結構A、主密鑰MK、公開參數PK,輸出一個解密密鑰D。
  • 解密算法輸入:?基于屬性組Y加密的密文E,對應訪問結構A的解密密鑰D,公開參數PK。如果Y∈A,輸出X消息m。

與區塊鏈怎么結合? ?隱私

  • 區塊鏈的一大特點在于數據共享,這本是區塊鏈的一大優點。然而,在實際應用中,很多參與者的數據很涉及機密,數據所有者并不樂意把自己的數據公開出來。
  • 比如在金融領域。數據上鏈可以提高數據本身的安全性,也有利于監管機構從區塊鏈中調取數據進行監管,這些我們都知道了。但是為什么金融領域的區塊鏈應用遲遲推進不下去呢?一個亟待解決的重要問題是,金融公司本身不愿意將數據存在鏈上。因為這些數據都是相當敏感且重要的,一旦數據外泄,會帶來不小的損失。
  • 通過 ABE,金融公司可以將自己的數據加密后傳到區塊鏈上。由于數據全程都是密文,鏈上其他人只能看到加密之后的亂碼,沒有使用價值,拿到了也沒有用。與之相對,金融公司自身可以控制誰能對數據進行訪問,只需要把數據訪問的權限交給監管機構和與之有數據合作的伙伴即可。
  • 傳統的加密方式是將數據加密后,將秘鑰發送給各個需要訪問數據的機構,這種方式效率雖然比較高,但是一旦秘鑰外泄,無法斷定是哪一個機構作為。相比起傳統的加密,ABE 的好處很明顯,因為每一個機構的屬性不盡相同,其秘鑰也不盡相同,一旦我把秘鑰泄露給外界,很容易就被追查得到。
  • CP-ABE不需要像其它加密方式那樣,如非對稱加密,每次加密都必須知道接收者的身份信息且發送給多個用戶時必須加密多次,CP-ABE只需要設置訪問策略僅執行一次加密,當用戶擁有的屬性符合加密者所描述的策略時,數據使用者就可以解密。
  • 可解決對稱加密密鑰傳輸帶來的密鑰泄露的問題,保護了數據擁有者信息,也保護了數據使用者信息。

支持用戶屬性可撤銷和恢復的CP-ABE算法實現步驟

  • CP-ABE主要由7個步驟組成,前兩步均在證書頒發中心(CA)執行,并存儲PK\MK\UK:
  1. 初始化:初始化算法為隨機化算法,初始化僅生成系統公鑰PK、系統主秘鑰MSK。
  2. 撤銷機構初始化:輸入參數為PK,生成一個素數域P,為每個屬性att計算list=1。算法輸出初始化的P,map<userGID,prime>及map<att,list>,list并不是我們常見的list,而是一個大數,且為素數,用來記錄是否被撤銷。
  3. 秘鑰生成KeyGen:可信授權中心根據PK、MK和數據請求者提交的屬性集合S,為數據請求者生成與屬性集合關聯的用戶秘鑰UK。在素數域中為用戶申請一個素數prime,從P中刪除這個prime,保證不同用戶獲取的prime不一樣,然后素數存入映射表map<userGID,prime>中。
  4. 加密Encrypt:加密算法(隨機化算法)輸入參數為PK、待加密消息M、訪問策略關聯的訪問控制結構,輸出基于屬性加密的密文。
  5. 解密Decrypt:解密為確定化算法,由數據請求者執行。解密分為兩個步驟,第一步:訪問策略樹的葉子節點,令i=att(x),x表示密文策略訪問樹的葉子節點,(函數att(x)返回節點x所對應的屬性),如果i∈S,算法獲取該屬性對應的撤銷列表list并取模list%prime。若值不為0,表明該用戶未被撤銷,若為0,表示已被撤銷,解密結束;第二步:當第一步驗證通過后,算法輸入UK、密文M,如果屬性集合滿足訪問策略,算法可成功解密密文M。
  6. 用戶屬性撤銷:算法輸入參數為屬性att,屬性對應的撤銷列表list、用戶user及用戶對應的素數prime。當用戶user被撤銷屬性att時,DO分別從映射表map<user,prime>和map<att,list>取出用戶對應的素數prime及屬性對應的撤銷列表list,并計算list'=list×prime。屬性att對應的撤銷列表更新為list'。
  7. 用戶屬性恢復:算法輸入參數為屬性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算法實現

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

  1. https://github.com/stefano81/dcpabe
  2. https://github.com/TU-Berlin-SNET/jTR-ABE
  3. java平臺
  4. charm平臺
  5. CP-ABE_JNI

參考鏈接

  • 參考鏈接
  • CP-ABE和KP-ABE
  • 基于ABE算法的訪問控制研究
  • 基于屬性的加密概述
  • 基于屬性加密方案(CP-ABE,KP-ABE)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/447128.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447128.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447128.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

VMware虛擬機安裝Ubuntu系統教程

所使用的文件如下&#xff1a; VMware Workstation 17 Pro ubuntu-22.04.3-desktop-amd64.iso 一、ubuntu 命名規則及各版本一覽表 1.ubuntu 命名規則&#xff1a; 例如&#xff1a;ubuntu 16.04 LTS 是長期維護版本&#xff1b;ubuntu 17.04 是新特性版本 前兩位數字為發…

C++靜態類型成員變量的初始化順序(單例模式)

對編譯器來說&#xff0c;靜態成員變量的初始化順序和析構順序是一個未定義的行為 #include <string> #include <iostream> using namespace std; class Base{ public:static int b;static int a;}; int Base::b 2; int Base::a b 1;int main() {Base base;cou…

區塊鏈中密碼學與安全技術

區塊鏈的定義 區塊鏈的定義&#xff0c;應當是&#xff1a;區塊鏈是一種按照時間順序將數據進行分布式存儲的塊鏈式數據結構&#xff0c;它利用共識機制進行數據驗證&#xff0c;利用密碼學進行數據保護和用戶安全訪問&#xff0c;利用智能合約來操作數據&#xff0c;從而成為…

面經:服務器相關

阻塞IO 當你去讀一個阻塞的文件描述符時&#xff0c;如果在該文件描述符上沒有數據可讀&#xff0c;那么它會一直阻塞(通俗一點就是一直卡在調用函數那里)&#xff0c;直到有數據可讀。當你去寫一個阻塞的文件描述符時&#xff0c;如果在該文件描述符上沒有空間(通常是緩沖區)…

如何用區塊鏈保障數據安全和承載數據確權

區塊鏈可以確保數據安全&#xff0c;體現在那些方面呢&#xff1f; 主要是兩個維度&#xff0c;一是數據的不可篡改性&#xff1b;另外一個就是數據的隱私安全性。區塊鏈技術本身并不解決任何的安全問題&#xff0c;因此需要搭配安全技術一起使用&#xff0c;比如非對稱加密、…

面經:單例模式

侯捷單例 和劍指不同 &#xfffc; 餓漢式 餓漢式的特點是一開始就加載了&#xff0c;如果說懶漢式是“時間換空間”&#xff0c;那么餓漢式就是“空間換時間”&#xff0c;因為一開始就創建了實例&#xff0c;所以每次用到的之后直接返回就好了。餓漢式有兩種常見的寫法&…

屬性加密技術及基于屬性的ABE算法的訪問控制技術介紹

屬性加密技術 基于身份的加密體制簡介 基于身份的加密體制可以看作一種特殊的公鑰加密&#xff0c;它有如下特點:系統中用戶的公鑰可以由任意的字符串組成。這些字符串可以是用戶在現實中的身份信息&#xff0c;如:身份證號碼、用戶姓名、電話號碼、Email地址等&#xff0c;因…

面經:http協議

總結HTTPS傳輸過程 客戶端先從服務器獲取到證書&#xff0c;證書中包含公鑰 客戶端將證書進行校驗 客戶端生成一個對稱密鑰&#xff0c;用證書中的公鑰進行加密&#xff0c;發送給服務器 服務器得到這個請求后用私鑰進行解密&#xff0c;得到該密鑰 客戶端以后發出后續的請求&…

基于屬性加密的ABE算法的應用場景思考展望

ABE算法先前使用在云計算場景中&#xff0c;和區塊鏈存在交叉應用場景&#xff0c;具體問題體現在 數據的異地存儲、云服務器提供商的不可信、管理員能否對自身數據擁有足夠的控制能力以及如何保證數據的安全有效共享都是亟需解決的問題。 研究背景&#xff1a; 云計算越來越…

面經:設計模式

什么是接口隔離原則&#xff08;Interface Segregation Principle&#xff09; 定義&#xff1a;客戶端不應該依賴它不需要的接口&#xff1b;一個類對另一個類的依賴應該建立在最小的接口上。概括的說就是&#xff1a;建立單一接口&#xff0c;不要建立臃腫龐大的接口。&…

區塊鏈、密碼和銀行之間的衍生關系

銀行場景中密碼服務 設置密碼 用戶在注冊的時候&#xff0c;如果使用弱密碼&#xff0c;系統會檢測出來。我的猜測是將弱密碼的hash運算和用戶輸入的密碼hash比對&#xff0c;如果一致&#xff0c;禁止用戶注冊。 1、不要設置簡單密碼&#xff0c;您設置的密碼必須符合中信銀…

面經:多線程 線程池

使用線程池 當進程被初始化后&#xff0c;主線程就被創建了。對于絕大多數的應用程序來說&#xff0c;通常僅要求有一個主線程&#xff0c;但也可以在進程內創建多個順序執行流&#xff0c;這些順序執行流就是線程&#xff0c;每一個線程都是獨立的。 線程是進程的組成部分&am…

AIgorand區塊鏈中VRF隨機函數的應用

VRF&#xff08;Verifiable Random Function&#xff09; 可驗證隨機函數可以看作是一個隨機預言機&#xff0c;即可以通過任意的一個輸入&#xff0c;獲得一個隨機數輸出&#xff1a;輸出的結果&#xff08;Output&#xff09;是一個隨機數&#xff0c;其數值會均勻分布在值域…

AIgorand的相關學習參考鏈接

相關具體的開發者與SDK鏈接如下&#xff1a; GoSDKJavaScript SDK 網頁鏈接 測試網申請鏈接Github存儲庫鏈接開發者網址AIgorand官網Telegram電報群綜合白皮書MediumNaver Blog領英Linkedin區塊鏈瀏覽器INC公示錢包地址基金會公示錢包地址Telegram電報群官方 Github地址 相關…

操作系統 內核棧

視頻哈工大李治軍老師&#xff1a;https://www.bilibili.com/video/BV1d4411v7u7?p12 參考文檔&#xff1a;https://blog.csdn.net/SakuraA6/article/details/108810916 學長在我大一推薦我看&#xff0c;p12和p13的內容真的有那么難嗎&#xff0c;現在已經是我看的第三遍了還…

區塊鏈技術指南 序章理解感悟

序二 誤區一&#xff1a; 區塊鏈是一種顛覆性的新技術。區塊鏈不是一個新的技術&#xff0c;而是一個新的技術的組合。其關鍵的技術&#xff0c;包括P2P動態組網、基于密碼學的共享賬本、共識機制&#xff08;拜占庭將軍問題&#xff0c;分布式場景下的一致性問題&#xff09…

面經:紅黑樹 B樹 B+樹 哈希表

1.對于插入&#xff0c;刪除&#xff0c;查找 以及 輸出有序序列 這幾個操作&#xff0c;紅黑樹也可以完成&#xff0c;時間復雜度 與 用跳表實現是相同的。 但是&#xff0c;對于按照區間查找數據這個操作&#xff08;比如 [20,300]&#xff09;,紅黑樹的效率沒有跳表高&#…

回溯法和dfs的區別

值得注意&#xff0c;回溯法以深度優先搜索的方式搜索解空間&#xff0c;并且在搜索過程中用剪枝函數避免無效搜索。那為何 回溯算法 深度優先搜索 剪枝函數這一說法沒有錯&#xff1f; 因為樹是特殊的圖。簡單來說&#xff0c;樹是廣義的圖。再簡單來說&#xff0c;樹是圖。…

C++學習筆記 簡單部分

C 數據類型 使用變量來存儲各種信息&#xff0c;變量保留的是它所存儲的值的內存位置。這意味著&#xff0c;當創建一個變量時&#xff0c;就會在內存中保留一些空間。這段內存空間可以用于存儲各種數據類型&#xff08;比如字符型、寬字符型、整型、浮點型、雙浮點型、布爾型…

Redis kqeue相關源碼

mask 或delmask &#xff1a;添加或者刪除的事件類型&#xff0c;AE_NONE表示沒有任何事件&#xff1b;AE_READABLE表示可讀事件&#xff1b;AE_WRITABLE表示可寫事件&#xff1b; 如aeCreateFileEvent(loop,e->fd,AE_READABLE,redisAeReadEvent,e); static int aeApiAddEv…