?

基于區塊鏈的食品追溯信息的存儲技術

2019-11-30 15:16張嘉偉
電子技術與軟件工程 2019年2期
關鍵詞:同態共識加密

文/張嘉偉

區塊鏈作為一種公共的、分布式的賬本,利用時間戳、共識機制等技術手段,實現了數據的不可篡改以及可完整追溯等特性,這不僅可以有效解決中心化數據存儲問題,同時也為跨機構溯源體系的建立提供了技術支持。建設基于區塊鏈的食品追溯系統,關鍵在于實現對食品交易數據的分布式存儲和管理,解決存儲流程、數據加密、數據存儲、數據庫選型、及性能瓶頸等問題。

1 區塊技術的架構方案

Hyperledger Fabric是IBM 推出的企業級區塊鏈開源架構方案。Fabric定義了鏈、Peer、通道、共識服務的概念,其中,鏈代表了賬本和對應的共識服務,Peer可以擁有多個邏輯賬本,并且可以參與多條鏈;通道是將Peer連接共識服務的虛擬通信方式;而共識服務既是可信的與鏈無關的公共服務。

在本項目中,我們基于Fabric搭建系統的架構,底層由多個節點組成P2P網絡,通過GRPC通道進行交互,利用Gossip協議進行同步,而業務應用通過SDK訪問Fabric網絡中的多種資源。系統架構包括賬本、交易、鏈碼、事件、權限管理,其中,賬本是最核心的結構,記錄應用的業務信息;鏈碼承載系統的交易執行邏輯,主要依賴容器、狀態機等技術;權限管理負責整個交易過程的訪問控制,主要利用已有的PKI體系、數字證書、加解密算法等諸多安全技術。

2 區塊數據存儲流程

食品信息區塊的構建分為兩部分,一部分是將食品供應交易信息的追溯哈希碼生成區塊并注冊到區塊鏈上,另一部分是將共享的食品相關信息形成標準文檔,并把文檔的索引生成區塊并注冊到鏈上。其處理流程如下:

2.1 生成食品注冊信息

系統為每個食品交易信息生成一對公鑰和私鑰地址,使用設定的主公鑰地址向注冊的公鑰地址發送消息,生成區塊寫入到區塊鏈中,完成食品交易信息的登記注冊。

2.2 上傳食品信息到追溯區塊

將食品信息進行封裝后用管理機構的私鑰地址對這些數據進行數字簽名,再傳送到脫鏈的可信云存儲數據庫,然后利用區塊鏈中的食品管理機構的公鑰地址對數據的電子簽名進行核對,只有通過核對的數據,可信存儲庫才認可上傳的食品信息是合法的。

2.3 加密食品追溯信息

使用哈希算法對共享食品追溯信息計算生成數字指紋并寫入到區塊鏈中。

2.4 存儲原始數據

將共享食品原始信息進行脫鏈存儲并存儲在云數據庫上。

2.5 檢索數據

區塊節點在收到檢索請求后對請求真實性進行驗證,通過后查詢自己的原始數據并根據請求的計算內容進行計算,并將計算結果用請求方公鑰加密返回。

3 核心技術分析

3.1 基于布隆過濾器的區塊內容查找辦法

hash可以將任意內容映射到一個固定長度的字符串,而且不同內容映射到相同串,構成一個“內容→索引”的生成關系,弊端就是當映射后的值限制在一定范圍(如總數組大小)內時,會發現hash沖突的概率會變高,而且范圍越小,沖突概率越大。為解決這個問題,我們采用更高效的布隆過濾器,即通過采用多個hash函數來提高空間利用率,對于同一個給定輸入,由多個hash函數計算出多個地址,分別在位串的這些地址上標記為1進行查找,進行同樣的計算過程,并查看對應元素,如果都為1,則說明較大概率是存在該輸入的。實驗證明,采用該方法后,誤報率低于1%。

3.2 基于同態技術的數據加密

同態加密是基于數學難題的計算復雜性理論的密碼學技術,對經過同態加密的數據進行處理得到一個輸出,輸出進行解密,其結果與用同一方法處理未加密的原始數據得到的輸出結果是一樣的。在本項目中,使用同態加密技術,通過應用基于帶擾動學習的同態加密技術,加密后的數據只有用戶自身可以進行解密,整個過程第二方平臺無法獲知任何有效的數據信息,即運行在區塊鏈上的智能合約可以處理密文,但卻無法獲知真實數據,極大地提高了數據的安全性。

3.3 區塊鏈數據庫解決方案

系統應用LevelDB數據庫,這是采用C++編寫的一種高性能嵌入式數據庫,沒有獨立的數據庫進程,占用資源少,速度快。有如下特點:

(1)鍵和值可以是任意的字節數組;

(2)數據是按鍵值排序后存儲的;

(3)可以自定義排序方法;

(4)基本操作是基于鍵的;

(5)支持批量修改的原子操作;

(6)支持創建快照;

(7)支持對數據前向和后向的迭代操作;

(8)數據采用Snappy壓縮。

3.4 區塊寫入性能解決方案

區塊鏈的讀取性能通常沒有問題,但寫入需要在所有節點上做共識及加密運算,這些操作都是CPU密集型操作,所以存在性能瓶頸。針對這個問題,我們通過如下方案解決:

(1)通過消息隊列技術進行異步寫入,將需要寫入的區塊放入隊列中,再利用kafka、SBTF等共識算法對所有交易信息進行排序并打包成區塊,發給committing peers節點,實現區塊鏈上鏈操作;

(2)并行寫入,建設多個區塊鏈平臺,用多個平臺同時服務于業務。

(3)區分全節點和輕量級節點。區塊鏈網絡中的節點包括保存完整區塊鏈的全節點,也包括不保存完整的區塊鏈輕量級節點。全節點能自主校驗所有交易信息,不需要借助任何外部參照,輕量級節點只保留了區塊鏈的一部分內容,通過“簡易支付驗證(SPV)”的方式來完成交易驗證。

猜你喜歡
同態共識加密
共識 共進 共情 共學:讓“溝通之花”綻放
論思想共識凝聚的文化向度
關于半模同態的分解*
拉回和推出的若干注記
商量出共識
一種基于熵的混沌加密小波變換水印算法
一種基于LWE的同態加密方案
HES:一種更小公鑰的同態加密算法
認證加密的研究進展
基于ECC加密的電子商務系統
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合