本發明涉及無線互聯網技術領域,特別是涉及一種防止信標設備被偽造或復制的方法。
背景技術:
在對發明進行詳細描述之前,先對發明中用到的專用名詞作出解釋。1.無線信標設備(Beacon device):一種電子設備,采用特定的協議通過RFID,BLE,Wi-Fi或其他無線技術廣播包含自身身份識別(ID)的信息。2.開放平臺:指通過手機或其他移動設備獲取信標設備的廣播信號、過濾特定范圍之內的信標設備ID并提供接口(API)給開發者的應用軟件。3.第三方:依附于開放平臺之上的設備生產者、設備部署者和應用開發者。
無線信標設備已經被廣泛的應用到室內導航和場景營銷之中。目前在市場上比較流行的有蘋果公司的iBeacon設備、谷歌公司的eddystone設備、和Radius Network公司的AltBeacon設備等。無線信標設備通過廣播自己的ID號來實現身份的辨識,ID號可以由信標廣播幀中多個字段組合而成。以目前最為廣泛應用的蘋果公司的iBeacon技術為例:iBeacon廣播的ID號由“UUID”+“major”+“minor”三部分組成。其中UUID是遵循ISO/IEC11578:1996標準的128位標識符,而Major和Minor則是由iBeacon發布者自行設定的16位的標識符。比如在連鎖店中安裝iBeacon時,可以在Major中寫入區域資訊,在Minor中寫入個別店鋪的ID。比如在家電中嵌入iBeacon功能時,可以用Major表示產品型號,用Minor表示錯誤代碼,用來向外部通知故障。在用作室內導航時,商戶會建立信標ID號和室內地圖坐標之間的對應關系表,當手機或其它導航設備收到信標廣播后,可以通過廣播幀里面的ID獲取當前的位置信息從而實現導航的路徑規劃。在用作場景營銷時,商戶會建立信標ID和場景之間的對應關系表,當手機或其它移動設備收到信標廣播后,可以通過廣播幀里面的ID獲取對應的場景信息從而推送相應的廣告營銷信息。
目前,安全性的缺失成為阻礙無線信標設備普及的一大障礙。如何防止惡意用戶對信標的偽造或復制成為保障信標節點安全性的重要問題。無論是iBeacon、eddystone或者其他的開放信標標準,目前的規范中均沒有明確的防止信標被偽造或者復制的辦法。在目前的開放信標協議中,協議格式都是公開的,而且所有的信息都通過明文的方式以廣播方式發送,因此信標ID信息都可以通過監聽程序獲取。在獲取信標ID信息之后,用戶可以用工具把相同的ID字段寫入到新的硬件中以創建一個與原設備完全相同的信標設備。惡意的用戶可以利用偽造或者復制的設備破壞原有的應用并為自己謀取利益。例如:1)商家A部署信標設備并開發了定位導航應用,用戶B可以偽造屬于商家A的信標設備而把用戶誘導到可以使自己獲取商業利益的位置,而商家A的定位導航應用則陷入混亂;2)商家A在線下門店部署信標設備,利用優惠券推送或者積分累積等手段吸引客戶進店消費。用戶B監聽商家A門店內的信標設備ID并復制一個相同的設備,通過被復制的設備用戶B可以在商家A門店之外的其他地區即可獲取優惠券或進行刷積分等作弊行為,商家A的商業模式遭到破壞。
信標設備生產者和信標信號接收者可以達成私密的協議防止信標被偽造或復制:信標設備生產者為每個信標設備分配一個唯一的密鑰,并把此密鑰告知信標信號接收者。基于此密鑰信標設備按照一定時間間隔自動變化ID,同時信標信號接收者運行一個完全相同的動態變化ID的算法。信標信號接收者在檢測到信標設備ID之后和自己計算所得的信標ID比對,如果比對結果相同則認為該信標設備為真實設備。其他人無法知曉信標設備的密鑰,也就無法偽造出和信標設備相同的ID。此方法有效實施的前提是信標信號接收者必須知曉信標設備的密鑰和信標設備ID動態變化的算法。
最近市場上出現了一種新的基于信標設備的運營模式。某些手機或其他移動設備應用(如微信,支付寶等)把對信標設備的支持作為自己生態系統的一部分。這些應用通過用戶的操作(如搖一搖,閃一閃等)觸發手機或其他移動設備對信標設備信號的接收,并把檢測到ID為指定范圍內信標設備的事件包裝到API中開放給第三方的開發者。我們把這樣的應用稱之為開放平臺。第三方可以生產并部署ID為開放平臺指定范圍內的信標設備,并進行應用開發。比較典型的應用開發流程是:開放平臺允許第三方自定義信標設備檢測事件觸發的URL跳轉,在跳轉頁面中結合平臺軟件的API如信標設備的坐標位置獲取、用戶信息獲取等進行應用開發。這些應用包括諸如前面提到的定位導航和場景營銷等。
在這種運營模式下,信標設備的生產者是第三方,信標信號的接收者是平臺軟件。基于平臺軟件的開放性,它不會和任何第三方開發者達成私密的信標設備防偽協議。因此,目前開放平臺不提供任何的防偽和防復制的措施:任何相同ID的信標設備被識別為同一設備。
技術實現要素:
本發明為克服上述的不足之處,目的在于提供一種防止信標設備被偽造或復制的方法,在開放平臺沒有防偽和防復制機制的情況下,仍然能夠識別被偽造和復制的第三方設備,從而保證第三方設備在開放平臺下的安全。
本發明是通過以下技術方案達到上述目的:一種防止信標設備被偽造或復制的方法,包括以下步驟:
A.開放平臺定義信號ID集合為A,集合A分拆成N+1個互斥的集合并用M和S1,...,SN表示,信標設備從M中選取主信號ID并保持不變,N個副信號ID以偽隨機的方式從S1,...,SN中選取并隨時間變化,主信號ID和副信號ID組成信標信號;
B.信標設備記錄主信號ID、設備的開始工作時間T0、和一組用以產生副信號的密鑰K1,...,KN,服務器記錄所有信標設備的主信號ID和對應的副信號密鑰,同時信標設備和服務器在計算副信號ID的偽隨機函數SLAVE_ID和時間步長ΔT上達成一致;
C.信標設備廣播信標信號,開放平臺過濾服務范圍內的信標信號,由服務器驗證信標信號真偽。
作為優選,步驟A.中所述N個副信號ID以偽隨機的方式從S1,...,SN中選取并隨時間變化,具體包括以下步驟:
1)信標設備通過設備開始工作時間T0和設備時鐘電路獲得當前時間T,然后除以時間步長ΔT得到當前時間計數值TC;
2)信標設備使用偽隨機函數SLAVE_ID(i,TC)選取第i個副信號在當前時間計數器值為TC時刻的ID;
3)當前時間計數值TC每隔ΔT時間之后加1,信標設備重新計算副信號ID。
作為優選,所述步驟C.中服務器驗證信標信號真偽的步驟包括:
服務器將開放平臺提交的信標信號與集合M中的ID比對選出主信號ID,剩余的的信號則作為副信號ID候選;服務器根據主信號ID查找和主信號ID對應的一組副信號密鑰;服務器通過ΔT計算當前服務器時間計數值TS,通過偽隨機函數SLAVE_ID計算在TS數值下的一組副信號ID;若服務器計算所得的副信號ID包含在開放平臺提交的副信號ID候選中,則可判定主信號ID來自于一個真實的設備。
作為優選,所述時間計數值設備TC通過以下方式計算得出:信標設備的開始工作時間為T0、時鐘脈沖計數為C、時鐘模塊的頻率為f,根據計算公式T=T0+C/f得到當前時間T,然后T除以時間步長ΔT,得到當前時間計數值TC。
作為優選,其特征在于,SLAVE_ID(i,TC)的定義如下:
步驟1:用基于SHA1哈希算法的偽隨機碼生成函數HMAC(Ki,TC)產生偽隨機數,其中Ki為第i個副信號密鑰,TC為當前時間計數值;
步驟2:用步驟1中生成的偽隨機數對副信號數組的長度取模,即q=HMAC(Ki,TC)mod|Si|;
步驟3:在Si中選取第q+1個元素為第i個副信號ID。
作為優選,服務器設有偏差修正變量δ修正TS。
作為優選,偏差修正量δ修正TS的實現方式是:服務器接收一個提交的主信號ID,服務器把對應的一組副信號密鑰和長度為2L+1的時間窗口內的計數值TS-δ-L,...,TS-δ,...,TS-δ+L輸入到SLAVE_ID函數得到2L+1組副信號ID;時間窗口長度L的選取取決于對和TC和TS之間偏差的預估;當服務器計算所得的2L+1組副信號ID中有一組通過TS-δ-l計算所得的副信號包含在開放平臺提交的副信號ID候選中,則判定主信號ID來自于一個真實的設備,同時把δ+l設為新的偏差修正變量的值。
作為優選,選取L為3。
本發明的有益效果在于:在開放平臺沒有防偽和防復制機制的情況下,仍然能夠識別被偽造和復制的第三方設備,從而保證第三方設備在開放平臺下的安全。
附圖說明
圖1是本發明的步驟流程示意圖;
圖2是信標設備的結構示意圖;
圖3是本發明中信標設備、平臺軟件和第三方軟件相互關系的示意圖;
圖4是本發明信標設備的工作流程示意圖;
圖5是本發明信標接收端的工作流程示意圖;
圖中:101、時鐘模塊;102、時鐘脈沖計數器;103、寄存器A;104、寄存器B;105、寄存器C;106、中央處理單元;107、無線射頻模塊;201、信標設備;202、移動設備;203、開放平臺;204、第三方應用;205、服務器。
具體實施方式
下面結合具體實施例對本發明進行進一步描述,但本發明的保護范圍并不僅限于此:
本發明由信標設備201、移動設備202、開放平臺203、第三方應用204、服務器205構成信標信號的發送和接受端,如圖3所示。信標設備201廣播信標信號,每個信標設備201廣播一個主信號ID和一組副信號ID;移動設備202接收周邊的所有的信標設備201的廣播信號之后,開放平臺203過濾掉不屬于自身服務范圍內的信標信號并把他們提交到API。移動設備202中第三方應用204通過開放平臺203的API獲取周邊范圍內的所有屬于開放平臺203服務范圍之內的信標信號。第三方應用204把獲取的信標信號上傳到服務器205進行設備真偽驗證。服務器205首先分離上傳信標信號中的主信號ID和副信號ID候選,服務器205中有一張主信號ID與其副信號密鑰對應關系的列表。對于一個主信號,在列表中查找對應的兩個副信號密鑰K1和K2,同時計算信號提交時間計數值TS。
如圖2所示,信標設備201包括:時鐘模塊101、時鐘脈沖計數器102、寄存器A103、寄存器B104、寄存器C105、中央處理單元106、無線射頻模塊107,所示時鐘模塊101為時鐘脈沖計數器102、中央處理單元104、無線射頻模塊105提供系統時鐘,時鐘脈沖計數器102、寄存器A103、寄存器B104、為中央處理單元106提供輸入,寄存器C105、中央處理單元106為無線射頻模塊107提供輸入。
基于上述裝置與結構,一種防止信標設備被偽造或復制的方法,如圖1、圖4及圖5所示,包括以下步驟:
A.開放平臺203定義信號ID集合為A,集合A分拆成N+1個互斥的集合并用M和S1,...,SN表示,信標設備201從M中選取主信號ID并保持不變,N個副信號ID以偽隨機的方式從S1,...,SN中選取并隨時間變化,主信號ID和副信號ID組成信標信號;
B.信標設備201記錄主信號ID、設備的開始工作時間T0、和一組用以產生副信號的密鑰K1,...,KN,服務器205記錄所有信標設備201的主信號ID和對應的副信號密鑰,同時信標設備201和服務器205在計算副信號ID的偽隨機函數SLAVE_ID和時間步長ΔT上達成一致;信標設備201間隔一段時間后重新選取副信號ID,具體包括以下步驟:
1)信標設備201通過設備開始工作時間T0和設備時鐘電路獲得當前時間T,然后除以時間步長ΔT得到當前時間計數值TC;
2)信標設備201使用偽隨機函數SLAVE_ID(i,TC)選取第i個副信號在當前時間計數器值為TC時刻的ID;
3)當前時間計數值TC每隔ΔT時間之后加1,信標設備201重新計算副信號ID。
C.信標設備201廣播信標信號,開放平臺203過濾服務范圍內的信標信號,由服務器205驗證信標信號真偽;服務器205驗證信標信號真偽的步驟包括:
服務器205將開放平臺203提交的信標信號與集合M中的ID比對選出主信號ID,剩余的的信號則作為副信號ID候選;服務器205根據主信號ID查找和主信號ID對應的一組副信號密鑰;服務器205通過ΔT計算時間計數值TS,通過偽隨機函數SLAVE_ID計算一組副信號ID;若服務器205計算所得的副信號ID包含在開放平臺203提交的副信號ID候選中,則可判定主信號ID來自于一個真實的設備。
其中,SLAVE_ID(i,TC)的定義如下:
步驟1:用基于SHA1哈希算法的偽隨機碼生成函數HMAC(Ki,TC)產生偽隨機數,其中Ki為第i個副信號密鑰,TC為當前時間計數值;
步驟2:用步驟1中生成的偽隨機數對副信號數組的長度取模,即q=HMAC(Ki,TC)mod|Si|;
步驟3:在Si中選取第q+1個元素為第i個副信號ID。
信標設備201采用iBeacon設備,iBeacon設備的ID由128位的UUID、16位的major值和16位的minor值拼接而成,長度為160位。
開放平臺203分配10000個信標ID組成集合A,將集合A分拆成三組,一組主信號ID M和兩組副信號IDS1,S2,并在每組信號中為信號ID創建索引。設置主信號為8000個,每組副信號ID的個數為1000個,這樣兩組副信號一共可以產生106種組合,避免不同信標設備201間副信號的沖突。生產商可以一共生產8000個信標設備201,因為加入防偽功能而損失的ID占20%。
時鐘脈沖計數器102保存從設備開始工作之后的時鐘脈沖數。
寄存器A103中保存iBeacon設備生產之后開始工作的時間T0。
使用UTC格式的時間。
寄存器B104中保存生成兩個副信號ID的密鑰K1和K2。
寄存器C105中保存iBeacon主信號ID。
中央處理模塊106從時鐘脈沖計數器102讀取時鐘脈沖計數C,結合從寄存器A103讀取的設備初始時間T0計算當前時間。如果時鐘模塊的頻率為f,那么當前時間的計算公式為T=T0+C/f。
優選的選擇時間步長ΔT為一分鐘,中央處理模塊106計算當前時間T并轉換成當前時間計數值TC。中央處理模塊106把從寄存器A103讀取的密鑰和TC值作為副信號ID生成算法的輸入。在ΔT時間段內也就是1分鐘的時間之內副信號ID保持不變。
通過上述步驟,iBeacon設備每隔1分鐘廣播信標信號,信號信標被移動設備202接收后進行設備真偽驗證。
以下通過手機應用“微信”的“發現周邊”功能為例,具體說明如何進行設備真偽驗證。
手機(即移動設備202)接收周邊所有iBeacon設備廣播是信號之后,開放平臺203“微信”過濾掉不屬于自身服務范圍內的iBeacon信號ID并把他們提交到API。
在手機中第三方應用204“發現周邊”通過開放平臺203“微信”的API獲取周邊范圍內的所有屬于開放平臺203“微信”服務范圍之內的iBeacon信號ID。
第三方應用204“發現周邊”把獲取的iBeacon信號ID上傳到服務器205進行設備真偽驗證。服務器205首先分離上傳iBeacon信號ID中的主信號ID和副信號候選ID,將開放平臺203提交的信標信號與集合M中的ID比對選出主信號ID,剩余的的信號則作為副信號ID候選;服務器205根據主信號ID,在列表中查找對應的兩個副信號密鑰K1和K2,同時計算信號提交當前時間計數值TS,通過偽隨機函數SLAVE_ID計算在TS數值下的兩個副信號ID;若服務器205計算所得的副信號ID包含在開放平臺203提交的副信號ID候選中,則可判定主信號ID來自于一個真實的設備。
由于設備時鐘偏差和網絡傳輸時延,計算副信號ID時設備的當前時間計數值TC和服務器端的信號提交時間計數值TS會稍有偏差。此種情況下,在服務器205設置一個偏差修正變量δ,δ的初始值設為0.對于一個提交的主信號ID,服務器205把對應的一組副信號密鑰和長度為2L+1的時間窗口內的計數值TS-δ-L,...,TS-δ,...,TS-δ+L輸入到SLAVE_ID函數得到2L+1組副信號ID。時間窗口長度L的選取取決于對和TC和TS之間偏差的預估。如果服務器205計算所得的2L+1組副信號ID中有一組通過TS-δ-l計算所得的副信號包含在第三方應用提交的副信號候選中,則可判定主信號ID來自于一個真實的設備,同時把δ+l設為新的偏差修正變量的值。
所以,通過第三方應用“發現周邊”對iBeacon設備訪問的頻度估算TC和TS之間的偏差,選取L的值為3。
以上的所述乃是本發明的具體實施例及所運用的技術原理,若依本發明的構想所作的改變,其所產生的功能作用仍未超出說明書及附圖所涵蓋的精神時,仍應屬本發明的保護范圍。