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