程曉 曾凱旋
摘要:當前線下打卡方案眾多,但大多需借助如指紋打卡機等設備,小部分打卡方案依賴GPS定位與連接特定WIFI等,該類方案存在打卡數據易作偽等不足。區塊鏈技術已在生活中得到廣泛使用,本文提出了一種基于藍牙技術與區塊鏈技術的打卡方案,該方案具有適用場景多、適用范圍廣、數據防偽及防篡改等特點。
一、相關技術
1.1 藍牙技術
藍牙技術(BlueTooth)是一種無線數據近距離通信的技術規范,藍牙技術工作頻段為2.4GHz。藍牙技術已得到較大發展,藍牙5.0有效工作范圍可達300米,傳輸速度可達24Mbps。
1.2 區塊鏈技術
區塊鏈技術是一種去中心化的分布式計算方式,其本質上是由分布式存儲方案、點對點傳輸技術、共識算法、加密算法等組合而成的體系。
區塊鏈系統中包含實用拜占庭容錯算法、工作量證明算法、權益證明算法等共識算法。不同的區塊鏈系統可采用不同的共識算法,如比特幣網絡選擇了工作量證明算法,而以太坊使用了權益證明算法。
區塊鏈系統通常包含多種密碼學算法。在數據加密與簽名方向,區塊鏈系統通常選擇RSA等非對稱加密算法。在數據編碼中區塊鏈系統會使用哈希算法。
區塊鏈依據應用場景可分為公有鏈、聯盟鏈、私有鏈等,從結構上可分為單鏈與多鏈兩種結構。
二、打卡方案設計
2.1 整體設計
本文所所述方案采用多鏈的結構。任一打卡場景均有一條獨立的鏈用于打卡記錄,多條鏈之間以平行鏈的模式運行。各鏈數據安全由其場景中的節點協調,且均擁有獨立的區賬本。本方案是為線下打卡設計,故各鏈之間擁有相同的共識機制。
用戶注冊后將獲得唯一的數字地址與密鑰對,此后用戶可自行創建或加入打卡場景。一個場景被創建后,服務器將加入該鏈網絡,并與鏈上所有節點建立P2P連接,但服務器僅作為鏈上的一個記錄者,其作用是儲存所有鏈數據。用戶節點則將其參與場景的鏈數據持久化在本地,但這并不代表服務器擁有特殊地位,其作用是提供可視化數據查詢的功能。
2.2 到場確認機制
藍牙廣播技術具有范圍廣的特點,本文基于上述特點設計了一種基于藍牙的到場確認機制,當用戶在某場地中開啟打卡,到場確認機制流程如下:
1)與場地中其他設備利用藍牙互相掃描;
2)將掃描信息廣播至正在打卡的鏈網絡中。
用戶進行某場地并開始打卡后,其設備將成為鏈網絡中一個節點,并重復上述流程。隨著用戶位置的變化,該用戶將與不同用戶互相確認,任一用戶被掃描次數達到閾值時,我們認為他已到場。閾值由場地范圍、人員規模等動態確定。
2.3 數據加密機制
本方案節點廣播數據均采用RSA加密,RSA算法是目前使用較廣泛、安全性也相對較高的非對稱加密算法.能實現加密、身份驗證和數字簽名等功能,是一種典型的公鑰密碼體制。
節點加入任一場景時,需先廣播自身公鑰至其他設備,亦會向其他節點請求公鑰。節點接收到其他設備的公鑰后,需將其持久化在本地,每個用戶均需妥善保管自己的密鑰。
本方案簽名過程如下,節點藍牙掃描到其他設備時,使用自身公鑰對掃描數據簽名,然后將簽名與公鑰一同廣播致其他設備。設備收到廣播數據,利用廣播中的公鑰對數據驗簽,該過程可防止數據在傳輸中被篡改。
2.4 區塊結構與生成機制
本方案中,任意場景有其獨立的鏈,每條鏈由多個區塊組成,區塊包含區塊頭與區塊體。區塊頭包含:前驅區塊哈希值、本區塊哈希值、本區塊生成時間等組成,創世塊的前區塊哈希值為0。區塊體由本輪打卡記錄組成,每條打卡記錄包含:用戶唯一編號、數字地址、設備MAC地址及被掃描次數等。本方案中,任意節點均可能成為打包節點,因此各節點會統計各自緩沖區數據,并按上述區塊結構生成待選區塊,若節點被選舉為打包節點,其待選區塊將被發布至鏈網絡中,反之其待選區塊將用于校驗打包節點發布的新區塊。
2.5共識機制
比特幣網絡的共識機制時工作量證明機制(POW),該共識機制下新塊生成需消耗大量算力。以太坊已將其共識機制更換為權益證明(POS),權益證明的主要思想是:節點記賬權的獲得難度與節點持有的權益成反比,該機制在實現了與POW相同容錯性的情況下,避免了大量無意義的計算,從而節約了算力與能耗。
本方案中,我們借鑒了POS機制,設計了本方案基于掃描確認的共識機制,各節點已生成待選區塊后,需達成如下共識:
1、各節點由鏈尾向前遍歷本輪打卡鏈,對參與本輪打卡的節點的歷史數據進行統計;
2、被掃描次數與打包次數之和最大的節點為打包節點;
2、節點僅接受自己得出的打包節點發布的塊。
上述選舉打包節點的共識步驟中,鏈中所有節點向前遍歷的長度應由節點數與鏈長度共同決定,一般情況下,只需向前遍歷50%的塊數據即可。該共識機制能有效節約算力,符合本方案的使用場景。但是與所有共識算法一樣,我們提出的共識機制無法保證選舉的打包節點具有唯一性,所以鏈依然存在分叉的風險。鏈分叉會影響數據的準確性,因此我們需結合本方案的特點,在極力避免同時主動解決節點間的鏈分叉與數據紊亂。
2.6鏈同步機制
如上一節中所述,我們的共識機制不能完全避免鏈分叉的發生,而且本方案中大多數節點均為輕節點,各節點數據一致無法得到保證。因此,我們設計了鏈同步機制,該機制步驟如下:1、新區塊生成之前,各節點須校驗其當前鏈數據的完整性;2、各節點廣播其鏈尾區塊哈希值;3、各節點統計接收到最多次的塊哈希值,將其視為完整鏈尾區塊,拋棄錯誤區塊;4、當本地不存在某些區塊時,節點從其他節點同步區塊數據。
多數情況下,任一鏈上節點數不會太多,因此鏈同步數據量較少,故同步速度較快。上述機制下,本方案任一鏈中參與打卡的節點鏈將數據得到統一,非誠實節點對其本地鏈的篡改都將被恢復,這也是本方案防篡改的體現。
三、 總結與分析
本文提出了一種基于區塊鏈與藍牙技術的線下打卡方案,該方案通過節點之間藍牙掃描互相確認到場,并將打卡記錄保存至區塊鏈網絡中,能有效防止打卡數據篡改與偽造。
引用文獻:
[1]蔡型,張思全.短距離無線通信技術綜述[J].現代電子技術,2004(03):65-67+76.
[2]沈鑫,裴慶祺,劉雪峰.區塊鏈技術綜述[J].網絡與信息安全學報,2016,2(11):11-20.
[3]陳建華,黃道穎,張堯,張安琳,孫宏.計算機對等網絡P2P技術[J].計算機工程與應用,2003(33):162-164+186.
作者簡介:
程曉,女 (1998-)漢,河南省商丘市,本科
曾凱旋,男(1995-),漢,貴州省畢節市,本科