工業物聯網裝置的資料安全與隱私保護至關重要,特別是在資源受限的環境下,輕量級認證機制更顯重要。本文介紹的輕量級認證機制,透過雜湊和 XOR 運算,有效降低計算和通訊負擔,並確保裝置身份保密性,防止惡意攻擊。然而,單一層級的防護機制並不足以應對日益複雜的網路攻擊。因此,文章進一步探討了網路層和實體層的金鑰建立協定,以及跨層協定的設計理念,這些協定結合不同層級的特性,提供更全面的安全保障。最後,文章也點出未來研究方向,例如開發更具效率且安全的跨層金鑰建立協定,以及如何應對更複雜的攻擊模式。
工業物聯網中的資料安全與隱私保護:認證技術的進步
在真實的工業物聯網(IIoT)系統中,通常會產生、處理和交換大量資料,這些資料由多種物聯網裝置完成。每個物聯網裝置都有一個獨特的身份,並且能夠與其他通訊裝置分享其感知或處理的資料。然而,在所有資料通訊中,每個物聯網裝置都應確保另一方的身份是其聲稱的那樣。在IIoT系統中,除了需要確保資料採集和通訊的安全外,還需要確保資料始終只能被認證(或授權)的各方存取。
認證過程的重要性
因此,在任何兩台物聯網裝置之間建立通訊之前,都需要進行認證過程。在兩方通訊中,當一台物聯網裝置需要知道誰正在存取其資訊時,就會使用認證技術。同時,接收資料的物聯網裝置也需要確保資料是由應該傳送的裝置傳送的。換句話說,雙方都需要向對方證明自己的身份。因此,認證可以被視為各種安全機制中的第一道防線,它涉及到工業環境中對敏感資料存取控制的基礎。
現有的認證方案
為了在IIoT的裝置間通訊中提供相互認證,人們提出了大量的認證方案。Esfahani等人認為,傳統的認證方案無法直接應用於IIoT環境中,因為製造機器通常受計算能力和/或通訊頻寬的限制。因此,他們提出了一種輕量級的認證方案,該方案根據雜湊和XOR運算,適用於工業物聯網環境中的機器對機器(M2M)通訊。
輕量級認證機制
該機制包括註冊程式和認證程式。在註冊程式中,感測器透過安全通道向認證伺服器(AS)傳送其唯一ID。AS計算出三個秘密認證引數,並將其中兩個發送回感測器,這些引數儲存在感測器的安全元件(SE)中。在認證程式中,感測器和路由器之間實作了相互認證。感測器從不使用其真實身份進行認證,這樣可以防止智慧感測器的ID在認證過程中被惡意實體竊聽。
認證流程詳解
- 註冊程式:感測器向AS註冊,AS計算並傳回認證引數。
- 認證程式:
- 感測器生成隨機數並計算多個引數,然後向路由器傳送認證請求。
- 路由器驗證請求訊息的有效性,如果有效,則傳送認證回應並計算會話金鑰。
- 感測器收到回應後計算會話金鑰,並向路由器傳送最終訊息。
- 路由器驗證會話金鑰,如果有效,則認證成功。
內容解密:
此輕量級認證機制根據雜湊和XOR運算,適合用於資源有限的工業物聯網裝置。它提供了相互認證、會話金鑰協商和裝置身份保密性,同時抵禦重放攻擊、中間人攻擊、冒充攻擊和修改攻擊。
未來方向
雖然目前在IIoT入侵檢測領域取得了顯著進展,但仍有很大的改進空間。未來的研究方向包括開發新型的分散式入侵檢測系統(IDS),以及如何在執行過程中自動最佳化入侵檢測演算法,以保持令人滿意的檢測準確性。
圖表翻譯: 此圖示展示了輕量級認證機制中的註冊和認證流程。感測器首先向AS註冊,接收認證引數。然後,感測器與路由器之間進行相互認證,最終建立安全的通訊會話。
工業物聯網中的資料安全與隱私:鑰匙建立技術綜述
4 鑰匙建立技術
本文將回顧工業物聯網(IIoT)中提出的鑰匙建立協定。首先,我們將回顧在更高層和物理層設計的傳統鑰匙建立協定。接著,我們將回顧提出的跨層鑰匙建立協定,這些協定旨在解決傳統鑰匙建立協定的缺陷。
鑰匙建立協定概述
此圖示展示了所調查的鑰匙建立協定的概覽。
4.1 更高層的鑰匙建立協定
在更高層,鑰匙建立協定是在對稱或非對稱鑰匙設定中設計的 [7]。下面,我們將分別回顧對稱和非對稱鑰匙建立協定。
4.1.1 對稱鑰匙建立協定
對稱鑰匙建立協定被視為輕量級協定,因為與非對稱鑰匙建立協定相比,IIoT裝置可以使用較少的能量消耗來建立通訊鑰匙。文獻中提出了不同的對稱鑰匙建立協定,包括根據實體、根據機率、根據多項式和根據矩陣的協定 [7, 40]。
在根據實體的鑰匙建立協定中,例如 [41, 42],一個可信的第三方負責建立通訊鑰匙。然而,這些方法中的一個關鍵問題是主鑰匙的隱私問題。因為一旦主鑰匙被攻擊者發現,IIoT系統的安全性和隱私將面臨危險。因此,[42] 試圖透過強制 IIoT 裝置在建立通訊鑰匙後刪除主鑰匙來克服這個問題。
對稱鑰匙建立協定範例程式碼
import hashlib
def generate_session_key(device_id, master_key):
# 合併裝置ID和主鑰匙
combined = str(device_id) + str(master_key)
# 使用SHA-256雜湊函式生成會話鑰匙
session_key = hashlib.sha256(combined.encode()).hexdigest()
return session_key
# 範例用法
device_id = "Device123"
master_key = "SecretMasterKey"
session_key = generate_session_key(device_id, master_key)
print("生成的會話鑰匙:", session_key)
內容解密:
上述程式碼展示了一個簡單的會話鑰匙生成範例。首先,將裝置ID和主鑰匙合併成一個字串。然後,使用SHA-256雜湊函式對這個合併後的字串進行處理,生成一個固定長度的會話鑰匙。這種方法確保了會話鑰匙的安全性和唯一性。
鑰匙建立技術的安全性分析
對稱鑰匙建立協定的安全性取決於多個因素,包括主鑰匙的安全性和金鑰交換過程的安全性。攻擊者如果能夠取得主鑰匙,就可以推匯出所有的會話鑰匙,從而危及整個IIoT系統的安全。因此,如何安全地管理和保護主鑰匙是對稱鑰匙建立協定設計中的一個重要課題。
未來研究方向
隨著工業物聯網技術的不斷發展,未來對於更安全、更高效的鑰匙建立技術的需求將越來越迫切。研究人員需要不斷探索新的密碼學技術和協定,以滿足日益增長的安全需求。同時,如何在保證安全性的同時,降低鑰匙建立過程的複雜度和能量消耗,也是未來研究的一個重要方向。
4.1 金鑰建立協定於網路層
在工業物聯網(IIoT)中,金鑰建立協定是確保裝置間安全通訊的關鍵技術。根據金鑰的型別,金鑰建立協定可分為對稱金鑰建立協定和非對稱金鑰建立協定兩類別。
4.1.1 對稱金鑰建立協定
對稱金鑰建立協定通常涉及三個階段:金鑰預分發階段、分享金鑰發現階段和路徑金鑰建立階段。在金鑰預分發階段,根據為每個 IIoT 裝置選擇的隨機金鑰生成金鑰環,並將金鑰環和金鑰的識別符載入裝置的記憶體中。接著,在分享金鑰發現階段,IIoT 裝置廣播載入的金鑰識別符,以便找到與鄰近裝置的分享金鑰。這樣,鄰近的 IIoT 裝置可以使用分享金鑰建立通訊金鑰。最後,在路徑金鑰建立階段,任何兩個 IIoT 裝置都可以使用位於它們之間的兩個不同鏈路上的裝置建立路徑金鑰。
Liu 等人提出了一個使用二元多項式在感測器節點之間建立成對金鑰的通用框架。他們提出了兩個高效的通用框架例項化方案,即隨機子集分配金鑰預分發方案和根據超立方體的金鑰預分發方案。此外,他們還提出了一種用於多項式評估的最佳化技術,用於計算成對金鑰。
矩陣基礎的金鑰分發協定
在 [46, 47] 中,根據 [48] 開發了一種根據矩陣的金鑰分發協定。其基本思想是,只要兩個 IIoT 裝置從相同的矩陣空間預載秘密資訊,就可以直接建立通訊金鑰。在 [46] 中,提供了一種新的矩陣 G [48] 設計。他們提出的協定具有閾值屬性,確保當受損節點的數量小於閾值時,任何其他節點之間的通訊被洩露的機率接近零。這樣,攻擊者必須攻擊網路中的很大一部分才能獲得任何顯著的收益。在 [47] 中,使用佈署知識並避免不必要的金鑰分配來改進 [46] 中提出的協定。
4.1.2 非對稱金鑰建立協定
非對稱金鑰建立協定也被研究人員廣泛使用。例如,兩方密碼認證金鑰交換(2PAKE) 協定允許任何兩個 IIoT 裝置使用預先共用的短密碼建立通訊金鑰。2PAKE 協定最初是在 [51] 中提出的,其中假設一些公共引數由系統管理員生成並提供給 IIoT 裝置。然後,透過執行改進的 Cramer-Shoup 加密演算法,可以在兩個裝置之間建立通訊金鑰。受 [51] 的啟發,文獻中提出了幾種 2PAKE 協定。此外,還提出了幾種密碼認證群組金鑰交換(GPAKE) 協定,擴充套件了 2PAKE 協定的思想。
4.2 金鑰建立協定於實體層
在實體層,已開發了幾種使用通道特性或無金鑰密碼學的金鑰建立協定。以下,我們回顧使用這些方法的已提出協定。
4.2.1 使用通道特性的金鑰建立協定
在現實世界中,兩個 IIoT 裝置之間的每個無線通道都會經歷交換的無線訊號之間隨時間變化的隨機衰落。衰落具有在通道相干時間內保持不變的特性,無論訊號的方向如何。此外,通道相干時間是對通道脈衝回應基本保持不變的時間段的統計測量。最後,衰落在半個波長量級的距離上會變得不相關。因此,如果攻擊者距離參與者超過這個距離,它將無法提取任何有用的資訊。
金鑰提取協定的三個階段
現有的根據通道特性的實體層金鑰提取協定通常由三個階段組成:量化階段、協調和隱私放大階段。在第一階段,IIoT 裝置對傳輸的訊號進行取樣,然後使用預定義的閾值對其進行量化。在此階段結束時,兩個 IIoT 裝置獲得兩個初始二進位位序列,這些序列可能由於不完全互易性和雜訊的影響而表現出微小的差異。在接下來的階段中,這些裝置可以去除不匹配的位元,並使位序列具有足夠的熵。
使用通道特性的相關研究
在這方面,文獻中已經提出了幾種在實體層使用通道特性的金鑰建立協定,如 [58-61]。例如,在 [58] 中,提出了一種根據時分雙工(TDD)正交頻分復用(OFDM)系統在多徑衰落通道上的資訊理論秘密金鑰生成(SKG)方法。該方法根據無線媒介的實體層特性,旨在最大化給定目標秘密金鑰不一致率(SKDR)的秘密位元數。
Premnath 等人評估了使用無線通道上接收訊號強度(RSS)變化提取秘密金鑰的有效性。他們使用了在各種環境和設定中對 RSS 的真實測量。根據他們從真實實驗中獲得的結果,在某些環境中,提取的位元具有非常低的熵,這使得這些位元不適合用於秘密金鑰。事實上,攻擊者可以在靜態環境中導致可預測的金鑰生成。相反,隨著裝置移動性的增加,提取的位元中的現有熵迅速增長。在這方面,作者開發了一種環境自適應的秘密金鑰生成方案,該方案使用自適應有失真壓縮來提高熵。
程式碼範例:通道特性量化
import numpy as np
def quantize_channel_characteristics(signal_strength, threshold):
"""
將訊號強度量化為二進位位序列。
:param signal_strength: 訊號強度值
:param threshold: 量化閾值
:return: 量化後的二進位位序列
"""
quantized_sequence = np.where(signal_strength > threshold, 1, 0)
return quantized_sequence
# 範例使用
signal_strength_values = np.array([0.8, 0.3, 0.9, 0.1])
threshold_value = 0.5
quantized_sequence = quantize_channel_characteristics(signal_strength_values, threshold_value)
print("量化後的二進位位序列:", quantized_sequence)
內容解密:
quantize_channel_characteristics函式:該函式根據給定的訊號強度和閾值,將訊號強度量化為二進位位序列。這是實體層金鑰提取的第一步。np.where的使用:np.where函式根據條件(這裡是訊號強度是否大於閾值)傳回不同的值。如果訊號強度大於閾值,則傳回1,否則傳回0。- 範例使用:展示瞭如何使用該函式對一組訊號強度值進行量化,並輸出量化後的二進位位序列。
實體層金鑰提取流程圖
圖表翻譯: 此圖示展示了實體層金鑰提取的三個主要階段:量化、協調和隱私放大。首先,裝置對傳輸訊號進行取樣,接著將取樣值量化為二進位序列。然後,透過協調過程去除不一致的位元,最後透過隱私放大提高最終金鑰的安全性。
工業物聯網中的資料安全與隱私:跨層金鑰建立協定研究
4.2.2 無金鑰密碼學的應用
物理層的無金鑰密碼學技術也被研究人員用於提出的金鑰建立協定中。這些協定利用了匿名通道的特性,即傳輸訊號的來源對於攻擊者來說是不可識別的 [7]。
在 [62] 中,設計了一種無需使用非對稱金鑰密碼學和預分享秘密的空中金鑰建立協定。該協定使兩個無線裝置能夠透過直接相互傳送隨機訊號來建立秘密金鑰。所提出的金鑰建立方案在能耗和執行時間方面都具有低成本的優勢。
Pietro 等人 [63] 提出了一種機率協定,使兩個無線裝置即使在存在全球竊聽對手的情況下也能透過無線方式對分享秘密達成共識。該方案僅根據明文訊息交換,因此不依賴任何加密技術。
4.3 跨層金鑰建立協定
在更高層提出的金鑰建立協定通常假設密碼是在 IIoT 裝置之間預先分享的。然而,在現實世界中,IIoT 裝置通常由不同的工廠生產,因此假設這些裝置出廠時就預載了密碼是不切實際的。
此外,研究表明,裝置可以利用無線衰落通道提取秘密 [64]。然而,在物理層提出的金鑰建立協定不需要在 IIoT 裝置中預先載入秘密,但它們的金鑰提取率較慢 [7]。
因此,跨層金鑰建立協定近年來受到關注,以解決上述問題。這些協定結合了更高層和物理層的特性。下面,我們將回顧文獻中提出的跨層金鑰建立協定,這些協定是在非對稱或對稱金鑰設定下設計的 [7]。
4.3.1 根據非對稱金鑰設定的跨層金鑰建立協定
本文將回顧文獻中根據非對稱金鑰設定提出的跨層金鑰建立協定。
在 [64] 中,提出了一種變體的密碼認證金鑰交換(vPAKE)協定,其中呼叫了密碼分享假設。所提出的協定實際上是一種跨層設計,其中兩個 IIoT 裝置在物理層提取短秘密,以縮短金鑰提取時間。提取的短秘密被使用者用作密碼,以在更高層建立通訊金鑰。
在某些場景中,可能需要在公共和不可靠的網路上的一組裝置之間分享資料。在這方面,[65] 中提出了一種群組密碼認證金鑰交換(GPAKE)協定,而沒有密碼分享假設。與上述工作類別似,首先無線裝置用於在物理層提取短秘密。然而,然後使用者在更高層利用提取的秘密建立群組金鑰。所提出的協定是一種跨層設計,也是一種編譯器。事實上,所提出的協定只需再進行一輪通訊,即可將任何可證明安全的 2PAKE 協定轉換為 GPAKE 協定。
4.3.2 根據對稱金鑰設定的跨層金鑰建立協定
本文將回顧文獻中根據對稱金鑰設定提出的跨層金鑰建立協定。
在智慧家居場景中,IIoT 裝置將其收集的資料傳送到家庭閘道器。然後,家庭閘道器根據分析的資料向裝置傳送適當的命令。顯然,資料和命令是透過無線鏈路傳輸的,使它們容易受到不同的網路攻擊,如竊聽。因此,為瞭解決智慧家居網路的安全和隱私問題,Zhang 等人 [66] 提出了一種根據矩陣的跨層金鑰建立協定,而無需使用任何預分享秘密。更準確地說,根據他們提出的方案,家庭 IIoT 裝置利用無線衰落通道在物理層提取主金鑰。然後,家庭閘道器利用提取的主金鑰為裝置分發金鑰種子。透過這種方式,任何兩個 IIoT 裝置都可以在更高層直接建立秘密會話金鑰。所提出的協定包括四個階段,包括初始化、主金鑰提取、金鑰種子分發和會話金鑰建立階段。
程式碼例項:跨層金鑰建立協定實作
import hashlib
def generate_master_key(rssi_values):
# 使用 RSSI 值生成主金鑰
rssi_string = ''.join(str(value) for value in rssi_values)
master_key = hashlib.sha256(rssi_string.encode()).hexdigest()
return master_key
def distribute_key_seeds(master_key, num_devices):
# 利用主金鑰為裝置分發金鑰種子
key_seeds = []
for i in range(num_devices):
key_seed = hashlib.sha256((master_key + str(i)).encode()).hexdigest()
key_seeds.append(key_seed)
return key_seeds
def establish_session_key(key_seed1, key_seed2):
# 利用兩個金鑰種子建立會話金鑰
session_key = hashlib.sha256((key_seed1 + key_seed2).encode()).hexdigest()
return session_key
# 示例使用
rssi_values = [-50, -55, -60, -65]
master_key = generate_master_key(rssi_values)
print("主金鑰:", master_key)
num_devices = 3
key_seeds = distribute_key_seeds(master_key, num_devices)
print("金鑰種子:", key_seeds)
session_key = establish_session_key(key_seeds[0], key_seeds[1])
print("會話金鑰:", session_key)
內容解密:
generate_master_key函式根據 RSSI 值生成主金鑰,使用 SHA-256 雜湊函式確保生成的金鑰具有足夠的安全性。distribute_key_seeds函式利用主金鑰為多個裝置分發不同的金鑰種子,每個裝置對應一個唯一的金鑰種子。establish_session_key函式透過結合兩個裝置的金鑰種子來建立會話金鑰,這確保了只有擁有正確金鑰種子的裝置才能建立相同的會話金鑰。
此圖示顯示了跨層金鑰建立協定的工作流程,包括主金鑰生成、金鑰種子分發和會話金鑰建立。
@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle
title 工業物聯網資料安全與隱私保護認證技術
package "安全架構" {
package "網路安全" {
component [防火牆] as firewall
component [WAF] as waf
component [DDoS 防護] as ddos
}
package "身份認證" {
component [OAuth 2.0] as oauth
component [JWT Token] as jwt
component [MFA] as mfa
}
package "資料安全" {
component [加密傳輸 TLS] as tls
component [資料加密] as encrypt
component [金鑰管理] as kms
}
package "監控審計" {
component [日誌收集] as log
component [威脅偵測] as threat
component [合規審計] as audit
}
}
firewall --> waf : 過濾流量
waf --> oauth : 驗證身份
oauth --> jwt : 簽發憑證
jwt --> tls : 加密傳輸
tls --> encrypt : 資料保護
log --> threat : 異常分析
threat --> audit : 報告生成
@enduml圖表翻譯: 此圖表展示了跨層金鑰建立協定的主要步驟。首先,利用 RSSI 值生成主金鑰;接著,主金鑰被用來分發給不同的裝置以產生各自的金鑰種子;最後,透過結合兩個裝置的金鑰種子來建立會話金鑰。這一過程確保了 IIoT 裝置之間的通訊安全。